میخواهیم یک سایت برای خودکار کردن فرایند فروش بلیتهای سینما بنویسیم. در این سایت امکان مشاهده فیلمهای در حال اکران وجود دارد. کاربران میتوانند عضو سایت شوند و پس از ورود به سایت برای هر فیلم صندلی موردنظر را رزرو کند.
بخشی از این پروژه نوشته شده است. از شما میخواهیم این پروژه را تکمیل کنید.
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است.
در این سؤال تنها لازم است تغییراتی در app/views.py
و app/fixtures
ایجاد کنید.
در فایل models.py
سه مدل به شرح زیر وجود دارد:
۱. مدل Movie
شامل فیلدهای زیر:
title
: نام فیلمrelease_year
: سال انتشار فیلمplay_time
: زمان اکران فیلم در سالن۲. مدل Seat
شامل فیلد زیر:
number
: شماره صندلی۳. مدل Ticket
شامل فیلدهای زیر:
movie
: فیلمی که این بلیت برای آن فروخته شده استuser
: کاربری که این بلیت را خریده استseat
: صندلی مربوط به این بلیتdate_bought
: تاریخی که بلیت خریده شده استقرار است همه صندلیهای سالن و لیست فیلمها در ابتدا با استفاده از fixture
به پایگاه داده اضافه شود. سپس به ازای هر بلیتی که فروخته میشود
یک شیٔ از مدل Ticket
ساخته میشود.
مواردی که باید انجام دهید:
از شما میخواهیم دو فایل fixture با نامهای
movies
و seats
در مسیر app/fixtures
بنویسید. این fixture ها را میتوانید به فرمت
.json
یا .yaml
بنویسید.
movies
باید شامل دادههای زیر باشد.
زمان اکران را به صورت naive (بدون TimeZone) تعریف کنید.id | نام فیلم | سال انتشار | تاریخ اکران | ساعت اکران |
---|---|---|---|---|
1 | Children of heaven | 1997 | 2018/4/20 | 22:00 |
2 | About Elly | 2009 | 2018/4/20 | 20:00 |
3 | A separation | 2011 | 2018/4/22 | 18:00 |
4 | The salesman | 2016 | 2018/4/21 | 18:00 |
5 | The Elephant king | 2017 | 2018/4/21 | 20:00 |
seats
نیز باید شامل ۱۰ صندلی با id
های ۱ تا ۱۰
و با شماره صندلیهای ۳۱ تا ۴۰ (به ترتیب id
ها) باشد.در این قسمت باید view نمایش صندلیها (list_seats
) را به گونهای تغییر دهید
که فقط صندلیهایی که برای فیلم موردنظر رزرو نشدهاند نمایش داده شوند.
با توجه به توضیحات زیر، view ها را تکمیل کنید.
برای رزرو صندلی، کاربر مراحل زیر را انجام میدهد:
ابتدا از آدرس /movie
بازدید میکند که لیست فیلمهایی که در حال اکران هستند
را نمایش میدهد. سپس روی فیلم مورد نظر خود کلیک کرده و صفحهی بعدی صندلیهای رزرو
نشده برای آن فیلم را نمایش میدهد. تا این مرحله کاربر نیازی به login بودن ندارد.
وقتی کاربر روی یکی از صندلیها کلیک کرد:
در این قسمت شما باید view مربوط به آدرس stats
را به نحوی کامل کنید
که در پاسخ برای همه صندلیهای که حداقل
برای یک فیلم رزرو شدهاند (به ترتیب id
صندلی)،
یک خروجی JSON به شکل زیر بازگردد:
app/views.py
و app/fixtures
هستید.
اگر تغییری در سایر فایلها ایجاد کنید، این تغییرات نادیده گرفته خواهد شد.