diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 3117254ac..e04c353d2 100644 Binary files a/locale/ar/LC_MESSAGES/django.mo and b/locale/ar/LC_MESSAGES/django.mo differ diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 4d13b0066..466fff622 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: Libya Tally\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-11 19:41+0200\n" +"POT-Creation-Date: 2024-11-14 09:27+0200\n" "PO-Revision-Date: 2014-02-21 16:33+0000\n" "Last-Translator: MonaHago \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/libya-tally/" @@ -679,51 +679,60 @@ msgid "Date Supervisor Modified:" msgstr "تاريخ تعديل المشرف:" #: tally_ho/apps/tally/templates/audit/print_cover.html:38 -#: tally_ho/apps/tally/templates/audit/review.html:36 #: tally_ho/apps/tally/templates/clearance/print_cover.html:50 -#: tally_ho/apps/tally/templates/clearance/review.html:16 +msgid "Modified by:" +msgstr "تعديل" + +#: tally_ho/apps/tally/templates/audit/print_cover.html:42 +#: tally_ho/apps/tally/templates/audit/review.html:32 +#: tally_ho/apps/tally/templates/audit/review.html:82 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:54 +#: tally_ho/apps/tally/templates/clearance/review.html:19 +#: tally_ho/apps/tally/templates/clearance/review.html:77 msgid "Problem" msgstr "مشكله " -#: tally_ho/apps/tally/templates/audit/print_cover.html:56 -#: tally_ho/apps/tally/templates/audit/review.html:42 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:68 -#: tally_ho/apps/tally/templates/clearance/review.html:32 +#: tally_ho/apps/tally/templates/audit/print_cover.html:60 +#: tally_ho/apps/tally/templates/audit/review.html:48 +#: tally_ho/apps/tally/templates/audit/review.html:88 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:72 +#: tally_ho/apps/tally/templates/clearance/review.html:44 +#: tally_ho/apps/tally/templates/clearance/review.html:93 msgid "Other:" msgstr "أخري" -#: tally_ho/apps/tally/templates/audit/print_cover.html:61 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:73 +#: tally_ho/apps/tally/templates/audit/print_cover.html:65 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:77 msgid "Action Conducted" msgstr "اجراء التصرف" -#: tally_ho/apps/tally/templates/audit/print_cover.html:67 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:79 +#: tally_ho/apps/tally/templates/audit/print_cover.html:71 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:83 msgid "Resolution Recommendation" msgstr "الحلول الموصى بها" -#: tally_ho/apps/tally/templates/audit/print_cover.html:71 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:83 +#: tally_ho/apps/tally/templates/audit/print_cover.html:75 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:87 msgid "Team Comment:" msgstr "تعليق الفريق:" -#: tally_ho/apps/tally/templates/audit/print_cover.html:74 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:86 +#: tally_ho/apps/tally/templates/audit/print_cover.html:78 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:90 msgid "Supervisor Comment:" msgstr "تعليق المشرف :" -#: tally_ho/apps/tally/templates/audit/print_cover.html:82 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:95 -#: tally_ho/apps/tally/templates/intake/print_cover.html:62 +#: tally_ho/apps/tally/templates/audit/print_cover.html:86 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:99 +#: tally_ho/apps/tally/templates/intake/print_cover.html:77 #: tally_ho/apps/tally/templates/quality_control/print_cover.html:52 msgid "Print" msgstr "طباعة" -#: tally_ho/apps/tally/templates/audit/print_cover.html:83 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:97 -#: tally_ho/apps/tally/templates/clearance/print_cover.html:99 -#: tally_ho/apps/tally/templates/intake/print_cover.html:64 -#: tally_ho/apps/tally/templates/intake/print_cover.html:66 +#: tally_ho/apps/tally/templates/audit/print_cover.html:87 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:101 +#: tally_ho/apps/tally/templates/clearance/print_cover.html:103 +#: tally_ho/apps/tally/templates/intake/print_cover.html:79 +#: tally_ho/apps/tally/templates/intake/print_cover.html:81 #: tally_ho/apps/tally/templates/quality_control/print_cover.html:53 msgid "Print Successful" msgstr "طباعه ناجحة وحفظ" @@ -750,24 +759,75 @@ msgstr "النموذج الموقوف" msgid "Failed quarantine check:" msgstr "فشل في فحص التوقيف" -#: tally_ho/apps/tally/templates/audit/review.html:37 -msgid "Blank reconciliation:" +#: tally_ho/apps/tally/templates/audit/review.html:35 +msgid "Blank reconciliation" msgstr "مصالحة غير متوفرة:" #: tally_ho/apps/tally/templates/audit/review.html:38 +msgid "Blank results" +msgstr "نتائج فارغة:" + +#: tally_ho/apps/tally/templates/audit/review.html:41 +msgid "Unclear figures" +msgstr "أشكال غير معروفة" + +#: tally_ho/apps/tally/templates/audit/review.html:44 +msgid "Damaged form" +msgstr "نموذج معطل:" + +#: tally_ho/apps/tally/templates/audit/review.html:53 +#: tally_ho/apps/tally/templates/audit/review.html:93 +#: tally_ho/apps/tally/templates/clearance/review.html:48 +#: tally_ho/apps/tally/templates/clearance/review.html:98 +msgid "Action Prior to Recommendation" +msgstr "الحلول الموصى بها" + +#: tally_ho/apps/tally/templates/audit/review.html:55 +#: tally_ho/apps/tally/templates/audit/review.html:94 +#: tally_ho/apps/tally/templates/clearance/review.html:50 +#: tally_ho/apps/tally/templates/clearance/review.html:99 +msgid "Action prior to recommendation:" +msgstr "الحلول الموصى بها" + +#: tally_ho/apps/tally/templates/audit/review.html:60 +#: tally_ho/apps/tally/templates/audit/review.html:97 +#: tally_ho/apps/tally/templates/clearance/review.html:55 +#: tally_ho/apps/tally/templates/clearance/review.html:102 +msgid "Resolution recommendation:" +msgstr "الحلول الموصى بها" + +#: tally_ho/apps/tally/templates/audit/review.html:68 +#: tally_ho/apps/tally/templates/audit/review.html:109 +#: tally_ho/apps/tally/templates/clearance/review.html:63 +#: tally_ho/apps/tally/templates/clearance/review.html:115 +msgid "Team comment:" +msgstr "تعليق الفريق" + +#: tally_ho/apps/tally/templates/audit/review.html:74 +#: tally_ho/apps/tally/templates/audit/review.html:114 +#: tally_ho/apps/tally/templates/clearance/review.html:69 +#: tally_ho/apps/tally/templates/clearance/review.html:120 +msgid "Supervisor comment:" +msgstr "تعليق المشرف" + +#: tally_ho/apps/tally/templates/audit/review.html:83 +msgid "Blank reconciliation:" +msgstr "مصالحة غير متوفرة:" + +#: tally_ho/apps/tally/templates/audit/review.html:84 msgid "Blank results:" msgstr "نتائج فارغة:" -#: tally_ho/apps/tally/templates/audit/review.html:39 +#: tally_ho/apps/tally/templates/audit/review.html:85 msgid "Unclear figures:" msgstr "أشكال غير معروفة" -#: tally_ho/apps/tally/templates/audit/review.html:40 +#: tally_ho/apps/tally/templates/audit/review.html:86 msgid "Damaged form:" msgstr "نموذج معطل:" -#: tally_ho/apps/tally/templates/audit/review.html:43 -#: tally_ho/apps/tally/templates/clearance/review.html:33 +#: tally_ho/apps/tally/templates/audit/review.html:90 +#: tally_ho/apps/tally/templates/clearance/review.html:95 #: tally_ho/apps/tally/templates/super_admin/edit_ballot.html:42 #: tally_ho/apps/tally/templates/super_admin/edit_center.html:41 #: tally_ho/apps/tally/templates/super_admin/edit_electrol_race.html:42 @@ -782,50 +842,46 @@ msgstr "نموذج معطل:" msgid "Save" msgstr "حفظ" -#: tally_ho/apps/tally/templates/audit/review.html:44 -#: tally_ho/apps/tally/templates/audit/review.html:60 -#: tally_ho/apps/tally/templates/clearance/review.html:34 -msgid "Action Prior to Recommendation" -msgstr "الحلول الموصى بها" - -#: tally_ho/apps/tally/templates/audit/review.html:45 -#: tally_ho/apps/tally/templates/audit/review.html:61 -#: tally_ho/apps/tally/templates/clearance/review.html:35 -msgid "Action prior to recommendation:" -msgstr "الحلول الموصى بها" - -#: tally_ho/apps/tally/templates/audit/review.html:48 -#: tally_ho/apps/tally/templates/audit/review.html:64 -#: tally_ho/apps/tally/templates/clearance/review.html:38 -msgid "Resolution recommendation:" -msgstr "الحلول الموصى بها" +#: tally_ho/apps/tally/templates/audit/review.html:91 +#: tally_ho/apps/tally/templates/check_clearance_center_details.html:16 +#: tally_ho/apps/tally/templates/clearance/review.html:96 +#: tally_ho/apps/tally/templates/corrections/required.html:70 +#: tally_ho/apps/tally/templates/quality_control/dashboard.html:24 +#: tally_ho/apps/tally/templates/super_admin/edit_ballot.html:45 +#: tally_ho/apps/tally/templates/super_admin/edit_center.html:44 +#: tally_ho/apps/tally/templates/super_admin/edit_electrol_race.html:45 +#: tally_ho/apps/tally/templates/super_admin/edit_result_form.html:39 +#: tally_ho/apps/tally/templates/super_admin/edit_station.html:52 +#: tally_ho/apps/tally/templates/super_admin/form.html:25 +#: tally_ho/apps/tally/templates/super_admin/quarantine_checks_config.html:51 +#: tally_ho/apps/tally/templates/super_admin/remove_center_confirmation.html:32 +#: tally_ho/apps/tally/templates/super_admin/remove_result_form_confirmation.html:50 +#: tally_ho/apps/tally/templates/super_admin/remove_station_confirmation.html:32 +#: tally_ho/apps/tally/templates/tally_manager/edit_user_profile.html:29 +#: tally_ho/apps/tally/templates/tally_manager/remove_user_confirmation.html:41 +#: tally_ho/apps/tally/templates/tally_manager/remove_user_confirmation.html:43 +#: tally_ho/apps/tally/templates/tally_manager/set_user_timeout.html:24 +#: tally_ho/apps/tally/templates/tally_manager/tally_files_form.html:86 +#: tally_ho/apps/tally/templates/tally_manager/tally_form.html:48 +#: tally_ho/apps/tally/templates/tally_manager/tally_form.html:58 +#: tally_ho/apps/tally/templates/tally_manager/tally_remove.html:36 +msgid "Cancel" +msgstr "تحقق" -#: tally_ho/apps/tally/templates/audit/review.html:52 -#: tally_ho/apps/tally/templates/clearance/review.html:42 +#: tally_ho/apps/tally/templates/audit/review.html:101 +#: tally_ho/apps/tally/templates/clearance/review.html:106 msgid "Forward to Supervisor and Print Cover" msgstr "تحيل إلى المشرف وطباعة الغلاف" -#: tally_ho/apps/tally/templates/audit/review.html:54 -#: tally_ho/apps/tally/templates/clearance/review.html:44 +#: tally_ho/apps/tally/templates/audit/review.html:103 +#: tally_ho/apps/tally/templates/clearance/review.html:108 msgid "Mark Form as Resolved" msgstr "تم تعديل النموذج" -#: tally_ho/apps/tally/templates/audit/review.html:55 +#: tally_ho/apps/tally/templates/audit/review.html:104 msgid "Return to Audit Team" msgstr "العودة إلى فريق التدقيق" -#: tally_ho/apps/tally/templates/audit/review.html:71 -#: tally_ho/apps/tally/templates/audit/review.html:75 -#: tally_ho/apps/tally/templates/clearance/review.html:51 -#: tally_ho/apps/tally/templates/clearance/review.html:55 -msgid "Team comment:" -msgstr "تعليق الفريق" - -#: tally_ho/apps/tally/templates/audit/review.html:80 -#: tally_ho/apps/tally/templates/clearance/review.html:60 -msgid "Supervisor comment:" -msgstr "تعليق المشرف" - #: tally_ho/apps/tally/templates/barcode_verify.html:9 msgid "Scan Barcode to proceed" msgstr "امسح الباركود للمتابعة" @@ -897,30 +953,6 @@ msgstr "الاسم غير مطابق والرقم غير صحيح - الرجاء msgid "Name Does Not Match and Code Correct - Send to Clearance" msgstr "الاسم غير مطابق والرقم صحيح- ارسل الاستمارة الى التصحيح" -#: tally_ho/apps/tally/templates/check_clearance_center_details.html:16 -#: tally_ho/apps/tally/templates/corrections/required.html:70 -#: tally_ho/apps/tally/templates/quality_control/dashboard.html:24 -#: tally_ho/apps/tally/templates/super_admin/edit_ballot.html:45 -#: tally_ho/apps/tally/templates/super_admin/edit_center.html:44 -#: tally_ho/apps/tally/templates/super_admin/edit_electrol_race.html:45 -#: tally_ho/apps/tally/templates/super_admin/edit_result_form.html:39 -#: tally_ho/apps/tally/templates/super_admin/edit_station.html:52 -#: tally_ho/apps/tally/templates/super_admin/form.html:25 -#: tally_ho/apps/tally/templates/super_admin/quarantine_checks_config.html:51 -#: tally_ho/apps/tally/templates/super_admin/remove_center_confirmation.html:32 -#: tally_ho/apps/tally/templates/super_admin/remove_result_form_confirmation.html:50 -#: tally_ho/apps/tally/templates/super_admin/remove_station_confirmation.html:32 -#: tally_ho/apps/tally/templates/tally_manager/edit_user_profile.html:29 -#: tally_ho/apps/tally/templates/tally_manager/remove_user_confirmation.html:41 -#: tally_ho/apps/tally/templates/tally_manager/remove_user_confirmation.html:43 -#: tally_ho/apps/tally/templates/tally_manager/set_user_timeout.html:24 -#: tally_ho/apps/tally/templates/tally_manager/tally_files_form.html:86 -#: tally_ho/apps/tally/templates/tally_manager/tally_form.html:48 -#: tally_ho/apps/tally/templates/tally_manager/tally_form.html:58 -#: tally_ho/apps/tally/templates/tally_manager/tally_remove.html:36 -msgid "Cancel" -msgstr "تحقق" - #: tally_ho/apps/tally/templates/clearance/dashboard.html:7 msgid "Clearance List" msgstr "قائمة التصحيح" @@ -950,35 +982,59 @@ msgstr "حالة التخليص: فريق الصفحة" msgid "None" msgstr "لا أحد" -#: tally_ho/apps/tally/templates/clearance/review.html:8 +#: tally_ho/apps/tally/templates/clearance/review.html:9 msgid "Clearance:" msgstr "التصحيح:" -#: tally_ho/apps/tally/templates/clearance/review.html:18 +#: tally_ho/apps/tally/templates/clearance/review.html:23 +msgid "Center name missing" +msgstr "اسم المركز مفقود" + +#: tally_ho/apps/tally/templates/clearance/review.html:26 +msgid "Center name mismatching" +msgstr "اسم المركز غير مطابق" + +#: tally_ho/apps/tally/templates/clearance/review.html:29 +msgid "Center code missing" +msgstr "رقم المركز مفقود" + +#: tally_ho/apps/tally/templates/clearance/review.html:32 +msgid "Center code mismatching" +msgstr "رقم المركز غير مطابق" + +#: tally_ho/apps/tally/templates/clearance/review.html:35 +msgid "Form already in system" +msgstr "رقم المركز موجود فى النظام مسبقاً" + +#: tally_ho/apps/tally/templates/clearance/review.html:40 +msgid "Form incorrectly entered into system" +msgstr "تم ادخال الاستمارة بشكل غير صحيح فى النظام" + +#: tally_ho/apps/tally/templates/clearance/review.html:79 msgid "Center name missing:" msgstr "اسم المركز مفقود" -#: tally_ho/apps/tally/templates/clearance/review.html:20 +#: tally_ho/apps/tally/templates/clearance/review.html:81 msgid "Center name mismatching:" msgstr "اسم المركز غير مطابق" -#: tally_ho/apps/tally/templates/clearance/review.html:22 +#: tally_ho/apps/tally/templates/clearance/review.html:83 msgid "Center code missing:" msgstr "رقم المركز مفقود" -#: tally_ho/apps/tally/templates/clearance/review.html:24 +#: tally_ho/apps/tally/templates/clearance/review.html:85 msgid "Center code mismatching:" msgstr "رقم المركز غير مطابق" -#: tally_ho/apps/tally/templates/clearance/review.html:26 +#: tally_ho/apps/tally/templates/clearance/review.html:87 msgid "Form already in system:" msgstr "رقم المركز موجود فى النظام مسبقاً" -#: tally_ho/apps/tally/templates/clearance/review.html:30 +#: tally_ho/apps/tally/templates/clearance/review.html:91 msgid "Form incorrectly entered into system:" msgstr "تم ادخال الاستمارة بشكل غير صحيح فى النظام" -#: tally_ho/apps/tally/templates/clearance/review.html:46 +#: tally_ho/apps/tally/templates/clearance/review.html:110 msgid "Return to Clearance Team" msgstr "رجوع الى فريق التصحيح" @@ -1130,10 +1186,10 @@ msgstr "معرف" #: tally_ho/apps/tally/templates/data/sub_cons_list.html:36 #: tally_ho/apps/tally/templates/data/tallies.html:32 #: tally_ho/apps/tally/templates/data/users.html:56 -#: tally_ho/apps/tally/templates/intake/print_cover.html:34 -#: tally_ho/apps/tally/templates/intake/print_cover.html:39 -#: tally_ho/apps/tally/templates/intake/print_cover.html:45 -#: tally_ho/apps/tally/templates/intake/print_cover.html:50 +#: tally_ho/apps/tally/templates/intake/print_cover.html:49 +#: tally_ho/apps/tally/templates/intake/print_cover.html:54 +#: tally_ho/apps/tally/templates/intake/print_cover.html:60 +#: tally_ho/apps/tally/templates/intake/print_cover.html:65 #: tally_ho/apps/tally/templates/reports/admin_areas_excluded_after_investigation.html:39 #: tally_ho/apps/tally/templates/reports/admin_areas_under_investigation.html:39 #: tally_ho/apps/tally/templates/reports/corrections_statistics.html:11 @@ -1292,13 +1348,13 @@ msgstr "غير مدخلة" #: tally_ho/apps/tally/views/intake.py:211 #: tally_ho/apps/tally/views/intake.py:238 #: tally_ho/apps/tally/views/intake.py:275 -#: tally_ho/apps/tally/views/intake.py:421 +#: tally_ho/apps/tally/views/intake.py:422 #: tally_ho/libs/reports/progress.py:185 msgid "Intake" msgstr "استقبال" #: tally_ho/apps/tally/templates/data/forms.html:31 -#: tally_ho/apps/tally/views/intake.py:422 +#: tally_ho/apps/tally/views/intake.py:423 #: tally_ho/libs/reports/progress.py:205 msgid "Data Entry 1" msgstr "ادخال بيانات 1" @@ -1325,7 +1381,7 @@ msgstr "ضبط الجودة" #: tally_ho/apps/tally/templates/data/forms.html:36 #: tally_ho/apps/tally/templates/super_admin/form_progress_by_form_state.html:35 -#: tally_ho/apps/tally/views/clearance.py:337 +#: tally_ho/apps/tally/views/clearance.py:343 #: tally_ho/libs/reports/progress.py:195 msgid "Clearance" msgstr "تحقق" @@ -1776,38 +1832,52 @@ msgid "Successful" msgstr "نجاح" #: tally_ho/apps/tally/templates/intake/print_cover.html:19 -msgid "Data Entry One:" -msgstr "ادخال البيانات الاول :" +#: tally_ho/apps/tally/templates/quality_control/print_cover.html:36 +msgid "Date/Time:" +msgstr "التاريخ / الوقت" + +#: tally_ho/apps/tally/templates/intake/print_cover.html:23 +msgid "Intaken by:" +msgstr "استقبال" -#: tally_ho/apps/tally/templates/intake/print_cover.html:20 #: tally_ho/apps/tally/templates/intake/print_cover.html:27 +msgid "Intake Clerk:" +msgstr "موظف الاستقبال " + +#: tally_ho/apps/tally/templates/intake/print_cover.html:28 +#: tally_ho/apps/tally/templates/intake/print_cover.html:35 +#: tally_ho/apps/tally/templates/intake/print_cover.html:42 #: tally_ho/apps/tally/templates/super_admin/quarantine_checks_config.html:25 #: tally_ho/apps/tally/templates/super_admin/remove_center_confirmation.html:24 msgid "Name:" msgstr "الاسم :" -#: tally_ho/apps/tally/templates/intake/print_cover.html:26 +#: tally_ho/apps/tally/templates/intake/print_cover.html:34 +msgid "Data Entry One:" +msgstr "ادخال البيانات الاول :" + +#: tally_ho/apps/tally/templates/intake/print_cover.html:41 msgid "Data Entry Two:" msgstr "ادخال البيانات التاني :" -#: tally_ho/apps/tally/templates/intake/print_cover.html:33 +#: tally_ho/apps/tally/templates/intake/print_cover.html:48 msgid "Corrections:" msgstr "التصحيح :" -#: tally_ho/apps/tally/templates/intake/print_cover.html:34 +#: tally_ho/apps/tally/templates/intake/print_cover.html:49 msgid "To Quality Control" msgstr "الى ضبط الجودة" -#: tally_ho/apps/tally/templates/intake/print_cover.html:39 -#: tally_ho/apps/tally/templates/intake/print_cover.html:50 +#: tally_ho/apps/tally/templates/intake/print_cover.html:54 +#: tally_ho/apps/tally/templates/intake/print_cover.html:65 msgid "To Data Entry One" msgstr "الى ادخال بيانات 1" -#: tally_ho/apps/tally/templates/intake/print_cover.html:44 +#: tally_ho/apps/tally/templates/intake/print_cover.html:59 msgid "Quality Control:" msgstr "ضبط الجودة :" -#: tally_ho/apps/tally/templates/intake/print_cover.html:45 +#: tally_ho/apps/tally/templates/intake/print_cover.html:60 msgid "To Archive" msgstr "الى الارشيف" @@ -1869,10 +1939,6 @@ msgstr "تمت الارشفه بنجاح " msgid "Archived Form" msgstr "نموذج مؤرشف" -#: tally_ho/apps/tally/templates/quality_control/print_cover.html:36 -msgid "Date/Time:" -msgstr "التاريخ / الوقت" - #: tally_ho/apps/tally/templates/quality_control/print_cover.html:41 msgid "Quarantined by:" msgstr "تم توقيفه من" @@ -3144,12 +3210,12 @@ msgid "" "related to it" msgstr "هل أنت متأكد أنك تريد حذف هذا العدد؟ سيحذف جميع البيانات المتعلقة به" -#: tally_ho/apps/tally/views/audit.py:343 +#: tally_ho/apps/tally/views/audit.py:344 msgid "Create Audit" msgstr "أنشاء التدقيق" -#: tally_ho/apps/tally/views/clearance.py:272 -#: tally_ho/apps/tally/views/clearance.py:387 +#: tally_ho/apps/tally/views/clearance.py:278 +#: tally_ho/apps/tally/views/clearance.py:393 msgid "Create Clearance" msgstr "تحقق" diff --git a/tally_ho/apps/tally/forms/recon_form.py b/tally_ho/apps/tally/forms/recon_form.py index 6ce23cc9b..b1df999bd 100644 --- a/tally_ho/apps/tally/forms/recon_form.py +++ b/tally_ho/apps/tally/forms/recon_form.py @@ -1,7 +1,5 @@ -from django import forms from django.forms import ModelForm from tally_ho.apps.tally.models import ReconciliationForm -from django.utils.translation import gettext_lazy as _ disable_copy_input = { @@ -54,23 +52,3 @@ def __init__(self, *args, **kwargs): class_str, self.fields[field].widget.attrs.get('class')) self.fields[field].widget.attrs['class'] = class_str - def clean(self): - """Verify that the total of field number_cancelled_ballots and - field number_ballots_inside_box match the value of field - total_of_cancelled_ballots_and_ballots_inside_box - """ - if self.is_valid(): - cleaned_data = super(ReconForm, self).clean() - number_cancelled_ballots =\ - cleaned_data.get('number_cancelled_ballots') - number_ballots_inside_box =\ - cleaned_data.get('number_ballots_inside_box') - total_of_cancelled_ballots_and_ballots_inside_box =\ - cleaned_data.get( - 'total_of_cancelled_ballots_and_ballots_inside_box') - - if (number_cancelled_ballots + number_ballots_inside_box) !=\ - total_of_cancelled_ballots_and_ballots_inside_box: - raise forms.ValidationError( - _('Total of fied 5 and 7 is incorrect')) - return cleaned_data diff --git a/tally_ho/apps/tally/management/commands/import_staff_list.py b/tally_ho/apps/tally/management/commands/import_staff_list.py index 0e392f7b0..3d2850111 100644 --- a/tally_ho/apps/tally/management/commands/import_staff_list.py +++ b/tally_ho/apps/tally/management/commands/import_staff_list.py @@ -5,6 +5,7 @@ from django.core.management.base import BaseCommand from django.utils.translation import gettext_lazy +from tally_ho.apps.tally.models.tally import Tally from tally_ho.libs.permissions import groups from tally_ho.apps.tally.models.user_profile import UserProfile @@ -41,12 +42,9 @@ def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): - # csv.py doesn't do Unicode; encode temporarily as UTF-8: - csv_reader = csv.reader(utf_8_encoder(unicode_csv_data), - dialect=dialect, **kwargs) + csv_reader = csv.reader(unicode_csv_data, dialect=dialect, **kwargs) for row in csv_reader: - # decode UTF-8 back to Unicode, cell by cell: - yield [str(cell, 'utf-8') for cell in row] + yield row def utf_8_encoder(unicode_csv_data): @@ -54,10 +52,22 @@ def utf_8_encoder(unicode_csv_data): yield line.encode('utf-8') -def add_row(command, name, username, role, admin=None): +def add_row(command, name, username, role, admin=None, tally_id=None): try: + # Parse the name into first and last name first_name, last_name = assign_names(name) - user = create_user(first_name, last_name, username) + + tally = None + if tally_id: + try: + tally = Tally.objects.get(id=tally_id) + except Tally.DoesNotExist: + command.stdout.write(command.style.ERROR( + f"Tally with id '{tally_id}' does not exist." + )) + return # Exit function if the Tally is not found + + user = create_user(first_name, last_name, username, tally) permission = True if admin == 'Yes' else False user.is_superuser = user.is_staff = permission @@ -65,18 +75,18 @@ def add_row(command, name, username, role, admin=None): except Exception as e: command.stdout.write(command.style.ERROR( - "User '%s' not created! '%s'" % (username, e))) + f"User '{username}' not created! '{e}'" + )) else: system_role = STAFF_ROLE_DICT.get(role.upper().strip()) if system_role: - group = Group.objects.get_or_create( - name=system_role)[0] + group = Group.objects.get_or_create(name=system_role)[0] user.groups.add(group) else: command.stdout.write(command.style.ERROR( - "Unable to add user %s to unknown group '%s'." - % (username, role))) + f"Unable to add user {username} to unknown group '{role}'." + )) def assign_names(name): @@ -91,14 +101,20 @@ def assign_names(name): return first_name, last_name -def create_user(first_name, last_name, username): +def create_user(first_name, last_name, username, tally=None): try: return UserProfile.objects.get(username=username) except UserProfile.DoesNotExist: - return UserProfile.objects.create_user( - username, password=username, + user = UserProfile.objects.create_user( + username=username, + password=username, first_name=first_name, - last_name=last_name) + last_name=last_name + ) + if tally: + user.tally = tally + user.save() + return user class Command(BaseCommand): @@ -106,7 +122,6 @@ class Command(BaseCommand): def handle(self, *args, **kwargs): self.import_staff_list() - self.import_user_list() def import_staff_list(self): with codecs.open(STAFF_LIST_PATH, encoding='utf-8') as f: @@ -116,12 +131,15 @@ def import_staff_list(self): for row in reader: try: name, username, role, admin = row[0:4] + tally_id =\ + row[4].strip()\ + if len(row) > 4 and row[4].strip() else None except Exception as e: self.stdout.write(self.style.ERROR( - 'Unable to add user in row: %s. Exception %s.' % - (row, e))) + f'Unable to add user in row: {row}. Exception: {e}.' + )) else: - add_row(self, name, username, role, admin) + add_row(self, name, username, role, admin, tally_id) def import_user_list(self): with codecs.open(USER_LIST_PATH, encoding='utf-8') as f: diff --git a/tally_ho/apps/tally/templates/audit/print_cover.html b/tally_ho/apps/tally/templates/audit/print_cover.html index 3dc831b1d..9de48435e 100644 --- a/tally_ho/apps/tally/templates/audit/print_cover.html +++ b/tally_ho/apps/tally/templates/audit/print_cover.html @@ -34,6 +34,10 @@

