میثم که به تازگی استخدام شده است، سعی دارد که در اولین تسکی که به او محول شده به خوبی عمل کند. و با اولین Push Request موفق به Merge کدش شود. اما سعید هنوز تجربه‌ی کافی ندارد. به همین دلیل روی کمک شما برای انجام این تسک حساب کرده است.

پروژه اولیه

پروژه اولیه را از این لینک دانلود کنید. ساختار فایل‌های این پروژه به صورت زیر است:

.
├── app
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └──  > views.py < 
├── library
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├──  > urls.py < 
│   └── wsgi.py
├── manage.py
├── requirements.txt
└── tests
    └── testsample.py
Plain text

جزئیات

در این پروژه یک مدلِ کتاب داریم. این مدل دو تابع borrow_book و return_book دارد. اولی برای قرض گرفتن کتاب و دومی برای پس دادن کتاب استفاده می‌شود.

از شما خواسته شده که تسک زیر را انجام دهید.

  • با صدا زدن آدرس /get_book_users/<book_id>/ پاسخی مانند زیر دریافت شود که تاریخچه زمانی افرادی است که تاکنون کتاب را قرض گرفته‌اند. تاریخ به صورت iso_format نشان داده شود که تاریخ قرض گرفته شدن کتاب را نشان می‌دهد. در صورتی که کتابی وجود نداشت لیست خالی برگردانده شود.
[
    { "username": "user_name_1", "date": "2018-02-08T14:13:22.142497"},
]
Plain text
  • آدرس /borrow_book/<book_id>/<user_name>/ صدا زده شد پاسخ‌های زیر برگردانده شود. ‍‍‍
{ "status": status_code }
Plain text

مقادیر status_code (ترتیب مهم است): - در صورتی که کتاب قبلا قرض داده شده بود ۱ باشد. - در صورتی که قرض گیرنده قبلا کتاب قرض گرفته است ۲ باشد. - در صورتی که کتاب یا کاربر وجود ندارد مقدار ۳ باشد. - در صورت هر غلط دیگر مقدار ۴ باشد. - در صورت انجام صحیح مقدار ۰ باشد.

  • آدرس /return_book/<book_id>/ صدا زده شد پاسخ‌های زیر برگردانده شود. ‍‍‍
{ "status": status_code }
Plain text

مقادیر status_code (ترتیب مهم است): - در صورتی که کتاب قبلا پس داده شده بود ۱ باشد. - در صورتی که کتاب وجود ندارد مقدار ۲ باشد. - در صورت هر غلط دیگر مقدار ۳ باشد. - در صورت انجام صحیح مقدار ۰ باشد.

تست نمونه

در فایل‌های اولیه‌ای که دانلود کردید یکسری داده اولیه به عنوان نمونه قرار داده شده است. می‌توانید قبل از فرستادن سوال در سایت، این تست‌ها را ببینید تا با نحوه داوری ما آشنا شوید و از پاسخ خود اطمینان حاصل نمایید.

تست‌ها را می‌توانید با دستور زیر اجرا کنید:

python manage.py test
Shell
terminal

نکات

  • شما تنها مجوز ایجاد تغییرات در فایل‌های app/views.py و library/urls.py را دارید و تمامی تغییرات دیگر شما در فایل‌های پروژه نادیده گرفته خواهد شد.
  • فراموش نکنید که می‌توانید با مطالعه‌ی testsample.py با روش تست کردن سوال آشنا شوید.

نحوه ارسال

یک فایل ZIP حاوی همه‌ی فایل‌های پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.


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