روز
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
روز
ساعت
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ساعت
دقیقه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
دقیقه
ثانیه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ثانیه

در این سوال قصد داریم تا مهارت خواندن و تغییر کدهای موجود را بسنجیم. بدین منظور یک پروژه موجود را از Github درنظر گرفته‌ایم. شما می‌توانید از این لینک پروژه را دانلود کنید و از آن به عنوان مبنای توسعه کد استفاده کنید. این فایل یک ورژن خاص از این پروژه در گیت هاب است.

ابتدا کدها را خوانده و به فهم نسبی از پروژه برسید.

مشاورین برندیگ کوئرا پیشنهاد دادند که کاربران را مجبور کنیم در نام کاربری خود از کلمه quera استفاده کنند. بنابراین ما از شما می‌خواهیم پس از خواندن کدهای پروژه تغییرات زیر را در آن اعمال کنید.

۱. تمام کاربران جدید، هنگام ثبت‌نام باید ازین امر مطلع شوند. بنابراین رشته‌ی Usernames must contain the word "Quera" را عیناً در کنار فیلد مربوط به username نمایش دهید تا کاربر قبل از وارد کردن نام کاربری برای خود، از این امر مطلع شود.

۲. اگر کاربری usernameی را وارد کرد که شرط مورد نظر راجع به آن صدق نمی‌کرد، بعد از ارسال فرم، یک خطا با رنگ قرمز و با متن دقیقا Username does not contain quera به کاربر نمایش داده شود.

۳. در تمام حالت‌هایی که برای فیلد username خطا گرفته می‌شود باید به شکل زیر یک نام کاربری معتبر جدید به کاربر پیشنهاد دهید. یک نام کاربری در صورتی معتبر است که شامل کلمه quera باشد، در سیستم موجود نباشد و فقط شامل کاراکترهای مجاز (حروف A تا Z انگلیسی به صورت بزرگ و کوچک، اعداد، نقطه و underline) باشد.

برای بدست‌آوردن نام کاربری برای پیشنهاد باید مراحل الگوریتم زیر را به ترتیب انجام دهید:

  • اگر نام کاربری وارد شده توسط کاربر شامل یک یا بیشتر کاراکتر غیر مجاز بود، کاراکترهای غیر مجاز را از رشته ورودی حذف کنید. برای مثال رشته‌ی 'ab+bas' یک نام کاربری با کاراکتر غیرمجاز '+' است که خروجی این مرحله، رشته abbas است.

  • اگر نام کاربری بدست آمده از مرحله قبل شامل کلمه quera نبود، کلمه quera_ را به اول نام کاربری پیشنهادی اضافه کنید. برای مثال خروجی این مرحله، رشته quera_abbas خواهد شد.

  • اگر نام کاربری که هم‌اکنون حتما شامل کلمه quera است، در سیستم از قبل وجود داشت، کارهای زیر را انجام دهید:

    • اگر در انتهای نام underline یا underline و یک عدد وجود داشت آن ها را حذف کنید. (توجه کنید که تنها یک underline یا یک underline عدد را حذف کنید. به مثال های زیر توجه کنید.)
    • به انتهای نام پیشنهادی یک underline و یک عدد اضافه کنید. به این صورت که در ابتدا _1 را به انتهای نام اضافه کنید. اگر در سیستم وجود داشت، _2 را اضافه کنید و به همین ترتیب تا نامی یافت شود که معتبر باشد.

نکته مهم: توجه کنید که اگر در انتهای نامی که کاربر وارد کرده است یک underline و عدد وجود داشت ولی در سیستم موجود بود، شما نباید یک underline و عدد دیگر به آن اضافه کنید، بلکه باید تنها عدد را تغییر دهید و کوچکترین عددی را بگذارید که در سیستم موجود نیست! الگوریتم بالا این نکته را تضمین می‌کند.

  • نام پیشنهادی بدست آمده باید بعد از کلمه‌ی Suggest: و در بین دو کارکتر '*' در فرم ثبت‌نام زیر فیلد مربوطه نشان داده شود.

