تخفیف


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

پروژه اولیه🔗

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

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
Plain text

اپلیکشن discounts🔗

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

مدل CountryDiscount

اگر کشور کاربر با کشور مشخص شده در این تخفیف یکسان بود، تمامی کتاب‌های موجود شامل درصد تخفیف مشخص شده می‌شوند.

مدل AuthorDiscount

تمامی کتاب‌هایی که یکی از نویسندگان آن، نویسنده مشخص شده بود، شامل درصد تخفیف مشخص شده می‌شوند

مدل ‍CategoryDiscount

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

مدل BookDiscount

در این تخیفیف تنها کتاب مشخص شده، شامل درصد تخفیف مشخص شده می‌شود.

پیاده‌سازی مورد انتظار🔗

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

تابع get_discount در books/models.py

این تابع باید بهترین تخفیفی که شامل کتاب مورد نظر (self) می‌شود. را انتخاب و قیمت بعد از اعمال شدن آن تخفیف را خروجی دهد.

نکات

* ممکن است چندین تخفیف مختلف را برای کتاب بتوان اعمال کرد. ولی فقط باید بهترین تخفیف بر روی آن، اعمال شود و در خروجی قیمت پس از اعمال تخفیف برگردانده شود. * دقت کنید ممکن است ریکوئست دریافتی از طرف کاربری که احراز هویت نشده فرستاده شود.

ویو 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 اهمیتی ندارد.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.