جنگو - جیتسی


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

شرکت سجادینه شامل‌ تیم‌های مختلفی‌ست و هر عضو این شرکت دقیقا در یک تیم عضو می‌باشد. برای مدیریت بهتر جلسات این شرکت می‌خواهیم وبسایتی طراحی کنیم تا هر عضو بتواند وارد تیم خود بشود و هر تیم یک لینک مخصوص در جیتسی داشته باشد.

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

پروژه اولیه🔗

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

مدل‌ها - پیاده‌سازی شده است

مدل 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 منتقل کنید.

نکات🔗

  • دقت کنید که تمامی ریدایرکت‌ها را با استفاده از تابع redirect انجام دهید.

آن‌چه باید آپلود کنید🔗

یک فایل ZIP شامل پروژه جنگو خود آپلود کنید؛ توجه کنید که فقط می‌توانید فایل‌ ‍‍account/views.py را تغییر دهید.

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