فرهاد که به تازگی کتابفروشی آنلاین خود را باز کرده، تصمیم گرفته قابلیت تخفیف را به آن اضافه کند. ولی برای این کار نیاز به کمک شما دارد تا پروژه را طبق توضیحات ادامه تکمیل کنید.
پروژه اولیه
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
Discount
├── accounts
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── authors
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── > books <
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── > models.py <
│ ├── > serializers.py <
│ ├── tests.py
│ ├── urls.py
│ └── > views.py <
├── BookStore Quera.postman_collection.json
├── config
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── discounts
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── permissions.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── fixtures
│ └── postman_sample_fixture.json
├── manage.py
├── requirements.txt
└── tests
├── __init__.py
└── testsample.py
اپلیکشن discounts
اپلیکیشن discounts
شامل مدلهای مختلفی میشود که کتاب میتواند براساس آن شامل تخفیف شود. در ادامه شرایط اعمال آنها را برای کتابها مشخص شده است.
مدل CountryDiscount
CountryDiscount
اگر کشور کاربر با کشور مشخص شده در این تخفیف یکسان بود، تمامی کتابهای موجود شامل درصد تخفیف مشخص شده میشوند.
مدل AuthorDiscount
AuthorDiscount
تمامی کتابهایی که یکی از نویسندگان آن، نویسنده مشخص شده بود، شامل درصد تخفیف مشخص شده میشوند
مدل CategoryDiscount
CategoryDiscount
تمامی کتابهایی که یکی از دستهبندیهای آن، دستهبندی مشخص شده بود، شامل درصد تخفیف مشخص شده میشوند.
مدل BookDiscount
BookDiscount
در این تخیفیف تنها کتاب مشخص شده، شامل درصد تخفیف مشخص شده میشود.
پیادهسازی مورد انتظار
اکیدا توصیه میشود پیش از حل این بخش سایر قسمتهای پروژه را مطالعه کنید.
تابع get_discount
در books/models.py
get_discount
در books/models.py
این تابع باید بهترین تخفیفی که شامل کتاب مورد نظر (self
) میشود. را انتخاب و قیمت بعد از اعمال شدن آن تخفیف را خروجی دهد.
نکات
* ممکن است چندین تخفیف مختلف را برای کتاب بتوان اعمال کرد. ولی فقط باید بهترین تخفیف بر روی آن، اعمال شود و در خروجی قیمت پس از اعمال تخفیف برگردانده شود. * دقت کنید ممکن است ریکوئست دریافتی از طرف کاربری که احراز هویت نشده فرستاده شود.
ویو BookViewSet
در books/views.py
BookViewSet
در books/views.py
شما باید با نوشتن سریالایزر یا سریالایزرهایی در books/serializers.py
برای مدل Book
و تکمیل ویو BookViewSet
ریکوئستهایی مشابه نمونههای آورده شده در فایل BookStore Quera.postman_collection.json (این فایل را با اپلیکیشن postman باز کنید.) مدیریت کنید و پاسخ مشابهی دریافت کنید.
نکات
* از فیکسچر postman_sample_fixture.josn برای ایجاد مثالهای موجود در کالکشن پستمن استفاده شده، در صورتی که مایل باشید میتوانید این فیکسچر را load کرده و ریکوئستها را مجدد اجرا کنید.
نکات
- شما تنها مجوز ایجاد تغییرات در فایلهای
books/views.py
،books/models.py
وbooks/serializers.py
و ایجاد فایل جدیدی درbooks/
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد. - فراموش نکنید که میتوانید با مطالعهی
testsample.py
با روش تست کردن مدلها، فرمها و ادمینها آشنا شوید.
نحوه ارسال
یک فایل ZIP حاوی همهی فایلهای پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.
ارسال پاسخ برای این سؤال