{% trans 'Audit Case: Team Page' %}

{% trans 'Date Supervisor Modified:' %} {{ result_form.audit.date_supervisor_modified }} + + {% trans 'Modified by:' %} + {{ username }} +

{% trans 'Problem' %}

diff --git a/tally_ho/apps/tally/templates/audit/review.html b/tally_ho/apps/tally/templates/audit/review.html index 5aaa6bb78..1bf1a2103 100644 --- a/tally_ho/apps/tally/templates/audit/review.html +++ b/tally_ho/apps/tally/templates/audit/review.html @@ -26,6 +26,58 @@

{% trans 'Quarantined Form' %}

+
+
+ {% if form.blank_reconciliation.value or form.blank_results.value or form.unclear_figures.value or form.damaged_form.value or form.other.value %} +

{% trans "Problem" %}

+ {% endif %} + {% if form.blank_reconciliation.value %} +

+ {% endif %} + {% if form.blank_results.value %} +

+ {% endif %} + {% if form.unclear_figures.value %} +

+ {% endif %} + {% if form.damaged_form.value %} +

+ {% endif %} + {% if form.other.value %} +

{{ form.other.value }}

+

+ {% endif %} + + {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' or form.resolution_recommendation.value|get_audit_resolution_name != '----' %} +

{% trans "Action Prior to Recommendation" %}

+ {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' %} +

+ {{ form.action_prior_to_recommendation.value|get_audit_action_name }} +

+ {% endif %} + {% if form.resolution_recommendation.value|get_audit_resolution_name != '----' %} +

+ {{ form.resolution_recommendation.value|get_audit_resolution_name }} +

+ {% endif %} + {% endif %} +
+
+ {% if form.team_comment.value %} +

+ {{ form.team_comment.value }} +

+ {% endif %} + {% if not is_clerk %} + {% if form.supervisor_comment.value %} +

+ {{ form.supervisor_comment.value }} +

+ {% endif %} + {% endif %} +
+

{% trans "Problem" %}

{{ form.blank_reconciliation }}

@@ -34,7 +86,10 @@

{% trans "Problem" %}

{{ form.damaged_form }}

{{ form.other }}

-

+

+ + {% trans "Cancel" %} +

{% trans "Action Prior to Recommendation" %}

{{ form.action_prior_to_recommendation }} @@ -49,34 +104,7 @@

{% trans "Action Prior to Recommendation" %}

{% endif %}
- {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' or form.action_prior_to_recommendation.value|get_audit_action_name != '----' %} -
-

{% trans "Action Prior to Recommendation" %}

- {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' %} -

- {{ form.action_prior_to_recommendation.value|get_audit_action_name }} -

- {% endif %} - {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' %} -

- {{ form.resolution_recommendation.value|get_audit_resolution_name }} -

- {% endif %} -
- {% endif %}
- {% if form.team_comment.value %} -

- {{ form.team_comment.value }} -

- {% endif %} - {% if not is_clerk %} - {% if form.supervisor_comment.value %} -

- {{ form.supervisor_comment.value }} -

- {% endif %} - {% endif %} {% if is_clerk %}

{{ form.team_comment }} diff --git a/tally_ho/apps/tally/templates/clearance/print_cover.html b/tally_ho/apps/tally/templates/clearance/print_cover.html index 97053f811..d385308f5 100644 --- a/tally_ho/apps/tally/templates/clearance/print_cover.html +++ b/tally_ho/apps/tally/templates/clearance/print_cover.html @@ -46,6 +46,10 @@

{% trans 'Clearance Case: Team Page' %}

{% else %} {% trans 'None' %} {% endif %} +
+ + +
{% trans 'Modified by:' %}{{ username }}

{% trans 'Problem' %}

diff --git a/tally_ho/apps/tally/templates/clearance/review.html b/tally_ho/apps/tally/templates/clearance/review.html index 3d437b285..7915112c6 100644 --- a/tally_ho/apps/tally/templates/clearance/review.html +++ b/tally_ho/apps/tally/templates/clearance/review.html @@ -1,6 +1,7 @@ {% extends 'base.html' %} {% load i18n %} +{% load app_filters %} {% block content %} @@ -12,6 +13,66 @@

{% trans 'Clearance:' %} {{ clearance_type }}

+
+
+ {% if form.center_name_missing.value or form.center_name_mismatching.value or form.center_code_missing.value or form.center_code_mismatching.value or form.form_already_in_system.value or form.form_incorrectly_entered_into_system.value or form.other.value %} +

{% trans "Problem" %}

+ {% endif %} + {% if form.center_name_missing.value %} +

+ {% endif %} + {% if form.center_name_mismatching.value %} +

+ {% endif %} + {% if form.center_code_missing.value %} +

+ {% endif %} + {% if form.center_code_mismatching.value %} +

+ {% endif %} + {% if form.form_already_in_system.value %} +

+ {% endif %} + {% if form.form_incorrectly_entered_into_system.value %} +

+ {% endif %} + {% if form.other.value %} +

{{ form.other.value }}

+ {% endif %} + + {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' or form.resolution_recommendation.value|get_clearance_resolution_name != '----' %} +

{% trans "Action Prior to Recommendation" %}

+ {% if form.action_prior_to_recommendation.value|get_audit_action_name != '----' %} +

+ {{ form.action_prior_to_recommendation.value|get_audit_action_name }} +

+ {% endif %} + {% if form.resolution_recommendation.value|get_clearance_resolution_name != '----' %} +

+ {{ form.resolution_recommendation.value|get_clearance_resolution_name }} +

+ {% endif %} + {% endif %} +
+
+ {% if form.team_comment.value %} +

+ {{ form.team_comment.value }} +

+ {% endif %} + {% if not is_clerk %} + {% if form.supervisor_comment.value %} +

+ {{ form.supervisor_comment.value }} +

+ {% endif %} + {% endif %} +
+

{% trans "Problem" %}

{{ form.center_name_missing }}

{{ form.other }}

-

+

+ + {% trans "Cancel" %} +

{% trans "Action Prior to Recommendation" %}

{{ form.action_prior_to_recommendation }} @@ -51,10 +115,6 @@

{% trans "Action Prior to Recommendation" %}

{{ form.team_comment }}

- {% else %} -

- {{ form.team_comment.value }} -

{% endif %} {% if not is_clerk %}

diff --git a/tally_ho/apps/tally/templates/intake/print_cover.html b/tally_ho/apps/tally/templates/intake/print_cover.html index b42851eaa..41ddc86af 100644 --- a/tally_ho/apps/tally/templates/intake/print_cover.html +++ b/tally_ho/apps/tally/templates/intake/print_cover.html @@ -15,6 +15,21 @@

{% trans 'Cover Form' %}

+ + + + + + + + + + + + +
{% trans 'Intake: ' %}{% trans 'Successful' %}
{% trans 'Date/Time:' %}{{ result_form.modified_date }}
{% trans 'Intaken by:' %}{{ username }}
{% trans 'Intake Clerk:' %}{% trans 'Name:' %} + ________________________________________ +
{% trans 'Data Entry One:' %} {% trans 'Name:' %} diff --git a/tally_ho/apps/tally/templatetags/app_filters.py b/tally_ho/apps/tally/templatetags/app_filters.py index b737fa128..0d33383e2 100644 --- a/tally_ho/apps/tally/templatetags/app_filters.py +++ b/tally_ho/apps/tally/templatetags/app_filters.py @@ -3,6 +3,7 @@ from tally_ho.apps.tally.models.tally import Tally from tally_ho.libs.models.enums.actions_prior import ActionsPrior from tally_ho.libs.models.enums.audit_resolution import AuditResolution +from tally_ho.libs.models.enums.clearance_resolution import ClearanceResolution register = template.Library() @@ -67,7 +68,7 @@ def get_audit_action_name(action_prior_enum): return action_prior_name -def get_audti_resolution_label_by_number(choice_number): +def get_audit_resolution_label_by_number(choice_number): for number, choice_label in AuditResolution.choices(): if number == choice_number: return choice_label @@ -83,8 +84,31 @@ def get_audit_resolution_name(audit_resolution_enum): audit_resolution_name = None try: audit_resolution_name =\ - get_audti_resolution_label_by_number(audit_resolution_enum.value) + get_audit_resolution_label_by_number(audit_resolution_enum.value) except AttributeError: pass return audit_resolution_name + +def get_clearance_resolution_label_by_number(choice_number): + for number, choice_label in ClearanceResolution.choices(): + if number == choice_number: + return choice_label + +@register.filter(name="get_clearance_resolution_name") +def get_clearance_resolution_name(clearance_resolution_enum): + """Get clearance resolution name. + + :param clearance_resolution_enum: Clearance resolution enum + + :returns: Clearance resolution name as a String. + """ + clearance_resolution_name = None + try: + clearance_resolution_name =\ + get_clearance_resolution_label_by_number( + clearance_resolution_enum.value) + except AttributeError: + pass + + return clearance_resolution_name diff --git a/tally_ho/apps/tally/tests/forms/test_recon_form.py b/tally_ho/apps/tally/tests/forms/test_recon_form.py index 36e0a2bc3..c31a96ace 100644 --- a/tally_ho/apps/tally/tests/forms/test_recon_form.py +++ b/tally_ho/apps/tally/tests/forms/test_recon_form.py @@ -1,7 +1,6 @@ from tally_ho.libs.tests.test_base import TestBase, create_result_form from tally_ho.libs.permissions import groups from tally_ho.apps.tally.forms.recon_form import ReconForm -from django.utils.translation import gettext_lazy as _ class ReconFormTest(TestBase): def setUp(self): @@ -47,22 +46,6 @@ def test_missing_required_fields(self): self.assertFalse(form.is_valid()) self.assertIn('number_valid_votes', form.errors) - def test_custom_clean_validation(self): - """Test that custom validation in clean method raises error with - incorrect totals.""" - invalid_data = self.valid_data.copy() - invalid_data['total_of_cancelled_ballots_and_ballots_inside_box'] =\ - 999 # Invalid total - form = ReconForm(data=invalid_data) - self.assertFalse(form.is_valid()) - - # Convert the error messages to strings for comparison - error_messages = [str(err) for err in form.errors['__all__']] - - # Check if the expected error message is in the error messages - self.assertIn( - str(_('Total of fied 5 and 7 is incorrect')), error_messages) - def test_disable_copy_paste_attributes(self): """Test that the copy/paste attributes are disabled on all form fields.""" diff --git a/tally_ho/apps/tally/tests/views/test_audit.py b/tally_ho/apps/tally/tests/views/test_audit.py index b349debde..a63921d56 100644 --- a/tally_ho/apps/tally/tests/views/test_audit.py +++ b/tally_ho/apps/tally/tests/views/test_audit.py @@ -524,7 +524,7 @@ def test_review_post_supervisor_implement_de1(self): audit = Audit.objects.get(result_form=result_form) self.assertEqual(audit.supervisor, self.user) - self.assertTrue(audit.reviewed_supervisor) + self.assertFalse(audit.reviewed_supervisor) self.assertTrue(audit.reviewed_team) self.assertTrue(audit.active) self.assertEqual(audit.result_form.form_state, @@ -544,10 +544,10 @@ def test_review_post_supervisor_implement_de1(self): self.assertEqual(result_form_stat.result_form, result_form) for result in audit.result_form.results.all(): - self.assertFalse(result.active) + self.assertTrue(result.active) for result in audit.result_form.reconciliationform_set.all(): - self.assertFalse(result.active) + self.assertTrue(result.active) self.assertEqual(audit.action_prior_to_recommendation, ActionsPrior.REQUEST_AUDIT_ACTION_FROM_FIELD) diff --git a/tally_ho/apps/tally/views/audit.py b/tally_ho/apps/tally/views/audit.py index 358667ecc..b8cda8b4a 100644 --- a/tally_ho/apps/tally/views/audit.py +++ b/tally_ho/apps/tally/views/audit.py @@ -91,7 +91,7 @@ def audit_action(audit, post_data, result_form, url): [ActionsPrior.REQUEST_AUDIT_ACTION_FROM_FIELD, ActionsPrior.REQUEST_COPY_FROM_FIELD]: audit.active = True - result_form.reject(new_state=FormState.AUDIT) + audit.reviewed_supervisor = False else: audit.active = False result_form.reject(new_state=FormState.DATA_ENTRY_1) @@ -296,6 +296,7 @@ def get(self, *args, **kwargs): return self.render_to_response( self.get_context_data(result_form=result_form, + username=self.request.user.username, problems=problems, tally_id=tally_id)) @@ -371,13 +372,6 @@ def post(self, *args, **kwargs): if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) - if result_form.audit is not None: - if (result_form.form_state == FormState.AUDIT) &\ - (result_form.audited_count > 0) &\ - (result_form.audit.action_prior_to_recommendation in\ - [ActionsPrior.REQUEST_AUDIT_ACTION_FROM_FIELD, - ActionsPrior.REQUEST_COPY_FROM_FIELD]): - possible_states.append(FormState.AUDIT) form = safe_form_in_state(result_form, possible_states, form) diff --git a/tally_ho/apps/tally/views/clearance.py b/tally_ho/apps/tally/views/clearance.py index 628af2568..a11d45dcb 100644 --- a/tally_ho/apps/tally/views/clearance.py +++ b/tally_ho/apps/tally/views/clearance.py @@ -43,8 +43,7 @@ def clearance_action(post_data, clearance, result_form, url): if clearance.resolution_recommendation ==\ ClearanceResolution.PENDING_FIELD_INPUT: clearance.active = True - result_form.form_state = FormState.CLEARANCE - result_form.save() + clearance.reviewed_supervisor = False if clearance.resolution_recommendation ==\ ClearanceResolution.RESET_TO_PREINTAKE: @@ -234,6 +233,7 @@ def get(self, *args, **kwargs): return self.render_to_response( self.get_context_data(result_form=result_form, + username=self.request.user.username, problems=problems, printed_url=reverse( self.printed_url, args=(pk,)), @@ -311,12 +311,6 @@ def post(self, *args, **kwargs): self.request.user): possible_states.append(FormState.ARCHIVED) - if result_form.clearance is not None: - if (result_form.form_state == FormState.CLEARANCE) &\ - (result_form.clearance.resolution_recommendation ==\ - ClearanceResolution.PENDING_FIELD_INPUT): - possible_states.append(FormState.CLEARANCE) - form = safe_form_in_state(result_form, possible_states, form) if form: @@ -384,12 +378,6 @@ def post(self, *args, **kwargs): self.request.user): possible_states.append(FormState.ARCHIVED) - if (result_form.form_state == FormState.CLEARANCE) &\ - (result_form.clearance is not None) &\ - (result_form.clearance.resolution_recommendation ==\ - ClearanceResolution.PENDING_FIELD_INPUT): - possible_states.append(FormState.CLEARANCE) - form = safe_form_in_state(result_form, possible_states, form) if form: diff --git a/tally_ho/apps/tally/views/intake.py b/tally_ho/apps/tally/views/intake.py index fe00fb523..21023bb2d 100644 --- a/tally_ho/apps/tally/views/intake.py +++ b/tally_ho/apps/tally/views/intake.py @@ -337,6 +337,7 @@ def get(self, *args, **kwargs): return self.render_to_response( self.get_context_data( result_form=result_form, + username=self.request.user.username, printed_url=reverse(self.printed_url, args=(pk,),), tally_id=tally_id))