کوئرا قصد دارد تا آپلودسنتری برای کاربران سامانه LMS اش طراحی کند. بدین ترتیب کاربران میتوانند فایلهای آموزشی موردنیاز خود برای هر کلاس را داخل صفحه کلاس آپلود کنند و لینکش را با بقیه به اشتراک قرار دهند. از آنجایی که همه آپلودسنترها دارای محدودیتهایی برای آپلود فایل هستند و تیم فنی کوئرا وقتی برای پیادهسازی این سامانه ندارند، از شما میخواهیم تا API آپلودسنتر مدنظرشان را طراحی کنید.
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
account
🔗اپلیکیشن account
شامل دو مدل میشود که محدودیتهای کاربران را مشخص میکنند. در ادامه فیلدهای هر یک توضیح داده شده است.
User
این مدل شامل فیلدهای زیر است:
account
که مشخص کننده نوع حساب کاربری یک User
است.used_storage
که مقدار فضای اشغال شده در سرور توسط User
را بر حسب بایت نشان میدهد.Account
این مدل شامل فیلدهای زیر است:
title
که عنوان اکانت را مشخص میکند.storage
که حداکثر فضای مربوط به این نوع حساب کاربری را بر حسب بایت مشخص میکند.max_file_transfer
که حداکثر محدودیت حجمی فایلهای آپلود شده مربوط به این نوع حساب کاربری را بر حسب بایت مشخص میکند.اکیدا توصیه میشود پیش از حل این بخش سایر قسمتهای پروژه را مطالعه کنید.
UploadFile
متد PUT
در این ویو، وظیفه آپلود فایل کاربران را بر عهده دارد و در پاسخ یک دیکشنری به صورت فایل JSON
مانند زیر برمیگرداند:
در این دیکشنری، کلیدها نام فایل ذخیره شده در سرور و مقدار آنها آدرس دانلود فایل مربوطه میباشد.
در صورتی که حجم فایل ارسالی از محدودیت مشخص شده (max_file_transfer
) بیشتر باشد، کلید دیکشنری اسم فایل ارسالی و مقدار آن باید عبارت زیر باشد:
و در صورتی که کاربر فضایی برای آپلود فایل جدید نداشت، کلید دیکشنری اسم فایل ارسالی و مقدار آن باید عبارت زیر باشد:
root
پروژه و در دایرکتوری زیر ذخیره شوند.FileManager
GET
در این متد، اطلاعات کاربر به صورت یک فایل JSON
مانند زیر برمیگردد:
Files
قرار دهید:DELETE
در این متد، نام فایلی که قرار است حذف شود در پارامتر file_name
از طریق دیکشنری POST
شئ ریکوئست در دسترس است. در صورتی که فایل موردنظر در سرور وجود داشت، فایل را از سرور حذف کنید، اطلاعات کاربر را بهروز کنید و پاسخ زیر را در قالب JSON
به کاربر نشان دهید:
و در صورتی که فایل در سرور موجود نبود، پاسخ زیر را در قالب JSON
و با استاتوس کد ۴۰۴ به کاربر ارائه دهید:
DownloadFile
در متد GET
این ویو، فایل خواسته شده را به صورت یک FileResponse
برگردانید.
user
نام کاربری کاربر آپلودکننده فایل است و پارامتر filename
نام فایل را مشخص میکند.upload_center/views.py
، config/settings.py
و upload_center/serializers.py
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد.testssample.py
با روش تست کردن مدلها، فرمها و ویوها آشنا شوید.یک فایل ZIP حاوی همهی فایلهای پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.