به علت شیوع کرونا شرکت سجادینه جلسات خود را به صورت مجازی و در وبسایت جیتسی برگزار میکند.
شرکت سجادینه شامل تیمهای مختلفیست و هر عضو این شرکت دقیقا در یک تیم عضو میباشد. برای مدیریت بهتر جلسات این شرکت میخواهیم وبسایتی طراحی کنیم تا هر عضو بتواند وارد تیم خود بشود و هر تیم یک لینک مخصوص در جیتسی داشته باشد.
از شما میخواهیم ویوهای این وبسایت را با توجه به ساختار پروژه برای ما طراحی کنید.
پروژه اولیه
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
jitsi
├── manage.py
├── requirements.txt
├── account
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ ├── > views.py <
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_auto_20201117_1120.py
│ │ └── __init__.py
│ │
│ └── templates
│ ├── home.html
│ ├── login.html
│ ├── signup.html
│ └── team.html
│
├── onedjango
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ └── __init__.py
│
└── tests
├── tests.py
└── testsample.py
مدلها - پیادهسازی شده است
مدل Team
این مدل نشاندهندهی تیمها میباشد.
هر تیم شامل دو فیلد زیر میباشد:
- فیلد
name
: که از نوع CharField میباشد و نشاندهندهی نام تیم است. - فیلد
jitsi_url_path
: که از نوع CharField میباشد و نشاندهنده لینک اختصاصی جیتسی برای آن تیم میباشد.
مدل Account
این مدل از مدل User
ارثبری میکند و دارای یک فیلد اضافه بر User
میباشد:
-
فیلد
team
: که از نوع foreignkey میباشد و نشاندهندهی شیء تیم مربوط به این فرد میباشد.
فرمها - پیادهسازی شده است
فرم SignUpForm
از این فرم باید در قسمت ثبتنام افراد در سایت استفاده شود.
فرم TeamForm
از این فرم باید برای اضافه کردن یک تیم و یا اضافه شدن به یک تیم استفاده شود.
فرم LoginForm
از این فرم باید برای وارد شدن کاربر به سایت استفاده شود.
ویوها - توسط شما پیادهسازی شود
ویو home
به این ویو فقط میتوان ریکوئست Get
زد و این ویو برای این نوع ریکوئست باید نام تیم کاربر را نشان دهد.
اگر کاربری که به این ویو ریکوئست میزند دارای تیم بود، صفحهی home.html
را طوری نمایش دهید که در این صفحه، نام تیم این کاربر به نمایش دربیاید.
اگر کاربری که به این ویو ریکوئست میزند تیمی نداشت، صفحهی home.html
را طوری نمایش دهید که در این صفحه، کلمهی None
به نمایش دربیاید.
ویو signup
به این ویو میتوان دو نوع ریکوئست Get
و Post
زد و کار این ویو ثبتنام کردن کاربر در سایت میباشد.
اگر نوع ریکوئست کاربر Get
باشد؛ صفحهی signup.html
را طوری به کاربر نمایش دهید که در این صفحه فرم SignUpForm
برای کاربر به نمایش دربیاید.
اگر نوع ریکوئست کاربر Post
باشد؛ بعد از انجام اعتبارسنجی دادههای وارد شده در فرم، اگر فرم به درستی پر شده بود کاربر را در دیتابیس ذخیره کرده و در سایت login
کنید و کاربر را به آدرس team
بفرستید؛ اگر هم فرم اشتباه پر شده بود کاربر را دوباره به صفحه signup
بازگردانید.
ویو login_account
به این ویو میتوان دو نوع ریکوئست Get
و Post
زد و کار این ویو وارد کردن کاربر به سایت میباشد.
اگر نوع ریکوئست کاربر Get
باشد؛ صفحهی login.html
را طوری به او نمایش دهید که فرم LoginForm
به نمایش دربیاید.
اگر نوع ریکوئست کاربر Post
باشد؛ بعد از اعتبارسنجی فرم، اگر کاربر فرم را درست پر کرده بود، بررسی کنید که کاربری با اطلاعات پر شده وجود داشته باشد و اگر وجود داشت کاربر را login
کنید و او را به صفحهی home
بفرستید؛ در غیر این صورت او را دوباره به صفحهی login
بازگردانید.
ویو logout_account
به این ویو فقط میتوان ریکوئست Get
زد و کار این ویو خارج کردن کاربر از حساب کاربری خود میباشد.
اگر کاربر به این ویو ریکوئست Get
زد او را از حساب کاربری خود بیرون کنید و به صفحهی login
منتقل کنید.
ویو joinoradd_team
به این ویو میتوان دو نوع ریکوئست Get
و Post
زد.
اگر نوع ریکوئست کاربر Get
باشد؛ بررسی کنید کاربر در حال حاضر دارای تیم میباشد یا خیر.
اگر کاربر تیمی داشت او را به صفحهی home
منتقل کنید وگرنه او را طوری به صفحهی team.html
منتقل کنید که فرم TeamForm
به او نمایش داده شود.
اگر نوع ریکوئست کاربر Post
باشد؛ بعد از اعتبارسنجی فرم اگر کاربر فرم را درست پر کرده بود بررسی کنید اگر تیمی با این نام وجود داشت فیلد team
کاربر را برابر با این تیم قرار دهید؛ و اگر وجود نداشت یک تیم با این نام بسازید. فیلد jitsi_url_path
این تیم به صورت http://meet.jit.si/team_name
قرار گیرد که جای team_name
نام تیم قرار میگیرد. بعد از ساخت تیم فیلد team
کاربر را برابر با این تیم قرار دهید و کاربر را به صفحهی home
انتقال دهید.
اگر هم فرم درست پر نشده بود کاربر را به صفحه home
انتقال دهید.
ویو exit_team
به این ویو فقط میتوان ریکوئست Get
زد و کار این ویو خارج کردن کاربر از تیم حال حاضر آن میباشد.
اگر کاربر به این ویو ریکوئست Get
زد فیلد team
کاربر را برابر با None
قرار دهید و او را به صفحهی home
منتقل کنید. اگر هم کاربر از قبل تیمی نداشت صرفا او را به صفحهی home
منتقل کنید.
تست نمونه
در فایلهای اولیهای که دانلود کردید یکسری داده اولیه به عنوان نمونه قرار داده شده است. میتوانید قبل از فرستادن سوال در سایت، این تستها را ببینید تا با نحوه داوری ما آشنا شوید و از پاسخ خود اطمینان حاصل نمایید.
تستها را میتوانید با دستور زیر اجرا کنید:
python manage.py test
نکات
-
دقت کنید که تمامی ریدایرکتها را با استفاده از تابع
redirect
انجام دهید. -
شما تنها مجوز ایجاد تغییرات در فایل
account/views.py
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد. -
فراموش نکنید که میتوانید با مطالعهی
testsample.py
با روش تست کردن مدلها، فرمها و ادمینها آشنا شوید.
نحوه ارسال
یک فایل ZIP حاوی همهی فایلهای پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.
ارسال پاسخ برای این سؤال