Web Programming Project 02.pdf

‫دانشگاه صنعتی شریف‬
‫دانشکده مهندسی کامپیوتر‬
‫برنامه سازی وب‬
‫پروژهی شماره ‪۲‬‬
‫شلگرام‬
‫موعد ارسال‪۹۴/۲/۲۸ :‬‬
‫نیمسال دوم سال تحصیلی ‪۹۵-۹۴‬‬
‫مقدمه‬
‫قرار است در این پروژه سیستمی برای به اشتراکگذاری گروهی مطالب تولید شود‪.‬‬
‫کلیت نحوهی کار این سیستم به این صورت است که تعدادی گروه وجود دارد و در هر گروه‬
‫افراد میتوانند پست بگذارند‪ ،‬ولی هدف چت کردن افراد نیست و قرار است صرفاا مطالبی را به‬
‫اشتراک بگدارند‪.‬‬
‫اهداف پروژه‬
‫انتظار میرود که با انجام این پروژه‪ ،‬دانشجویان مهارتهای زیر را فراگرفته باشند‪:‬‬
‫‪CreateView‬‬
‫‪UpdateView‬‬
‫‪FormView‬‬
‫‪View‬‬
‫‪ListView‬‬
‫‪inline_formset_factory‬‬
‫‪formset_factory‬‬
‫‪Ajax‬‬
‫‪Authentication and Privilage Levels‬‬
‫‪searching + infinite scroll‬‬
‫پیش نیازها‬
‫در این پروژه نیاز به استفاده از یک ‪ IDE‬مناسب دارید که ‪ Pycharm‬گزینهی خوبی است‪.‬‬
‫نیاز به نصب پایتون نسخهی بزرگتر از ‪.۳‬‬
‫نیاز به ‪ pip‬برای نصب ‪ django‬و دیگر ‪package‬های مورد نیاز‪.‬‬
‫نیاز به نصب ‪ virtualenv‬و برای راحتی بیشتر ‪.virtualenvwrapper‬‬
‫برای کار گروهی اکیدا پیشنهاد میشود از ‪ git‬به عنوان ‪ version controll‬استفاده کنید‪.‬‬
‫استفاده از تمامی ‪ package‬های پایتون که روی ‪ pip‬قرار دارند مجاز است‪.‬‬
‫شر ح پروژه‬
‫ریز صورت پروژه برای تفهیم بهتر در قالب تعدادی ‪) User Story‬به همراه مقداری توضیحات‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫اضافه در پرانتز( بیان شده است‪ .‬همچنین در انتها پروتوتایپ سادهای از ‪ ۳‬صفحهی اصلی‬
‫سایت آمده‪.‬‬
‫خواسته ها‬
‫•‬
‫به عنوان یک فرد وارد نشده در شلگرام میخواهم توضیحی در ارتباط با چیستی شلگرام‬
‫•‬
‫به عنوان یک کاربر میخواهم صفحهی مدیریت کاربری داشته باشم که در آن بتوانم‬
‫و لینک عضویت و ورود را ببینم‪).‬پیادهسازی ‪ Forget Password‬نمره ی اضافی دارد(‬
‫اطلعات کاربریام)شامل عکس پروفایل و نام نمایشی( را تغیر دهم و به‬
‫درخواستهای عضویت در گروههایی که مدیر آنها هستم پاسخ دهم‪.‬‬
‫•‬
‫به عنوان یک کاربر میخواهم در صفحهی مدیریت بتوانم گروه جدید بسازم‪ .‬کاربر‬
‫•‬
‫به عنوان یک کاربر میخواهم در کنار اسم دیگر کاربران عکس آنها را در صورت وجود‬
‫•‬
‫بهعنوان یک کاربر شلگرام میخواهم پس از وارد شدن لیست همهی گروههای شلگرام و‬
‫سازندهی هر گروه مدیر آن گروه است‪.‬‬
‫ببینم و در صورت عدم وجود عکس یک عکس پیشفرض مشاهده کنم‪.‬‬
‫لیست گروههایی که در آنها عضویت تاید شده دارم را ببینم‪) .‬نمایش لیستها‬
‫بهصورت ‪ Infinite Scroll‬نمره اضافی دارد(‬
‫•‬
‫به عنوان یک کاربر میخواهم در اولین صفحه بعد از ورود روی اسم هر گروه‬
‫نوتیفیکیشنهایش )تعداد پستهای جدید( را ببینم‪ ،‬روی هر یک از گروهها کلیک‬
‫میکنم به صفحهی مورد نظر بروم و نوتیفهای آن حذف شود‪ .‬همچنین دکمهای برای‬
‫تبدیل شدن همهی نوتیفهای جدید به قدیمی وجود داشته باشد)‪.(Mark all as read‬‬
‫•‬
‫به عنوان یک کاربر میخواهم در صفحهی مدیریت کاربری درخواست عضویت در گروهی‬
‫که در آن عضو نیستم را بدهم‪ .‬انجام آن بهاین صورت است که در یک ‪Search Box‬‬
‫اسمی را وارد میکنم و پس از سابمیت لیست گروههایی که اسمشان شامل این عبارت‬
‫است برای عضویت بیاید‪) .‬تا هنگامیکه در گروهی عضو نیستم نمیتوانم محتوای آن را‬
‫ببینم و این کار در صفحهی خانهی هر کس که شامل لیست همهی گروهها بود انجام‬
‫میشود(‬
‫•‬
‫به عنوان یک کاربر میخواهم در صفحهی گروهی که در آن عضو هستم لیست همهی‬
‫پستها به ترتیب زمان گذاشته شدن را ببینم )پیادهسازی ‪ Infinite Scroll‬نمره اضافی‬
‫دارد( و بتوانم پست جدید در گروه بگذارم‪.‬‬
‫•‬
‫به عنوان یک کاربر میخواهم در همهی مدت زمانی که لگین هستم روی هر گروه تعداد‬
‫نوتیفیکیشنهای جدیدم را ببینم و در صورت کلیک کردن روی آن به صفحهی مورد نظر‬
‫بروم‪ .‬همچنین در صورت باز بودن صفحهای از بهوجود آمدن نوتیفیکیشن جدید با‬
‫حداکثر ‪ ۱‬دقیقه تاخیر مطلع شوم)بدون ‪ refresh‬شدن صفحه(‪.‬‬
‫نکات مهم‬
‫در این پروژه به بررسی زیبایی رابط کاربری شما پرداخته نمیشود‪ .‬البته باید در حدی که به طور‬
‫کامل کاربری سیستم نمایش داده شود به آن بپردازید‪.‬پروژه باید در گروههای دو نفره انجام‬
‫شود‪.‬‬
‫شما باید در این پروژه از ‪ Generic View‬های جنگو استفاده کنید و در صورت استفاده از‬
‫‪ Function View‬ها نمره از دست میدهید‪ .‬همچنین متناسب با رفتار ‪ View‬باید از ‪Generic‬‬
‫‪ View‬متناسب استفاده کنید‪ .‬برای مثال اگر قرار است شئیی ساخته شود حتماا از ‪CreateView‬‬
‫استفاده شود‪.‬‬
‫‪ Authentication‬و ‪ Authorization‬نمره دارد‪.‬‬
‫حداکثر نمرهای که در این پروژه به شما داده میشود ‪ ۱۰۰‬نمره است و موارد نمره اضافه فقط‬
‫میتوانند نمرههایی که از دست میدهید را جبران کنند‪ ) .‬مینیمم ‪ ۱۰۰‬و نمره ای که از پروژه‬
‫می گیرید برایتان محاسبه می شود‪(.‬‬
‫مهم‪ :‬شما باید در ابتدایی ترین پوشه ی شامل پروژه‪ ،‬یک فایل ‪requirements.txt‬‬
‫داشته باشید که همه ی پکیج های مورد استفاده در آن آمده باشد‪ .‬پروژه ی شما به‬
‫صورت زیر اجرا می شود و در صورت اشکال در این روند نمره ی اجرای پروژه را از‬
‫دست می دهید‪) .‬ورژن پایتون مورد استفاده باید بزرگ تر یا مساوی ‪ ۳‬باشد!(‬
‫‪mkvirtualenv your-group-number‬‬
‫‪pip install -r requirements.txt‬‬
‫‪python manage.py runserver‬‬
‫همهی فرمها باید اعتبارسنجی شوند و شرایط درستی از قبیل تعداد کارکتر و حروفی که استفاده‬
‫میشود برای آن تعین شود)جزئیاتی مثل حداقل تعداد مجاز و کارکترهای مجاز به عهدهی‬
‫خودتان است(‪ .‬همچنین در صورت نادرست بودن موارد باید پیغام متناسب نمایش داده شود‪.‬‬
‫‪‬‬
‫لطف اا در صورت داشتن هرگونه سؤال یا ابهامی در مورد پروژه‪ ،‬با آدرس ایمیل‬
‫‪‬‬
‫‪ [email protected]‬تماس بگیرید‪.‬‬
‫لطفاا به تاریخ ارسال پروژه دقت لزم را داشته باشید‪ .‬این تاریخ به هیچ عنوان تمدید‬
‫‪‬‬
‫موارد خواسته شده را حداکثر تا تاریخ ‪ ۹۴/۲/۲۸‬ساعت ‪ ۲۳:۵۹‬در سامانهی ‪ Quera‬ارسال‬
‫نخواهد شد‪ ،‬لذا در روز بارگذاری‪ ،‬صورت پروژه را دریافت کرده و مطالعه کنید‪.‬‬
‫کنید‪ .‬زمان تحویل حضوری روز ‪ ۹۴/۲/۲۹‬خواهد بود‪ .‬دیرکرد در ارسال پروژه به منزلهی از‬
‫دست دادن تمامی نمره خواهد بود‪.‬‬
‫‪‬‬
‫شرکت تمامی اعضای گروه در زمان تحویل حضوری الزامیست‪.‬‬
‫‪‬‬
‫تمامی اعضای گروه باید در انجام تمامی بخشهای پروژه مشارکت داشته و در زمان‬
‫‪‬‬
‫تاریخ جلسات رفع ابهام پروژه از طریق صفحهی رسمی درس و کانال تلگرام اعلم خواهد‬
‫شد‪ .‬شرکت در این جلسات شدیداا توصیه میشود‪.‬‬
‫تحویل حضوری تسلط کامل داشته باشند‪.‬‬
‫‪‬‬
‫همکاری بین گروهی )بین دو یا چند گروه( مجاز نیست و به منزلهی تقلب محسوب‬
‫‪‬‬
‫هرگونه رونویسی‪ ،‬اقتباس‪ ،‬بهرهگیری و استفاده از کارر گروه های دیگر‪ ،‬چه به صورت جزئی و چه‬
‫کلی‪ ،‬مجاز نیست و تبعات انظباطی به همراه خواهد داشت‪.‬‬
‫‪‬‬
‫استفاده از توابع‪ ،‬کدها و کتابخانههای آماده در انجام پروژهها مجاز نیست‪ ،‬مگر آنکه در‬
‫میشود‪.‬‬
‫شرح پروژه به صورت مستقیم به مجاز بودن آنها اشاره شده باشد‪.‬‬
‫پ‪.‬ن‬
‫پروتوتایپ‪:‬‬
‫‪:‬صفحه ی اول‬
‫صفحه ی فرد وارد شده‪:‬‬
‫صفحه ی مدیریت حساب کاربری‪:‬‬