میثم که به تازگی استخدام شده است، سعی دارد که در اولین تسکی که به او محول شده به خوبی عمل کند. و با اولین 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
جزئیات
در این پروژه یک مدلِ کتاب داریم. این مدل دو تابع borrow_book
و return_book
دارد. اولی برای قرض گرفتن کتاب و دومی برای پس دادن کتاب استفاده میشود.
از شما خواسته شده که تسک زیر را انجام دهید.
- با صدا زدن آدرس
/get_book_users/<book_id>/
پاسخی مانند زیر دریافت شود که تاریخچه زمانی افرادی است که تاکنون کتاب را قرض گرفتهاند. تاریخ به صورتiso_format
نشان داده شود که تاریخ قرض گرفته شدن کتاب را نشان میدهد. در صورتی که کتابی وجود نداشت لیست خالی برگردانده شود.
[
{ "username": "user_name_1", "date": "2018-02-08T14:13:22.142497"},
]
- آدرس
/borrow_book/<book_id>/<user_name>/
صدا زده شد پاسخهای زیر برگردانده شود.
{ "status": status_code }
مقادیر status_code (ترتیب مهم است): - در صورتی که کتاب قبلا قرض داده شده بود ۱ باشد. - در صورتی که قرض گیرنده قبلا کتاب قرض گرفته است ۲ باشد. - در صورتی که کتاب یا کاربر وجود ندارد مقدار ۳ باشد. - در صورت هر غلط دیگر مقدار ۴ باشد. - در صورت انجام صحیح مقدار ۰ باشد.
- آدرس
/return_book/<book_id>/
صدا زده شد پاسخهای زیر برگردانده شود.
{ "status": status_code }
مقادیر status_code (ترتیب مهم است): - در صورتی که کتاب قبلا پس داده شده بود ۱ باشد. - در صورتی که کتاب وجود ندارد مقدار ۲ باشد. - در صورت هر غلط دیگر مقدار ۳ باشد. - در صورت انجام صحیح مقدار ۰ باشد.
تست نمونه
در فایلهای اولیهای که دانلود کردید یکسری داده اولیه به عنوان نمونه قرار داده شده است. میتوانید قبل از فرستادن سوال در سایت، این تستها را ببینید تا با نحوه داوری ما آشنا شوید و از پاسخ خود اطمینان حاصل نمایید.
تستها را میتوانید با دستور زیر اجرا کنید:
python manage.py test
نکات
- شما تنها مجوز ایجاد تغییرات در فایلهای
app/views.py
وlibrary/urls.py
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهد شد. - فراموش نکنید که میتوانید با مطالعهی
testsample.py
با روش تست کردن سوال آشنا شوید.
نحوه ارسال
یک فایل ZIP حاوی همهی فایلهای پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.
ارسال پاسخ برای این سؤال