سلیب که تلاشهای فراوانی برای رفتن به تیم فنی کوئرا کرده بود، در نهایت با مخالفت شدید مصطفی روبهرو شد.
او که از دار دنیا فقط دوستی با مازیار را داشت؛ به او متوسل شد تا به عضویت تیم مالی درآید ولی مازیار که در کار، آدم جدیای است؛ به او ۱۰ تسک و مهلت ۱ ساعته (مشخصه نمیخواد استخدامش کنه!) داد تا در صورتی که این تسکها را با موفقیت انجام داد، رزومه او را بررسی کند.
حال سلیب که هیچگونه استعدادی در این کار ندارد، دست به دامان شما شده است تا در این فرصت کم، با استفاده از ۱۰ کوئری، پاسخ تسکها را برای او بفرستید و او را در کسب شغل جدید همراهی کنید.
پروژه اولیه را از این لینک دانلود کنید. ساختار این پروژه به شرح زیر است:
در فایل models.py
هشت مدل به شرح زیر وجود دارد.
Department
(بخشهای مختلف شرکت) name
: نام بخشphone
: شماره تلفن بخشEmployee
(کارمند) account
: اکانت کارمند که اطلاعات کاربری او را نگه میدارد.department
: بخشی که کارمند در آن کار میکند.phone
: شماره تلفن کارمندProject
(پروژه) title
: عنوان پروژهdepartment
: بخش مربوطه پروژهemployees
: کارمندان حاضر در پروژهestimated_end_time
: زمان تخمینزده شده اتمام پروژهend_time
: زمان اتمام پروژهEmployeeProjectRelation
(ذخیره اطلاعات اضافی برای حضور کارمندان در پروژههای مختلف) employee
: کارمند مربوطهproject
: پروژه مربوطهhours
: ساعتهای کاری در پروژهrole
: نقش کارمند در پروژهAttendance
(حضور و غیاب) employee
: کارمند مربوطهdate
: تاریخin_time
: زمان ورود به شرکتout_time
: زمان خروج از شرکتlate_cause
: دلیل تأخیر (در صورت تاخیر)Salary
(حقوق) employee
: کارمند مربوطهbase
: حقوق پایهtax
: مالیات (درصد)insurance
: بیمه (درصد)overtime
: اضافه کار (ساعت)Payment
(پرداخت) amount
: مقدار پرداختشدهaccount_number
: شماره حساب مقصدpayment_type
: نوع پرداختdescription
: توضیحات پرداختdate
: تاریخ پرداختPayslip
(فیش حقوقی) base
: پایه حقوقtax
: مالیات (تومان)insurance
: بیمه (تومان)overtime
: اضافه کار (تومان)salary
: حقوق مربوطهpayment
: پرداخت مربوطهحال از شما میخواهیم پرس و جو (query) های زیر را روی مدلهای بالا بنویسید.
حتما قبل شروع نوشتن کد، تذکرات انتهای سوال را بخوانید!
dict
به صورت زیر برگردانید.hours=x
** ساعت روی پروژههایشان اضافه کار کردهاند.** x
ساعت اضافه کاری داشتهاند را در قالب یک dict
به صورت زیر برگردانید.dict
به صورت زیر برگردانید.id=x
روی پروژههایش کار کردهاست. id=x
روی پروژههایش کار کردهاست را در قالب یک dict
به صورت زیر برگردانید.total_hours
برابر None
باشد.x
باشد. total_hours
برگردانید.total
برگردانید.x
داده می شود.dict
به صورت زیر برگردانید.امتیاز | بخش |
---|---|
۲۰ | query_1 |
۲۰ | query_2 |
۳۵ | query_3 |
۳۵ | query_4 |
۳۵ | query_5 |
۴۵ | query_6 |
۴۵ | query_7 |
۴۵ | query_8 |
۶۰ | query_9 |
۶۰ | query_10 |
در صورتی که علاقمندید که خودتان به صورت دستی کوئریهای خود را امتحان کنید و از درستی آنها اطمینان حاصل کنید، یا اینکه به بررسی بیشتر از این تمرین بپردازید، برای راحتی بیشتر شما، فایلهای مایگریشنها ساخته شدهاند و شما کافیست جهت ایجاد پایگاهداده، یک بار دستور migrate
را اجرا کنید.
علاوهبر این، یک سری دادهی از پیش آماده شده، فراهم شده که بعد از اجرای دستور migrate
، میتوانید آنها را وارد پایگاهدادهی پروژهی خود کنید. به این منظور، دستور زیر را اجرا کنید. میتوانید از این دادهها به جهت تست کردن کوئریهای خود استفاده کنید.
۱. ایجاد پایگاهداده
۲. وارد کردن دادههای از پیش آماده شده (fixture)
در صورتی که علاقمند به تست نیستید، نیازی به ایجاد پایگاهداده و وارد کردن دادههای آزمایشی نیست، و تنها کافیست که در فایل queries.py
کوئریهای خود را بنویسید و از کوئرا جهت امتحان کردن درستی کوئریهایتان استفاده کنید.
در فایلهای اولیهای که دانلود کردید یکسری داده اولیه به عنوان نمونه قرار داده شده است. میتوانید قبل از فرستادن سوال در سایت، این تستها را ببینید تا با نحوه داوری ما آشنا شوید و از پاسخ خود اطمینان حاصل نمایید.
تستها را میتوانید با دستور زیر اجرا کنید:
queries.py
وجود دارد که برای هر سوال یک تابع در نظر گرفته شده است. شما کدهای خود را باید در این فایل بنویسید و QuerySet مربوطه را بازگردانید.query_0
در پاسخ به پرس و جویِ «لیست همه ی کارمندان» کامل شده است که شما نیز باید مشابه همین تابع، بقیه توابع را تکمیل کنید.در سوالاتی که در صورت سوال، مقداری به صورت متغیر ذکر شده است؛ متغیر مورد نظر در آرگومانهای ورودی تابع در نظر گرفته شده است. شما نباید آرگومانهای ورودی تابع را تغییر دهید.
در تمام سوالات به جز سوالاتی که خروجی نمونه برای آنها مشخص شده است، همانطور که ذکر شد، خروجی شما یک شئ از نوع QuerySet با اِلِمانهایی از جنس گفتهشده در اول سوال باید باشد. یعنی در واقع خود query را return کنید.
شما تنها مجوز ایجاد تغییرات در فایل Finance/queries.py
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد.
فراموش نکنید که میتوانید با مطالعهی testsample.py
با روش تست کردن کوئریها آشنا شوید.
یک فایل ZIP حاوی همهی فایلهای پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.