diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 7939c5c2..f1e97913 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osinacore/__pycache__/models.cpython-310.pyc b/osinaweb/osinacore/__pycache__/models.cpython-310.pyc index 80579ed4..be7a271d 100644 Binary files a/osinaweb/osinacore/__pycache__/models.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc index a7ff35b4..9547110e 100644 Binary files a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-310.pyc new file mode 100644 index 00000000..55f574f1 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0002_projecttype_alter_business_options_staffprofile_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0002_projecttype_alter_business_options_staffprofile_and_more.cpython-310.pyc new file mode 100644 index 00000000..a96b7557 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0002_projecttype_alter_business_options_staffprofile_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0003_milestone.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0003_milestone.cpython-310.pyc new file mode 100644 index 00000000..4cb0dce5 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0003_milestone.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0004_epic.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0004_epic.cpython-310.pyc new file mode 100644 index 00000000..e70bf57c Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0004_epic.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0005_staffprofile_image.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0005_staffprofile_image.cpython-310.pyc new file mode 100644 index 00000000..cad387f1 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0005_staffprofile_image.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0006_note.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0006_note.cpython-310.pyc new file mode 100644 index 00000000..40d42306 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0006_note.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-310.pyc new file mode 100644 index 00000000..e45bc000 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0008_alter_project_project_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0008_alter_project_project_id.cpython-310.pyc new file mode 100644 index 00000000..0dddbd71 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0008_alter_project_project_id.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0009_alter_project_project_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0009_alter_project_project_id.cpython-310.pyc new file mode 100644 index 00000000..2aef7e18 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0009_alter_project_project_id.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0010_remove_note_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0010_remove_note_date.cpython-310.pyc new file mode 100644 index 00000000..ebf5f4fe Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0010_remove_note_date.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0011_note_date_alter_note_color_alter_note_text_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0011_note_date_alter_note_color_alter_note_text_and_more.cpython-310.pyc new file mode 100644 index 00000000..91a848ee Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0011_note_date_alter_note_color_alter_note_text_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-310.pyc new file mode 100644 index 00000000..4ee5f941 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-310.pyc new file mode 100644 index 00000000..026590e1 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-310.pyc new file mode 100644 index 00000000..c7c561b2 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-310.pyc new file mode 100644 index 00000000..0ec22d39 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-310.pyc new file mode 100644 index 00000000..f78ec311 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0017_alter_project_end_date_alter_project_start_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0017_alter_project_end_date_alter_project_start_date.cpython-310.pyc new file mode 100644 index 00000000..83d0a4f7 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0017_alter_project_end_date_alter_project_start_date.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0018_epic_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0018_epic_status.cpython-310.pyc new file mode 100644 index 00000000..bb28906c Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0018_epic_status.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0019_alter_epic_end_date_alter_epic_start_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0019_alter_epic_end_date_alter_epic_start_date.cpython-310.pyc new file mode 100644 index 00000000..912d0b95 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0019_alter_epic_end_date_alter_epic_start_date.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0020_task.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0020_task.cpython-310.pyc new file mode 100644 index 00000000..be04d5ae Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0020_task.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0021_alter_customerprofile_business_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0021_alter_customerprofile_business_and_more.cpython-310.pyc new file mode 100644 index 00000000..ed7657b5 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0021_alter_customerprofile_business_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0022_customerprofile_customer_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0022_customerprofile_customer_id.cpython-310.pyc new file mode 100644 index 00000000..ca805159 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0022_customerprofile_customer_id.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0023_task_assigned_to.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0023_task_assigned_to.cpython-310.pyc new file mode 100644 index 00000000..801af241 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0023_task_assigned_to.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0024_task_task_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0024_task_task_id.cpython-310.pyc new file mode 100644 index 00000000..70609650 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0024_task_task_id.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-310.pyc new file mode 100644 index 00000000..7e45c45c Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0026_remove_status_user_status_staff.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0026_remove_status_user_status_staff.cpython-310.pyc new file mode 100644 index 00000000..a4fa82c0 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0026_remove_status_user_status_staff.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0027_alter_status_staff.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0027_alter_status_staff.cpython-310.pyc new file mode 100644 index 00000000..20e9ecf3 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0027_alter_status_staff.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-310.pyc new file mode 100644 index 00000000..6fd8b1d4 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-310.pyc new file mode 100644 index 00000000..28c8fa75 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-310.pyc new file mode 100644 index 00000000..dc389725 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-310.pyc new file mode 100644 index 00000000..ccaabcd2 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-310.pyc new file mode 100644 index 00000000..93d9a1fb Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0033_point_date_completed_point_date_workingon_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0033_point_date_completed_point_date_workingon_and_more.cpython-310.pyc new file mode 100644 index 00000000..dea58dc4 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0033_point_date_completed_point_date_workingon_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-310.pyc new file mode 100644 index 00000000..7c40f58b Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0035_business_business_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0035_business_business_id.cpython-310.pyc new file mode 100644 index 00000000..40f5ccc5 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0035_business_business_id.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0036_staffposition_alter_staffprofile_position.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0036_staffposition_alter_staffprofile_position.cpython-310.pyc new file mode 100644 index 00000000..dcd5713d Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0036_staffposition_alter_staffprofile_position.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0037_remove_staffprofile_position.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0037_remove_staffprofile_position.cpython-310.pyc new file mode 100644 index 00000000..9f43e29e Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0037_remove_staffprofile_position.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0038_staffprofile_staff_position.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0038_staffprofile_staff_position.cpython-310.pyc new file mode 100644 index 00000000..cb63ce7a Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0038_staffprofile_staff_position.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0039_alter_staffprofile_staff_position.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0039_alter_staffprofile_staff_position.cpython-310.pyc new file mode 100644 index 00000000..8333aea3 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0039_alter_staffprofile_staff_position.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0040_staffprofile_staff_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0040_staffprofile_staff_id.cpython-310.pyc new file mode 100644 index 00000000..40707886 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0040_staffprofile_staff_id.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0041_dailyreport.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0041_dailyreport.cpython-310.pyc new file mode 100644 index 00000000..ae8d55b0 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0041_dailyreport.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0042_remove_customerprofile_email_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0042_remove_customerprofile_email_and_more.cpython-310.pyc new file mode 100644 index 00000000..c8f445b5 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0042_remove_customerprofile_email_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-310.pyc new file mode 100644 index 00000000..7c4239c7 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0044_remove_business_business_type.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0044_remove_business_business_type.cpython-310.pyc new file mode 100644 index 00000000..80230af1 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0044_remove_business_business_type.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0045_business_type.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0045_business_type.cpython-310.pyc new file mode 100644 index 00000000..2be11614 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0045_business_type.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0046_task_requirement.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0046_task_requirement.cpython-310.pyc new file mode 100644 index 00000000..3e29528f Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0046_task_requirement.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0047_task_status_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0047_task_status_date.cpython-310.pyc new file mode 100644 index 00000000..944e324d Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0047_task_status_date.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0048_alter_customerprofile_business.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0048_alter_customerprofile_business.cpython-310.pyc new file mode 100644 index 00000000..1b4533d1 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0048_alter_customerprofile_business.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0049_alter_customerprofile_business.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0049_alter_customerprofile_business.cpython-310.pyc new file mode 100644 index 00000000..6c927732 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0049_alter_customerprofile_business.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0050_projectrequirement_added_by_projectrequirement_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0050_projectrequirement_added_by_projectrequirement_date.cpython-310.pyc new file mode 100644 index 00000000..cbf80bb7 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0050_projectrequirement_added_by_projectrequirement_date.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0051_alter_task_requirement.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0051_alter_task_requirement.cpython-310.pyc new file mode 100644 index 00000000..33291cbd Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0051_alter_task_requirement.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0052_note_project.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0052_note_project.cpython-310.pyc new file mode 100644 index 00000000..1f14ea99 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0052_note_project.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0053_pointactivity.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0053_pointactivity.cpython-310.pyc new file mode 100644 index 00000000..9bf9308e Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0053_pointactivity.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0054_remove_point_date_completed_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0054_remove_point_date_completed_and_more.cpython-310.pyc new file mode 100644 index 00000000..1e3b0eae Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0054_remove_point_date_completed_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-310.pyc new file mode 100644 index 00000000..73b64745 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0056_alter_pointactivity_end_time.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0056_alter_pointactivity_end_time.cpython-310.pyc new file mode 100644 index 00000000..22d2d1b4 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0056_alter_pointactivity_end_time.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0057_point_total_time_hours_point_total_time_minutes_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0057_point_total_time_hours_point_total_time_minutes_and_more.cpython-310.pyc new file mode 100644 index 00000000..5b1b355b Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0057_point_total_time_hours_point_total_time_minutes_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc new file mode 100644 index 00000000..9dfe732d Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 00000000..7a3087b0 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/osinacore/models.py b/osinaweb/osinacore/models.py index 709d149b..52abcfc6 100644 --- a/osinaweb/osinacore/models.py +++ b/osinaweb/osinacore/models.py @@ -4,7 +4,7 @@ from colorfield.fields import ColorField from datetime import datetime from django.db.models import Max from django.utils import timezone -from django.db.models import Sum +from django.db.models import Sum, F from datetime import timedelta @@ -267,7 +267,13 @@ class Point(models.Model): ongoing_total_time_timedelta += current_time_aware - start_time_aware # Calculate the total time for completed activities - completed_total_time_timedelta = self.pointactivity_set.filter(end_time__isnull=False).aggregate(total_time=Sum(models.F('end_time') - models.F('start_time')))['total_time'] + completed_total_time_timedelta = self.pointactivity_set.filter(end_time__isnull=False).aggregate( + total_time=Sum(F('end_time') - F('start_time')) + )['total_time'] + + # Handle the case when there are no ongoing or completed activities + if not ongoing_activities.exists() and completed_total_time_timedelta is None: + return 0, 0, 0 # Add the total times together total_time_timedelta = ongoing_total_time_timedelta + (completed_total_time_timedelta or timedelta()) diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index c5fd0c58..e2adebcc 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -1874,6 +1874,8 @@ def mark_point_paused(request, point_id, task_id): +from datetime import datetime + @login_required def mark_point_completed(request, point_id, task_id): task = get_object_or_404(Task, id=task_id) @@ -1881,22 +1883,31 @@ def mark_point_completed(request, point_id, task_id): point.status = 'Completed' current_datetime = datetime.now() - point.save() + last_activity = PointActivity.objects.filter(point=point).last() - last_activity.end_time = datetime.now() - last_activity.save() + if last_activity: + last_activity.end_time = datetime.now() + last_activity.save() + total_time = point.total_time() + formatted_time = "" + if total_time[0] > 0: + formatted_time += f"{total_time[0]}{'hr' if total_time[0] == 1 else 'hrs'}" + if total_time[1] > 0: + formatted_time += f" {total_time[1]}{'min' if total_time[1] == 1 else 'mins'}" + if total_time[2] > 0: + formatted_time += f" {total_time[2]}{'sec' if total_time[2] == 1 else 'secs'}" status_text = f'{point.text} - Completed' + if formatted_time: + status_text += f' in {formatted_time}' + status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile) status.save() - - task_id_str = task.task_id - showpoints_url = reverse('showpoints', args=[task_id_str]) return HttpResponseRedirect(showpoints_url) diff --git a/osinaweb/osinaweb/__pycache__/urls.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/urls.cpython-310.pyc index 88df1181..b4224b0f 100644 Binary files a/osinaweb/osinaweb/__pycache__/urls.cpython-310.pyc and b/osinaweb/osinaweb/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/templates/popup_modals/showpoints-modal.html b/osinaweb/templates/popup_modals/showpoints-modal.html index d4ea3e4c..e16b5fb0 100644 --- a/osinaweb/templates/popup_modals/showpoints-modal.html +++ b/osinaweb/templates/popup_modals/showpoints-modal.html @@ -16,7 +16,7 @@