نمونه

  • اگر کاربر نام کاربری را Ali وارد کرد که دارای Quera نیست، سیستم نام quera_Ali را در صورتی که قبلا در سیستم وجود نداشت به کاربر پیشنهاد دهد.

  • اگر کاربر Quera10 وارد کرد که قبلا وجود داشت سیستم می‌تواند کلمه Quera10_1 را پیشنهاد دهد ولی اگر کاربر رشته Quera_10 را وارد کرد و در سیستم موجود بود شما نباید نام Quera_10_1 را پیشنهاد دهید، بلکه باید نام Quera_1 را در صورت معتبر بودن پیشنهاد دهید.

  • اگر کاربر رشته Quera__ را وارد کرد که از قبل در سیستم موجود بود، سیستم باید نام Quera__1 را پیشنهاد دهد. همچنین برای رشته Quera__1 نیز رشته Quera__2 را پیشنهاد دهید.

  • همچنین اگر کاربر کلمه ای مانند ab+bas وارد کرد که شامل کاراکتر غیر مجاز است، سیستم ممکن است نام quera_abbas_1 را در صورت معتبر بودن پیشنهاد دهد. به تصویر زیر توجه کنید:

توضیح تصویر

  • برنامه نباید به بزرگی و کوچکی کلمه quera حساس باشد. یعنی اگر کلمه QuErA نیز در نام‌کابری بود نباید خطایی گرفته شود.

نکات

  • تذکر: کارایی فعلی سایت نباید تغییری کند! برای مثال در صورت موجود بودن نام کاربری فعلی در سیستم، رشته User with this Username already exists یا برای نام کاربری‌هایی که کاراکترهای غیر مجاز دارند رشته Enter a valid username نشان داده می‌شود که این کارایی نباید از بین برود.
  • از اهداف این سوال این است که بتوانید یک پروژه را با توجه به توضیحات ارائه دهنده‌ی پروژه اجرا کنید. بنابراین اجرا نشدن پروژه به معنای اشتباه بودن کد نیست.

نحوه ارسال

کل پروژه را zip کرده و ارسال کنید. فقط توجه کنید که فایل manage.py باید مستقیما در ریشه‌ی فایل zip باشد و در هیچ پوشه دیگری نباشد. یعنی ساختار فایل zip ارسالی شما باید مانند زیر باشد:

<Your-zip-name>.zip
	├── bootcamp
	│   ├── activities
	│   │   ├── __init__.py
	│   │   ├── migrations
	│   │   ├── models.py
	│   │   ├── static
	│   │   ├── templates
	│   │   ├── tests
	│   │   └── views.py
	│   ├── articles
	│   │   ├── forms.py
	│   │   ├── __init__.py
	│   │   └──  ...
	│   ├── authentication
	│   │   ├── forms.py
	│   │   └──  ...
	│   ├── core
	│   │   └──  ...
	│   ├── decorators.py
	│   ├── feeds
	│   │   └──  ...
	│   ├── __init__.py
	│   ├── locale
	│   │   ├── es
	│   │   └── ...
	│   ├── messenger
	│   │   └──  ...
	│   ├── questions
	│   │   └──  ...
	│   ├── search
	│   │   ├── __init__.py
	│   │   ├── migrations
	│   │   └──  ...
	│   ├── settings.py
	│   ├── static
	│   │   ├── css
	│   │   ├── img
	│   │   └── js
	│   ├── templates
	│   │   ├── 400.html
	│   │   ├── 403.html
	│   │   └── ...
	│   ├── urls.py
	│   └── wsgi.py
	├── LICENSE
	├── manage.py
	├── README.md
	├── requirements.txt
	├── runtime.txt
	└── setup.cfg

Plain text

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.