diff --git a/.test_durations b/.test_durations index 6373c77837a6172e34e4f2e6470676fc98baab30..b75c8ef8c75ad467969fc0281f332312e643e07f 100644 --- a/.test_durations +++ b/.test_durations @@ -1,669 +1,669 @@ { - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_activity_created": 0.15622116602025926, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_handle_transition_public_to_public": 0.11254104098770767, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_handle_transition_to_private_to_public": 0.1516230000415817, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_handle_transition_to_public_to_private": 0.12896395893767476, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_internal_transition_kwarg_for_invisible_transition": 0.11071612499654293, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_activity_created": 0.1238382079754956, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_handle_transition_public_to_public": 0.1171614999184385, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_handle_transition_to_private_to_public": 0.15188470896100625, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_handle_transition_to_public_to_private": 0.13876925001386553, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_internal_transition_kwarg_for_invisible_transition": 0.08285395905841142, "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_lead_not_saved_on_activity": 0.10346592601854354, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_lead_saved_on_activity": 0.10993020900059491, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_public_transition_kwargs": 0.10942875000182539, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_review_saved_on_activity": 0.14057566702831537, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_message_both": 0.23541791702155024, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_message_no_added": 0.1198202099185437, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_message_no_removed": 0.13272458396386355, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_with_and_without_role": 0.19799787388183177, - "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_with_role": 58.13467112497892, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_activity_created": 0.13486366695724428, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_activity_lead_change": 0.1162876250455156, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_activity_lead_change_from_none": 0.11584366695024073, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_email_staff_update_invoice": 0.21926733397413045, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_applicant_update_invoice": 0.13566949998494238, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_created": 54.16529204195831, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_lead_change": 0.1296427499037236, - "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_staff_update_invoice": 0.1271418749820441, - "hypha/apply/activity/tests/test_messaging.py::TestAnyMailBehaviour::test_email_new_submission": 0.1355100410291925, - "hypha/apply/activity/tests/test_messaging.py::TestAnyMailBehaviour::test_webhook_adds_reject_reason": 0.12718500010669231, - "hypha/apply/activity/tests/test_messaging.py::TestAnyMailBehaviour::test_webhook_updates_status": 0.1375391249312088, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_calls_method_if_avaliable": 53.299532873905264, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_can_include_extra_kwargs": 0.11929216794669628, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_can_send_a_message": 0.0824252919992432, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_django_messages_used": 0.07164995896164328, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_doesnt_send_a_message_if_not_configured": 0.09355312504339963, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_that_kwargs_passed_to_send_message": 0.20675625011790544, - "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_that_message_is_formatted": 0.15560216596350074, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_email_failed": 0.39270045806188136, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_email_new_submission": 0.09615187509916723, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_email_sent": 0.11342545901425183, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_no_email_own_comment": 0.11332941707223654, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_no_email_private_comment": 0.11486445926129818, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_reviewer_update_email": 0.15956100111361593, - "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_reviewers_email": 0.15471450006589293, - "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendApplication::test_event_created": 0.2171912919729948, - "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendApplication::test_message_sent_to_adapter": 0.1030887080123648, - "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendApplication::test_message_sent_to_all_adapter": 0.09288750018458813, - "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendProject::test_event_created": 0.1586895000655204, - "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendProject::test_message_sent_to_adapter": 0.11586466699372977, - "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendProject::test_message_sent_to_all_adapter": 0.11438579205423594, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_400_bad_request": 0.13000170898158103, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_cant_send_with_no_room": 0.08840891683939844, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_cant_send_with_no_token": 0.08516858296934515, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_correct_payload": 0.08612241595983505, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_fund_custom_slack_channel": 0.13703129114583135, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_fund_multiple_custom_slack_channel": 0.17032066697720438, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_gets_blank_if_slack_not_set": 0.08843441598583013, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_gets_lead_if_slack_set": 0.06989941594656557, - "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_message_with_good_response": 0.21480724995490164, - "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_related_invoice": 0.25832999881822616, - "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_related_report": 0.25690624897833914, - "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_source_application": 0.11774445907212794, - "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_source_project": 0.12374466715846211, - "hypha/apply/activity/tests/test_models.py::TestActivityOnlyIncludesCurrent::test_doesnt_include_non_current": 0.27184329100418836, - "hypha/apply/activity/tests/test_tasks.py::TestSendEmail::test_args_passed_to_django": 0.3205880840541795, - "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_reviewer_cant_list_screening_statuses": 0.07995720813050866, - "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_staff_can_list_screening_statuses": 0.04845495906192809, - "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_staff_can_view_screening_statuses_detail": 0.03481295891106129, - "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_user_cant_list_screening_statuses": 0.04167466703802347, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_add_screening_status": 0.2516370009398088, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_add_screening_status_without_setting_default": 0.14604949986096472, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_add_two_types_of_screening_status": 0.14344608294777572, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_change_default_screening_status": 0.1464127510553226, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_remove_not_set_screening_status": 0.18066850095055997, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_remove_submission_default_screening_status": 0.13743912591598928, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_change_default_screening_status": 0.15612299996428192, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_remove_submission_screening_status": 0.15497579204384238, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_reviewer_cant_list_screening_statuses": 0.12685020896606147, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_set_default_screening_status": 0.14016562490724027, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_staff_can_list_submission_screening_statuses": 0.32360654103104025, - "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_user_cant_list_screening_statuses": 0.1403301249956712, - "hypha/apply/api/v1/tests/test_serializers.py::TestDeliverableSerializer::test_id_is_required": 0.011137875029817224, - "hypha/apply/api/v1/tests/test_serializers.py::TestDeliverableSerializer::test_quantity_not_required": 0.1423097929218784, - "hypha/apply/api/v1/tests/test_serializers.py::TestDeliverableSerializer::test_validate_id": 0.14980237488634884, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_lead_saved_on_activity": 0.09730487398337573, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_public_transition_kwargs": 0.09278300101868808, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_review_saved_on_activity": 0.09202558395918459, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_message_both": 0.21213320893002674, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_message_no_added": 0.10327933402732015, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_message_no_removed": 0.09462454193271697, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_with_and_without_role": 0.23094345803838223, + "hypha/apply/activity/tests/test_messaging.py::TestActivityAdapter::test_reviewers_with_role": 47.73333083395846, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_activity_created": 0.15268362505594268, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_activity_lead_change": 0.14951995701994747, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_activity_lead_change_from_none": 0.11902916699182242, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_email_staff_update_invoice": 0.14155945903621614, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_applicant_update_invoice": 0.11052658397238702, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_created": 47.48602349992143, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_lead_change": 0.11825299903284758, + "hypha/apply/activity/tests/test_messaging.py::TestAdaptersForProject::test_slack_staff_update_invoice": 0.13310266699409112, + "hypha/apply/activity/tests/test_messaging.py::TestAnyMailBehaviour::test_email_new_submission": 0.1500404590042308, + "hypha/apply/activity/tests/test_messaging.py::TestAnyMailBehaviour::test_webhook_adds_reject_reason": 0.18803249998018146, + "hypha/apply/activity/tests/test_messaging.py::TestAnyMailBehaviour::test_webhook_updates_status": 0.17489708412904292, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_calls_method_if_avaliable": 47.906467207940295, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_can_include_extra_kwargs": 0.0845225410303101, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_can_send_a_message": 0.09592704096576199, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_django_messages_used": 0.07743954192847013, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_doesnt_send_a_message_if_not_configured": 0.09835191600723192, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_that_kwargs_passed_to_send_message": 0.09245612402446568, + "hypha/apply/activity/tests/test_messaging.py::TestBaseAdapter::test_that_message_is_formatted": 0.13165591604774818, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_email_failed": 0.15192049893084913, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_email_new_submission": 0.10662350099300966, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_email_sent": 0.11383858398767188, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_no_email_own_comment": 0.09285833401372656, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_no_email_private_comment": 0.16527420905185863, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_reviewer_update_email": 0.20949699904303998, + "hypha/apply/activity/tests/test_messaging.py::TestEmailAdapter::test_reviewers_email": 0.16952445899369195, + "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendApplication::test_event_created": 0.13112020801054314, + "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendApplication::test_message_sent_to_adapter": 0.10940145701169968, + "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendApplication::test_message_sent_to_all_adapter": 0.09993212501285598, + "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendProject::test_event_created": 0.13866575103020296, + "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendProject::test_message_sent_to_adapter": 0.09959224902559072, + "hypha/apply/activity/tests/test_messaging.py::TestMessageBackendProject::test_message_sent_to_all_adapter": 0.11068808392155915, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_400_bad_request": 0.1297815419966355, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_cant_send_with_no_room": 0.07485283288406208, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_cant_send_with_no_token": 0.07143016590271145, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_correct_payload": 0.09908179199555889, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_fund_custom_slack_channel": 0.08437458303524181, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_fund_multiple_custom_slack_channel": 0.09744604106526822, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_gets_blank_if_slack_not_set": 0.07998300099279732, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_gets_lead_if_slack_set": 0.12432800000533462, + "hypha/apply/activity/tests/test_messaging.py::TestSlackAdapter::test_message_with_good_response": 0.3921164179337211, + "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_related_invoice": 0.19420499994885176, + "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_related_report": 0.2129346679430455, + "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_source_application": 0.11591845791554078, + "hypha/apply/activity/tests/test_models.py::TestActivityModel::test_can_save_source_project": 0.11624162399675697, + "hypha/apply/activity/tests/test_models.py::TestActivityOnlyIncludesCurrent::test_doesnt_include_non_current": 0.19171858398476616, + "hypha/apply/activity/tests/test_tasks.py::TestSendEmail::test_args_passed_to_django": 0.29254162503639236, + "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_reviewer_cant_list_screening_statuses": 0.11804758291691542, + "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_staff_can_list_screening_statuses": 0.08460991701576859, + "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_staff_can_view_screening_statuses_detail": 0.07517845794791356, + "hypha/apply/api/v1/screening/tests/test_views.py::ScreeningStatusViewSetTests::test_user_cant_list_screening_statuses": 0.06913070805603638, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_add_screening_status": 0.4383973330259323, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_add_screening_status_without_setting_default": 0.17237325001042336, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_add_two_types_of_screening_status": 0.16616412496659905, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_change_default_screening_status": 0.19408370897872373, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_remove_not_set_screening_status": 0.18300837505375966, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_cant_remove_submission_default_screening_status": 0.15282195806503296, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_change_default_screening_status": 0.2162731250282377, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_remove_submission_screening_status": 0.17058312508743256, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_reviewer_cant_list_screening_statuses": 0.1689779590233229, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_set_default_screening_status": 0.17652716592419893, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_staff_can_list_submission_screening_statuses": 0.17701066692825407, + "hypha/apply/api/v1/screening/tests/test_views.py::SubmissionScreeningStatusViewSetTests::test_user_cant_list_screening_statuses": 0.383644292014651, + "hypha/apply/api/v1/tests/test_serializers.py::TestDeliverableSerializer::test_id_is_required": 0.012257374008186162, + "hypha/apply/api/v1/tests/test_serializers.py::TestDeliverableSerializer::test_quantity_not_required": 0.1106178339687176, + "hypha/apply/api/v1/tests/test_serializers.py::TestDeliverableSerializer::test_validate_id": 0.09170537395402789, "hypha/apply/api/v1/tests/test_serializers.py::TestInvoiceRequiredChecksSerializer::test_valid_checks_link_required": 0.11694603395881131, "hypha/apply/api/v1/tests/test_serializers.py::TestInvoiceRequiredChecksSerializer::test_valid_checks_required": 0.052493724040687084, "hypha/apply/api/v1/tests/test_serializers.py::TestInvoiceRequiredChecksSerializer::test_validate_valid_checks_and_link": 0.17325492500094697, - "hypha/apply/api/v1/tests/test_serializers.py::TestReviewSummarySerializer::test_handles_negative_reviews": 53.39089049899485, - "hypha/apply/api/v1/tests/test_serializers.py::TestReviewSummarySerializer::test_handles_no_reviews": 0.08726566703990102, + "hypha/apply/api/v1/tests/test_serializers.py::TestReviewSummarySerializer::test_handles_negative_reviews": 47.900241416995414, + "hypha/apply/api/v1/tests/test_serializers.py::TestReviewSummarySerializer::test_handles_no_reviews": 0.07608712406363338, "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_can_change_visibility": 0.2947400030097924, - "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_cant_edit_if_not_author": 0.47102075000293553, - "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_does_nothing_if_same_message_and_visibility": 0.1584784589940682, - "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_edit_updates_correctly": 0.1365128338802606, - "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_incorrect_id_denied": 0.03154566593002528, - "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_out_of_order_does_nothing": 0.1728130830451846, - "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_staff_can_change_visibility": 0.1528444179566577, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_applicant_cant_add_deliverables": 0.21287220797967166, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_applicant_cant_remove_deliverables": 0.20939670910593122, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_cant_add_or_remove_wihtout_login": 0.1725520839681849, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverable_already_exists_in_invoice": 0.16973474889528006, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverable_available_gte_quantity": 0.17294012499041855, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverable_dont_exists_in_project_deliverables": 0.3154549158643931, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverables_cant_removed_after_finance2_approval": 0.22893149894662201, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance1_can_add_deliverables": 0.16282691701781005, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance1_can_remove_deliverables": 0.18649645801633596, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance1_cant_remove_deliverables_after_finance1_approval": 0.16996737418230623, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance2_can_add_deliverables": 0.1587066249921918, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance2_can_remove_deliverables": 0.19433812622446567, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_staff_can_add_deliverables": 0.1566219999222085, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_staff_can_remove_deliverables": 0.14834729093126953, - "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_staff_cant_remove_deliverables_after_staff_approval": 52.86434658290818, + "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_cant_edit_if_not_author": 0.23197316599544138, + "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_does_nothing_if_same_message_and_visibility": 0.19338529102969915, + "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_edit_updates_correctly": 0.1957722079823725, + "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_incorrect_id_denied": 0.06875616707839072, + "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_out_of_order_does_nothing": 0.21863037499133497, + "hypha/apply/api/v1/tests/test_views.py::TestCommentEdit::test_staff_can_change_visibility": 0.18349841696908697, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_applicant_cant_add_deliverables": 0.45137154194526374, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_applicant_cant_remove_deliverables": 0.17998354195151478, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_cant_add_or_remove_wihtout_login": 0.16972262400668114, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverable_already_exists_in_invoice": 0.2294130829977803, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverable_available_gte_quantity": 0.19909750000806525, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverable_dont_exists_in_project_deliverables": 0.29539158398984, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_deliverables_cant_removed_after_finance2_approval": 0.22738570807268843, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance1_can_add_deliverables": 0.19634779205080122, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance1_can_remove_deliverables": 0.21497191593516618, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance1_cant_remove_deliverables_after_finance1_approval": 0.22236529196379706, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance2_can_add_deliverables": 0.1910492920433171, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_finance2_can_remove_deliverables": 0.40230970905395225, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_staff_can_add_deliverables": 0.2188895409926772, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_staff_can_remove_deliverables": 0.19606629095505923, + "hypha/apply/api/v1/tests/test_views.py::TestInvoiceDeliverableViewset::test_staff_cant_remove_deliverables_after_staff_approval": 48.71799262496643, "hypha/apply/api/v1/tests/test_views.py::TestInvoiceRequiredChecksViewSet::test_applicant_cant_get_set_required_valid_checks": 0.6144257669802755, "hypha/apply/api/v1/tests/test_views.py::TestInvoiceRequiredChecksViewSet::test_cant_get_set_required_checks_without_login": 0.30361390503821895, "hypha/apply/api/v1/tests/test_views.py::TestInvoiceRequiredChecksViewSet::test_finance1_can_get_required_valid_checks": 0.32072118495125324, "hypha/apply/api/v1/tests/test_views.py::TestInvoiceRequiredChecksViewSet::test_finance1_can_set_required_valid_checks": 0.3616774979745969, "hypha/apply/api/v1/tests/test_views.py::TestInvoiceRequiredChecksViewSet::test_finance2_cant_get_set_required_valid_checks": 0.2886283140978776, "hypha/apply/api/v1/tests/test_views.py::TestInvoiceRequiredChecksViewSet::test_staff_cant_get_set_required_valid_checks": 0.33830336399842054, - "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_can_render_if_no_response": 0.06368333392310888, - "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_field_and_help_default": 0.011962668155319989, - "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_multi_select_disabled": 0.003674666048027575, - "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_multi_select_enabled": 0.004824416828341782, - "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_options_included_in_choices": 0.009934498928487301, - "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_supplied_field_and_help": 0.005348333972506225, - "hypha/apply/dashboard/tests/test_views.py::TestAdminDashboard::test_does_show_admin_button_to_admins": 0.3197833760641515, - "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_can_access_dashboard_with_active": 0.28440266591496766, - "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_can_have_draft_titles_on_dashboard": 0.30938212398905307, - "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_can_not_access_other_users_active": 0.17553641612175852, - "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_gets_invite_if_invited_to_proposal": 0.3157209169585258, - "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_no_edit_if_in_review": 0.23260362388100475, - "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_no_invite_if_can_edit": 0.17902404197957367, - "hypha/apply/dashboard/tests/test_views.py::TestReviewerDashboard::test_no_submissions_waiting_for_review": 0.4732738329330459, - "hypha/apply/dashboard/tests/test_views.py::TestReviewerDashboard::test_submission_assigned_but_not_in_external_review_status": 53.82880870893132, - "hypha/apply/dashboard/tests/test_views.py::TestReviewerDashboard::test_waiting_for_review_with_count": 0.444339832989499, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_active_invoices_with_invoices_in_correct_state": 0.5380933738779277, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_active_invoices_with_no_project": 0.2517163750017062, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_cannot_see_submission_in_determination_when_not_lead": 0.5979210830992088, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_doesnt_show_active_invoices_when_not_mine": 0.3928689588792622, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_doesnt_show_active_invoices_with_none": 0.40044466592371464, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_doest_show_active_invoices_when_paid_or_declined": 0.39634229301009327, + "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_can_render_if_no_response": 0.036066625034436584, + "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_field_and_help_default": 0.005301585013512522, + "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_multi_select_disabled": 0.0036877079983241856, + "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_multi_select_enabled": 0.005291416076943278, + "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_options_included_in_choices": 0.00799416605150327, + "hypha/apply/categories/tests/test_blocks.py::TestCategoryQuestionBlock::test_supplied_field_and_help": 0.008663999906275421, + "hypha/apply/dashboard/tests/test_views.py::TestAdminDashboard::test_does_show_admin_button_to_admins": 0.49195762496674433, + "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_can_access_dashboard_with_active": 0.2811352079734206, + "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_can_have_draft_titles_on_dashboard": 0.36781650001648813, + "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_can_not_access_other_users_active": 0.3000304579618387, + "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_gets_invite_if_invited_to_proposal": 0.22878554096678272, + "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_no_edit_if_in_review": 0.22108583396766335, + "hypha/apply/dashboard/tests/test_views.py::TestApplicantDashboard::test_no_invite_if_can_edit": 0.22134391695726663, + "hypha/apply/dashboard/tests/test_views.py::TestReviewerDashboard::test_no_submissions_waiting_for_review": 0.6434167079860345, + "hypha/apply/dashboard/tests/test_views.py::TestReviewerDashboard::test_submission_assigned_but_not_in_external_review_status": 48.49563883297378, + "hypha/apply/dashboard/tests/test_views.py::TestReviewerDashboard::test_waiting_for_review_with_count": 0.40596079104579985, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_active_invoices_with_invoices_in_correct_state": 0.7148654999909922, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_active_invoices_with_no_project": 0.29518508195178583, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_cannot_see_submission_in_determination_when_not_lead": 0.42824233399005607, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_doesnt_show_active_invoices_when_not_mine": 0.40279570798156783, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_doesnt_show_active_invoices_with_none": 0.3976340829394758, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_doest_show_active_invoices_when_paid_or_declined": 0.615537291043438, "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_staff_can_see_projects_awaiting_review_stats_or_table": 65.42799123498844, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_unassigned_staff_cant_see_projects_awaiting_review_stats_or_table": 0.3104223320260644, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_waiting_for_review_after_agreement_is_empty": 0.3971507509704679, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_waiting_for_review_with_count": 0.43167454190552235, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboardWithWagtailAdminAccess::test_does_show_admin_button_to_staff_with_wagtail_admin_access": 0.29581050004344434, - "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboardWithoutWagtailAdminAccess::test_doesnt_show_admin_button_to_staff_without_wagtail_admin_access": 0.5396512089064345, - "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_determination_block_required": 0.20600395905785263, - "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_field_label_required": 0.11256412602961063, - "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_form_creation": 0.10376991610974073, - "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_message_block_required": 0.12822470907121897, - "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_name_field_required": 0.2929227912100032, - "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_send_notice_block_required": 0.11331733397673815, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_can_submit_batch_determination": 1.1239819169277325, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_can_submit_batch_determination_more_info_comment": 0.8998360839905217, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_cant_access_without_action": 0.29788879211992025, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_cant_access_without_submissions": 0.15192141698207706, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_message_created_if_determination_exists": 0.7004209590377286, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_sets_next_on_redirect": 0.0201142089208588, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_success_if_no_next": 0.028741458081640303, - "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_success_redirects_if_exists": 0.0167721250327304, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_access_form_if_lead": 0.2795411248225719, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_edit_draft_determination": 0.39732999983243644, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_edit_draft_determination_if_not_lead": 0.36917637509759516, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_edit_draft_determination_if_not_lead_with_projects": 0.574998957104981, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_progress_stage_via_determination": 0.4457102088490501, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_cant_access_wrong_status": 0.3057255418971181, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_cant_edit_submitted_more_info": 0.21533391706179827, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_cant_resubmit_determination": 0.34880262485239655, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_disabling_project_auto_creation_stops_projects_being_created": 0.6254295839462429, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_disabling_projects_ignores_auto_creation_setting": 0.35022420797031373, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_first_stage_accepted_determination_does_not_create_project": 0.3951377071207389, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_first_stage_rejected_determination_does_not_create_project": 0.32274695893283933, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_second_stage_accepted_determination_creates_project": 0.5555361660663038, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_second_stage_rejected_determination_does_not_create_project": 0.3740730411373079, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_sends_message_if_requires_more_info": 53.24500287498813, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_single_stage_accepted_determination_creates_project": 0.36371379101183265, - "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_single_stage_rejected_determination_does_not_create_project": 0.4497926657786593, - "hypha/apply/determinations/tests/test_views.py::EditDeterminationFormTestCase::test_can_edit_determination": 0.4584017499582842, - "hypha/apply/determinations/tests/test_views.py::StaffDeterminationsTestCase::test_can_access_determination": 0.2628489169292152, - "hypha/apply/determinations/tests/test_views.py::StaffDeterminationsTestCase::test_lead_can_access_determination": 0.2115764160407707, - "hypha/apply/determinations/tests/test_views.py::UserDeterminationFormTestCase::test_cant_access_form": 0.192241249140352, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_active": 0.1310934571083635, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_annotated": 0.06212695804424584, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_by_lead": 0.12584670900832862, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_can_get": 0.05352362501434982, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_closed": 0.03731920791324228, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_inactive": 0.07862379110883921, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_new": 0.05332966602873057, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_no_submissions_not_either": 0.08079304208513349, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_open": 0.04613145790062845, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_with_determined": 0.10131074907258153, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_with_progress": 0.07140566606540233, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_active": 0.13352654210757464, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_annotated": 0.09856966813094914, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_by_lead": 0.1419911669800058, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_can_get": 0.07361695903819054, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_closed": 0.07386124995537102, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_inactive": 0.09993016696535051, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_new": 0.07018604106269777, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_no_submissions_not_either": 0.0725509988842532, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_open": 0.06527933396864682, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_with_determined": 0.0967254590941593, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_with_progress": 0.14043374999891967, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestRoundsAndLabsManager::test_cant_get_fund": 0.06796033203136176, - "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestRoundsAndLabsManager::test_doesnt_confuse_lab_and_round": 0.29577012616209686, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_can_save_multiple_forms_stage_two": 0.04961991612799466, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_can_save_two_forms": 0.04161399987060577, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_does_validates_without_project_approval_form": 0.015870373114012182, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_multiple_external_review_form": 0.021794166998006403, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_multiple_project_approval_form": 0.06363983312621713, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_no_form": 0.010387291200459003, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_two_first_stage_forms_in_two_stage": 0.020232082810252905, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_two_forms_one_stage": 0.034621958155184984, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validate_external_review_form": 0.02205070899799466, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validate_project_approval_form": 0.02532500005327165, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validates_with_one_form_one_stage": 0.024257375043816864, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validates_with_one_form_one_stage_with_deleted": 0.030707667116075754, - "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validates_without_external_review_form": 52.34273804188706, - "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_email_block_required": 0.2088026669807732, - "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_field_label_required": 0.149365292978473, - "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_form_creation": 0.11754074995405972, - "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_full_name_block_required": 0.40467620792333037, - "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_name_field_required": 0.14645566698163748, - "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_title_block_required": 0.16521475103218108, - "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_fund": 0.8218775829300284, - "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_fund_with_external_review_form": 0.3319704169407487, - "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_multi_phase_fund": 0.3293084999313578, - "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_multi_phase_fund_reuse_forms": 0.41299737396184355, - "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_multiple_forms_second_stage_in_fund": 0.3237355840392411, - "hypha/apply/funds/tests/test_admin_views.py::TestRoundIndexView::test_application_links": 0.24900691595394164, - "hypha/apply/funds/tests/test_admin_views.py::TestRoundIndexView::test_number_of_rounds": 0.16683674999512732, - "hypha/apply/funds/tests/test_admin_views.py::TestRoundIndexView::test_review_form_links": 0.18859074905049056, - "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_existing_reviews": 0.2270776240620762, - "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_init_and_render": 0.18790745793376118, - "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_reviewers_swap": 0.15377212490420789, - "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_roles_swap": 0.16281391610391438, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_draft_data": 0.1490496238693595, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_ordered_qs": 0.1249092509970069, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_required_block_names": 0.09873220801819116, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_reverse_ordered_qs": 0.1587739591486752, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_choices_added_for_search": 0.149843375897035, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_correct_file_path_generated": 0.09924179094377905, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_create_revision_on_create": 0.09179875091649592, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_create_revision_on_data_change": 0.0906527501065284, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_dont_create_revision_on_data_same": 0.09052220906596631, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_draft_updated": 0.11173420900013298, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_file_gets_uploaded": 0.11910374986473471, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_in_final_stage": 0.2448779579717666, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_is_draft_property": 0.09119662502780557, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_number_not_in_search": 0.08268812403548509, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_richtext_in_char_is_removed_for_search": 0.0871474581072107, - "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_richtext_is_removed_for_search": 0.10898320900741965, - "hypha/apply/funds/tests/test_models.py::TestAssignedReviewersQuerySet::test_reviewed": 0.12450108304619789, - "hypha/apply/funds/tests/test_models.py::TestAssignedReviewersQuerySet::test_reviewed_with_review_order": 0.10234258486889303, - "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_assigned_but_not_reviewed": 0.14217170898336917, - "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_disagree_review_is_maybe": 0.18134895898401737, - "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_dont_double_count_review_and_opinion": 0.20702958188485354, - "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_opinionated_slash_confused_reviewer": 0.14794070809148252, - "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_review_outcome": 0.12835533183533698, - "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_submissions_dont_conflict": 0.2732012089109048, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_associated_if_another_user_exists": 0.32096395909320563, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_associated_if_logged_in": 0.24763354193419218, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_associated_if_not_new": 0.2929042089963332, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_can_submit_if_blank_user_data_even_if_logged_in": 0.15598979103378952, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_can_submit_if_new": 0.22036704106722027, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_doesnt_mess_with_name": 0.6982206258689985, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_email_sent_to_user_on_submission_fund": 0.20850474992766976, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_email_sent_to_user_on_submission_lab": 0.1665749999228865, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_valid_email": 0.3073821240104735, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_draft": 0.1814717510715127, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_draft_lab": 0.185774251120165, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_status_assigned": 0.16890304209664464, - "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_status_assigned_lab": 0.2379047080175951, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_can_access_workflow_class": 0.042793499887920916, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_can_not_be_open_with_draft_round": 0.09543912496883422, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_closed_round": 0.07514170906506479, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_multiple_open_rounds": 0.11567800003103912, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_no_open_rounds": 0.029080708976835012, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_no_round_exists": 0.032593959011137486, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_normal_round": 0.09945729107130319, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_open_ended_round": 0.06348649994470179, - "hypha/apply/funds/tests/test_models.py::TestFundModel::test_round_not_open": 0.06429041584488004, - "hypha/apply/funds/tests/test_models.py::TestReminderModel::test_can_save_reminder": 0.14102758304215968, - "hypha/apply/funds/tests/test_models.py::TestReminderModel::test_check_default_action": 0.08828612591605633, - "hypha/apply/funds/tests/test_models.py::TestReminderModel::test_reminder_action_message": 0.09919620910659432, - "hypha/apply/funds/tests/test_models.py::TestRequestForPartners::test_form_when_round": 0.4896917912410572, - "hypha/apply/funds/tests/test_models.py::TestRequestForPartners::test_message_when_no_round": 0.05575866706203669, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_create_without_end_date": 0.10089066612999886, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_not_create_with_other_open_end_date": 0.10511479200795293, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_not_overlap_clean": 0.08662924985401332, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_not_overlap_with_normal_round": 0.09153591585345566, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_end_before_start": 0.035309332073666155, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_end_overlaps": 0.05701729201246053, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_inside_overlaps": 0.07519704196602106, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_normal_start_end_doesnt_error": 0.06965612503699958, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_other_fund_not_impacting": 0.10615220805630088, - "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_start_overlaps": 0.06443083297926933, - "hypha/apply/funds/tests/test_models.py::TestRoundModelWorkflowAndForms::test_can_change_round_form_not_fund": 0.12071304197888821, - "hypha/apply/funds/tests/test_models.py::TestRoundModelWorkflowAndForms::test_forms_are_copied_to_new_rounds": 0.06250629213172942, - "hypha/apply/funds/tests/test_models.py::TestRoundModelWorkflowAndForms::test_workflow_is_copied_to_new_rounds": 0.05548808316234499, - "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_file_private_url_included": 0.2338216241914779, - "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_named_blocks_dont_break_if_no_response": 0.10130649898201227, - "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_named_blocks_not_included_in_answers": 0.10962391598150134, - "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_normal_answers_included_in_answers": 0.10513508401345462, - "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_paragraph_not_rendered_in_answers": 0.1062420840607956, - "hypha/apply/funds/tests/test_tags.py::TestTemplateTags::test_markdown_tags": 0.006134833907708526, - "hypha/apply/funds/tests/test_tags.py::TestTemplateTags::test_submission_tags": 0.12460162513889372, - "hypha/apply/funds/tests/test_views.py::TestAnonSubmissionFileView::test_anonymous_can_not_access": 0.22671829094178975, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_edit_own_submission": 0.4169395408825949, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_see_view_determination_primary_action": 0.9132027919404209, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_submit_submission": 0.43798254092689604, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_view_own_submission": 0.30635708291083574, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_edit_other_submission": 0.40574666601605713, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_edit_submission_incorrect_state": 0.4315109169110656, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_screen_submission": 0.4150468750158325, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_add_determination_primary_action": 1.126294415909797, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_assign_reviewers_primary_action": 0.4851302499882877, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_assign_reviewers_secondary_action": 0.4752123741200194, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_create_review_primary_action": 0.6179650429403409, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_screening_status_block": 0.295956541900523, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_view_determination_primary_action": 0.6678542509907857, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_view_others_submission": 0.35142612585332245, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_get_congratulations_draft_proposal": 0.58507999998983, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_get_edit_link_when_editable": 0.4418560831109062, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_gets_draft_on_edit_submission": 0.5373793760081753, - "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_sees_latest_draft_if_it_exists": 0.5016270420746878, - "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_applicant_cannot_access_reviewer_leaderboard": 0.06163133401423693, - "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_community_reviewer_cannot_access_reviewer_leaderboard": 0.039557207841426134, - "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_partner_cannot_access_reviewer_leaderboard": 0.07404641690663993, - "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_reviewer_cannot_access_leader_board": 0.049408251070417464, - "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_staff_can_access_leaderboard": 0.11858241609297693, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_access_any_submission": 0.3128672499442473, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_accepted_submission": 0.5845487498445436, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_assigned_submission": 0.6517927489476278, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_external_review_or_higher_submission": 0.44838800095021725, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_reviewed_submission": 0.2901558759622276, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_see_create_review_primary_action": 0.562187749077566, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_see_view_determination_primary_action": 0.7028081668540835, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_access_dismissed_submission": 0.34087837510742247, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_add_determination_primary_action": 0.5245875420514494, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_assign_reviewers_primary_action": 0.22818424890283495, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_assign_reviewers_secondary_action": 0.2603712920099497, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_create_review_primary_action": 1.0149275419535115, - "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_view_determination_primary_action": 0.41726491693407297, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_can_add_external_reviewer_and_review_remains": 0.8257489589741454, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_can_be_made_role_and_not_duplciated": 0.45144966698717326, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_can_remove_external_reviewer_and_review_remains": 0.5620815821457654, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_add_reviewers_for_proposal": 0.4873921659309417, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_add_staff_single": 0.6824569570599124, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_change_role_reviewer_and_review_remains": 0.4493671261006966, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_change_staff_single": 0.4770331662148237, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_remove_reviewers_for_proposal": 0.746842457097955, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_remove_some_reviewers_for_proposal": 0.5127480837982148, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_cant_add_reviewers_single": 0.4263467499986291, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_staff_cant_add_reviewers_proposal": 0.4620940409367904, - "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_staff_cant_remove_reviewers_proposal": 0.8137773340567946, - "hypha/apply/funds/tests/test_views.py::TestRevisionCompare::test_renders_with_all_the_diffs": 0.3248190419981256, - "hypha/apply/funds/tests/test_views.py::TestRevisionList::test_get_in_correct_order": 0.497798457974568, - "hypha/apply/funds/tests/test_views.py::TestRevisionList::test_list_doesnt_include_draft": 0.34488670888822526, - "hypha/apply/funds/tests/test_views.py::TestRevisionsView::test_create_revisions_on_submit": 0.38965708296746016, - "hypha/apply/funds/tests/test_views.py::TestRevisionsView::test_dont_update_live_revision_on_save": 0.32660966797266155, - "hypha/apply/funds/tests/test_views.py::TestRevisionsView::test_existing_draft_edit_and_submit": 0.7188656670041382, - "hypha/apply/funds/tests/test_views.py::TestStaffReminderDeleteView::test_confirm_message": 0.43140212597791106, - "hypha/apply/funds/tests/test_views.py::TestStaffReminderDeleteView::test_has_access": 0.1736859999364242, - "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_cant_post_to_sealed": 0.3140248339623213, - "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_non_sealed_redirected_away": 0.3367313339840621, - "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_non_sealed_unaffected": 0.35245737596414983, - "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_redirected_to_sealed": 0.4905905839987099, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionFileView::test_staff_can_access": 0.1999512080801651, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_applicant_can_see_application_draft_status": 0.27073320804629475, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_access_edit": 0.32954245805740356, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_access_edit_button": 0.37549454101826996, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_create_project": 0.3760909589473158, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_edit_submission": 0.5899402508512139, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_progress_phase": 0.39777112391311675, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_screen_submission": 0.3471504159970209, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_add_determination_primary_action": 0.7420900000724941, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_assign_reviewers_primary_action": 1.4845561670372263, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_assign_reviewers_secondary_action": 1.2371138751041144, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_create_review_primary_action": 1.4618289999198169, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_view_determination_primary_action": 1.107450666022487, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_view_a_lab_submission": 0.41783874994143844, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_view_a_submission": 0.3368598339147866, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_view_submission_screening_block": 0.344336625887081, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_access_edit_button_when_applicant_editing": 0.4187689999816939, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_progress_stage_if_not_lead": 0.40149033395573497, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_add_determination_primary_action": 1.471973832929507, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_application_draft_status": 0.2396007931092754, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_assign_reviewers_primary_action": 0.9687096660491079, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_create_review_primary_action": 1.8450221660314128, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_view_determination_primary_action": 1.101752792019397, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_view_submission_screening_block": 0.3147491249255836, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_new_form_after_progress": 0.24671399989165366, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_not_included_fields_render": 0.4018669999204576, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_not_redirected_if_determination_submitted": 0.42448441800661385, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_not_redirected_if_wrong_determination_selected": 0.49752758303657174, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_previous_and_next_appears_on_page": 0.9396503329044208, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_redirected_to_determination": 0.3322940430371091, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_screen_application_primary_action_is_displayed": 0.315706167020835, - "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_screen_application_primary_action_is_not_displayed": 0.3573770399671048, - "hypha/apply/funds/tests/test_views.py::TestSubmissionDetailSimplifiedView::test_project_required": 0.1321598341455683, - "hypha/apply/funds/tests/test_views.py::TestSubmissionDetailSimplifiedView::test_staff_only": 0.12134012510068715, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_can_post_to_sealed": 0.4207257080124691, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_can_view_multiple_sealed": 0.9063680830877274, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_not_asked_again": 0.5518010839587077, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_peeking_is_logged": 0.3346030409447849, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_redirected_to_sealed": 0.2140774989966303, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSubmissionView::test_can_screen_applications_in_final_status": 0.7690585830714554, - "hypha/apply/funds/tests/test_views.py::TestSuperUserSubmissionView::test_can_screen_submission": 0.38334191718604416, - "hypha/apply/funds/tests/test_views.py::TestUpdateReviewersMixin::test_submission_transition_all_reviewer_roles_not_assigned": 0.484276499832049, - "hypha/apply/funds/tests/test_views.py::TestUpdateReviewersMixin::test_submission_transition_to_internal_review": 0.5740112499333918, - "hypha/apply/funds/tests/test_views.py::TestUpdateReviewersMixin::test_submission_transition_to_proposal_internal_review": 0.4810352091444656, - "hypha/apply/funds/tests/test_views.py::TestUserReminderDeleteView::test_doesnt_has_access": 0.23820854211226106, - "hypha/apply/funds/tests/test_views.py::TestUserSubmissionFileView::test_owner_can_access": 0.15925191692076623, - "hypha/apply/funds/tests/test_views.py::TestUserSubmissionFileView::test_user_can_not_access": 0.14730862504802644, - "hypha/apply/funds/tests/views/test_batch_progress.py::ApplicantTestCase::test_cant_access_page_to_page": 0.08610325097106397, - "hypha/apply/funds/tests/views/test_batch_progress.py::ReivewersTestCase::test_cant_post_to_page": 0.3608955009840429, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_application": 0.45370379206724465, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_different_states": 0.5506767920451239, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_multiple_applications": 0.9527829589787871, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_one_in_mixed_state": 0.49793162394780666, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_cant_progress_in_incorrect_state": 0.3299887500470504, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_determine_redirects": 0.2182419589953497, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_messenger_not_called_with_failed": 0.3004915409255773, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_messenger_with_submission_in_review": 0.3768535410054028, - "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_mixed_determine_notifies": 0.37122058297973126, - "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_can_assign_role_reviewers": 0.9108087500790134, - "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_can_reassign_from_other_role_reviewers": 0.7777726660715416, - "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_can_reassign_role_reviewers": 0.7799941239645705, - "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_doesnt_remove_if_already_reviewed": 1.0364358740625903, - "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantRoundPage::test_cant_access_page": 0.08234191790688783, - "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_lab_page": 0.12256012472789735, - "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_non_existing_page": 0.044570248923264444, - "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_normal_page": 0.15356200106907636, - "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_round_page": 0.13131941703613847, - "hypha/apply/funds/tests/views/test_rounds.py::TestReviewerAllRoundPage::test_cant_access_page": 0.08593399997334927, - "hypha/apply/funds/tests/views/test_rounds.py::TestStaffRoundPage::test_can_access_page": 0.14833616698160768, - "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_can_access_lab_page": 0.2737620830303058, - "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_can_access_round_page": 0.45550508389715105, - "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_cant_access_non_existing_page": 0.07584341603796929, - "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_cant_access_normal_page": 0.14374800096265972, - "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_already_notified": 0.19513545895460993, - "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_project_complete": 0.13409304106608033, - "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_project_not_in_progress": 0.12156212504487485, - "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_report_due_in_7_days_already_submitted": 0.125589668052271, - "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_notify_report_due_in_7_days": 0.1717857918702066, - "hypha/apply/projects/tests/test_files.py::TestFlatten::test_no_items": 0.00656904187053442, - "hypha/apply/projects/tests/test_files.py::TestFlatten::test_one_level_of_items": 0.0012798751704394817, - "hypha/apply/projects/tests/test_files.py::TestFlatten::test_three_levels_of_items": 0.000812293030321598, - "hypha/apply/projects/tests/test_files.py::TestFlatten::test_two_levels_of_items": 0.0011532080825418234, - "hypha/apply/projects/tests/test_files.py::TestGetFiles::test_get_files": 0.1295463329879567, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_approved_by_finance1_status": 0.14656220795586705, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_approved_by_finance1_status_with_extended_flow": 0.13236879208125174, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_approved_by_staff_status": 0.14808366796933115, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_changes_requested_by_finance1_status": 0.1682244180701673, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_changes_requested_by_finance2_status": 0.1424597919685766, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_changes_requested_by_staff_status": 0.11559129203669727, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_resubmitted_status": 0.12777604104485363, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_submitted_status": 0.12977958307601511, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_approved_by_finance1_status": 0.13142820808570832, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_approved_by_staff_status": 0.11266949994023889, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_changes_requested_by_finance1_status": 0.14685695804655552, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_changes_requested_by_finance2_status": 0.12137499975506216, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_changes_requested_by_staff_status": 0.17739116703160107, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_resubmitted_status": 0.15250520908739418, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_submitted_status": 0.13672062510158867, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_approved_by_finance1_status": 0.1357324169948697, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_approved_by_staff_status": 0.15583287389017642, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_changes_requested_by_finance1_status": 0.1764742910163477, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_changes_requested_by_finance2_status": 0.1542377930600196, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_changes_requested_by_staff_status": 0.13213195896241814, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_resubmitted_status": 0.16957866703160107, - "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_submitted_status": 0.1503189168870449, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_unassigned_staff_cant_see_projects_awaiting_review_stats_or_table": 0.37664666696218774, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_waiting_for_review_after_agreement_is_empty": 0.48306254198541865, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboard::test_waiting_for_review_with_count": 0.4347812499618158, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboardWithWagtailAdminAccess::test_does_show_admin_button_to_staff_with_wagtail_admin_access": 0.3449161669705063, + "hypha/apply/dashboard/tests/test_views.py::TestStaffDashboardWithoutWagtailAdminAccess::test_doesnt_show_admin_button_to_staff_without_wagtail_admin_access": 0.3654038340318948, + "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_determination_block_required": 0.2471973320352845, + "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_field_label_required": 0.1337144589633681, + "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_form_creation": 0.12094916601199657, + "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_message_block_required": 0.14209624903742224, + "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_name_field_required": 0.1370073760044761, + "hypha/apply/determinations/tests/test_admin_views.py::TestCreateDeterminationFormView::test_send_notice_block_required": 0.13266274897614494, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_can_submit_batch_determination": 0.8987592090270482, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_can_submit_batch_determination_more_info_comment": 1.093036290956661, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_cant_access_without_action": 0.347631124954205, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_cant_access_without_submissions": 0.20394562499132007, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_message_created_if_determination_exists": 0.7172249159193598, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_sets_next_on_redirect": 0.008022917027119547, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_success_if_no_next": 0.007694582978729159, + "hypha/apply/determinations/tests/test_views.py::BatchDeterminationTestCase::test_success_redirects_if_exists": 0.010707416979130358, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_access_form_if_lead": 0.2652022919501178, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_edit_draft_determination": 0.4181396669591777, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_edit_draft_determination_if_not_lead": 0.3539232490584254, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_edit_draft_determination_if_not_lead_with_projects": 0.5771515830419958, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_can_progress_stage_via_determination": 0.42698445898713544, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_cant_access_wrong_status": 0.31131741689750925, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_cant_edit_submitted_more_info": 0.23528062499826774, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_cant_resubmit_determination": 0.6146564569789916, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_disabling_project_auto_creation_stops_projects_being_created": 0.39776529202936217, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_disabling_projects_ignores_auto_creation_setting": 0.3460802079644054, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_first_stage_accepted_determination_does_not_create_project": 0.6698565829428844, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_first_stage_rejected_determination_does_not_create_project": 0.364047082955949, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_second_stage_accepted_determination_creates_project": 0.4194268750725314, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_second_stage_rejected_determination_does_not_create_project": 0.35257112502586097, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_sends_message_if_requires_more_info": 47.620870457962155, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_single_stage_accepted_determination_creates_project": 0.3583696250570938, + "hypha/apply/determinations/tests/test_views.py::DeterminationFormTestCase::test_single_stage_rejected_determination_does_not_create_project": 0.4159843750530854, + "hypha/apply/determinations/tests/test_views.py::EditDeterminationFormTestCase::test_can_edit_determination": 0.42473558406345546, + "hypha/apply/determinations/tests/test_views.py::StaffDeterminationsTestCase::test_can_access_determination": 0.5007752500241622, + "hypha/apply/determinations/tests/test_views.py::StaffDeterminationsTestCase::test_lead_can_access_determination": 0.1905933739617467, + "hypha/apply/determinations/tests/test_views.py::UserDeterminationFormTestCase::test_cant_access_form": 0.19667095900513232, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_active": 0.08821174898184836, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_annotated": 0.03754920797655359, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_by_lead": 0.10936633206438273, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_can_get": 0.0375667919870466, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_closed": 0.034341249091085047, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_inactive": 0.06411208200734109, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_new": 0.0544566250173375, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_no_submissions_not_either": 0.03846766601782292, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_open": 0.037716708960942924, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_with_determined": 0.07131629198556766, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForLab::test_with_progress": 0.11110420897603035, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_active": 0.12810854200506583, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_annotated": 0.06556995899882168, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_by_lead": 0.11274895904352888, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_can_get": 0.060377124056685716, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_closed": 0.06118266697740182, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_inactive": 0.09110883297398686, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_new": 0.07164266600739211, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_no_submissions_not_either": 0.08204616693546996, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_open": 0.056571834022179246, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_with_determined": 0.09481474896892905, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestForRound::test_with_progress": 0.1226185419363901, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestRoundsAndLabsManager::test_cant_get_fund": 0.0459559999871999, + "hypha/apply/funds/tests/models/test_roundsandlabs.py::TestRoundsAndLabsManager::test_doesnt_confuse_lab_and_round": 0.22479037498123944, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_can_save_multiple_forms_stage_two": 0.0538997920230031, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_can_save_two_forms": 0.03590929199708626, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_does_validates_without_project_approval_form": 0.018417084007523954, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_multiple_external_review_form": 0.021515125001315027, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_multiple_project_approval_form": 0.055025165958795696, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_no_form": 0.009529665927402675, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_two_first_stage_forms_in_two_stage": 0.026386706973426044, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_doesnt_validates_with_two_forms_one_stage": 0.019531042024027556, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validate_external_review_form": 0.018824083963409066, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validate_project_approval_form": 0.030170165933668613, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validates_with_one_form_one_stage": 0.021481460018549114, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validates_with_one_form_one_stage_with_deleted": 0.02069579006638378, + "hypha/apply/funds/tests/test_admin_form.py::TestWorkflowFormAdminForm::test_validates_without_external_review_form": 48.361528916924726, + "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_email_block_required": 0.23669929197058082, + "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_field_label_required": 0.4264394990168512, + "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_form_creation": 0.1255045419675298, + "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_full_name_block_required": 0.21778983401600271, + "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_name_field_required": 0.16521474899491295, + "hypha/apply/funds/tests/test_admin_views.py::TestCreateApplicationFormView::test_title_block_required": 0.18796995794400573, + "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_fund": 0.5163307920447551, + "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_fund_with_external_review_form": 0.3089608349255286, + "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_multi_phase_fund": 0.6428762489231303, + "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_multi_phase_fund_reuse_forms": 0.32680133398389444, + "hypha/apply/funds/tests/test_admin_views.py::TestFundCreationView::test_can_create_multiple_forms_second_stage_in_fund": 0.38245924992952496, + "hypha/apply/funds/tests/test_admin_views.py::TestRoundIndexView::test_application_links": 0.23710004199529067, + "hypha/apply/funds/tests/test_admin_views.py::TestRoundIndexView::test_number_of_rounds": 0.19798845698824152, + "hypha/apply/funds/tests/test_admin_views.py::TestRoundIndexView::test_review_form_links": 0.19360833300743252, + "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_existing_reviews": 0.19348304194863886, + "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_init_and_render": 0.164736126025673, + "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_reviewers_swap": 0.16794008301803842, + "hypha/apply/funds/tests/test_forms.py::TestReviewerFormQueries::test_queries_roles_swap": 0.13378891604952514, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_draft_data": 0.14817379205487669, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_ordered_qs": 0.13801383302779868, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_required_block_names": 0.09193337493343279, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_can_get_reverse_ordered_qs": 0.10779045801609755, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_choices_added_for_search": 0.0961629580706358, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_correct_file_path_generated": 0.08538674999726936, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_create_revision_on_create": 0.12477433402091265, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_create_revision_on_data_change": 0.10634450102224946, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_dont_create_revision_on_data_same": 0.100119165959768, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_draft_updated": 0.14161733293440193, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_file_gets_uploaded": 0.12744712503626943, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_in_final_stage": 0.2055488329497166, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_is_draft_property": 0.11940320703433827, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_number_not_in_search": 0.08931800007121637, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_richtext_in_char_is_removed_for_search": 0.12436804198659956, + "hypha/apply/funds/tests/test_models.py::TestApplicationSubmission::test_richtext_is_removed_for_search": 0.1070792090613395, + "hypha/apply/funds/tests/test_models.py::TestAssignedReviewersQuerySet::test_reviewed": 0.11055675003444776, + "hypha/apply/funds/tests/test_models.py::TestAssignedReviewersQuerySet::test_reviewed_with_review_order": 0.1212779990164563, + "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_assigned_but_not_reviewed": 0.14393537596333772, + "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_disagree_review_is_maybe": 0.17617041704943404, + "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_dont_double_count_review_and_opinion": 0.15912662399932742, + "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_opinionated_slash_confused_reviewer": 0.1075845840969123, + "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_review_outcome": 0.12516620801761746, + "hypha/apply/funds/tests/test_models.py::TestForTableQueryset::test_submissions_dont_conflict": 0.2523494170163758, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_associated_if_another_user_exists": 0.3300747080356814, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_associated_if_logged_in": 0.169607832969632, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_associated_if_not_new": 0.27457179204793647, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_can_submit_if_blank_user_data_even_if_logged_in": 0.13648795802146196, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_can_submit_if_new": 0.16187208297196776, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_doesnt_mess_with_name": 0.2510277080582455, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_email_sent_to_user_on_submission_fund": 0.2040719169890508, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_email_sent_to_user_on_submission_lab": 0.18573704094160348, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_valid_email": 0.24251300003379583, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_draft": 0.19095224904594943, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_draft_lab": 0.160813957976643, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_status_assigned": 0.1561506660655141, + "hypha/apply/funds/tests/test_models.py::TestFormSubmission::test_workflow_and_status_assigned_lab": 0.13647924998076633, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_can_access_workflow_class": 0.05282920692116022, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_can_not_be_open_with_draft_round": 0.06382033205591142, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_closed_round": 0.059609292016830295, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_multiple_open_rounds": 0.10447883396409452, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_no_open_rounds": 0.03223233396420255, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_no_round_exists": 0.019256207975558937, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_normal_round": 0.11261362594086677, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_open_ended_round": 0.06533554097404703, + "hypha/apply/funds/tests/test_models.py::TestFundModel::test_round_not_open": 0.05114937399048358, + "hypha/apply/funds/tests/test_models.py::TestReminderModel::test_can_save_reminder": 0.10578825004631653, + "hypha/apply/funds/tests/test_models.py::TestReminderModel::test_check_default_action": 0.09030404192162678, + "hypha/apply/funds/tests/test_models.py::TestReminderModel::test_reminder_action_message": 0.09281583403935656, + "hypha/apply/funds/tests/test_models.py::TestRequestForPartners::test_form_when_round": 0.27410662395413965, + "hypha/apply/funds/tests/test_models.py::TestRequestForPartners::test_message_when_no_round": 0.08773758402094245, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_create_without_end_date": 0.07778404100099578, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_not_create_with_other_open_end_date": 0.10365545901004225, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_not_overlap_clean": 0.0764989159652032, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_can_not_overlap_with_normal_round": 0.09141387604176998, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_end_before_start": 0.034462166018784046, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_end_overlaps": 0.06619212403893471, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_inside_overlaps": 0.07186312502017245, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_normal_start_end_doesnt_error": 0.04751320800278336, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_other_fund_not_impacting": 0.13839333306532353, + "hypha/apply/funds/tests/test_models.py::TestRoundModelDates::test_start_overlaps": 0.08277758298208937, + "hypha/apply/funds/tests/test_models.py::TestRoundModelWorkflowAndForms::test_can_change_round_form_not_fund": 0.09724791703047231, + "hypha/apply/funds/tests/test_models.py::TestRoundModelWorkflowAndForms::test_forms_are_copied_to_new_rounds": 0.06082012504339218, + "hypha/apply/funds/tests/test_models.py::TestRoundModelWorkflowAndForms::test_workflow_is_copied_to_new_rounds": 0.06077770801493898, + "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_file_private_url_included": 0.1323906669858843, + "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_named_blocks_dont_break_if_no_response": 0.0864520839531906, + "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_named_blocks_not_included_in_answers": 0.09695274994010106, + "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_normal_answers_included_in_answers": 0.10001158399973065, + "hypha/apply/funds/tests/test_models.py::TestSubmissionRenderMethods::test_paragraph_not_rendered_in_answers": 0.11938187503255904, + "hypha/apply/funds/tests/test_tags.py::TestTemplateTags::test_markdown_tags": 0.01744779199361801, + "hypha/apply/funds/tests/test_tags.py::TestTemplateTags::test_submission_tags": 0.1305782090057619, + "hypha/apply/funds/tests/test_views.py::TestAnonSubmissionFileView::test_anonymous_can_not_access": 0.24070762598421425, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_edit_own_submission": 0.7094494999619201, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_see_view_determination_primary_action": 0.7554237499716692, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_submit_submission": 0.46202258398989215, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_can_view_own_submission": 0.3816945409635082, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_edit_other_submission": 0.42644787492463365, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_edit_submission_incorrect_state": 0.45967287599341944, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_screen_submission": 0.3974973341100849, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_add_determination_primary_action": 1.0543237089877948, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_assign_reviewers_primary_action": 0.41607945901341736, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_assign_reviewers_secondary_action": 0.42971941706491634, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_create_review_primary_action": 0.5564686259604059, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_screening_status_block": 0.5897678749752231, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_see_view_determination_primary_action": 0.6243275409797207, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_cant_view_others_submission": 0.3719659579801373, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_get_congratulations_draft_proposal": 0.3450066659715958, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_get_edit_link_when_editable": 0.49088912596926093, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_gets_draft_on_edit_submission": 0.5591084999614395, + "hypha/apply/funds/tests/test_views.py::TestApplicantSubmissionView::test_sees_latest_draft_if_it_exists": 0.7017644589650445, + "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_applicant_cannot_access_reviewer_leaderboard": 0.10273800004506484, + "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_community_reviewer_cannot_access_reviewer_leaderboard": 0.07304925000062212, + "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_partner_cannot_access_reviewer_leaderboard": 0.08130179200088605, + "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_reviewer_cannot_access_leader_board": 0.07935400103451684, + "hypha/apply/funds/tests/test_views.py::TestReviewerLeaderboard::test_staff_can_access_leaderboard": 0.20759108295897022, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_access_any_submission": 0.4016657070023939, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_accepted_submission": 0.6824897499755025, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_assigned_submission": 0.6668082919786684, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_external_review_or_higher_submission": 0.33893716789316386, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_only_access_reviewed_submission": 0.2681330419727601, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_see_create_review_primary_action": 0.5043630420113914, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_can_see_view_determination_primary_action": 0.7249346659518778, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_access_dismissed_submission": 0.3675867090350948, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_add_determination_primary_action": 0.55346120899776, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_assign_reviewers_primary_action": 0.30351766699459404, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_assign_reviewers_secondary_action": 0.2750765840173699, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_create_review_primary_action": 1.0963659989647567, + "hypha/apply/funds/tests/test_views.py::TestReviewerSubmissionView::test_cant_see_view_determination_primary_action": 0.5298776669660583, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_can_add_external_reviewer_and_review_remains": 0.6534512920188718, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_can_be_made_role_and_not_duplciated": 0.6818339169840328, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_can_remove_external_reviewer_and_review_remains": 0.5081400409690104, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_add_reviewers_for_proposal": 0.490133750019595, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_add_staff_single": 0.7280000840546563, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_change_role_reviewer_and_review_remains": 0.4881212509935722, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_change_staff_single": 0.4469773330492899, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_remove_reviewers_for_proposal": 0.4973102919757366, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_can_remove_some_reviewers_for_proposal": 0.7982138749794103, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_lead_cant_add_reviewers_single": 0.4260078339721076, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_staff_cant_add_reviewers_proposal": 0.4538681259728037, + "hypha/apply/funds/tests/test_views.py::TestReviewersUpdateView::test_staff_cant_remove_reviewers_proposal": 0.662929292069748, + "hypha/apply/funds/tests/test_views.py::TestRevisionCompare::test_renders_with_all_the_diffs": 0.5615033330395818, + "hypha/apply/funds/tests/test_views.py::TestRevisionList::test_get_in_correct_order": 0.5671977919409983, + "hypha/apply/funds/tests/test_views.py::TestRevisionList::test_list_doesnt_include_draft": 0.5241635830607265, + "hypha/apply/funds/tests/test_views.py::TestRevisionsView::test_create_revisions_on_submit": 0.4087889169459231, + "hypha/apply/funds/tests/test_views.py::TestRevisionsView::test_dont_update_live_revision_on_save": 0.33236058393958956, + "hypha/apply/funds/tests/test_views.py::TestRevisionsView::test_existing_draft_edit_and_submit": 0.5503149580326863, + "hypha/apply/funds/tests/test_views.py::TestStaffReminderDeleteView::test_confirm_message": 0.25645725103095174, + "hypha/apply/funds/tests/test_views.py::TestStaffReminderDeleteView::test_has_access": 0.23424820799846202, + "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_cant_post_to_sealed": 0.3014831249602139, + "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_non_sealed_redirected_away": 0.3376392510253936, + "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_non_sealed_unaffected": 0.40321325103286654, + "hypha/apply/funds/tests/test_views.py::TestStaffSealedView::test_redirected_to_sealed": 0.25951958494260907, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionFileView::test_staff_can_access": 0.244705916964449, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_applicant_can_see_application_draft_status": 0.2793214999837801, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_access_edit": 0.32853466598317027, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_access_edit_button": 0.38707658293424174, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_create_project": 0.31167029205244035, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_edit_submission": 0.6582669579656795, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_progress_phase": 0.4329052090179175, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_screen_submission": 0.3705467500258237, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_add_determination_primary_action": 0.8753968750243075, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_assign_reviewers_primary_action": 1.4947197499568574, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_assign_reviewers_secondary_action": 1.1712304589455016, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_create_review_primary_action": 1.1885729159694165, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_see_view_determination_primary_action": 1.0778108329395764, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_view_a_lab_submission": 0.4490732910344377, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_view_a_submission": 0.5647438760497607, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_can_view_submission_screening_block": 0.35359595803311095, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_access_edit_button_when_applicant_editing": 0.44850229198345914, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_progress_stage_if_not_lead": 0.4024465829716064, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_add_determination_primary_action": 1.423444250074681, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_application_draft_status": 0.22235716693103313, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_assign_reviewers_primary_action": 0.909417667076923, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_create_review_primary_action": 1.7061413750634529, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_see_view_determination_primary_action": 1.068954583024606, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_cant_view_submission_screening_block": 0.35347691597416997, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_new_form_after_progress": 0.2573237919714302, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_not_included_fields_render": 0.4275856660096906, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_not_redirected_if_determination_submitted": 0.65102858399041, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_not_redirected_if_wrong_determination_selected": 0.456320375087671, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_previous_and_next_appears_on_page": 0.6819471660419367, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_redirected_to_determination": 0.3450114580336958, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_screen_application_primary_action_is_displayed": 0.6308084579068236, + "hypha/apply/funds/tests/test_views.py::TestStaffSubmissionView::test_screen_application_primary_action_is_not_displayed": 0.3791784590575844, + "hypha/apply/funds/tests/test_views.py::TestSubmissionDetailSimplifiedView::test_project_required": 0.173337708984036, + "hypha/apply/funds/tests/test_views.py::TestSubmissionDetailSimplifiedView::test_staff_only": 0.11854575097095221, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_can_post_to_sealed": 0.7018020419636741, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_can_view_multiple_sealed": 0.6127214579610154, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_not_asked_again": 0.7633375010918826, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_peeking_is_logged": 0.3982291250140406, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSealedView::test_redirected_to_sealed": 0.3025822100462392, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSubmissionView::test_can_screen_applications_in_final_status": 0.5209657500381581, + "hypha/apply/funds/tests/test_views.py::TestSuperUserSubmissionView::test_can_screen_submission": 0.658688958035782, + "hypha/apply/funds/tests/test_views.py::TestUpdateReviewersMixin::test_submission_transition_all_reviewer_roles_not_assigned": 0.6442338328924961, + "hypha/apply/funds/tests/test_views.py::TestUpdateReviewersMixin::test_submission_transition_to_internal_review": 0.4375836249673739, + "hypha/apply/funds/tests/test_views.py::TestUpdateReviewersMixin::test_submission_transition_to_proposal_internal_review": 0.46655004197964445, + "hypha/apply/funds/tests/test_views.py::TestUserReminderDeleteView::test_doesnt_has_access": 0.409164208045695, + "hypha/apply/funds/tests/test_views.py::TestUserSubmissionFileView::test_owner_can_access": 0.2037353749619797, + "hypha/apply/funds/tests/test_views.py::TestUserSubmissionFileView::test_user_can_not_access": 0.22563641698798165, + "hypha/apply/funds/tests/views/test_batch_progress.py::ApplicantTestCase::test_cant_access_page_to_page": 0.11944358301116154, + "hypha/apply/funds/tests/views/test_batch_progress.py::ReivewersTestCase::test_cant_post_to_page": 0.36338904191507027, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_application": 0.7609355000313371, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_different_states": 0.5602312499540858, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_multiple_applications": 0.7270860420539975, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_can_progress_one_in_mixed_state": 0.5117592929746024, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_cant_progress_in_incorrect_state": 0.580062416032888, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_determine_redirects": 0.28385725006228313, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_messenger_not_called_with_failed": 0.36575408198405057, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_messenger_with_submission_in_review": 0.36334370903205127, + "hypha/apply/funds/tests/views/test_batch_progress.py::StaffTestCase::test_mixed_determine_notifies": 0.36032479105051607, + "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_can_assign_role_reviewers": 0.8074726249324158, + "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_can_reassign_from_other_role_reviewers": 1.036929707042873, + "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_can_reassign_role_reviewers": 0.7294273339794017, + "hypha/apply/funds/tests/views/test_batch_reviewers.py::StaffTestCase::test_doesnt_remove_if_already_reviewed": 0.8322332900133915, + "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantRoundPage::test_cant_access_page": 0.3773946659639478, + "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_lab_page": 0.17087579105282202, + "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_non_existing_page": 0.2679556249640882, + "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_normal_page": 0.14955275104148313, + "hypha/apply/funds/tests/views/test_rounds.py::TestApplicantSubmissionByRound::test_cant_access_round_page": 0.15875099902041256, + "hypha/apply/funds/tests/views/test_rounds.py::TestReviewerAllRoundPage::test_cant_access_page": 0.11560741602443159, + "hypha/apply/funds/tests/views/test_rounds.py::TestStaffRoundPage::test_can_access_page": 0.17996933305403218, + "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_can_access_lab_page": 0.31209162500454113, + "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_can_access_round_page": 0.2757782920380123, + "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_cant_access_non_existing_page": 0.10850608302280307, + "hypha/apply/funds/tests/views/test_rounds.py::TestStaffSubmissionByRound::test_cant_access_normal_page": 0.19533950107870623, + "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_already_notified": 0.18685820797691122, + "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_project_complete": 0.10539766697911546, + "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_project_not_in_progress": 0.10482662497088313, + "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_dont_notify_report_due_in_7_days_already_submitted": 0.18442729103844613, + "hypha/apply/projects/tests/test_commands.py::TestNotifyReportDue::test_notify_report_due_in_7_days": 0.13636937498813495, + "hypha/apply/projects/tests/test_files.py::TestFlatten::test_no_items": 0.005671833001542836, + "hypha/apply/projects/tests/test_files.py::TestFlatten::test_one_level_of_items": 0.0005060419207438827, + "hypha/apply/projects/tests/test_files.py::TestFlatten::test_three_levels_of_items": 0.0010021249763667583, + "hypha/apply/projects/tests/test_files.py::TestFlatten::test_two_levels_of_items": 0.0016584160039201379, + "hypha/apply/projects/tests/test_files.py::TestGetFiles::test_get_files": 0.14279512502253056, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_approved_by_finance1_status": 0.16588400094769895, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_approved_by_finance1_status_with_extended_flow": 0.1320433330256492, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_approved_by_staff_status": 0.13338145799934864, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_changes_requested_by_finance1_status": 0.0969262930448167, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_changes_requested_by_finance2_status": 0.15330187493236735, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_changes_requested_by_staff_status": 0.11806950002210215, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_resubmitted_status": 0.13932912598829716, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance1_choices_with_submitted_status": 0.14899625006364658, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_approved_by_finance1_status": 0.12847608391894028, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_approved_by_staff_status": 0.14547262497944757, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_changes_requested_by_finance1_status": 0.14052074996288866, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_changes_requested_by_finance2_status": 0.10986804100684822, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_changes_requested_by_staff_status": 0.12273612595163286, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_resubmitted_status": 0.11824754200642928, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_finance2_choices_with_submitted_status": 0.1264552510692738, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_approved_by_finance1_status": 0.1518614999949932, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_approved_by_staff_status": 0.13292975001968443, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_changes_requested_by_finance1_status": 0.13289824995445088, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_changes_requested_by_finance2_status": 0.11046295805135742, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_changes_requested_by_staff_status": 0.1264052088954486, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_resubmitted_status": 0.12441687507089227, + "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_staff_choices_with_submitted_status": 0.12730520905461162, "hypha/apply/projects/tests/test_forms.py::TestChangeInvoiceStatusFormForm::test_valid_checks_required_for_approved_by_finance1": 0.14640300802420825, - "hypha/apply/projects/tests/test_forms.py::TestChangePAFStatusForm::test_comment_is_not_required": 0.19300870806910098, - "hypha/apply/projects/tests/test_forms.py::TestChangePAFStatusForm::test_paf_status_is_required": 0.15398145886138082, + "hypha/apply/projects/tests/test_forms.py::TestChangePAFStatusForm::test_comment_is_not_required": 0.1718307089759037, + "hypha/apply/projects/tests/test_forms.py::TestChangePAFStatusForm::test_paf_status_is_required": 0.12084329198114574, "hypha/apply/projects/tests/test_forms.py::TestChangePAFStatusForm::test_role_is_required": 0.27957526297541335, - "hypha/apply/projects/tests/test_forms.py::TestContractUploadForm::test_applicant_can_upload_signed": 0.012523707933723927, - "hypha/apply/projects/tests/test_forms.py::TestContractUploadForm::test_applicant_cant_upload_unsigned": 0.0015236668987199664, - "hypha/apply/projects/tests/test_forms.py::TestCreateInvoiceForm::test_adding_invoice": 0.20054199907463044, - "hypha/apply/projects/tests/test_forms.py::TestCreateInvoiceForm::test_supporting_documents_not_required": 0.13114958407822996, - "hypha/apply/projects/tests/test_forms.py::TestEditInvoiceForm::test_add_new_supporting_document": 0.18472599901724607, - "hypha/apply/projects/tests/test_forms.py::TestEditInvoiceForm::test_keep_existing_supporting_document": 0.12283229199238122, - "hypha/apply/projects/tests/test_forms.py::TestEditInvoiceForm::test_remove_existing_supporting_document": 0.1436553749954328, + "hypha/apply/projects/tests/test_forms.py::TestContractUploadForm::test_applicant_can_upload_signed": 0.006403084029443562, + "hypha/apply/projects/tests/test_forms.py::TestContractUploadForm::test_applicant_cant_upload_unsigned": 0.0013619580422528088, + "hypha/apply/projects/tests/test_forms.py::TestCreateInvoiceForm::test_adding_invoice": 0.14031287498073652, + "hypha/apply/projects/tests/test_forms.py::TestCreateInvoiceForm::test_supporting_documents_not_required": 0.11470908299088478, + "hypha/apply/projects/tests/test_forms.py::TestEditInvoiceForm::test_add_new_supporting_document": 0.1444257089169696, + "hypha/apply/projects/tests/test_forms.py::TestEditInvoiceForm::test_keep_existing_supporting_document": 0.10962137498427182, + "hypha/apply/projects/tests/test_forms.py::TestEditInvoiceForm::test_remove_existing_supporting_document": 0.12516949890414253, "hypha/apply/projects/tests/test_forms.py::TestFinalApprovalForm::test_comment_is_not_required": 0.13221216498641297, "hypha/apply/projects/tests/test_forms.py::TestFinalApprovalForm::test_final_approval_status_is_required": 0.14672052202513441, - "hypha/apply/projects/tests/test_forms.py::TestProjectApprovalForm::test_updating_fields_sets_changed_flag": 0.18461233307607472, - "hypha/apply/projects/tests/test_forms.py::TestSelectDocumentForm::test_copying_files": 0.2475349169690162, - "hypha/apply/projects/tests/test_forms.py::TestStaffContractUploadForm::test_staff_can_upload_signed": 0.025492292013950646, - "hypha/apply/projects/tests/test_forms.py::TestStaffContractUploadForm::test_staff_can_upload_unsigned": 0.0016959580825641751, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_can_edit_invoice": 0.4677913341438398, + "hypha/apply/projects/tests/test_forms.py::TestProjectApprovalForm::test_updating_fields_sets_changed_flag": 0.1513795000500977, + "hypha/apply/projects/tests/test_forms.py::TestSelectDocumentForm::test_copying_files": 0.18573712499346584, + "hypha/apply/projects/tests/test_forms.py::TestStaffContractUploadForm::test_staff_can_upload_signed": 0.016540082986466587, + "hypha/apply/projects/tests/test_forms.py::TestStaffContractUploadForm::test_staff_can_upload_unsigned": 0.0009478750289417803, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_can_edit_invoice": 0.36330341699067503, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_cant_complete_required_checks": 0.2534002040629275, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_cant_edit_deliverables": 1.3421481680124998, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_cant_edit_invoice": 0.8605386249255389, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_cant_edit_deliverables": 1.1302305419230834, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_cant_edit_invoice": 0.8116131669376045, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_applicant_cant_view_required_checks": 0.15699885797221214, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_can_user_delete_from_submitted": 0.13923558394890279, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_deliverables_total_amount": 0.26896874990779907, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_change_status": 0.2687777921091765, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_change_status_with_extended_flow": 0.2564405840821564, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_can_user_delete_from_submitted": 0.1474017919972539, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_deliverables_total_amount": 0.22718766692560166, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_change_status": 0.24208254198310897, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_change_status_with_extended_flow": 0.26650112500647083, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_complete_required_checks": 0.13558499101782218, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_complete_required_checks_with_extended_flow": 0.262551411986351, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_edit_deliverables": 0.15919166698586196, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_edit_deliverables_with_extended_flow": 0.30434783222153783, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_edit_deliverables": 0.1268042500014417, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_edit_deliverables_with_extended_flow": 0.26172199996653944, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_can_view_required_checks": 0.13442321895854548, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_cant_change_status": 0.7777259999420494, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_cant_change_status_with_extended_flow": 1.124960500979796, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_cant_edit_deliverables": 1.1772799988975748, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_can_change_status_with_extended_flow": 0.31822366698179394, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_can_edit_deliverables": 0.18257191707380116, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_cant_change_status": 0.7050282080308534, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_cant_change_status_with_extended_flow": 0.9462360010365956, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance1_cant_edit_deliverables": 0.921039208129514, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_can_change_status_with_extended_flow": 0.2598687920253724, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_can_edit_deliverables": 0.10523770900908858, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_can_view_required_checks": 0.1515219429275021, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_cant_change_status": 1.0336496668169275, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_cant_change_status": 0.9600839590420946, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_cant_complete_required_checks": 0.2719519470119849, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_cant_edit_deliverables": 1.2482511668931693, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_invoice_status_user_choices": 0.029556000023148954, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_paid_value_overrides_paid_value": 0.24231670808512717, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_paid_value_used_when_no_paid_value": 0.11380149878095835, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_change_status": 0.5695527079515159, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_delete_from_submitted": 0.13154870888683945, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_edit_deliverables": 0.4835246258880943, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_edit_invoice": 0.3677802919410169, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_change_status": 0.827688624849543, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_finance2_cant_edit_deliverables": 1.2250069149886258, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_invoice_status_user_choices": 0.03718683298211545, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_paid_value_overrides_paid_value": 0.2030398749629967, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_paid_value_used_when_no_paid_value": 0.13652175100287423, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_change_status": 0.47239845793228596, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_delete_from_submitted": 0.12855129095260054, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_edit_deliverables": 0.39788370800670236, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_can_edit_invoice": 0.400879165972583, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_change_status": 1.0896235829568468, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_complete_required_checks": 0.25674830604111776, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_changes_requested": 0.12243487488012761, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_declined": 0.11556737590581179, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_paid": 0.13047170895151794, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_resubmitted": 0.14207054185681045, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_edit_deliverables": 0.9022454170044512, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_edit_invoice": 0.9730592080159113, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_changes_requested": 0.12655916705261916, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_declined": 0.1241452909889631, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_paid": 0.09894866601098329, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_delete_from_resubmitted": 0.11720466602127999, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_edit_deliverables": 0.8992272920440882, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_edit_invoice": 0.8716860840213485, "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_staff_cant_view_required_checks": 0.13086751097580418, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_changes_requested": 0.13185079209506512, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_declined": 0.13134587497916073, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_paid": 0.11496637493837625, - "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_resubmitted": 0.11964587401598692, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_approved_by_finance_1": 0.16413887590169907, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_approved_by_staff": 0.1464312489842996, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_for_finance_1": 0.47499566711485386, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_for_finance_1_with_extended_flow": 0.4038207909325138, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_get_totals": 0.29281766701024026, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_get_totals_no_value": 0.009484459063969553, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_in_progress": 0.5261278330581263, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_in_progress_with_extended_workflow": 0.5607747921021655, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_not_rejected": 0.24980391701683402, - "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_rejected": 0.2608390011591837, - "hypha/apply/projects/tests/test_models.py::TestProjectModel::test_create_from_submission": 0.13738808303605765, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_changes_requested": 0.11003816605079919, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_declined": 0.13892958394717425, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_paid": 0.1303658340475522, + "hypha/apply/projects/tests/test_models.py::TestInvoiceModel::test_user_cant_delete_from_resubmitted": 0.12873112497618422, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_approved_by_finance_1": 0.14149708399781957, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_approved_by_staff": 0.11375741701340303, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_for_finance_1": 0.3286479579983279, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_for_finance_1_with_extended_flow": 0.34988908405648544, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_get_totals": 0.2184157090377994, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_get_totals_no_value": 0.0021292089950293303, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_in_progress": 0.4871035839896649, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_in_progress_with_extended_workflow": 0.461409084033221, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_not_rejected": 0.25259441597154364, + "hypha/apply/projects/tests/test_models.py::TestInvoiceQueryset::test_rejected": 0.23775141587248072, + "hypha/apply/projects/tests/test_models.py::TestProjectModel::test_create_from_submission": 0.1269227919401601, "hypha/apply/projects/tests/test_models.py::TestProjectModel::test_get_missing_document_categories_with_enough_documents": 0.11543385393451899, "hypha/apply/projects/tests/test_models.py::TestProjectModel::test_get_missing_document_categories_with_no_documents": 0.12154749495675787, "hypha/apply/projects/tests/test_models.py::TestProjectModel::test_get_missing_document_categories_with_some_documents": 0.1251538940705359, - "hypha/apply/projects/tests/test_models.py::TestReport::test_late_if_two_weeks_behind": 0.14041937398724258, - "hypha/apply/projects/tests/test_models.py::TestReport::test_not_late_if_one_ahead": 0.1475888331187889, - "hypha/apply/projects/tests/test_models.py::TestReport::test_not_late_if_two_ahead_but_one_in_future": 0.13852524990215898, - "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_doesnt_includes_draft": 0.13393670704681426, - "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_doesnt_includes_to_do": 0.14236916694790125, - "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_includes_skipped": 0.11985287489369512, - "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_includes_submitted": 0.1529380000429228, - "hypha/apply/projects/tests/test_models.py::TestReport::test_start_date": 0.2827108330093324, - "hypha/apply/projects/tests/test_models.py::TestReport::test_start_date_with_submitted": 0.3177187921246514, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_current_due_report_gets_active_report": 0.16657691588625312, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_last_report_gets_report_in_past": 0.13111908407881856, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_last_report_gets_skipped": 0.13035574986133724, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_last_report_gets_submitted_report_in_past": 0.16823266702704132, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_months_always_relative": 0.14021316601429135, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_next_date_month_from_now": 0.1383220818825066, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_next_date_week_from_now": 0.1124104579212144, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_creates_report": 0.13419712509494275, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_creates_report_if_current_skipped": 0.29639283288270235, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_creates_report_not_in_past": 0.18723491800483316, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_schedule_in_future_creates_report": 0.12775712611619383, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due": 0.1407861680490896, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_has_drafts": 0.1162833331618458, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_no_future": 0.14742004196159542, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_no_skipped": 0.1485892499331385, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_no_submitted": 0.1205546660348773, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_report_creates_report": 0.17780787404626608, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_report_future_schedule_creates_report": 0.15225604199804366, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_submitted_report_unaffected": 0.12192612502258271, - "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_today_schedule_gets_report_today": 0.1461057069245726, - "hypha/apply/projects/tests/test_settings.py::TestProjectFeatureFlag::test_urls_404_when_turned_off": 0.13511179306078702, - "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_only_owner_or_contracting_can_upload_contract": 0.6426608330802992, + "hypha/apply/projects/tests/test_models.py::TestReport::test_late_if_two_weeks_behind": 0.1477487930096686, + "hypha/apply/projects/tests/test_models.py::TestReport::test_not_late_if_one_ahead": 0.13237629103241488, + "hypha/apply/projects/tests/test_models.py::TestReport::test_not_late_if_two_ahead_but_one_in_future": 0.1617117919959128, + "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_doesnt_includes_draft": 0.13124441704712808, + "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_doesnt_includes_to_do": 0.12062133406288922, + "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_includes_skipped": 0.14506729098502547, + "hypha/apply/projects/tests/test_models.py::TestReport::test_queryset_done_includes_submitted": 0.1238328319741413, + "hypha/apply/projects/tests/test_models.py::TestReport::test_start_date": 0.21993504301644862, + "hypha/apply/projects/tests/test_models.py::TestReport::test_start_date_with_submitted": 0.24898254103027284, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_current_due_report_gets_active_report": 0.16092424996895716, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_last_report_gets_report_in_past": 0.12169475003611296, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_last_report_gets_skipped": 0.1491424990235828, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_last_report_gets_submitted_report_in_past": 0.1257554159965366, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_months_always_relative": 0.13577125000301749, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_next_date_month_from_now": 0.1201719170785509, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_next_date_week_from_now": 0.12127966596744955, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_creates_report": 0.13493754208320752, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_creates_report_if_current_skipped": 0.23459212493617088, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_creates_report_not_in_past": 0.11976004095049575, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_no_report_schedule_in_future_creates_report": 0.1297682499862276, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due": 0.1139041249989532, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_has_drafts": 0.15932658303063363, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_no_future": 0.12547366600483656, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_no_skipped": 0.118757291988004, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_no_submitted": 0.1272358339629136, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_report_creates_report": 0.11167049902724102, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_past_due_report_future_schedule_creates_report": 0.12052008305909112, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_submitted_report_unaffected": 0.1280730830039829, + "hypha/apply/projects/tests/test_models.py::TestReportConfig::test_today_schedule_gets_report_today": 0.10225716698914766, + "hypha/apply/projects/tests/test_settings.py::TestProjectFeatureFlag::test_urls_404_when_turned_off": 0.18001758301397786, + "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_only_owner_or_contracting_can_upload_contract": 0.5239041250897571, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_only_owner_or_staff_or_contracting_can_upload_contract": 0.6099863669951446, - "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_owner_can_only_upload_during_contracting": 0.7223308749962598, + "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_owner_can_only_upload_during_contracting": 0.6643426680820994, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_staff_can_only_upload_during_contracting": 0.9420862589031458, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_staff_can_upload_after_state_leaves_committed": 0.7649188670911826, - "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_staff_cant_upload_contract": 0.6458539160666987, + "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_staff_cant_upload_contract": 0.6652022080379538, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_user_can_only_upload_during_contracting": 0.6449822820723057, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_user_cannot_upload_first_contract": 0.13075465901056305, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_user_cannot_upload_when_latest_is_approved": 0.13252823700895533, "hypha/apply/projects/tests/test_templatetags.py::TestContractTools::test_user_upload_happy_path": 0.2574270899640396, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_can_edit_in_resubmitted": 0.20081529207527637, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_can_edit_in_submitted": 0.17667258298024535, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_cant_edit_in_decline": 0.16733512608334422, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_cant_edit_in_paid": 0.14762791595421731, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_can_edit_in_changes_requested": 0.1495155009906739, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_change_status_from_changes_requested": 0.1446481669554487, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_change_status_from_resubmitted": 0.11919666698668152, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_change_status_from_submitted": 0.1579036668408662, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_delete_from_submitted": 0.143415667116642, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_change_status_from_declined": 0.14673970884177834, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_change_status_from_paid": 0.16521012503653765, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_changes_requested": 0.13709866616409272, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_declined": 0.12764229194726795, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_paid": 0.14702133391983807, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_resubmitted": 0.14646908198483288, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_edit_in_changes_requested": 0.14439691707957536, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_can_delete_from_changes_requested": 0.16820387495681643, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_can_delete_from_submitted": 0.11543937399983406, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_changes_requested": 0.14563395793084055, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_declined": 0.1374384588561952, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_paid": 0.11991154309362173, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_resubmitted": 0.11730445898137987, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_submitted": 0.140936418203637, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_delete_from_declined": 0.12267554190475494, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_delete_from_paid": 0.12980916700325906, - "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_delete_from_resubmitted": 0.1432627912145108, - "hypha/apply/projects/tests/test_views.py::ApplicantStaffProjectDetailDownloadView::test_cant_access_docx": 0.1966205829521641, - "hypha/apply/projects/tests/test_views.py::ApplicantStaffProjectDetailDownloadView::test_cant_access_pdf": 0.15883916686289012, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_can_edit_in_resubmitted": 0.1416441659675911, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_can_edit_in_submitted": 0.13269512495025992, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_cant_edit_in_decline": 0.11906229198211804, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_and_staff_cant_edit_in_paid": 0.13019908301066607, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_applicant_can_edit_in_changes_requested": 0.13013033400056884, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_change_status_from_changes_requested": 0.11940841592149809, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_change_status_from_resubmitted": 0.14355270902160555, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_change_status_from_submitted": 0.13288904097862542, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_can_delete_from_submitted": 0.1131814590189606, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_change_status_from_declined": 0.14224608399672434, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_change_status_from_paid": 0.11739499995019287, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_changes_requested": 0.13371045800158754, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_declined": 0.11702750099357218, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_paid": 0.10729066602652892, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_delete_from_resubmitted": 0.14401299902237952, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_staff_cant_edit_in_changes_requested": 0.1236842090729624, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_can_delete_from_changes_requested": 0.11744620994431898, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_can_delete_from_submitted": 0.10634854197269306, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_changes_requested": 0.1360518749570474, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_declined": 0.11879579199012369, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_paid": 0.11959391599521041, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_resubmitted": 0.11630808300105855, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_change_status_from_submitted": 0.13333870802307501, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_delete_from_declined": 0.13749158300925046, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_delete_from_paid": 0.12493983306922019, + "hypha/apply/projects/tests/test_templatetags.py::TestInvoiceTools::test_user_cant_delete_from_resubmitted": 0.10210883396212012, + "hypha/apply/projects/tests/test_views.py::ApplicantStaffProjectDetailDownloadView::test_cant_access_docx": 0.45916212402516976, + "hypha/apply/projects/tests/test_views.py::ApplicantStaffProjectDetailDownloadView::test_cant_access_pdf": 0.24529237597016618, "hypha/apply/projects/tests/test_views.py::ApplicantStaffProjectPDFExport::test_cant_access": 0.4367084689438343, - "hypha/apply/projects/tests/test_views.py::TestAnonPacketView::test_anonymous_can_not_access": 0.2985005429945886, - "hypha/apply/projects/tests/test_views.py::TestApplicantChangeInoviceStatus::test_can": 0.2696548749227077, - "hypha/apply/projects/tests/test_views.py::TestApplicantChangeInoviceStatus::test_other_cant": 0.1833043749211356, - "hypha/apply/projects/tests/test_views.py::TestApplicantDetailInvoiceStatus::test_can": 0.26966437592636794, - "hypha/apply/projects/tests/test_views.py::TestApplicantDetailInvoiceStatus::test_other_cant": 0.21466441499069333, - "hypha/apply/projects/tests/test_views.py::TestApplicantEditInvoiceView::test_editing_invoice_remove_supporting_document": 0.5716359990183264, - "hypha/apply/projects/tests/test_views.py::TestApplicantEditInvoiceView::test_editing_payment_keeps_receipts": 0.2577328330371529, - "hypha/apply/projects/tests/test_views.py::TestApplicantInvoiceDocumentPrivateMedia::test_can_access_own": 0.20194349891971797, - "hypha/apply/projects/tests/test_views.py::TestApplicantInvoiceDocumentPrivateMedia::test_cant_access_other": 0.16671270783990622, - "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_can_access_own_submitted_report": 0.28402716596610844, - "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_other_draft_report": 0.20395133295096457, - "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_other_future_report": 0.18712166603654623, - "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_other_submitted_report": 0.24219274998176843, - "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_own_draft_report": 0.3841152499662712, - "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_own_future_report": 0.16174466698430479, - "hypha/apply/projects/tests/test_views.py::TestApplicantSelectDocumentView::test_can_choose": 0.33903512405231595, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_edit_submitted_report": 0.2282239181222394, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_get_other_report": 0.2113874590722844, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_get_own_report_for_closing_and_complete_project": 0.2811180839780718, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_submit_blank_report": 0.25066425011027604, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_submit_other_report": 0.1684802919626236, + "hypha/apply/projects/tests/test_views.py::TestAnonPacketView::test_anonymous_can_not_access": 0.4795464590424672, + "hypha/apply/projects/tests/test_views.py::TestApplicantChangeInoviceStatus::test_can": 0.3256509589846246, + "hypha/apply/projects/tests/test_views.py::TestApplicantChangeInoviceStatus::test_other_cant": 0.22193012502975762, + "hypha/apply/projects/tests/test_views.py::TestApplicantDetailInvoiceStatus::test_can": 0.3115037499810569, + "hypha/apply/projects/tests/test_views.py::TestApplicantDetailInvoiceStatus::test_other_cant": 0.2415912079741247, + "hypha/apply/projects/tests/test_views.py::TestApplicantEditInvoiceView::test_editing_invoice_remove_supporting_document": 0.538654375995975, + "hypha/apply/projects/tests/test_views.py::TestApplicantEditInvoiceView::test_editing_payment_keeps_receipts": 0.34710566693684086, + "hypha/apply/projects/tests/test_views.py::TestApplicantInvoiceDocumentPrivateMedia::test_can_access_own": 0.303694000991527, + "hypha/apply/projects/tests/test_views.py::TestApplicantInvoiceDocumentPrivateMedia::test_cant_access_other": 0.21306154096964747, + "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_can_access_own_submitted_report": 0.3071528759901412, + "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_other_draft_report": 0.20377112395362929, + "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_other_future_report": 0.21426974999485537, + "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_other_submitted_report": 0.27217287494568154, + "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_own_draft_report": 0.2003725840477273, + "hypha/apply/projects/tests/test_views.py::TestApplicantReportDetail::test_cant_access_own_future_report": 0.213356250023935, + "hypha/apply/projects/tests/test_views.py::TestApplicantSelectDocumentView::test_can_choose": 0.37393970793345943, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_edit_submitted_report": 0.2687948750681244, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_get_other_report": 0.1986369170481339, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_get_own_report_for_closing_and_complete_project": 0.3425587509991601, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_submit_blank_report": 0.2760763339465484, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_cant_submit_other_report": 0.1870428750407882, "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_get_own_report": 0.2826117270742543, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_get_own_report_for_inprogress_project": 0.23057825001887977, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_save_report_draft": 0.3780158340232447, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_save_report_with_draft": 0.303628999972716, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_submit_own_report": 0.5435319581301883, - "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_submit_private_report": 0.3683913750573993, - "hypha/apply/projects/tests/test_views.py::TestApplicantSupportingDocumentPrivateMedia::test_can_access_own": 0.248186418088153, - "hypha/apply/projects/tests/test_views.py::TestApplicantSupportingDocumentPrivateMedia::test_cant_access_other": 0.25508024904411286, - "hypha/apply/projects/tests/test_views.py::TestApplicantUploadContractView::test_non_owner_upload_contract": 0.4791930830106139, - "hypha/apply/projects/tests/test_views.py::TestApplicantUploadContractView::test_owner_upload_contract": 0.28598516690544784, - "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_approve_already_approved_contract": 0.44596962514333427, - "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_approve_unapproved_contract": 0.462921499973163, - "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_approve_unsigned_contract": 0.29319612495601177, - "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_attempt_to_approve_non_latest": 0.2465409169672057, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_get_own_report_for_inprogress_project": 0.3384575830423273, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_save_report_draft": 0.3246157499961555, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_save_report_with_draft": 0.5627535410458222, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_submit_own_report": 0.3342833330389112, + "hypha/apply/projects/tests/test_views.py::TestApplicantSubmitReport::test_submit_private_report": 0.38345675001619384, + "hypha/apply/projects/tests/test_views.py::TestApplicantSupportingDocumentPrivateMedia::test_can_access_own": 0.2888711250270717, + "hypha/apply/projects/tests/test_views.py::TestApplicantSupportingDocumentPrivateMedia::test_cant_access_other": 0.5360604160232469, + "hypha/apply/projects/tests/test_views.py::TestApplicantUploadContractView::test_non_owner_upload_contract": 0.25273012602701783, + "hypha/apply/projects/tests/test_views.py::TestApplicantUploadContractView::test_owner_upload_contract": 0.33014037396060303, + "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_approve_already_approved_contract": 0.411870917014312, + "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_approve_unapproved_contract": 0.6934588749427348, + "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_approve_unsigned_contract": 0.31821533292531967, + "hypha/apply/projects/tests/test_views.py::TestApproveContractView::test_attempt_to_approve_non_latest": 0.31890566600486636, "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_applicant_cant_update_paf_status": 0.16629222000483423, - "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_assigned_approvers_can_approve_paf": 0.529611749923788, - "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_assigned_approvers_can_reject_paf": 0.41536887490656227, + "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_assigned_approvers_can_approve_paf": 0.456562418024987, + "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_assigned_approvers_can_reject_paf": 0.4152632079203613, "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_contracting_can_update_paf_status": 0.12587614404037595, "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_finance_can_update_paf_status": 0.1424186519579962, "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_reviewer_approve_paf": 0.11959398398175836, "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_reviewer_rejects_paf": 0.11641414504265413, "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_staff_can_update_paf_status": 0.14335077803116292, - "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_applicant_cant_update_paf_status": 0.2960075829178095, - "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_contracting_cant_update_paf_status": 0.257217500009574, - "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_finance_cant_update_paf_status": 0.2588361669331789, - "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_staff_cant_update_paf_status": 0.287305667065084, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_all_signed_and_approved_contracts_appear": 0.16733087494503707, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_all_signed_and_unapproved_returns_latest": 0.14290170895401388, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_all_unsigned_and_unapproved_returns_only_latest": 0.1126612500520423, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_of_both_latest_signed_and_approved": 0.13478079193737358, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_of_both_latest_signed_and_unapproved": 0.1597497520269826, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_of_both_latest_unsigned_and_unapproved": 0.1713441238971427, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_with_latest_signed_returns_no_unsigned": 0.1869870830560103, - "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_no_contracts_returns_nothing": 0.11318270908668637, + "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_applicant_cant_update_paf_status": 0.2950861669378355, + "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_contracting_cant_update_paf_status": 0.521577792998869, + "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_finance_cant_update_paf_status": 0.23723004100611433, + "hypha/apply/projects/tests/test_views.py::TestChangePAFStatusView::test_unassigned_staff_cant_update_paf_status": 0.2821604569326155, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_all_signed_and_approved_contracts_appear": 0.12316487601492554, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_all_signed_and_unapproved_returns_latest": 0.10773258411791176, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_all_unsigned_and_unapproved_returns_only_latest": 0.1178819989436306, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_of_both_latest_signed_and_approved": 0.11882074997993186, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_of_both_latest_signed_and_unapproved": 0.14017470710678026, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_of_both_latest_unsigned_and_unapproved": 0.11534129199571908, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_mixture_with_latest_signed_returns_no_unsigned": 0.10427795996656641, + "hypha/apply/projects/tests/test_views.py::TestContractsMixin::test_no_contracts_returns_nothing": 0.11602991598192602, "hypha/apply/projects/tests/test_views.py::TestFinalApprovalView::test_final_approval": 0.6934734180103987, "hypha/apply/projects/tests/test_views.py::TestFinalApprovalView::test_final_approver_cant_be_applicant": 0.1994648210820742, "hypha/apply/projects/tests/test_views.py::TestFinalApprovalView::test_final_approver_cant_be_approver": 0.2700507749686949, @@ -671,221 +671,221 @@ "hypha/apply/projects/tests/test_views.py::TestFinalApprovalView::test_final_approver_cant_be_finance": 0.24600107705919072, "hypha/apply/projects/tests/test_views.py::TestFinalApprovalView::test_final_approver_cant_be_staff": 0.25083705002907664, "hypha/apply/projects/tests/test_views.py::TestFinalApprovalView::test_final_rejection": 0.463428097020369, - "hypha/apply/projects/tests/test_views.py::TestFinanceDetailInvoiceStatus::test_can": 0.2918579989345744, - "hypha/apply/projects/tests/test_views.py::TestFinanceDetailInvoiceStatus::test_wrong_project_cant": 0.31055020820349455, - "hypha/apply/projects/tests/test_views.py::TestFinanceProjectDetailView::test_has_access": 0.5254750840831548, - "hypha/apply/projects/tests/test_views.py::TestFinanceProjectDetailView::test_lab_project_renders": 0.24427445698529482, - "hypha/apply/projects/tests/test_views.py::TestProjectDetailApprovalView::test_staff_only": 0.21805266686715186, + "hypha/apply/projects/tests/test_views.py::TestFinanceDetailInvoiceStatus::test_can": 0.3208207089919597, + "hypha/apply/projects/tests/test_views.py::TestFinanceDetailInvoiceStatus::test_wrong_project_cant": 0.32072658301331103, + "hypha/apply/projects/tests/test_views.py::TestFinanceProjectDetailView::test_has_access": 0.3069825819693506, + "hypha/apply/projects/tests/test_views.py::TestFinanceProjectDetailView::test_lab_project_renders": 0.2706773330573924, + "hypha/apply/projects/tests/test_views.py::TestProjectDetailApprovalView::test_staff_only": 0.13856237498112023, "hypha/apply/projects/tests/test_views.py::TestProjectDetailSimplifiedView::test_staff_only": 0.15704163699410856, - "hypha/apply/projects/tests/test_views.py::TestProjectListView::test_applicants_cannot_access_project_list_page": 0.35646595794241875, - "hypha/apply/projects/tests/test_views.py::TestProjectListView::test_staff_can_access_project_list_page": 0.4130909158848226, - "hypha/apply/projects/tests/test_views.py::TestProjectOverviewView::test_applicants_cannot_access": 0.3156660831300542, - "hypha/apply/projects/tests/test_views.py::TestProjectOverviewView::test_staff_can_access": 0.3794998340308666, - "hypha/apply/projects/tests/test_views.py::TestRemoveDocumentView::test_remove_document": 0.6011455829720944, - "hypha/apply/projects/tests/test_views.py::TestRemoveDocumentView::test_remove_non_existent_document": 0.4119464160175994, - "hypha/apply/projects/tests/test_views.py::TestReviewerUserProjectDetailView::test_doesnt_have_access": 0.2568367099156603, - "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_fails_when_project_is_locked": 0.21470729308202863, + "hypha/apply/projects/tests/test_views.py::TestProjectListView::test_applicants_cannot_access_project_list_page": 0.4246058319695294, + "hypha/apply/projects/tests/test_views.py::TestProjectListView::test_staff_can_access_project_list_page": 0.36219254101160914, + "hypha/apply/projects/tests/test_views.py::TestProjectOverviewView::test_applicants_cannot_access": 0.37630616599926725, + "hypha/apply/projects/tests/test_views.py::TestProjectOverviewView::test_staff_can_access": 0.41673837590496987, + "hypha/apply/projects/tests/test_views.py::TestRemoveDocumentView::test_remove_document": 0.48997466603759676, + "hypha/apply/projects/tests/test_views.py::TestRemoveDocumentView::test_remove_non_existent_document": 0.3139536670059897, + "hypha/apply/projects/tests/test_views.py::TestReviewerUserProjectDetailView::test_doesnt_have_access": 0.5179437079932541, + "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_fails_when_project_is_locked": 0.17156754207098857, "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_fails_when_project_is_not_in_committed_state": 0.11484798201126978, - "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_fails_when_project_is_not_in_draft_state": 0.14769441704265773, - "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_happy_path": 0.6986223750282079, - "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_can_skip_draft_report": 0.45594166696537286, - "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_can_skip_report": 0.4073158329119906, - "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_can_unskip_report": 0.33946179191116244, - "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_cant_skip_current_report": 0.38838975108228624, - "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_cant_skip_submitted_report": 0.48223537614103407, - "hypha/apply/projects/tests/test_views.py::TestStaffChangeInvoiceStatus::test_can": 0.6096435419749469, - "hypha/apply/projects/tests/test_views.py::TestStaffDetailInvoiceStatus::test_can": 0.27719737589359283, - "hypha/apply/projects/tests/test_views.py::TestStaffDetailInvoiceStatus::test_wrong_project_cant": 0.3097846240270883, - "hypha/apply/projects/tests/test_views.py::TestStaffEditInvoiceView::test_editing_invoice_keeps_supprting_document": 0.3054182920604944, - "hypha/apply/projects/tests/test_views.py::TestStaffEditInvoiceView::test_editing_invoice_remove_supporting_document": 0.33160770789254457, - "hypha/apply/projects/tests/test_views.py::TestStaffInoviceDocumentPrivateMedia::test_can_access": 0.23991429095622152, - "hypha/apply/projects/tests/test_views.py::TestStaffInoviceDocumentPrivateMedia::test_cant_access_if_project_wrong": 0.34424449992366135, - "hypha/apply/projects/tests/test_views.py::TestStaffInvoiceSupportingDocumentPrivateMedia::test_can_access": 0.26419045904185623, - "hypha/apply/projects/tests/test_views.py::TestStaffPacketView::test_staff_can_access": 0.542893375037238, - "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_can_access_docx": 0.2526711248792708, - "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_can_access_pdf": 0.22196891601197422, - "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_response_object_is_docx": 0.18210512504447252, - "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_response_object_is_pdf": 0.423069374053739, - "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailView::test_has_access": 0.39090833195950836, - "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailView::test_lab_project_renders": 0.2163510420359671, + "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_fails_when_project_is_not_in_draft_state": 0.14426654000999406, + "hypha/apply/projects/tests/test_views.py::TestSendForApprovalView::test_send_for_approval_happy_path": 0.45225474901963025, + "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_can_skip_draft_report": 0.7346736240433529, + "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_can_skip_report": 0.4331095829838887, + "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_can_unskip_report": 0.5356489589903504, + "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_cant_skip_current_report": 0.49836270802188665, + "hypha/apply/projects/tests/test_views.py::TestSkipReport::test_cant_skip_submitted_report": 0.38844799995422363, + "hypha/apply/projects/tests/test_views.py::TestStaffChangeInvoiceStatus::test_can": 0.5439029589761049, + "hypha/apply/projects/tests/test_views.py::TestStaffDetailInvoiceStatus::test_can": 0.3614245840581134, + "hypha/apply/projects/tests/test_views.py::TestStaffDetailInvoiceStatus::test_wrong_project_cant": 0.3226270829909481, + "hypha/apply/projects/tests/test_views.py::TestStaffEditInvoiceView::test_editing_invoice_keeps_supprting_document": 0.44923462596489117, + "hypha/apply/projects/tests/test_views.py::TestStaffEditInvoiceView::test_editing_invoice_remove_supporting_document": 0.3660999580170028, + "hypha/apply/projects/tests/test_views.py::TestStaffInoviceDocumentPrivateMedia::test_can_access": 0.3106673340080306, + "hypha/apply/projects/tests/test_views.py::TestStaffInoviceDocumentPrivateMedia::test_cant_access_if_project_wrong": 0.3133041240507737, + "hypha/apply/projects/tests/test_views.py::TestStaffInvoiceSupportingDocumentPrivateMedia::test_can_access": 0.48374729201896116, + "hypha/apply/projects/tests/test_views.py::TestStaffPacketView::test_staff_can_access": 0.24483416695147753, + "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_can_access_docx": 0.2842131249490194, + "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_can_access_pdf": 0.2532527500297874, + "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_response_object_is_docx": 0.2087979579810053, + "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailDownloadView::test_response_object_is_pdf": 0.23951404099352658, + "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailView::test_has_access": 0.3380022089695558, + "hypha/apply/projects/tests/test_views.py::TestStaffProjectDetailView::test_lab_project_renders": 0.4964867499656975, "hypha/apply/projects/tests/test_views.py::TestStaffProjectPDFExport::test_can_access": 0.62907274288591, "hypha/apply/projects/tests/test_views.py::TestStaffProjectPDFExport::test_reponse_object_is_pdf": 0.49607601994648576, - "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_can_access_submitted_report": 0.633369543007575, - "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_cant_access_draft_report": 0.2028960419120267, - "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_cant_access_future_report": 0.18843545811250806, - "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_cant_access_skipped_report": 0.15538466710131615, - "hypha/apply/projects/tests/test_views.py::TestStaffSelectDocumentView::test_can_choose": 0.3985551248770207, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_get_page_for_closing_and_complete_project": 0.36881350108888, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_submit_blank_report": 0.2565447079250589, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_submit_future_report": 0.18748716602567583, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_submit_report_for_closing_and_complete_project": 0.35878841613885015, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_edit_submitted_report": 0.616601207992062, + "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_can_access_submitted_report": 0.7208559580030851, + "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_cant_access_draft_report": 0.1993922510300763, + "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_cant_access_future_report": 0.19288537505781278, + "hypha/apply/projects/tests/test_views.py::TestStaffReportDetail::test_cant_access_skipped_report": 0.24741629196796566, + "hypha/apply/projects/tests/test_views.py::TestStaffSelectDocumentView::test_can_choose": 0.5797827090136707, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_get_page_for_closing_and_complete_project": 0.41048508300445974, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_submit_blank_report": 0.46325166698079556, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_submit_future_report": 0.23543595790397376, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_cant_submit_report_for_closing_and_complete_project": 0.39520945894764736, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_edit_submitted_report": 0.4390557080041617, "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_get_page": 0.2761989119462669, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_get_page_for_inprogress_project": 0.21260137599892914, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_resubmit_submitted_report": 0.38562366797123104, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_save_report_draft": 0.45716437499504536, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_save_report_with_draft": 0.4391555840848014, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_submit_private_report": 0.3835993749089539, - "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_submit_report": 0.5758337920997292, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_get_page_for_inprogress_project": 0.2642857500468381, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_resubmit_submitted_report": 0.4863973740139045, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_save_report_draft": 0.396255124011077, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_save_report_with_draft": 0.6368727079825476, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_submit_private_report": 0.4309600000269711, + "hypha/apply/projects/tests/test_views.py::TestStaffSubmitReport::test_submit_report": 0.4222774589434266, "hypha/apply/projects/tests/test_views.py::TestStaffUploadContractView::test_upload_contract": 0.6011504890047945, "hypha/apply/projects/tests/test_views.py::TestStaffUploadContractView::test_upload_contract_with_signed_set_to_true": 0.7100242809974588, - "hypha/apply/projects/tests/test_views.py::TestSuperUserProjectDetailView::test_has_access": 0.3404494160786271, - "hypha/apply/projects/tests/test_views.py::TestUpdateLeadView::test_update_lead": 0.6488694158615544, - "hypha/apply/projects/tests/test_views.py::TestUpdateLeadView::test_update_lead_from_none": 0.353453041985631, - "hypha/apply/projects/tests/test_views.py::TestUploadDocumentView::test_upload_document": 0.3495344161055982, - "hypha/apply/projects/tests/test_views.py::TestUserPacketView::test_owner_can_access": 0.33545812394004315, - "hypha/apply/projects/tests/test_views.py::TestUserPacketView::test_user_can_not_access": 0.20576012507081032, - "hypha/apply/projects/tests/test_views.py::TestUserProjectDetailView::test_doesnt_have_access": 0.18093812407460064, - "hypha/apply/projects/tests/test_views.py::TestUserProjectDetailView::test_owner_has_access": 0.26805891608819366, - "hypha/apply/review/tests/test_admin.py::TestReviewFormAdminForm::test_can_create_review_form": 0.011869458016008139, - "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_comments_block_required": 0.20544070890173316, - "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_field_label_required": 0.14705174998380244, - "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_form_creation": 0.09497791691683233, - "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_name_field_required": 0.10215525003150105, - "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_recommendation_block_required": 0.10985474998597056, - "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_visibility_block_required": 0.11987654096446931, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_no_opinion_agree": 0.13917420711368322, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_no_opinion_disagree": 0.3636568750953302, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_not_all_opinion": 0.16282629093620926, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_yes_mixed_opinion": 0.14262116607278585, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_yes_opinion_agree": 0.11128175002522767, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_yes_opinion_disagree": 0.12608304212335497, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_maybe": 0.10440991690848023, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_mixed": 0.1266885829390958, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_no": 0.1545254159718752, - "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_yes": 0.11492637603078038, - "hypha/apply/review/tests/test_views.py::NonStaffReviewOpinionCase::test_nonstaff_cant_post_opinion_to_review": 0.25852475001011044, - "hypha/apply/review/tests/test_views.py::ReviewDetailTestCase::test_review_detail_opinion": 0.3494584161089733, - "hypha/apply/review/tests/test_views.py::ReviewDetailTestCase::test_review_detail_recommendation": 0.24479608400724828, - "hypha/apply/review/tests/test_views.py::ReviewDetailVisibilityTestCase::test_review_detail_visibility_private": 0.21798725111875683, - "hypha/apply/review/tests/test_views.py::ReviewDetailVisibilityTestCase::test_review_detail_visibility_reviewer": 0.2873614178970456, - "hypha/apply/review/tests/test_views.py::ReviewListTestCase::test_review_list_opinion": 0.296927543124184, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_com_external_review_to_ready_for_discussion": 0.3388680829666555, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_ext_external_review_to_ready_for_discussion": 0.3326782069634646, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_external_review_to_ready_for_discussion": 0.34529587405268103, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_initial_state_transition_to_internal_review": 0.6244569580303505, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_internal_review_to_ready_for_discussion": 0.36454141791909933, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_proposal_discussion_to_proposal_internal_review": 0.4163980430457741, - "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_submission_did_not_transition": 0.24663300102110952, - "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_can_access_form": 0.274870999972336, - "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_can_edit_draft_review": 0.23591608414426446, - "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_can_submit_draft_review": 0.44210195809137076, - "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_cant_access_wrong_status": 0.26254008314572275, - "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_cant_resubmit_review": 0.1984747510869056, - "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_revision_captured_on_review": 0.38767075003124774, - "hypha/apply/review/tests/test_views.py::StaffReviewListingTestCase::test_can_access_review_listing": 0.3263881659368053, - "hypha/apply/review/tests/test_views.py::StaffReviewListingTestCase::test_draft_reviews_dont_appear": 0.2494624579558149, - "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_can_add_opinion_to_others_review": 0.49202100094407797, - "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_can_see_opinion_buttons_on_others_review": 0.18765587511006743, - "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_cant_see_opinion_buttons_on_self_review": 0.2060839991318062, - "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_disagree_opinion_redirects_to_review_form": 0.2845542909344658, - "hypha/apply/review/tests/test_views.py::StaffReviewsTestCase::test_can_access_other_review": 0.2563229991355911, - "hypha/apply/review/tests/test_views.py::StaffReviewsTestCase::test_can_access_review": 0.2578002088703215, - "hypha/apply/review/tests/test_views.py::TestReviewScore::test_average_score_calculated": 0.6326144568156451, - "hypha/apply/review/tests/test_views.py::TestReviewScore::test_na_included_in_review_average": 0.4118264999706298, - "hypha/apply/review/tests/test_views.py::TestReviewScore::test_na_included_multiple_reviews_average": 0.8284147089580074, - "hypha/apply/review/tests/test_views.py::TestReviewScore::test_na_included_reviews_average": 0.4461417091079056, - "hypha/apply/review/tests/test_views.py::TestReviewScore::test_no_score_is_NA": 0.37893874989822507, - "hypha/apply/review/tests/test_views.py::TestReviewScore::test_score_calculated": 0.5917663330910727, - "hypha/apply/review/tests/test_views.py::UserReviewFormTestCase::test_cant_access_form": 0.11791095905937254, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens0-date_field-expected0]": 0.0008633758407086134, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens1-date_field-expected1]": 0.2487529581412673, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens10-date_field-expected10]": 0.00032166705932468176, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens11-date_field-expected11]": 0.0003079997841268778, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens2-date_field-expected2]": 0.0010131660383194685, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens3-date_field-expected3]": 0.00038766697980463505, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens4-date_field-expected4]": 0.0005627501523122191, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens5-date_field-expected5]": 0.00032462505623698235, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens6-date_field-expected6]": 0.000332833849824965, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens7-date_field-expected7]": 0.00042587402276694775, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens8-date_field-expected8]": 0.0003458750434219837, - "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens9-date_field-expected9]": 0.0003647500416263938, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[\"hello world\"-expected8]": 0.000824082875624299, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[#12 #13-expected1]": 0.0006767080631107092, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[#12 text after-expected3]": 0.00036995799746364355, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[-expected0]": 0.0003527089720591903, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[hello-expected4]": 0.0004931669682264328, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[submitted:\"hello world\"-expected7]": 0.0003858740674331784, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[submitted:2023-12-02 hello-expected5]": 0.0007135840132832527, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[submitted:>2023-12-02 submitted:<2023-12-01 hello-expected6]": 0.0004955840995535254, - "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[text before #12-expected2]": 0.0004830829566344619, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[1111-12-89-expected7]": 0.0003257909556850791, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[2023-12-expected5]": 0.0004110001027584076, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[2023-24-expected6]": 0.0003435820108279586, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[2023-expected8]": 0.00032008392736315727, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[<2023-12-01-expected1]": 0.0005006259307265282, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[<=2023-12-01-expected2]": 0.0008225421188399196, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>2023-12-02-expected0]": 0.0006244999822229147, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>2023-expected9]": 0.00032824999652802944, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>=2023-12-01-expected3]": 0.00035345798823982477, - "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>=2023-12-expected4]": 0.0005740410415455699, - "hypha/apply/stream_forms/tests.py::TestBlocks::test_blocks_decode_none": 0.007605333114042878, - "hypha/apply/users/tests/test_forms.py::TestEmailChangePasswordForm::test_can_update_slack": 0.02227200078777969, - "hypha/apply/users/tests/test_forms.py::TestEmailChangePasswordForm::test_doesnt_error_on_null_slack_field": 0.009237498976290226, - "hypha/apply/users/tests/test_forms.py::TestProfileForm::test_can_change_email": 0.01382191595621407, - "hypha/apply/users/tests/test_forms.py::TestProfileForm::test_cant_set_slack_name": 0.013793665915727615, - "hypha/apply/users/tests/test_forms.py::TestProfileForm::test_email_unique": 0.032328416127711535, - "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_auto_prepend_at": 0.017780249007046223, - "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_can_clear_slack_name": 0.02372016606386751, - "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_can_set_slack_name": 0.005592416040599346, - "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_can_set_slack_name_with_trailing_space": 0.011761041940189898, - "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_cant_change_email": 0.008614414953626692, - "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_cant_set_slack_name_with_space": 0.016710375086404383, - "hypha/apply/users/tests/test_middleware.py::TestTwoFactorAuthenticationMiddleware::test_unverified_user_can_access_allowed_urls": 0.283555917092599, - "hypha/apply/users/tests/test_middleware.py::TestTwoFactorAuthenticationMiddleware::test_unverified_user_redirect": 0.11384358303621411, - "hypha/apply/users/tests/test_middleware.py::TestTwoFactorAuthenticationMiddleware::test_verified_user_redirect": 0.11694704205729067, - "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_not_set_up": 0.0737853329628706, - "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_page_requires_login": 0.059891041833907366, - "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_user_email_not_whitelisted": 0.2785152919823304, - "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_whitelisted_user_can_access_oauth_settings_page": 0.07490591693203896, - "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_whitelisted_user_can_see_link_to_oauth_settings_page": 0.08536875003483146, - "hypha/apply/users/tests/test_registration.py::TestRegistration::test_duplicate_registration_fails": 1.1095537910005078, - "hypha/apply/users/tests/test_registration.py::TestRegistration::test_force_login": 0.07362799998372793, - "hypha/apply/users/tests/test_registration.py::TestRegistration::test_registration": 0.05405937402974814, - "hypha/apply/users/tests/test_registration.py::TestRegistration::test_registration_enabled_has_link": 0.11622841598000377, - "hypha/apply/users/tests/test_registration.py::TestRegistration::test_registration_enabled_has_no_link": 0.07047733408398926, - "hypha/apply/users/tests/test_utils.py::TestActivationEmail::test_activation_email_includes_link": 0.018656583968549967, - "hypha/apply/users/tests/test_utils.py::TestGetUserByEmail::test_multiple_accounts_same_email": 0.264990124036558, - "hypha/apply/users/tests/test_utils.py::TestGetUserByEmail::test_no_account": 0.006179541000165045, - "hypha/apply/users/tests/test_utils.py::TestGetUserByEmail::test_single_same_email": 0.007662498974241316, - "hypha/apply/users/tests/test_utils.py::TestUserAlreadyRegistered::test_case_sensitive_email": 0.013083998928777874, - "hypha/apply/users/tests/test_utils.py::TestUserAlreadyRegistered::test_no_account": 0.00882116798311472, - "hypha/apply/users/tests/test_views.py::TestBecome::test_staff_cannot_become_superuser": 0.3818438759772107, - "hypha/apply/users/tests/test_views.py::TestBecome::test_staff_cannot_become_user": 0.07258499995805323, - "hypha/apply/users/tests/test_views.py::TestBecome::test_superuser_can_become_staff": 0.3476316658779979, - "hypha/apply/users/tests/test_views.py::TestBecome::test_superuser_cannot_become_superuser": 0.2632557920878753, - "hypha/apply/users/tests/test_views.py::TestBecome::test_user_cannot_become_other_user": 0.06921558303292841, - "hypha/apply/users/tests/test_views.py::TestBecome::test_user_cannot_become_staff": 0.09651295910589397, - "hypha/apply/users/tests/test_views.py::TestBecome::test_user_cannot_become_superuser": 0.05581383407115936, - "hypha/apply/users/tests/test_views.py::TestPasswordReset::test_recieves_email": 0.546951541909948, - "hypha/apply/users/tests/test_views.py::TestProfileView::test_cant_acces_if_not_logged_in": 0.10695858299732208, - "hypha/apply/users/tests/test_views.py::TestProfileView::test_cant_set_slack_name": 0.07533599890302867, - "hypha/apply/users/tests/test_views.py::TestProfileView::test_doesnt_includes_change_password_for_oauth": 0.12171199999283999, - "hypha/apply/users/tests/test_views.py::TestProfileView::test_includes_change_password": 0.0876262920210138, - "hypha/apply/users/tests/test_views.py::TestStaffProfileView::test_can_set_slack_name": 0.10759624990168959, + "hypha/apply/projects/tests/test_views.py::TestSuperUserProjectDetailView::test_has_access": 0.3391688749543391, + "hypha/apply/projects/tests/test_views.py::TestUpdateLeadView::test_update_lead": 0.40778812498319894, + "hypha/apply/projects/tests/test_views.py::TestUpdateLeadView::test_update_lead_from_none": 0.5957383739296347, + "hypha/apply/projects/tests/test_views.py::TestUploadDocumentView::test_upload_document": 0.4540349580347538, + "hypha/apply/projects/tests/test_views.py::TestUserPacketView::test_owner_can_access": 0.2611806660424918, + "hypha/apply/projects/tests/test_views.py::TestUserPacketView::test_user_can_not_access": 0.2293828340480104, + "hypha/apply/projects/tests/test_views.py::TestUserProjectDetailView::test_doesnt_have_access": 0.26785816700430587, + "hypha/apply/projects/tests/test_views.py::TestUserProjectDetailView::test_owner_has_access": 0.2852826260495931, + "hypha/apply/review/tests/test_admin.py::TestReviewFormAdminForm::test_can_create_review_form": 0.025559333036653697, + "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_comments_block_required": 0.2139011659892276, + "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_field_label_required": 0.12697383406339213, + "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_form_creation": 0.14681141602341086, + "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_name_field_required": 0.16924870904767886, + "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_recommendation_block_required": 0.3443185409414582, + "hypha/apply/review/tests/test_admin_views.py::TestCreateReviewFormView::test_visibility_block_required": 0.13432608300354332, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_no_opinion_agree": 0.15352487500058487, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_no_opinion_disagree": 0.13338916702196002, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_not_all_opinion": 0.13556991697987542, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_yes_mixed_opinion": 0.20167166803730652, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_yes_opinion_agree": 0.10976754198782146, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_review_yes_opinion_disagree": 0.1065160830039531, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_maybe": 0.10898670798633248, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_mixed": 0.15790229005506262, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_no": 0.4051346249761991, + "hypha/apply/review/tests/test_models.py::TestReviewQueryset::test_reviews_yes": 0.09628162503940985, + "hypha/apply/review/tests/test_views.py::NonStaffReviewOpinionCase::test_nonstaff_cant_post_opinion_to_review": 0.25356183300027624, + "hypha/apply/review/tests/test_views.py::ReviewDetailTestCase::test_review_detail_opinion": 0.3422890829970129, + "hypha/apply/review/tests/test_views.py::ReviewDetailTestCase::test_review_detail_recommendation": 0.25260195799637586, + "hypha/apply/review/tests/test_views.py::ReviewDetailVisibilityTestCase::test_review_detail_visibility_private": 0.2541005829698406, + "hypha/apply/review/tests/test_views.py::ReviewDetailVisibilityTestCase::test_review_detail_visibility_reviewer": 0.2859520830097608, + "hypha/apply/review/tests/test_views.py::ReviewListTestCase::test_review_list_opinion": 0.29913162492448464, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_com_external_review_to_ready_for_discussion": 0.6151829569134861, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_ext_external_review_to_ready_for_discussion": 0.330972999043297, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_external_review_to_ready_for_discussion": 0.3619700830313377, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_initial_state_transition_to_internal_review": 0.39601245999801904, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_internal_review_to_ready_for_discussion": 0.4144460830138996, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_proposal_discussion_to_proposal_internal_review": 0.5859039160422981, + "hypha/apply/review/tests/test_views.py::ReviewWorkFlowActionTestCase::test_submission_did_not_transition": 0.4111545409541577, + "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_can_access_form": 0.3118844159762375, + "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_can_edit_draft_review": 0.30636616703122854, + "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_can_submit_draft_review": 0.6729637079988606, + "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_cant_access_wrong_status": 0.2599057499319315, + "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_cant_resubmit_review": 0.2100437090266496, + "hypha/apply/review/tests/test_views.py::StaffReviewFormTestCase::test_revision_captured_on_review": 0.48076970799593255, + "hypha/apply/review/tests/test_views.py::StaffReviewListingTestCase::test_can_access_review_listing": 0.40731233393307775, + "hypha/apply/review/tests/test_views.py::StaffReviewListingTestCase::test_draft_reviews_dont_appear": 0.22873454302316532, + "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_can_add_opinion_to_others_review": 0.6085471249534748, + "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_can_see_opinion_buttons_on_others_review": 0.24384395801462233, + "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_cant_see_opinion_buttons_on_self_review": 0.248379125026986, + "hypha/apply/review/tests/test_views.py::StaffReviewOpinionCase::test_disagree_opinion_redirects_to_review_form": 0.38472329097567126, + "hypha/apply/review/tests/test_views.py::StaffReviewsTestCase::test_can_access_other_review": 0.30059083399828523, + "hypha/apply/review/tests/test_views.py::StaffReviewsTestCase::test_can_access_review": 0.22167387598892674, + "hypha/apply/review/tests/test_views.py::TestReviewScore::test_average_score_calculated": 0.5768150840303861, + "hypha/apply/review/tests/test_views.py::TestReviewScore::test_na_included_in_review_average": 0.508686956949532, + "hypha/apply/review/tests/test_views.py::TestReviewScore::test_na_included_multiple_reviews_average": 0.8996606669970788, + "hypha/apply/review/tests/test_views.py::TestReviewScore::test_na_included_reviews_average": 0.3935017079929821, + "hypha/apply/review/tests/test_views.py::TestReviewScore::test_no_score_is_NA": 0.46648699999786913, + "hypha/apply/review/tests/test_views.py::TestReviewScore::test_score_calculated": 0.5067357090301812, + "hypha/apply/review/tests/test_views.py::UserReviewFormTestCase::test_cant_access_form": 0.54031412495533, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens0-date_field-expected0]": 0.0005503330612555146, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens1-date_field-expected1]": 0.0003978319000452757, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens10-date_field-expected10]": 0.0008721250342205167, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens11-date_field-expected11]": 0.0008979590493254364, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens2-date_field-expected2]": 0.0009763759444467723, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens3-date_field-expected3]": 0.0009276660275645554, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens4-date_field-expected4]": 0.0009425410535186529, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens5-date_field-expected5]": 0.0009253339958377182, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens6-date_field-expected6]": 0.0008558339322917163, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens7-date_field-expected7]": 0.000898751022759825, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens8-date_field-expected8]": 0.004949666967149824, + "hypha/apply/search/tests/test_filters.py::test_date_filter_tokens_to_q_obj[tokens9-date_field-expected9]": 0.0012595829903148115, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[\"hello world\"-expected8]": 0.0009242090745829046, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[#12 #13-expected1]": 0.002065416076220572, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[#12 text after-expected3]": 0.0009625009843148291, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[-expected0]": 0.0009918330470100045, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[hello-expected4]": 0.0010198740055784583, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[submitted:\"hello world\"-expected7]": 0.0010261240531690419, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[submitted:2023-12-02 hello-expected5]": 0.001243750040885061, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[submitted:>2023-12-02 submitted:<2023-12-01 hello-expected6]": 0.00046183395897969604, + "hypha/apply/search/tests/test_query_parser.py::test_parse_search_query[text before #12-expected2]": 0.0012453750241547823, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[1111-12-89-expected7]": 0.0008087919559329748, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[2023-12-expected5]": 0.000329000991769135, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[2023-24-expected6]": 0.0003075840068049729, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[2023-expected8]": 0.0008797079790383577, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[<2023-12-01-expected1]": 0.000899831997230649, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[<=2023-12-01-expected2]": 0.0003706669667735696, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>2023-12-02-expected0]": 0.002301833941601217, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>2023-expected9]": 0.00036154198460280895, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>=2023-12-01-expected3]": 0.000352540984749794, + "hypha/apply/search/tests/test_query_parser.py::test_tokenize_date_filter_value[>=2023-12-expected4]": 0.0005730839911848307, + "hypha/apply/stream_forms/tests.py::TestBlocks::test_blocks_decode_none": 0.007933374959975481, + "hypha/apply/users/tests/test_forms.py::TestEmailChangePasswordForm::test_can_update_slack": 0.012895333988126367, + "hypha/apply/users/tests/test_forms.py::TestEmailChangePasswordForm::test_doesnt_error_on_null_slack_field": 0.004665916028898209, + "hypha/apply/users/tests/test_forms.py::TestProfileForm::test_can_change_email": 0.024179249943699688, + "hypha/apply/users/tests/test_forms.py::TestProfileForm::test_cant_set_slack_name": 0.006112375995144248, + "hypha/apply/users/tests/test_forms.py::TestProfileForm::test_email_unique": 0.020395499013829976, + "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_auto_prepend_at": 0.017060500045772642, + "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_can_clear_slack_name": 0.006809582991991192, + "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_can_set_slack_name": 0.011181749985553324, + "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_can_set_slack_name_with_trailing_space": 0.011195708997547626, + "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_cant_change_email": 0.007692208979278803, + "hypha/apply/users/tests/test_forms.py::TestStaffProfileForm::test_cant_set_slack_name_with_space": 0.012088084011338651, + "hypha/apply/users/tests/test_middleware.py::TestTwoFactorAuthenticationMiddleware::test_unverified_user_can_access_allowed_urls": 0.2864917920087464, + "hypha/apply/users/tests/test_middleware.py::TestTwoFactorAuthenticationMiddleware::test_unverified_user_redirect": 0.14059175102738664, + "hypha/apply/users/tests/test_middleware.py::TestTwoFactorAuthenticationMiddleware::test_verified_user_redirect": 0.13204412494087592, + "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_not_set_up": 0.11334274901309982, + "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_page_requires_login": 0.2748591679846868, + "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_user_email_not_whitelisted": 0.0654975829529576, + "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_whitelisted_user_can_access_oauth_settings_page": 0.14729795791208744, + "hypha/apply/users/tests/test_oauth_access.py::TestOAuthAccess::test_oauth_whitelisted_user_can_see_link_to_oauth_settings_page": 0.31927924894262105, + "hypha/apply/users/tests/test_registration.py::TestRegistration::test_duplicate_registration_fails": 0.16601058200467378, + "hypha/apply/users/tests/test_registration.py::TestRegistration::test_force_login": 0.040093874966260046, + "hypha/apply/users/tests/test_registration.py::TestRegistration::test_registration": 0.1198088750243187, + "hypha/apply/users/tests/test_registration.py::TestRegistration::test_registration_enabled_has_link": 0.17216083296807483, + "hypha/apply/users/tests/test_registration.py::TestRegistration::test_registration_enabled_has_no_link": 0.38800258294213563, + "hypha/apply/users/tests/test_utils.py::TestActivationEmail::test_activation_email_includes_link": 0.0421943329856731, + "hypha/apply/users/tests/test_utils.py::TestGetUserByEmail::test_multiple_accounts_same_email": 0.029899457993451506, + "hypha/apply/users/tests/test_utils.py::TestGetUserByEmail::test_no_account": 0.0013387909857556224, + "hypha/apply/users/tests/test_utils.py::TestGetUserByEmail::test_single_same_email": 0.01954558299621567, + "hypha/apply/users/tests/test_utils.py::TestUserAlreadyRegistered::test_case_sensitive_email": 0.04988624999532476, + "hypha/apply/users/tests/test_utils.py::TestUserAlreadyRegistered::test_no_account": 0.01419004105264321, + "hypha/apply/users/tests/test_views.py::TestBecome::test_staff_cannot_become_superuser": 0.13059508294099942, + "hypha/apply/users/tests/test_views.py::TestBecome::test_staff_cannot_become_user": 0.08360487490426749, + "hypha/apply/users/tests/test_views.py::TestBecome::test_superuser_can_become_staff": 0.481149458035361, + "hypha/apply/users/tests/test_views.py::TestBecome::test_superuser_cannot_become_superuser": 0.1572645420092158, + "hypha/apply/users/tests/test_views.py::TestBecome::test_user_cannot_become_other_user": 0.11106458405265585, + "hypha/apply/users/tests/test_views.py::TestBecome::test_user_cannot_become_staff": 0.17713054100750014, + "hypha/apply/users/tests/test_views.py::TestBecome::test_user_cannot_become_superuser": 0.11396770901046693, + "hypha/apply/users/tests/test_views.py::TestPasswordReset::test_recieves_email": 0.3137735840282403, + "hypha/apply/users/tests/test_views.py::TestProfileView::test_cant_acces_if_not_logged_in": 0.4167119169142097, + "hypha/apply/users/tests/test_views.py::TestProfileView::test_cant_set_slack_name": 0.08891379105625674, + "hypha/apply/users/tests/test_views.py::TestProfileView::test_doesnt_includes_change_password_for_oauth": 0.4324275830294937, + "hypha/apply/users/tests/test_views.py::TestProfileView::test_includes_change_password": 0.1497047088923864, + "hypha/apply/users/tests/test_views.py::TestStaffProfileView::test_can_set_slack_name": 0.16758129105437547, "hypha/apply/utils/tests/test_templatetags.py::WebpackTagsTestCase::test_render_bundle_calls_webpack_loader_when_enabled": 0.002394415088929236, "hypha/apply/utils/tests/test_templatetags.py::WebpackTagsTestCase::test_render_bundle_does_not_call_webpack_loader_when_disabled": 0.002298294915817678, - "hypha/apply/utils/tests/test_views.py::TestDelegatedViewMixin::test__access_if_no_object": 0.005382082890719175, - "hypha/apply/utils/tests/test_views.py::TestDelegatedViewMixin::test_parent_access_if_no_object": 0.0018752510659396648, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_add_to_query": 0.0028106679674237967, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_add_to_query_only_query_string": 0.42328820808324963, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_construct_query_string": 0.018966666888445616, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_construct_query_string_only_query_string": 0.0007347071077674627, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_modify_query": 0.0037198332138359547, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_modify_query_only_query_string": 0.002193792024627328, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_remove_from_query": 0.0020272919209674, - "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_remove_from_query_only_query_string": 0.002454749890603125, - "hypha/core/tests/test_utils.py::test_markdown_to_html[**bold**-<p><strong>bold</strong></p>]": 0.001456082914955914, - "hypha/core/tests/test_utils.py::test_markdown_to_html[Header1 | Header2\\n------ | ------\\nCell1 | Cell2-<table><thead><tr><th>Header1</th><th>Header2</th></tr></thead><tbody><tr><td>Cell1</td><td>Cell2</td></tr></tbody></table>]": 0.46120237396098673, - "hypha/core/tests/test_utils.py::test_markdown_to_html[~~strike~~-<p><del>strike</del></p>]": 0.4606062079546973, - "hypha/public/mailchimp/tests/test_views.py::TestNewsletterView::test_can_subscribe": 0.2957030009711161, - "hypha/public/mailchimp/tests/test_views.py::TestNewsletterView::test_error_in_form": 0.14298324997071177, - "hypha/public/mailchimp/tests/test_views.py::TestNewsletterView::test_redirected_home_if_get": 0.39467079006135464, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_access_categories_and_options": 0.012230750056914985, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_decompress_data": 0.019092082977294922, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_decompress_multiple_data": 0.00521787500474602, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_get_data_from_form": 0.004270416800864041, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_get_multiple_categories": 0.007622041855938733, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_get_multiple_data_from_form": 0.006844124058261514, - "hypha/public/projects/tests.py::TestCategoriesWidget::test_init_has_no_queries": 0.002373542985878885 + "hypha/apply/utils/tests/test_views.py::TestDelegatedViewMixin::test__access_if_no_object": 0.01312483404763043, + "hypha/apply/utils/tests/test_views.py::TestDelegatedViewMixin::test_parent_access_if_no_object": 0.004492042062338442, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_add_to_query": 0.5803023760090582, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_add_to_query_only_query_string": 0.008416500000748783, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_construct_query_string": 0.001480666978750378, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_construct_query_string_only_query_string": 0.008895165985450149, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_modify_query": 0.0017681249883025885, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_modify_query_only_query_string": 0.535828624968417, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_remove_from_query": 0.006329791969619691, + "hypha/core/templatetags/tests/test_query_params.py::QueryParamsTemplateTagTests::test_remove_from_query_only_query_string": 0.0015494589461013675, + "hypha/core/tests/test_utils.py::test_markdown_to_html[**bold**-<p><strong>bold</strong></p>]": 0.004082165949512273, + "hypha/core/tests/test_utils.py::test_markdown_to_html[Header1 | Header2\\n------ | ------\\nCell1 | Cell2-<table><thead><tr><th>Header1</th><th>Header2</th></tr></thead><tbody><tr><td>Cell1</td><td>Cell2</td></tr></tbody></table>]": 0.5622706249705516, + "hypha/core/tests/test_utils.py::test_markdown_to_html[~~strike~~-<p><del>strike</del></p>]": 0.003962667018640786, + "hypha/public/mailchimp/tests/test_views.py::TestNewsletterView::test_can_subscribe": 0.22826729097869247, + "hypha/public/mailchimp/tests/test_views.py::TestNewsletterView::test_error_in_form": 0.20641158294165507, + "hypha/public/mailchimp/tests/test_views.py::TestNewsletterView::test_redirected_home_if_get": 0.5709066240233369, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_access_categories_and_options": 0.5840413760161027, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_decompress_data": 0.009283084014896303, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_decompress_multiple_data": 0.005859207944013178, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_get_data_from_form": 0.005932166997808963, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_get_multiple_categories": 0.007769458054099232, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_can_get_multiple_data_from_form": 0.012393665907438844, + "hypha/public/projects/tests.py::TestCategoriesWidget::test_init_has_no_queries": 0.0045277500175870955 } \ No newline at end of file diff --git a/docs/setup/administrators/configuration.md b/docs/setup/administrators/configuration.md index 2df23f261647db26a8065e55ea38c0f8246069a2..93f93d8aac705dd80cf46af895d0ea407b9910de 100644 --- a/docs/setup/administrators/configuration.md +++ b/docs/setup/administrators/configuration.md @@ -247,3 +247,15 @@ See <https://github.com/tm-kn/django-basic-auth-ip-whitelist> BASIC_AUTH_PASSWORD = env.str('BASIC_AUTH_PASSWORD', None) BASIC_AUTH_WHITELISTED_HTTP_HOSTS = env.list('BASIC_AUTH_WHITELISTED_HTTP_HOSTS', []) BASIC_AUTH_WHITELISTED_IP_NETWORKS = env.list('BASIC_AUTH_WHITELISTED_IP_NETWORKS', []) + +## Django Elevate settings + +[How this works?](https://django-elevate.readthedocs.io/en/latest/how/index.html) + +How long should Elevate mode be active for? + + ELEVATE_COOKIE_AGE = env.int("ELEVATE_COOKIE_AGE", 3600) # 1 hours + +# An extra salt to be added into the cookie signature. + + ELEVATE_COOKIE_SALT = env.str("ELEVATE_COOKIE_SALT", SECRET_KEY) diff --git a/hypha/apply/activity/adapters/slack.py b/hypha/apply/activity/adapters/slack.py index ee5eb406ec50c93cf0d0e9a239696180e346d330..3c2a1dc69978e48209ccf3ff69286756b212c91b 100644 --- a/hypha/apply/activity/adapters/slack.py +++ b/hypha/apply/activity/adapters/slack.py @@ -176,7 +176,10 @@ class SlackAdapter(AdapterBase): # Notify second reviewer when first reviewer is done. if message_type in [MESSAGES.NEW_REVIEW, MESSAGES.REVIEW_OPINION] and related: submission = source - role_reviewers = [role_reviewer.reviewer for role_reviewer in submission.assigned.with_roles()] + role_reviewers = [ + role_reviewer.reviewer + for role_reviewer in submission.assigned.with_roles() + ] if related.author.reviewer in role_reviewers: for reviewer in role_reviewers: if reviewer != related.author.reviewer: diff --git a/hypha/apply/activity/views.py b/hypha/apply/activity/views.py index 36b5d91e2d6a4c913d63f06e87b0fa7d0271890d..ec106f4224533ac884f0ace33d2a69507a97da61 100644 --- a/hypha/apply/activity/views.py +++ b/hypha/apply/activity/views.py @@ -1,6 +1,8 @@ +from django.conf import settings from django.utils import timezone from django.utils.decorators import method_decorator from django.views.generic import CreateView, ListView +from django_ratelimit.decorators import ratelimit from hypha.apply.users.decorators import staff_required from hypha.apply.utils.views import DelegatedViewMixin @@ -24,6 +26,10 @@ class ActivityContextMixin: return super().get_context_data(**extra, **kwargs) +@method_decorator( + ratelimit(key="user", rate=settings.DEFAULT_RATE_LIMIT, method="POST"), + name="dispatch", +) class CommentFormView(DelegatedViewMixin, CreateView): form_class = CommentForm context_name = "comment_form" diff --git a/hypha/apply/api/v1/views.py b/hypha/apply/api/v1/views.py index e5f7280120d733d6119043ecc8e71af79b6e4749..4c56b86c3e1ba818ba98bcb0e57c4897f7b87bc3 100644 --- a/hypha/apply/api/v1/views.py +++ b/hypha/apply/api/v1/views.py @@ -348,10 +348,7 @@ class SubmissionCommentViewSet( ) -class CommentViewSet( - mixins.ListModelMixin, - viewsets.GenericViewSet, -): +class CommentViewSet(viewsets.GenericViewSet): """ Edit a comment. """ diff --git a/hypha/apply/funds/models/applications.py b/hypha/apply/funds/models/applications.py index b3ac973ab478080218d404783ab991db8743c042..7a0b81c4494ffd9c70acc6ec6ba27759f96873f2 100644 --- a/hypha/apply/funds/models/applications.py +++ b/hypha/apply/funds/models/applications.py @@ -22,9 +22,11 @@ from django.db.models.functions import Coalesce, Left, Length from django.http import Http404 from django.shortcuts import redirect, render from django.template.response import TemplateResponse +from django.utils.decorators import method_decorator from django.utils.functional import cached_property from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ +from django_ratelimit.decorators import ratelimit from modelcluster.fields import ParentalManyToManyField from wagtail.admin.panels import ( FieldPanel, @@ -67,6 +69,9 @@ class ApplicationBaseManager(PageQuerySet): return qs.order_by("end_date") +@method_decorator( + ratelimit(key="ip", rate=settings.DEFAULT_RATE_LIMIT, method="POST"), name="serve" +) class ApplicationBase(EmailForm, WorkflowStreamForm): # type: ignore is_createable = False @@ -489,6 +494,9 @@ class RoundBase(WorkflowStreamForm, SubmittableStreamForm): # type: ignore raise Http404() +@method_decorator( + ratelimit(key="ip", rate=settings.DEFAULT_RATE_LIMIT, method="POST"), name="serve" +) class LabBase(EmailForm, WorkflowStreamForm, SubmittableStreamForm): # type: ignore is_createable = False submission_class = ApplicationSubmission diff --git a/hypha/apply/users/forms.py b/hypha/apply/users/forms.py index 3be84f4dc09514d20c3f57281ef2cf8ff09c0663..13dcd722e7c1e7baffd5d66aa7058f41de46314f 100644 --- a/hypha/apply/users/forms.py +++ b/hypha/apply/users/forms.py @@ -90,6 +90,14 @@ class ProfileForm(forms.ModelForm): return slack + def clean_email(self): + email = self.cleaned_data["email"] + if User.objects.filter(email=email).exists(): + email = ( + self.instance.email + ) # updated email to avoid email existing message, fix information leak. + return email + class BecomeUserForm(forms.Form): user_pk = forms.ModelChoiceField( diff --git a/hypha/apply/users/templates/elevate/elevate.html b/hypha/apply/users/templates/elevate/elevate.html new file mode 100644 index 0000000000000000000000000000000000000000..9a55046959590ced3e9d0930aa3768f83282b2f9 --- /dev/null +++ b/hypha/apply/users/templates/elevate/elevate.html @@ -0,0 +1,39 @@ +{% extends "base-apply.html" %} +{% load i18n wagtailcore_tags %} + +{% block title %}{% trans "Confirm access" %}{% endblock %} +{% block body_class %}bg-white{% endblock %} + +{% block content %} + <div class="max-w-lg px-4 pt-4 mx-auto md:mt-5 md:py-4"> + + <form class="form" method="post" action="./" class="px-4 pt-4"> + {% csrf_token %} + <h2 class="text-2xl">{% trans "Confirm access" %}</h2> + + <p class="px-3 py-2 bg-orange-100 rounded mb-4"> + Signed in as <strong>{{ request.user }} ({{ request.user.email }})</strong> + </p> + + {% if form.non_field_errors %} + <div class="wrapper wrapper--error">{{ form.non_field_errors.as_text }}</div> + {% endif %} + + {% for field in form %} + {% include "forms/includes/field.html" %} + {% endfor %} + + <div class="form__group"> + <button class="button button--primary" type="submit">{% trans "Confirm" %}</button> + </div> + </form> + + <p class="text-xs text-center max-w-sm mt-8 text-gray-500 mx-auto"> + {% blocktrans %} + <strong>Tip:</strong> You are entering sudo mode. After you've performed a sudo-protected + action, you'll only be asked to re-authenticate again after a few hours of inactivity. + {% endblocktrans %} + </p> + + </div> +{% endblock %} diff --git a/hypha/apply/users/templates/users/email_change/update_info_email.html b/hypha/apply/users/templates/users/email_change/update_info_email.html new file mode 100644 index 0000000000000000000000000000000000000000..4bd7c7355094075fc0e584b7b0e437c12310c0ff --- /dev/null +++ b/hypha/apply/users/templates/users/email_change/update_info_email.html @@ -0,0 +1,12 @@ +{% load i18n wagtailadmin_tags %}{% base_url_setting as base_url %}{% firstof name username as user %} +{% blocktrans %}Dear {{ user }},{% endblocktrans %} + +{% blocktrans %}There has been an attempt to change email of your account on the {{ org_long_name }} web site. If this action wasn't made by you, please contact support at {{ org_email }} {% endblocktrans %} + + +{% blocktrans %}Kind Regards, + The {{ org_short_name }} Team{% endblocktrans %} + +-- +{{ org_long_name }} +{% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %} diff --git a/hypha/apply/users/tests/test_forms.py b/hypha/apply/users/tests/test_forms.py index 9dc5009c885d1389120f179453dd938110aca904..dc7fd7d6f958e6bb141074b3b6c1cc631d4baa9d 100644 --- a/hypha/apply/users/tests/test_forms.py +++ b/hypha/apply/users/tests/test_forms.py @@ -29,7 +29,8 @@ class TestProfileForm(BaseTestProfileForm): def test_email_unique(self): other_user = UserFactory() form = self.submit_form(self.user, email=other_user.email) - self.assertFalse(form.is_valid()) + # form will update the other user's email with same user email, only non exiting email address can be added + self.assertTrue(form.is_valid()) self.user.refresh_from_db() self.assertNotEqual(self.user.email, other_user.email) diff --git a/hypha/apply/users/urls.py b/hypha/apply/users/urls.py index 708d8f315490cb4a4623e32a80d890fd14b90bc4..9d8e26b75e1aa0fec29349feebd2d22a6751e6c8 100644 --- a/hypha/apply/users/urls.py +++ b/hypha/apply/users/urls.py @@ -2,10 +2,12 @@ from django.conf import settings from django.contrib.auth import views as auth_views from django.urls import include, path, reverse_lazy from django_ratelimit.decorators import ratelimit +from elevate.views import elevate as elevate_view from .views import ( AccountView, ActivationView, + BackupTokensView, EmailChangeConfirmationView, EmailChangeDoneView, EmailChangePasswordView, @@ -15,7 +17,6 @@ from .views import ( RegisterView, RegistrationSuccessView, TWOFAAdminDisableView, - TWOFABackupTokensPasswordView, TWOFADisableView, TWOFARequiredMessageView, TWOFASetupView, @@ -131,7 +132,7 @@ urlpatterns = [ path("two_factor/setup/", TWOFASetupView.as_view(), name="setup"), path( "two_factor/backup_tokens/password/", - TWOFABackupTokensPasswordView.as_view(), + BackupTokensView.as_view(), name="backup_tokens_password", ), path("two_factor/disable/", TWOFADisableView.as_view(), name="disable"), @@ -140,6 +141,12 @@ urlpatterns = [ TWOFAAdminDisableView.as_view(), name="admin_disable", ), + path( + "sessions/trusted-device/", + elevate_view, + {"template_name": "elevate/elevate.html"}, + name="elevate", + ), ] ), ), diff --git a/hypha/apply/users/views.py b/hypha/apply/users/views.py index f6e2146abe64463951885161fffa771388607bbb..d7c3b0d29adaf8fa058383b66faf05060c8fbce9 100644 --- a/hypha/apply/users/views.py +++ b/hypha/apply/users/views.py @@ -21,6 +21,7 @@ from django.core.exceptions import PermissionDenied from django.core.signing import BadSignature, Signer, TimestampSigner, dumps, loads from django.http import HttpResponseRedirect from django.shortcuts import Http404, get_object_or_404, redirect, render, resolve_url +from django.template.loader import render_to_string from django.template.response import TemplateResponse from django.urls import reverse, reverse_lazy from django.utils.decorators import method_decorator @@ -34,6 +35,7 @@ from django.views.generic.base import TemplateView, View from django.views.generic.edit import FormView from django_otp import devices_for_user from django_ratelimit.decorators import ratelimit +from elevate.mixins import ElevateMixin from hijack.views import AcquireUserView from two_factor.forms import AuthenticationTokenForm, BackupTokenForm from two_factor.utils import default_device, get_otpauth_url, totp_digits @@ -164,7 +166,7 @@ class AccountView(UpdateView): name = form.cleaned_data["full_name"] slack = form.cleaned_data.get("slack", "") user = get_object_or_404(User, id=self.request.user.id) - if updated_email and updated_email != user.email: + if updated_email: base_url = reverse("users:email_change_confirm_password") query_dict = {"updated_email": updated_email, "name": name, "slack": slack} @@ -243,11 +245,28 @@ class EmailChangePasswordView(FormView): return redirect("users:account") value = loads(unsigned_value) form.save(**value) - send_confirmation_email( - self.request.user, - signer.sign(dumps(value["updated_email"])), - updated_email=value["updated_email"], - site=Site.find_for_request(self.request), + user = self.request.user + if user.email != value["updated_email"]: + send_confirmation_email( + user, + signer.sign(dumps(value["updated_email"])), + updated_email=value["updated_email"], + site=Site.find_for_request(self.request), + ) + # alert email + user.email_user( + subject="Alert! An attempt to update your email.", + message=render_to_string( + "users/email_change/update_info_email.html", + { + "name": user.get_full_name(), + "username": user.get_username(), + "org_email": settings.ORG_EMAIL, + "org_short_name": settings.ORG_SHORT_NAME, + "org_long_name": settings.ORG_LONG_NAME, + }, + ), + from_email=settings.DEFAULT_FROM_EMAIL, ) return super(EmailChangePasswordView, self).form_valid(form) @@ -475,26 +494,6 @@ class TWOFASetupView(TwoFactorSetupView): return context -@method_decorator(login_required, name="dispatch") -@method_decorator( - ratelimit(key="user", rate=settings.DEFAULT_RATE_LIMIT, method="POST"), - name="dispatch", -) -class TWOFABackupTokensPasswordView(TwoFactorBackupTokensView): - """ - Require password to see backup codes - """ - - form_class = TWOFAPasswordForm - success_url = reverse_lazy("two_factor:backup_tokens") - template_name = "two_factor/core/backup_tokens_password.html" - - def get_form_kwargs(self): - kwargs = super().get_form_kwargs() - kwargs["user"] = self.request.user - return kwargs - - @method_decorator( ratelimit(key="user", rate=settings.DEFAULT_RATE_LIMIT, method="POST"), name="dispatch", @@ -558,6 +557,10 @@ class TWOFARequiredMessageView(TemplateView): template_name = "two_factor/core/two_factor_required.html" +class BackupTokensView(ElevateMixin, TwoFactorBackupTokensView): + pass + + class PasswordResetConfirmView(DjPasswordResetConfirmView): redirect_field_name = "next" template_name = "users/password_reset/confirm.html" diff --git a/hypha/settings/base.py b/hypha/settings/base.py index 01c7e242b409b28f2ca9c4760262b1fba286868f..e2c0241470a9c95b8ba478f34f2c859c5e4a6c4b 100644 --- a/hypha/settings/base.py +++ b/hypha/settings/base.py @@ -493,6 +493,7 @@ SECURE_CONTENT_TYPE_NOSNIFF = env.bool("SECURE_CONTENT_TYPE_NOSNIFF", True) if env.bool("COOKIE_SECURE", False): SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True + ELEVATE_COOKIE_SECURE = True # Referrer-policy header settings # https://django-referrer-policy.readthedocs.io/en/1.0/ @@ -501,9 +502,17 @@ REFERRER_POLICY = env.str( "SECURE_REFERRER_POLICY", "no-referrer-when-downgrade" ).strip() +# Django Elevate settings +# https://django-elevate.readthedocs.io/en/latest/config/index.html -# Rest Framework settings +# How long should Elevate mode be active for? +ELEVATE_COOKIE_AGE = env.int("ELEVATE_COOKIE_AGE", 3600) # 1 hours + +# An extra salt to be added into the cookie signature. +ELEVATE_COOKIE_SALT = env.str("ELEVATE_COOKIE_SALT", SECRET_KEY) + +# Rest Framework settings REST_FRAMEWORK = { "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", "PAGE_SIZE": 10, diff --git a/hypha/settings/django.py b/hypha/settings/django.py index 980e89bb16bbb171f3195bd1ae5a3e0a007e1786..7d9ca32d6268e36ef5d2b9c75d3062d85867f3df 100644 --- a/hypha/settings/django.py +++ b/hypha/settings/django.py @@ -74,6 +74,7 @@ INSTALLED_APPS = [ "wagtail_purge", "django_file_form", "hijack", + "elevate", # https://django-elevate.readthedocs.io/ "pagedown", "django.contrib.admin", "django.contrib.auth", @@ -92,6 +93,7 @@ MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", + "elevate.middleware.ElevateMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", @@ -204,6 +206,10 @@ AUTH_USER_MODEL = "users.User" LOGIN_URL = "users_public:login" LOGIN_REDIRECT_URL = "dashboard:dashboard" +# https://django-elevate.readthedocs.io/en/latest/config/index.html#configuration +ELEVATE_URL = "users:elevate" +ELEVATE_REDIRECT_URL = LOGIN_REDIRECT_URL + CUSTOM_AUTH_BACKEND = "hypha.apply.users.backends.CustomModelBackend" AUTHENTICATION_BACKENDS = ( diff --git a/hypha/settings/test.py b/hypha/settings/test.py index ddeb4708891ec9d6c75d4a835b7dd2fc7da989e5..3b1e3bf01b7c9d10628b21e66de1864f7471c0b9 100644 --- a/hypha/settings/test.py +++ b/hypha/settings/test.py @@ -27,3 +27,6 @@ WAGTAILADMIN_BASE_URL = "https://primary-test-host.org" # Required by django-coverage-plugin to report template coverage TEMPLATES[0]["OPTIONS"]["debug"] = True + +# An extra salt to be added into the cookie signature. +ELEVATE_COOKIE_SALT = SECRET_KEY diff --git a/requirements.txt b/requirements.txt index 77e819a24a3616be3e77bf724136de06409313fa..db7db4469aa74afbeebc854406a7a0d09af6c8e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,6 +13,7 @@ django-anymail==9.0 django-basic-auth-ip-whitelist==0.3.4 django-bleach==3.0.1 django-countries==7.5 +django-elevate==2.0.3 django-extensions==3.2.1 django-file-form==3.4.3 django-filter==2.4.0