Coverage report: 97%

Files Functions Classes

coverage.py v7.11.0, created at 2025-10-22 21:34 +0000

File function statements missing excluded coverage
postrfp/__init__.py (no function) 0 0 0 100%
postrfp/auth/__init__.py (no function) 0 0 0 100%
postrfp/auth/endpoints.py post_login 11 0 0 100%
postrfp/auth/endpoints.py _lock_user_account 3 0 0 100%
postrfp/auth/endpoints.py _handle_failed_login 10 0 0 100%
postrfp/auth/endpoints.py post_password_emailkey 12 0 0 100%
postrfp/auth/endpoints.py post_password_update 16 0 0 100%
postrfp/auth/endpoints.py post_refresh_token 17 0 0 100%
postrfp/auth/endpoints.py post_logout 17 0 2 100%
postrfp/auth/endpoints.py _check_and_clear_lockout 8 0 0 100%
postrfp/auth/endpoints.py _generate_access_token 5 0 0 100%
postrfp/auth/endpoints.py _generate_and_store_refresh_token 6 0 0 100%
postrfp/auth/endpoints.py _update_user_on_login 5 0 0 100%
postrfp/auth/endpoints.py _create_login_response 4 0 0 100%
postrfp/auth/endpoints.py (no function) 38 0 0 100%
postrfp/auth/policy.py AbstractIdentityPolicy.identify 0 0 2 100%
postrfp/auth/policy.py AbstractIdentityPolicy.remember 0 0 2 100%
postrfp/auth/policy.py set_user_object 8 0 0 100%
postrfp/auth/policy.py jwt_exceptions 16 2 0 88%
postrfp/auth/policy.py JwtBearerPolicy.identify 9 0 0 100%
postrfp/auth/policy.py JwtBearerPolicy.remember 0 0 1 100%
postrfp/auth/policy.py JwtBearerPolicy._decode_jwt_token 6 0 0 100%
postrfp/auth/policy.py PassthroughPolicy.identify 0 0 1 100%
postrfp/auth/policy.py PassthroughPolicy.remember 0 0 1 100%
postrfp/auth/policy.py DevHeaderPolicy.__init__ 4 0 0 100%
postrfp/auth/policy.py DevHeaderPolicy.identify 13 0 0 100%
postrfp/auth/policy.py DevHeaderPolicy.remember 0 0 1 100%
postrfp/auth/policy.py FallbackPolicy.__init__ 3 0 0 100%
postrfp/auth/policy.py FallbackPolicy.identify 6 0 0 100%
postrfp/auth/policy.py FallbackPolicy.remember 0 0 1 100%
postrfp/auth/policy.py (no function) 29 0 16 100%
postrfp/authorisation/__init__.py (no function) 0 0 0 100%
postrfp/authorisation/actions.py (no function) 7 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.__init__ 2 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.p_action 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.has_errors 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.add 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.auth_failure 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.invalid_issue_status 2 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.invalid_project_status 2 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.__iter__ 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.__len__ 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.as_dict 1 0 0 100%
postrfp/authorisation/errors.py AuthorisationFailures.__repr__ 0 0 5 100%
postrfp/authorisation/errors.py (no function) 19 0 1 100%
postrfp/authorisation/perms.py _is_perm 5 0 0 100%
postrfp/authorisation/perms.py title_cased 1 0 0 100%
postrfp/authorisation/perms.py (no function) 59 0 0 100%
postrfp/authorisation/roles.py CheckingSet.add 3 0 0 100%
postrfp/authorisation/roles.py (no function) 7 0 0 100%
postrfp/authorisation/vendor_actions.py (no function) 8 0 2 100%
postrfp/buyer/__init__.py (no function) 0 0 0 100%
postrfp/buyer/api/__init__.py (no function) 0 0 0 100%
postrfp/buyer/api/authorise.py check 3 0 0 100%
postrfp/buyer/api/authorise.py apply_rules 13 0 0 100%
postrfp/buyer/api/authorise.py validate_action 2 0 0 100%
postrfp/buyer/api/authorise.py enforce_restricted_user_guard 2 0 0 100%
postrfp/buyer/api/authorise.py ensure_user_permission 2 0 0 100%
postrfp/buyer/api/authorise.py enforce_project_rules 8 0 0 100%
postrfp/buyer/api/authorise.py enforce_questionnaire_rules 8 0 0 100%
postrfp/buyer/api/authorise.py enforce_issue_rules 7 0 0 100%
postrfp/buyer/api/authorise.py enforce_admin_rules 10 0 0 100%
postrfp/buyer/api/authorise.py require_project 3 0 0 100%
postrfp/buyer/api/authorise.py require_section_id 3 0 0 100%
postrfp/buyer/api/authorise.py verify_project_membership 7 0 0 100%
postrfp/buyer/api/authorise.py verify_restricted_project_access 2 0 0 100%
postrfp/buyer/api/authorise.py verify_project_status_allows_action 2 0 0 100%
postrfp/buyer/api/authorise.py resolve_admin_target 8 0 0 100%
postrfp/buyer/api/authorise.py verify_can_view_answers 2 0 0 100%
postrfp/buyer/api/authorise.py (no function) 36 0 0 100%
postrfp/buyer/api/buyer_authoriser.py authoriser 14 0 0 100%
postrfp/buyer/api/buyer_authoriser.py (no function) 5 0 3 100%
postrfp/buyer/api/domain_permissions.py save_project_permissions 34 0 0 100%
postrfp/buyer/api/domain_permissions.py (no function) 6 0 0 100%
postrfp/buyer/api/endpoints/__init__.py (no function) 2 0 0 100%
postrfp/buyer/api/endpoints/answers.py get_question_answers 4 0 0 100%
postrfp/buyer/api/endpoints/answers.py get_project_issue_question 5 0 0 100%
postrfp/buyer/api/endpoints/answers.py get_project_section_issue_answers 6 0 0 100%
postrfp/buyer/api/endpoints/answers.py get_question_issue_answers 8 0 0 100%
postrfp/buyer/api/endpoints/answers.py get_element_answers 2 0 0 100%
postrfp/buyer/api/endpoints/answers.py get_project_answers 11 0 0 100%
postrfp/buyer/api/endpoints/answers.py (no function) 24 0 0 100%
postrfp/buyer/api/endpoints/attachments.py get_project_attachments 3 0 0 100%
postrfp/buyer/api/endpoints/attachments.py get_project_issueattachments 3 0 0 100%
postrfp/buyer/api/endpoints/attachments.py get_project_answerattachments 3 0 0 100%
postrfp/buyer/api/endpoints/attachments.py get_project_attachment 4 0 0 100%
postrfp/buyer/api/endpoints/attachments.py post_project_attachment 8 0 0 100%
postrfp/buyer/api/endpoints/attachments.py delete_project_attachment 8 0 0 100%
postrfp/buyer/api/endpoints/attachments.py get_project_issue_attachment 5 0 0 100%
postrfp/buyer/api/endpoints/attachments.py get_question_element_attachment 6 1 0 83%
postrfp/buyer/api/endpoints/attachments.py get_answer_attachment 6 0 0 100%
postrfp/buyer/api/endpoints/attachments.py (no function) 28 0 0 100%
postrfp/buyer/api/endpoints/audit.py get_project_events 5 0 0 100%
postrfp/buyer/api/endpoints/audit.py get_events 4 0 0 100%
postrfp/buyer/api/endpoints/audit.py get_event 24 1 0 96%
postrfp/buyer/api/endpoints/audit.py get_event_types 1 0 0 100%
postrfp/buyer/api/endpoints/audit.py get_question_events 5 0 0 100%
postrfp/buyer/api/endpoints/audit.py (no function) 21 0 0 100%
postrfp/buyer/api/endpoints/auth.py get_role 4 0 0 100%
postrfp/buyer/api/endpoints/auth.py get_roles 4 4 0 0%
postrfp/buyer/api/endpoints/auth.py get_permissions 11 0 0 100%
postrfp/buyer/api/endpoints/auth.py get_users 5 0 0 100%
postrfp/buyer/api/endpoints/auth.py get_user 6 1 0 83%
postrfp/buyer/api/endpoints/auth.py put_user 15 0 0 100%
postrfp/buyer/api/endpoints/auth.py post_user 25 2 0 92%
postrfp/buyer/api/endpoints/auth.py delete_user 9 0 0 100%
postrfp/buyer/api/endpoints/auth.py get_organisations 9 0 0 100%
postrfp/buyer/api/endpoints/auth.py get_organisation 5 0 0 100%
postrfp/buyer/api/endpoints/auth.py post_client 10 0 0 100%
postrfp/buyer/api/endpoints/auth.py put_organisation 9 0 0 100%
postrfp/buyer/api/endpoints/auth.py (no function) 36 0 0 100%
postrfp/buyer/api/endpoints/categories.py get_category 1 0 0 100%
postrfp/buyer/api/endpoints/categories.py delete_category 3 0 0 100%
postrfp/buyer/api/endpoints/categories.py post_category 9 0 0 100%
postrfp/buyer/api/endpoints/categories.py put_category 4 0 0 100%
postrfp/buyer/api/endpoints/categories.py get_categories 2 0 0 100%
postrfp/buyer/api/endpoints/categories.py (no function) 19 0 0 100%
postrfp/buyer/api/endpoints/issues.py get_vendor 5 0 0 100%
postrfp/buyer/api/endpoints/issues.py get_project_issue 4 0 0 100%
postrfp/buyer/api/endpoints/issues.py get_project_issues 4 0 0 100%
postrfp/buyer/api/endpoints/issues.py put_project_issue 9 0 0 100%
postrfp/buyer/api/endpoints/issues.py get_issue 3 0 0 100%
postrfp/buyer/api/endpoints/issues.py post_project_issue 16 0 0 100%
postrfp/buyer/api/endpoints/issues.py delete_project_issue 7 0 0 100%
postrfp/buyer/api/endpoints/issues.py post_issue_status 3 0 0 100%
postrfp/buyer/api/endpoints/issues.py get_issues 16 0 0 100%
postrfp/buyer/api/endpoints/issues.py (no function) 30 0 0 100%
postrfp/buyer/api/endpoints/network.py get_network 2 0 0 100%
postrfp/buyer/api/endpoints/network.py delete_network 3 0 0 100%
postrfp/buyer/api/endpoints/network.py get_reltypes 1 0 0 100%
postrfp/buyer/api/endpoints/network.py post_reltype 5 0 0 100%
postrfp/buyer/api/endpoints/network.py put_reltype 5 0 0 100%
postrfp/buyer/api/endpoints/network.py delete_reltype 4 0 0 100%
postrfp/buyer/api/endpoints/network.py post_relationship 7 0 0 100%
postrfp/buyer/api/endpoints/network.py delete_relationship 7 0 0 100%
postrfp/buyer/api/endpoints/network.py post_network_project 33 0 0 100%
postrfp/buyer/api/endpoints/network.py (no function) 34 0 0 100%
postrfp/buyer/api/endpoints/notes.py get_project_notes 3 0 0 100%
postrfp/buyer/api/endpoints/notes.py issue_if_target_set 7 0 0 100%
postrfp/buyer/api/endpoints/notes.py post_project_note 16 0 0 100%
postrfp/buyer/api/endpoints/notes.py put_project_note 9 0 0 100%
postrfp/buyer/api/endpoints/notes.py delete_project_note 8 0 0 100%
postrfp/buyer/api/endpoints/notes.py (no function) 18 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_projects 20 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project 5 0 0 100%
postrfp/buyer/api/endpoints/projects.py post_project 38 0 0 100%
postrfp/buyer/api/endpoints/projects.py put_project 17 0 0 100%
postrfp/buyer/api/endpoints/projects.py delete_project 9 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project_participants 3 0 0 100%
postrfp/buyer/api/endpoints/projects.py put_project_participants 15 0 0 100%
postrfp/buyer/api/endpoints/projects.py put_project_permissions 4 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project_users 5 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project_user_permissions 15 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project_permissions 5 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project_watchlist 3 0 0 100%
postrfp/buyer/api/endpoints/projects.py post_project_watch 11 0 0 100%
postrfp/buyer/api/endpoints/projects.py delete_project_watch 6 0 0 100%
postrfp/buyer/api/endpoints/projects.py put_project_category 6 0 0 100%
postrfp/buyer/api/endpoints/projects.py delete_project_category 6 0 0 100%
postrfp/buyer/api/endpoints/projects.py put_project_publish 18 0 0 100%
postrfp/buyer/api/endpoints/projects.py put_project_close 8 0 0 100%
postrfp/buyer/api/endpoints/projects.py get_project_approvals 3 0 0 100%
postrfp/buyer/api/endpoints/projects.py post_project_approval 10 0 0 100%
postrfp/buyer/api/endpoints/projects.py delete_project_approval 12 0 0 100%
postrfp/buyer/api/endpoints/projects.py (no function) 58 0 0 100%
postrfp/buyer/api/endpoints/questions.py get_project_section_question 4 0 0 100%
postrfp/buyer/api/endpoints/questions.py put_project_section_question 25 0 0 100%
postrfp/buyer/api/endpoints/questions.py post_project_section_question 12 0 0 100%
postrfp/buyer/api/endpoints/questions.py delete_project_section_question 7 0 0 100%
postrfp/buyer/api/endpoints/questions.py post_project_section_question_copy 21 0 0 100%
postrfp/buyer/api/endpoints/questions.py get_question_instances 6 0 0 100%
postrfp/buyer/api/endpoints/questions.py put_project_question_element 14 0 0 100%
postrfp/buyer/api/endpoints/questions.py post_project_section_question_unlink 15 0 0 100%
postrfp/buyer/api/endpoints/questions.py (no function) 26 0 0 100%
postrfp/buyer/api/endpoints/reports/__init__.py (no function) 3 0 0 100%
postrfp/buyer/api/endpoints/reports/msword.py is_comments_label 5 0 0 100%
postrfp/buyer/api/endpoints/reports/msword.py render_paragraph_question 15 0 0 100%
postrfp/buyer/api/endpoints/reports/msword.py render_table_question 22 0 2 100%
postrfp/buyer/api/endpoints/reports/msword.py _el_answer_lookup 3 0 0 100%
postrfp/buyer/api/endpoints/reports/msword.py get_project_report_msword 29 0 0 100%
postrfp/buyer/api/endpoints/reports/msword.py (no function) 23 0 0 100%
postrfp/buyer/api/endpoints/reports/qtextxlsx.py _generate_xlsx 16 0 0 100%
postrfp/buyer/api/endpoints/reports/qtextxlsx.py get_project_report_qtext 5 0 0 100%
postrfp/buyer/api/endpoints/reports/qtextxlsx.py (no function) 16 0 0 100%
postrfp/buyer/api/endpoints/reports/responses.py attachment 4 0 0 100%
postrfp/buyer/api/endpoints/reports/responses.py (no function) 2 0 0 100%
postrfp/buyer/api/endpoints/reports/yesnoqual.py get_project_report_yesno 62 1 2 98%
postrfp/buyer/api/endpoints/reports/yesnoqual.py get_scoretotals 14 0 0 100%
postrfp/buyer/api/endpoints/reports/yesnoqual.py (no function) 23 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_project_scores 9 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_question_scores 6 0 0 100%
postrfp/buyer/api/endpoints/scoring.py post_question_score 13 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_project_section_issue_scores 7 0 0 100%
postrfp/buyer/api/endpoints/scoring.py post_question_score_comment 21 0 0 100%
postrfp/buyer/api/endpoints/scoring.py check_autoscore_permissions 7 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_project_calcautoscores 6 1 0 83%
postrfp/buyer/api/endpoints/scoring.py post_project_calcautoscores 22 1 0 95%
postrfp/buyer/api/endpoints/scoring.py get_section_scoresummaries 6 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_section_scores 24 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_project_scoresets 8 0 0 100%
postrfp/buyer/api/endpoints/scoring.py get_question_issue_comments 10 0 0 100%
postrfp/buyer/api/endpoints/scoring.py post_section_scoreset_scores 39 3 0 92%
postrfp/buyer/api/endpoints/scoring.py (no function) 42 0 0 100%
postrfp/buyer/api/endpoints/search.py get_search 10 0 0 100%
postrfp/buyer/api/endpoints/search.py post_project_questions_replace 17 0 0 100%
postrfp/buyer/api/endpoints/search.py (no function) 15 0 0 100%
postrfp/buyer/api/endpoints/sections.py put_project_section 13 0 0 100%
postrfp/buyer/api/endpoints/sections.py post_project_section 12 1 0 92%
postrfp/buyer/api/endpoints/sections.py delete_project_section 4 0 0 100%
postrfp/buyer/api/endpoints/sections.py put_project_movesection 19 1 0 95%
postrfp/buyer/api/endpoints/sections.py put_project_section_children 15 1 0 93%
postrfp/buyer/api/endpoints/sections.py get_project_section 9 0 0 100%
postrfp/buyer/api/endpoints/sections.py get_project_treenodes 6 0 0 100%
postrfp/buyer/api/endpoints/sections.py get_project_nodes 9 0 0 100%
postrfp/buyer/api/endpoints/sections.py post_project_section_excel 13 0 0 100%
postrfp/buyer/api/endpoints/sections.py get_project_qstats 3 0 0 100%
postrfp/buyer/api/endpoints/sections.py post_project_section_import 34 2 0 94%
postrfp/buyer/api/endpoints/sections.py (no function) 34 0 0 100%
postrfp/buyer/api/endpoints/tags.py get_tags 2 0 0 100%
postrfp/buyer/api/endpoints/tags.py get_tags_section 8 0 0 100%
postrfp/buyer/api/endpoints/tags.py post_tag 7 0 0 100%
postrfp/buyer/api/endpoints/tags.py put_tag 6 0 0 100%
postrfp/buyer/api/endpoints/tags.py delete_tag 3 0 0 100%
postrfp/buyer/api/endpoints/tags.py _tag_assign 11 0 0 100%
postrfp/buyer/api/endpoints/tags.py _add_questions_from_sections 6 0 0 100%
postrfp/buyer/api/endpoints/tags.py post_tag_assign 2 0 0 100%
postrfp/buyer/api/endpoints/tags.py post_tag_assign.assign 4 0 0 100%
postrfp/buyer/api/endpoints/tags.py delete_tag_assign 2 0 0 100%
postrfp/buyer/api/endpoints/tags.py delete_tag_assign.un_assign 4 0 0 100%
postrfp/buyer/api/endpoints/tags.py (no function) 28 0 0 100%
postrfp/buyer/api/endpoints/webhooks.py post_webhook 7 0 0 100%
postrfp/buyer/api/endpoints/webhooks.py put_webhook 13 0 0 100%
postrfp/buyer/api/endpoints/webhooks.py get_webhooks 5 0 0 100%
postrfp/buyer/api/endpoints/webhooks.py delete_webhook 11 0 0 100%
postrfp/buyer/api/endpoints/webhooks.py get_webhook_events 2 2 0 0%
postrfp/buyer/api/endpoints/webhooks.py (no function) 18 0 0 100%
postrfp/buyer/api/endpoints/weighting.py get_project_weightings 9 0 0 100%
postrfp/buyer/api/endpoints/weighting.py post_project_weightings 13 2 0 85%
postrfp/buyer/api/endpoints/weighting.py get_project_weightsets 3 0 0 100%
postrfp/buyer/api/endpoints/weighting.py post_project_weightset 14 0 0 100%
postrfp/buyer/api/endpoints/weighting.py put_project_weightset 4 0 0 100%
postrfp/buyer/api/endpoints/weighting.py delete_project_weightset 4 0 0 100%
postrfp/buyer/api/endpoints/weighting.py get_project_section_weightings 6 0 0 100%
postrfp/buyer/api/endpoints/weighting.py (no function) 26 0 0 100%
postrfp/buyer/api/fix/__init__.py (no function) 0 0 0 100%
postrfp/buyer/api/fix/orphan_questions.py delete_orphan_questions 7 0 0 100%
postrfp/buyer/api/fix/orphan_questions.py (no function) 3 0 0 100%
postrfp/buyer/api/fix/qtables.py fix_spans 39 0 0 100%
postrfp/buyer/api/fix/qtables.py (no function) 3 0 0 100%
postrfp/buyer/api/io/__init__.py (no function) 0 0 0 100%
postrfp/buyer/api/io/excel_import.py XLCell.__init__ 1 0 0 100%
postrfp/buyer/api/io/excel_import.py XLCell.__get__ 1 0 0 100%
postrfp/buyer/api/io/excel_import.py QRow.__init__ 1 0 0 100%
postrfp/buyer/api/io/excel_import.py QRow.is_root_question 1 0 0 100%
postrfp/buyer/api/io/excel_import.py QRow.choices_list 7 1 0 86%
postrfp/buyer/api/io/excel_import.py row_to_question 14 0 0 100%
postrfp/buyer/api/io/excel_import.py ExcelQImporter.__init__ 9 1 0 89%
postrfp/buyer/api/io/excel_import.py ExcelQImporter.read_questions_excel 4 0 0 100%
postrfp/buyer/api/io/excel_import.py ExcelQImporter.process_rows 5 0 0 100%
postrfp/buyer/api/io/excel_import.py ExcelQImporter.process_one_row 19 0 0 100%
postrfp/buyer/api/io/excel_import.py (no function) 23 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.__init__ 11 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.__enter__ 1 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.__exit__ 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.current_section 1 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.root_section 1 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.finalise 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.start_section 10 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.end_section 4 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.section_context 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.start_question 9 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.end_question 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.question_context 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.flush_elements 4 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_element 10 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder._element 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_text_input 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_checkbox 1 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_label 1 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_attachment 1 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_question_attachment 4 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_choice_set 2 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.start_choice_set 4 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.add_choice 7 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.end_choice_set 10 0 0 100%
postrfp/buyer/api/io/qbuilder.py QuestionnaireBuilder.choice_set_context 3 0 0 100%
postrfp/buyer/api/io/qbuilder.py parse_bool_attr 6 0 0 100%
postrfp/buyer/api/io/qbuilder.py (no function) 48 0 3 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.__init__ 3 0 0 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.visit 2 0 0 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor._visit_section 19 0 0 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.finish_section 0 0 1 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.process_section 0 0 1 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.process_question 0 0 1 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.process_question_details 0 0 1 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.should_load_question_details 1 0 0 100%
postrfp/buyer/api/io/streaming.py StreamingVisitor.cleanup 1 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.__init__ 9 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.visit 9 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.process_section 9 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.finish_section 1 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.process_question 2 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.process_question_details 9 0 0 100%
postrfp/buyer/api/io/streaming.py XmlExportVisitor._write_element 7 1 0 86%
postrfp/buyer/api/io/streaming.py XmlExportVisitor.cleanup 3 0 0 100%
postrfp/buyer/api/io/streaming.py (no function) 22 0 4 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.__init__ 6 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.dispatch 5 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.parse 6 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_section 3 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.end_section 3 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_description 1 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_question 3 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.end_question 2 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_td 1 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.end_td 1 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_text 2 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_checkbox 2 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_label 2 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_attachment 2 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_questionattachment 4 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_choiceset 3 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.end_choiceset 1 0 0 100%
postrfp/buyer/api/io/xml/importer.py XmlQuestionnaireImporter.start_choice 3 0 0 100%
postrfp/buyer/api/io/xml/importer.py (no function) 25 0 0 100%
postrfp/buyer/fsm_endpoints.py get_workflows 10 0 0 100%
postrfp/buyer/fsm_endpoints.py get_workflow 5 0 0 100%
postrfp/buyer/fsm_endpoints.py _create_update_statuses 30 0 0 100%
postrfp/buyer/fsm_endpoints.py _create_update_transitions 14 0 0 100%
postrfp/buyer/fsm_endpoints.py post_workflow 10 0 0 100%
postrfp/buyer/fsm_endpoints.py put_workflow 20 0 0 100%
postrfp/buyer/fsm_endpoints.py delete_workflow 6 0 0 100%
postrfp/buyer/fsm_endpoints.py get_workflow_statuses 6 0 0 100%
postrfp/buyer/fsm_endpoints.py get_workflow_transitions 6 0 0 100%
postrfp/buyer/fsm_endpoints.py get_workflow_entity_transitions 16 0 0 100%
postrfp/buyer/fsm_endpoints.py get_entities 12 0 0 100%
postrfp/buyer/fsm_endpoints.py post_transition 8 0 0 100%
postrfp/buyer/fsm_endpoints.py (no function) 35 0 2 100%
postrfp/conf/__init__.py (no function) 2 0 0 100%
postrfp/conf/logHandlers.py PostmarkHandler.__init__ 5 0 0 100%
postrfp/conf/logHandlers.py PostmarkHandler.emit 8 0 0 100%
postrfp/conf/logHandlers.py (no function) 9 0 0 100%
postrfp/conf/logconf.py (no function) 5 0 0 100%
postrfp/conf/settings.py AppSettings.sqlalchemy_dsn 1 0 0 100%
postrfp/conf/settings.py AppSettings._build_dsn 1 0 0 100%
postrfp/conf/settings.py AppSettings.conn_string 2 0 0 100%
postrfp/conf/settings.py AppSettings.cache_dir 1 0 0 100%
postrfp/conf/settings.py AppSettings.attachments_dir 1 0 0 100%
postrfp/conf/settings.py AppSettings.validate_dirs 9 0 0 100%
postrfp/conf/settings.py AppSettings.random_cache_file_path 2 0 0 100%
postrfp/conf/settings.py AppSettings.test_usable 10 0 0 100%
postrfp/conf/settings.py AppSettings.__iter__ 2 0 0 100%
postrfp/conf/settings.py (no function) 71 0 0 100%
postrfp/fsm/__init__.py (no function) 3 0 0 100%
postrfp/fsm/schemas.py TransitionSchema.source 1 0 0 100%
postrfp/fsm/schemas.py TransitionSchema.target 1 0 0 100%
postrfp/fsm/schemas.py WorkflowSchema.validate_workflow_integrity 30 1 0 97%
postrfp/fsm/schemas.py (no function) 65 0 0 100%
postrfp/fsm/service.py get_entity_type_name 1 0 0 100%
postrfp/fsm/service.py get_definitions_for_entity 5 0 0 100%
postrfp/fsm/service.py get_all_states 2 0 0 100%
postrfp/fsm/service.py get_all_transitions 2 0 0 100%
postrfp/fsm/service.py get_available_transitions 4 0 0 100%
postrfp/fsm/service.py get_permitted_actions 5 0 0 100%
postrfp/fsm/service.py get_next_state_for_transition 7 0 0 100%
postrfp/fsm/service.py create_fsm_from_status_actions 28 2 0 93%
postrfp/fsm/service.py get_all_states_for_entity 5 0 0 100%
postrfp/fsm/service.py get_all_transitions_for_entity 5 0 0 100%
postrfp/fsm/service.py migrate_from_status_actions 1 0 0 100%
postrfp/fsm/service.py evaluate_transition 9 2 0 78%
postrfp/fsm/service.py execute_transition 12 2 0 83%
postrfp/fsm/service.py (no function) 22 0 0 100%
postrfp/jobs/__init__.py (no function) 0 0 0 100%
postrfp/jobs/cli.py main 0 0 1 100%
postrfp/jobs/cli.py process_event 2 2 4 0%
postrfp/jobs/cli.py (no function) 8 8 4 0%
postrfp/jobs/events/__init__.py (no function) 2 0 0 100%
postrfp/jobs/events/action.py debug_model 3 0 0 100%
postrfp/jobs/events/action.py webhook_evt_types 1 0 0 100%
postrfp/jobs/events/action.py handles.__init__ 1 0 0 100%
postrfp/jobs/events/action.py handles.__call__ 5 1 0 80%
postrfp/jobs/events/action.py handle_event 7 0 0 100%
postrfp/jobs/events/action.py handler_exists_for 1 0 0 100%
postrfp/jobs/events/action.py run_event_handlers 2 0 0 100%
postrfp/jobs/events/action.py logging_context 2 0 0 100%
postrfp/jobs/events/action.py logging_context._cm 6 0 0 100%
postrfp/jobs/events/action.py EventProcessor.__init__ 5 0 0 100%
postrfp/jobs/events/action.py EventProcessor.process 14 1 0 93%
postrfp/jobs/events/action.py EventProcessor.generate_evt_model 1 0 0 100%
postrfp/jobs/events/action.py EventProcessor.moderate_event_acl 0 0 1 100%
postrfp/jobs/events/action.py EventProcessor._iter_watchers 5 0 0 100%
postrfp/jobs/events/action.py EventProcessor.recipients 6 0 0 100%
postrfp/jobs/events/action.py EventProcessor.assign_notifications 7 0 0 100%
postrfp/jobs/events/action.py EventProcessor.get_model 5 0 0 100%
postrfp/jobs/events/action.py EventProcessor.augment_model 0 0 1 100%
postrfp/jobs/events/action.py EventProcessor.send_emails 15 3 0 80%
postrfp/jobs/events/action.py EventProcessor.ping_webhooks 7 2 0 71%
postrfp/jobs/events/action.py EventProcessor.extra 0 0 1 100%
postrfp/jobs/events/action.py VendorStatusAction.extra 2 0 0 100%
postrfp/jobs/events/action.py VendorStatusAction.assign_accepting_admin_to_watchlist 2 0 0 100%
postrfp/jobs/events/action.py IssueReleased.assign_notifications 17 0 0 100%
postrfp/jobs/events/action.py SectionAccess.recipients 10 1 0 90%
postrfp/jobs/events/action.py ProjectNoteHandler.moderate_event_acl 15 0 0 100%
postrfp/jobs/events/action.py ProjectNoteHandler.recipients 4 0 0 100%
postrfp/jobs/events/action.py ProjectNoteHandler.augment_model 4 0 0 100%
postrfp/jobs/events/action.py ScoreCommentHandler.recipients 14 0 1 100%
postrfp/jobs/events/action.py ScoreCommentHandler.augment_model 8 0 0 100%
postrfp/jobs/events/action.py (no function) 82 0 10 100%
postrfp/jobs/events/webhooks.py fetch_and_ping_webhook 9 0 0 100%
postrfp/jobs/events/webhooks.py ping_webhook 25 1 0 96%
postrfp/jobs/events/webhooks.py (no function) 10 0 0 100%
postrfp/jobs/executor.py Executor.enqueue_event 0 0 1 100%
postrfp/jobs/executor.py InlineExecutor.enqueue_event 0 0 4 100%
postrfp/jobs/executor.py DaguExecutor.__init__ 2 0 0 100%
postrfp/jobs/executor.py DaguExecutor.enqueue_event 14 0 0 100%
postrfp/jobs/executor.py init_jobs_executor 8 2 0 75%
postrfp/jobs/executor.py get_executor 3 1 0 67%
postrfp/jobs/executor.py reset_executor_for_tests 4 0 0 100%
postrfp/jobs/executor.py set_status_done_if_no_handler 2 0 0 100%
postrfp/jobs/executor.py enqueue_event_job 3 0 0 100%
postrfp/jobs/executor.py (no function) 26 0 4 100%
postrfp/jobs/offload.py process_event_task 24 4 0 83%
postrfp/jobs/offload.py (no function) 10 0 0 100%
postrfp/mail/__init__.py (no function) 0 0 0 100%
postrfp/mail/factory.py get_mailer 10 5 0 50%
postrfp/mail/factory.py (no function) 4 0 0 100%
postrfp/mail/postmark.py api_headers 1 0 0 100%
postrfp/mail/postmark.py _handle_response 4 0 0 100%
postrfp/mail/postmark.py send_simple_email 4 0 0 100%
postrfp/mail/postmark.py send_template_email 4 0 0 100%
postrfp/mail/postmark.py send_email 6 6 0 0%
postrfp/mail/postmark.py (no function) 13 0 8 100%
postrfp/mail/protocol.py MailerProtocol.send_email 0 0 1 100%
postrfp/mail/protocol.py (no function) 4 0 2 100%
postrfp/mail/schemas.py build_template_model 5 0 0 100%
postrfp/mail/schemas.py (no function) 68 0 2 100%
postrfp/mail/stub.py clear_mailbox 1 0 0 100%
postrfp/mail/stub.py get_tmpl 4 0 0 100%
postrfp/mail/stub.py render_msg 1 0 0 100%
postrfp/mail/stub.py send_email 14 1 0 93%
postrfp/mail/stub.py (no function) 14 0 0 100%
postrfp/model/__init__.py (no function) 18 0 0 100%
postrfp/model/acl.py Participant.__repr__ 0 0 2 100%
postrfp/model/acl.py Participant.role_permissions 1 0 0 100%
postrfp/model/acl.py Participant.role_name 5 2 0 60%
postrfp/model/acl.py Participant.as_dict 2 2 0 0%
postrfp/model/acl.py ProjectPermission.__repr__ 0 0 4 100%
postrfp/model/acl.py SectionPermission.__repr__ 0 0 1 100%
postrfp/model/acl.py (no function) 41 0 8 100%
postrfp/model/audit/__init__.py (no function) 2 0 0 100%
postrfp/model/audit/event.py PropertyChanges.__init__ 1 0 0 100%
postrfp/model/audit/event.py PropertyChanges.add 3 0 0 100%
postrfp/model/audit/event.py PropertyChanges.as_string 1 0 0 100%
postrfp/model/audit/event.py change_to_json 4 0 0 100%
postrfp/model/audit/event.py AuditEvent.__init__ 3 0 0 100%
postrfp/model/audit/event.py AuditEvent.__repr__ 0 0 1 100%
postrfp/model/audit/event.py AuditEvent.set_text 0 0 1 100%
postrfp/model/audit/event.py AuditEvent.check_object_id_unicode 1 0 0 100%
postrfp/model/audit/event.py AuditEvent.create 12 0 0 100%
postrfp/model/audit/event.py AuditEvent.changes 8 1 0 88%
postrfp/model/audit/event.py AuditEvent.set_changes 1 0 0 100%
postrfp/model/audit/event.py AuditEvent.add_change 4 0 0 100%
postrfp/model/audit/event.py AuditEvent.build_acl 13 0 0 100%
postrfp/model/audit/event.py AuditEvent.add_to_acl 1 0 0 100%
postrfp/model/audit/event.py AuditEvent.set_done 1 0 0 100%
postrfp/model/audit/event.py EventOrgACL.__repr__ 0 0 1 100%
postrfp/model/audit/event.py serialize_property_changes 2 0 0 100%
postrfp/model/audit/event.py (no function) 77 0 9 100%
postrfp/model/audit/evt_types.py (no function) 92 0 0 100%
postrfp/model/audit/visible.py check_all_events_assigned 6 0 0 100%
postrfp/model/audit/visible.py (no function) 5 0 0 100%
postrfp/model/composite.py QuestionMeta.__repr__ 0 0 1 100%
postrfp/model/composite.py qsignature 1 0 0 100%
postrfp/model/composite.py update_meta_row_stmt 14 0 0 100%
postrfp/model/composite.py update_qmeta_table 10 0 0 100%
postrfp/model/composite.py (no function) 20 0 1 100%
postrfp/model/exc.py BusinessRuleViolation.__init__ 1 0 0 100%
postrfp/model/exc.py DuplicateDataProvided.__init__ 1 0 0 100%
postrfp/model/exc.py ValidationFailure.__init__ 5 0 0 100%
postrfp/model/exc.py ValidationFailure.__str__ 4 0 0 100%
postrfp/model/exc.py DuplicateQuestionDefinition.__init__ 1 0 0 100%
postrfp/model/exc.py (no function) 14 0 15 100%
postrfp/model/fsm.py Workflow.status_by_name 1 1 0 0%
postrfp/model/fsm.py Workflow.get_initial_status 4 1 0 75%
postrfp/model/fsm.py Workflow.__repr__ 0 0 1 100%
postrfp/model/fsm.py Workflow.validate 15 3 0 80%
postrfp/model/fsm.py Status.has_action 1 0 0 100%
postrfp/model/fsm.py Status.__repr__ 0 0 1 100%
postrfp/model/fsm.py Transition.has_functions 1 0 0 100%
postrfp/model/fsm.py Transition.__repr__ 0 0 1 100%
postrfp/model/fsm.py StatusAction.validate_action 3 0 0 100%
postrfp/model/fsm.py (no function) 70 0 5 100%
postrfp/model/fsm_context/__init__.py (no function) 0 0 0 100%
postrfp/model/fsm_context/project_context.py get_project_context_data 3 0 0 100%
postrfp/model/fsm_context/project_context.py (no function) 27 0 2 100%
postrfp/model/graph.py RelationshipType.__repr__ 0 0 1 100%
postrfp/model/graph.py Edge.relationship 1 1 0 0%
postrfp/model/graph.py Edge.__repr__ 0 0 1 100%
postrfp/model/graph.py (no function) 25 0 2 100%
postrfp/model/helpers.py validate_section_children 9 0 0 100%
postrfp/model/helpers.py audited_patch 7 0 0 100%
postrfp/model/helpers.py random_string 1 0 0 100%
postrfp/model/helpers.py (no function) 7 0 3 100%
postrfp/model/humans.py ConsultantClientRelationship.__repr__ 0 0 1 100%
postrfp/model/humans.py ConsultantClientRelationship.__init__ 2 0 0 100%
postrfp/model/humans.py Organisation.__init__ 2 0 0 100%
postrfp/model/humans.py Organisation.__repr__ 0 0 1 100%
postrfp/model/humans.py Organisation.is_consultant 1 0 0 100%
postrfp/model/humans.py Organisation.is_buyside 1 0 0 100%
postrfp/model/humans.py Organisation.has_supplier 5 0 0 100%
postrfp/model/humans.py custom_perms 1 0 0 100%
postrfp/model/humans.py RefreshToken.__repr__ 0 0 1 100%
postrfp/model/humans.py User.__init__ 3 0 0 100%
postrfp/model/humans.py User.__repr__ 0 0 1 100%
postrfp/model/humans.py User.custom_permissions 2 0 0 100%
postrfp/model/humans.py User.is_restricted 1 0 0 100%
postrfp/model/humans.py User.is_restricted 1 0 0 100%
postrfp/model/humans.py User.has_permission 5 0 0 100%
postrfp/model/humans.py User.check_permission 2 0 0 100%
postrfp/model/humans.py User.check_is_standard 2 0 0 100%
postrfp/model/humans.py User.builtin_permissions 6 0 0 100%
postrfp/model/humans.py User.all_permissions 1 0 0 100%
postrfp/model/humans.py User.sorted_permissions 1 0 0 100%
postrfp/model/humans.py User.add_role 4 0 0 100%
postrfp/model/humans.py User.is_in_role 1 0 0 100%
postrfp/model/humans.py User.is_administrator 1 0 0 100%
postrfp/model/humans.py User.can_view_section_id 5 0 0 100%
postrfp/model/humans.py UserRole.__repr__ 0 0 1 100%
postrfp/model/humans.py munged_id 5 0 0 100%
postrfp/model/humans.py CustomRole.__repr__ 0 0 1 100%
postrfp/model/humans.py CustomRolePermission.__repr__ 0 0 1 100%
postrfp/model/humans.py CustomRolePermission.known_permission 3 0 0 100%
postrfp/model/humans.py OrganisationCategory.__repr__ 0 0 1 100%
postrfp/model/humans.py FailedLoginAttempt.__repr__ 0 0 1 100%
postrfp/model/humans.py (no function) 163 0 17 100%
postrfp/model/issue.py IssueStatusType.process_bind_param 5 0 0 100%
postrfp/model/issue.py IssueStatusType.process_result_value 1 0 0 100%
postrfp/model/issue.py Issue.get_attachment 1 0 0 100%
postrfp/model/issue.py Issue.can_view_winloss 1 0 0 100%
postrfp/model/issue.py Issue.can_view_sql 1 0 0 100%
postrfp/model/issue.py Issue.__repr__ 0 0 4 100%
postrfp/model/issue.py Issue.deadline_passed 3 0 0 100%
postrfp/model/issue.py Issue.scoreable_filter 2 0 0 100%
postrfp/model/issue.py Issue.log_event 6 0 0 100%
postrfp/model/issue.py Issue.response_state_for_q 1 0 0 100%
postrfp/model/issue.py Issue.add_watcher 4 0 0 100%
postrfp/model/issue.py check_org_or_email 3 0 0 100%
postrfp/model/issue.py Score.__repr__ 0 0 1 100%
postrfp/model/issue.py Score.question_id 1 0 0 100%
postrfp/model/issue.py Score.validate_scoreset 2 0 0 100%
postrfp/model/issue.py Score.check_score_value 3 0 0 100%
postrfp/model/issue.py ScoreComment.user_name 1 0 0 100%
postrfp/model/issue.py IssueAttachment.url 1 0 0 100%
postrfp/model/issue.py IssueAttachment.respondent_name 1 0 0 100%
postrfp/model/issue.py issue_after_insert_handler 7 1 0 86%
postrfp/model/issue.py (no function) 123 0 6 100%
postrfp/model/meta.py human_friendly_bytes 7 0 0 100%
postrfp/model/meta.py Visitor.__init__ 0 0 1 100%
postrfp/model/meta.py Visitor.hello_section 0 0 1 100%
postrfp/model/meta.py Visitor.goodbye_section 0 0 1 100%
postrfp/model/meta.py Visitor.visit_question 0 0 8 100%
postrfp/model/meta.py Visitor.get_result 0 0 1 100%
postrfp/model/meta.py Visitor.finalise 0 0 1 100%
postrfp/model/meta.py Base.as_dict 2 0 0 100%
postrfp/model/meta.py Base.__repr__ 0 0 1 100%
postrfp/model/meta.py Base._instance_session 1 0 0 100%
postrfp/model/meta.py AttachmentMixin._make_safe_filename 3 0 0 100%
postrfp/model/meta.py AttachmentMixin.guess_set_mimetype 3 0 0 100%
postrfp/model/meta.py AttachmentMixin.size 1 0 0 100%
postrfp/model/meta.py AttachmentMixin.__repr__ 0 0 3 100%
postrfp/model/meta.py (no function) 26 0 21 100%
postrfp/model/misc.py Category.__repr__ 0 0 1 100%
postrfp/model/misc.py clean_search_term 15 0 0 100%
postrfp/model/misc.py (no function) 15 0 4 100%
postrfp/model/notes.py ProjectNote.__repr__ 0 0 3 100%
postrfp/model/notes.py ProjectNote.distribution 12 0 0 100%
postrfp/model/notes.py ProjectNote.pretty_distribution 1 0 0 100%
postrfp/model/notes.py (no function) 36 0 3 100%
postrfp/model/notify.py ProjectWatchList.__repr__ 0 0 1 100%
postrfp/model/notify.py IssueWatchList.__repr__ 0 0 1 100%
postrfp/model/notify.py EmailNotification.__repr__ 0 0 4 100%
postrfp/model/notify.py EmailNotification.set_sent 2 0 0 100%
postrfp/model/notify.py EmailNotification.set_delivered 2 0 0 100%
postrfp/model/notify.py EmailNotification.set_bounced 1 0 0 100%
postrfp/model/notify.py EmailNotification.set_failed 1 0 0 100%
postrfp/model/notify.py WebhookSubscription.__repr__ 0 0 1 100%
postrfp/model/notify.py WebhookSubscription.set_delivered 3 3 0 0%
postrfp/model/notify.py WebhookSubscription.set_failed_attempt 5 5 0 0%
postrfp/model/notify.py WebhookSubscription.set_aborted 4 4 0 0%
postrfp/model/notify.py WebhookSubscription.reset_status 3 0 0 100%
postrfp/model/notify.py WebhookSubscription.max_tries_exceeded 1 1 0 0%
postrfp/model/notify.py WebhookSubscription.is_aborted 1 1 0 0%
postrfp/model/notify.py WebhookSubscription.validate_headers 13 8 0 38%
postrfp/model/notify.py (no function) 82 0 9 100%
postrfp/model/project.py LazyParticipants.__init__ 1 0 0 100%
postrfp/model/project.py LazyParticipants.roleq 1 0 0 100%
postrfp/model/project.py LazyParticipants.__contains__ 6 1 0 83%
postrfp/model/project.py LazyParticipants.__iter__ 2 0 0 100%
postrfp/model/project.py LazyParticipants.__len__ 1 0 0 100%
postrfp/model/project.py LazyParticipants.get 1 0 0 100%
postrfp/model/project.py LazyParticipants.add 1 0 0 100%
postrfp/model/project.py LazyParticipants.clear 1 0 0 100%
postrfp/model/project.py LazyRestrictedUsers.__init__ 1 0 0 100%
postrfp/model/project.py LazyRestrictedUsers.project_perms_query 4 0 0 100%
postrfp/model/project.py LazyRestrictedUsers.__contains__ 5 1 0 80%
postrfp/model/project.py LazyRestrictedUsers.__iter__ 2 0 0 100%
postrfp/model/project.py Project.__init__ 2 0 0 100%
postrfp/model/project.py Project.issues 1 0 0 100%
postrfp/model/project.py Project.issue_by_id 1 0 0 100%
postrfp/model/project.py Project.question_by_number 1 0 0 100%
postrfp/model/project.py Project.published_issues 1 0 0 100%
postrfp/model/project.py Project.opportunity_issues 1 0 0 100%
postrfp/model/project.py Project.respondent_watchers 2 0 0 100%
postrfp/model/project.py Project.iter_all_watchers 2 0 0 100%
postrfp/model/project.py Project.deadline_passed 3 0 0 100%
postrfp/model/project.py Project.scoreable_issues 4 0 0 100%
postrfp/model/project.py Project.get_issue 1 0 0 100%
postrfp/model/project.py Project.__repr__ 0 0 1 100%
postrfp/model/project.py Project.participants 1 0 0 100%
postrfp/model/project.py Project.restricted_users 1 0 0 100%
postrfp/model/project.py Project.participant_role_permissions 5 2 0 60%
postrfp/model/project.py Project.list_attachments 2 0 0 100%
postrfp/model/project.py Project.get_attachment 2 0 0 100%
postrfp/model/project.py Project.list_issue_attachments 3 0 0 100%
postrfp/model/project.py Project.check_attachments_visible 2 0 0 100%
postrfp/model/project.py Project.get_participant 1 0 0 100%
postrfp/model/project.py Project.query_visible_questions 3 0 0 100%
postrfp/model/project.py Project.visit_questionnaire 11 0 0 100%
postrfp/model/project.py Project.print_questionnaire 0 0 1 100%
postrfp/model/project.py Project.get_or_create_default_weighting_set_id 9 1 0 89%
postrfp/model/project.py Project.calculate_normalised_weights 1 0 0 100%
postrfp/model/project.py Project.save_total_weights 4 1 0 75%
postrfp/model/project.py Project.delete_total_weights 1 0 0 100%
postrfp/model/project.py Project.total_weights_exist_for 2 2 0 0%
postrfp/model/project.py Project.add_issue 1 0 0 100%
postrfp/model/project.py Project.add_watcher 4 0 0 100%
postrfp/model/project.py Project.log_approval 3 0 0 100%
postrfp/model/project.py Project.contains_section_id 1 0 0 100%
postrfp/model/project.py Project.get_context_data 2 0 0 100%
postrfp/model/project.py Project.get_context_schema 2 0 0 100%
postrfp/model/project.py ProjectField.__repr__ 0 0 4 100%
postrfp/model/project.py ProjectApproval.__repr__ 0 0 1 100%
postrfp/model/project.py PrintVisitor.__init__ 0 0 1 100%
postrfp/model/project.py PrintVisitor.inset 0 0 1 100%
postrfp/model/project.py PrintVisitor.hello_section 0 0 22 100%
postrfp/model/project.py PrintVisitor.goodbye_section 0 0 1 100%
postrfp/model/project.py PrintVisitor.visit_question 0 0 7 100%
postrfp/model/project.py (no function) 152 0 23 100%
postrfp/model/questionnaire/__init__.py (no function) 0 0 0 100%
postrfp/model/questionnaire/answering.py AnswerReport.__repr__ 0 0 1 100%
postrfp/model/questionnaire/answering.py ResponseStatusCol.process_bind_param 1 0 0 100%
postrfp/model/questionnaire/answering.py ResponseStatusCol.process_result_value 1 0 0 100%
postrfp/model/questionnaire/answering.py Answer.as_dict 1 1 0 0%
postrfp/model/questionnaire/answering.py Answer.__repr__ 0 0 1 100%
postrfp/model/questionnaire/answering.py AAttachment.__repr__ 0 0 1 100%
postrfp/model/questionnaire/answering.py (no function) 58 0 7 100%
postrfp/model/questionnaire/b36.py base36encode 13 0 0 100%
postrfp/model/questionnaire/b36.py to_b36 3 0 0 100%
postrfp/model/questionnaire/b36.py from_b36 5 0 0 100%
postrfp/model/questionnaire/b36.py visible_relatives_regex 5 0 0 100%
postrfp/model/questionnaire/b36.py Node.base36 1 1 0 0%
postrfp/model/questionnaire/b36.py materialised_paths 20 0 0 100%
postrfp/model/questionnaire/b36.py parse_path 1 0 0 100%
postrfp/model/questionnaire/b36.py nearest_common_ancestor 13 0 0 100%
postrfp/model/questionnaire/b36.py (no function) 17 0 2 100%
postrfp/model/questionnaire/cte_weights.py calculate_absolute_weights_from_hierarchy 17 0 0 100%
postrfp/model/questionnaire/cte_weights.py calculate_question_weights 23 0 0 100%
postrfp/model/questionnaire/cte_weights.py save_total_weights_cte 16 0 0 100%
postrfp/model/questionnaire/cte_weights.py (no function) 11 0 2 100%
postrfp/model/questionnaire/nodes.py _ModelDumpable.model_dump 0 0 1 100%
postrfp/model/questionnaire/nodes.py NodeMixin.number 1 0 0 100%
postrfp/model/questionnaire/nodes.py NodeMixin.number 1 0 0 100%
postrfp/model/questionnaire/nodes.py Section.__repr__ 0 0 1 100%
postrfp/model/questionnaire/nodes.py Section.as_dict 1 0 0 100%
postrfp/model/questionnaire/nodes.py Section.renumber 4 0 0 100%
postrfp/model/questionnaire/nodes.py Section.accept 7 0 0 100%
postrfp/model/questionnaire/nodes.py Section.is_top_level 1 0 0 100%
postrfp/model/questionnaire/nodes.py Section.absolute_weight 12 3 0 75%
postrfp/model/questionnaire/nodes.py Section.absolute_weight 1 0 0 100%
postrfp/model/questionnaire/nodes.py Section.set_question_positions 2 0 0 100%
postrfp/model/questionnaire/nodes.py Section.set_subsection_positions 2 1 0 50%
postrfp/model/questionnaire/nodes.py Section.assign_project_id 3 0 0 100%
postrfp/model/questionnaire/nodes.py Section.all_descendants_positioned 1 1 0 0%
postrfp/model/questionnaire/nodes.py Section.get_immediate_children_subquery 1 1 0 0%
postrfp/model/questionnaire/nodes.py Section.get_all_descendant_questions 1 1 0 0%
postrfp/model/questionnaire/nodes.py QuestionDefinition.__repr__ 0 0 1 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.__eq__ 5 1 0 80%
postrfp/model/questionnaire/nodes.py QuestionDefinition.__hash__ 1 1 0 0%
postrfp/model/questionnaire/nodes.py QuestionDefinition.is_shared 3 1 0 67%
postrfp/model/questionnaire/nodes.py QuestionDefinition.get_element 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.as_dict 13 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.answerable_elements 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.add_element 3 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.is_tabular 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.column_count 3 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.row_count 3 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.grid_area 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.occupied_area 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.is_table_valid 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionDefinition.build 11 0 0 100%
postrfp/model/questionnaire/nodes.py SaveAnswersResult.__init__ 3 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.__repr__ 0 0 1 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.__eq__ 3 1 0 67%
postrfp/model/questionnaire/nodes.py QuestionInstance.__hash__ 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.answers_for_issue 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.single_vendor_dict 2 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.title 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.elements 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.as_dict 1 1 0 0%
postrfp/model/questionnaire/nodes.py QuestionInstance.is_autoscored 6 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.absolute_weight 7 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.absolute_weight 1 0 0 100%
postrfp/model/questionnaire/nodes.py QuestionInstance.validate_and_save_answers 27 0 0 100%
postrfp/model/questionnaire/nodes.py (no function) 125 0 12 100%
postrfp/model/questionnaire/qelements.py QElement.__eq__ 9 3 0 67%
postrfp/model/questionnaire/qelements.py QElement.__hash__ 1 1 0 0%
postrfp/model/questionnaire/qelements.py QElement.get_answer 1 0 0 100%
postrfp/model/questionnaire/qelements.py QElement.get_question_instance 1 0 0 100%
postrfp/model/questionnaire/qelements.py QElement.split_choice_string 5 0 0 100%
postrfp/model/questionnaire/qelements.py QElement.build 3 0 0 100%
postrfp/model/questionnaire/qelements.py QElement.cell_area 1 0 0 100%
postrfp/model/questionnaire/qelements.py QElement.summary 1 0 0 100%
postrfp/model/questionnaire/qelements.py QElement.validate 0 0 1 100%
postrfp/model/questionnaire/qelements.py Checkbox.validate 3 0 0 100%
postrfp/model/questionnaire/qelements.py TextInput.as_dict 1 0 0 100%
postrfp/model/questionnaire/qelements.py TextInput.validate 3 0 0 100%
postrfp/model/questionnaire/qelements.py TextInput.summary 1 0 0 100%
postrfp/model/questionnaire/qelements.py MultipleChoice.as_dict 4 0 0 100%
postrfp/model/questionnaire/qelements.py MultipleChoice.validate 5 0 0 100%
postrfp/model/questionnaire/qelements.py MultipleChoice.summary 3 0 0 100%
postrfp/model/questionnaire/qelements.py SupportingAttachment.validate 2 0 0 100%
postrfp/model/questionnaire/qelements.py SupportingAttachment.summary 1 0 0 100%
postrfp/model/questionnaire/qelements.py (no function) 96 0 5 100%
postrfp/model/questionnaire/renumber.py fetch_section_tuples 8 0 0 100%
postrfp/model/questionnaire/renumber.py fetch_all_section_tuples 1 0 0 100%
postrfp/model/questionnaire/renumber.py save_section_numbers 6 0 0 100%
postrfp/model/questionnaire/renumber.py update_qinstance_numbers 3 0 0 100%
postrfp/model/questionnaire/renumber.py update_all_project_questions 2 2 0 0%
postrfp/model/questionnaire/renumber.py renumber_tree 4 0 0 100%
postrfp/model/questionnaire/renumber.py (no function) 10 0 0 100%
postrfp/model/questionnaire/score_views.py QuestionScoreComponent.get_calculated_score 16 3 0 81%
postrfp/model/questionnaire/score_views.py SectionScoreComponent.get_calculated_score 15 8 0 47%
postrfp/model/questionnaire/score_views.py (no function) 36 0 0 100%
postrfp/model/questionnaire/weightings.py WeightingSet.__repr__ 0 0 1 100%
postrfp/model/questionnaire/weightings.py Weighting.__repr__ 0 0 1 100%
postrfp/model/questionnaire/weightings.py TotalWeighting.__repr__ 0 0 1 100%
postrfp/model/questionnaire/weightings.py (no function) 36 0 6 100%
postrfp/model/ref.py ContentSpec.validate_spec 2 0 0 100%
postrfp/model/ref.py ContentSpec.jsonschema_validate 1 0 0 100%
postrfp/model/ref.py ContentSpec.__repr__ 0 0 1 100%
postrfp/model/ref.py Content.add_relationship 4 0 0 100%
postrfp/model/ref.py Content.jsonschema_validate 3 1 0 67%
postrfp/model/ref.py Content.__repr__ 0 0 1 100%
postrfp/model/ref.py Subject.__repr__ 0 0 1 100%
postrfp/model/ref.py ContentSpecMap.__repr__ 0 0 1 100%
postrfp/model/ref.py ContentQElementPair.__repr__ 0 0 1 100%
postrfp/model/ref.py extract_text_from_json 4 0 0 100%
postrfp/model/ref.py extract_text_from_json.recurse 8 2 0 75%
postrfp/model/ref.py update_content_fts_before_insert 1 0 0 100%
postrfp/model/ref.py update_content_fts_before_update 1 0 0 100%
postrfp/model/ref.py (no function) 125 0 7 100%
postrfp/model/tags.py (no function) 17 0 0 100%
postrfp/ref/__init__.py (no function) 0 0 0 100%
postrfp/ref/exceptions.py PermissionDeniedError.__init__ 14 14 0 0%
postrfp/ref/exceptions.py PermissionDeniedError.__str__ 3 3 0 0%
postrfp/ref/exceptions.py ContentPermissionDeniedError.__init__ 3 3 0 0%
postrfp/ref/exceptions.py SubjectPermissionDeniedError.__init__ 3 3 0 0%
postrfp/ref/exceptions.py create_content_permission_error 1 1 0 0%
postrfp/ref/exceptions.py create_subject_permission_error 1 1 0 0%
postrfp/ref/exceptions.py (no function) 11 11 0 0%
postrfp/ref/handlers/__init__.py (no function) 2 0 0 100%
postrfp/ref/handlers/administrators.py post_policy 17 17 0 0%
postrfp/ref/handlers/administrators.py delete_policy 18 18 0 0%
postrfp/ref/handlers/administrators.py (no function) 11 0 0 100%
postrfp/ref/handlers/designers.py get_specs 8 0 0 100%
postrfp/ref/handlers/designers.py get_spec 2 0 0 100%
postrfp/ref/handlers/designers.py post_spec 5 0 0 100%
postrfp/ref/handlers/designers.py put_spec 7 0 0 100%
postrfp/ref/handlers/designers.py delete_spec 3 0 0 100%
postrfp/ref/handlers/designers.py (no function) 18 0 0 100%
postrfp/ref/handlers/editors.py build_saved_content 3 0 0 100%
postrfp/ref/handlers/editors.py get_contents 18 0 0 100%
postrfp/ref/handlers/editors.py get_content 5 1 0 80%
postrfp/ref/handlers/editors.py post_content 4 0 0 100%
postrfp/ref/handlers/editors.py put_content 4 0 0 100%
postrfp/ref/handlers/editors.py delete_content 6 1 0 83%
postrfp/ref/handlers/editors.py build_content_spec_map_document 2 0 0 100%
postrfp/ref/handlers/editors.py _require_same_org 3 0 0 100%
postrfp/ref/handlers/editors.py get_content_maps 10 0 0 100%
postrfp/ref/handlers/editors.py get_content_map 3 0 0 100%
postrfp/ref/handlers/editors.py post_content_map 16 1 0 94%
postrfp/ref/handlers/editors.py put_content_map 21 1 0 95%
postrfp/ref/handlers/editors.py delete_content_map 4 0 0 100%
postrfp/ref/handlers/editors.py get_spec_pointers 5 0 0 100%
postrfp/ref/handlers/editors.py (no function) 38 0 0 100%
postrfp/ref/handlers/readers.py get_search 4 0 0 100%
postrfp/ref/handlers/readers.py get_content_relationships 2 2 0 0%
postrfp/ref/handlers/readers.py (no function) 12 0 0 100%
postrfp/ref/handlers/subjects.py get_subjects 18 0 0 100%
postrfp/ref/handlers/subjects.py get_subject 2 0 0 100%
postrfp/ref/handlers/subjects.py post_subject 8 0 0 100%
postrfp/ref/handlers/subjects.py put_subject 14 0 0 100%
postrfp/ref/handlers/subjects.py delete_subject 9 0 0 100%
postrfp/ref/handlers/subjects.py get_subject_children 2 0 0 100%
postrfp/ref/handlers/subjects.py (no function) 20 0 0 100%
postrfp/ref/permissions.py AuthorizationResult.__bool__ 1 1 0 0%
postrfp/ref/permissions.py AuthorizationResult.get_user_friendly_message 8 4 0 50%
postrfp/ref/permissions.py AuthorizationResult.to_dict 1 1 0 0%
postrfp/ref/permissions.py CELAuthorizationChecker.__init__ 8 2 0 75%
postrfp/ref/permissions.py CELAuthorizationChecker.check_authorization 7 0 0 100%
postrfp/ref/permissions.py AuthorizationDeniedError.__init__ 5 0 0 100%
postrfp/ref/permissions.py check_content_authorization 2 0 0 100%
postrfp/ref/permissions.py check_subject_authorization 2 2 0 0%
postrfp/ref/permissions.py check_content_spec_authorization 2 2 0 0%
postrfp/ref/permissions.py (no function) 23 0 0 100%
postrfp/ref/service/__init__.py (no function) 0 0 0 100%
postrfp/ref/service/auth_service.py update_content_policy 3 0 0 100%
postrfp/ref/service/auth_service.py update_subject_policy 3 0 0 100%
postrfp/ref/service/auth_service.py update_content_spec_policy 3 3 0 0%
postrfp/ref/service/auth_service.py get_content_policy 2 0 0 100%
postrfp/ref/service/auth_service.py get_subject_policy 2 0 0 100%
postrfp/ref/service/auth_service.py get_content_spec_policy 2 2 0 0%
postrfp/ref/service/auth_service.py get_policy_info 1 0 0 100%
postrfp/ref/service/auth_service.py (no function) 12 0 0 100%
postrfp/ref/service/content_service.py _update_content_tags 8 1 0 88%
postrfp/ref/service/content_service.py _update_content_subjects 8 1 0 88%
postrfp/ref/service/content_service.py create_content 7 0 0 100%
postrfp/ref/service/content_service.py update_content 11 1 0 91%
postrfp/ref/service/content_service.py fetch_answer_references 6 1 0 83%
postrfp/ref/service/content_service.py fetch_content_spec 1 1 0 0%
postrfp/ref/service/content_service.py jsonpatch_from_answers 7 0 0 100%
postrfp/ref/service/content_service.py (no function) 16 0 1 100%
postrfp/ref/service/helpers.py fetch_related_items 9 0 0 100%
postrfp/ref/service/helpers.py (no function) 7 0 0 100%
postrfp/ref/service/reference_validator.py ContentReferenceValidator.__init__ 2 0 0 100%
postrfp/ref/service/reference_validator.py ContentReferenceValidator.get_valid_paths 4 0 0 100%
postrfp/ref/service/reference_validator.py ContentReferenceValidator._extract_paths_from_schema 22 5 0 77%
postrfp/ref/service/reference_validator.py ContentReferenceValidator._resolve_ref 9 2 0 78%
postrfp/ref/service/reference_validator.py ContentReferenceValidator.validate_references_batch 11 1 0 91%
postrfp/ref/service/reference_validator.py ContentReferenceValidator.validate_pairs 8 0 0 100%
postrfp/ref/service/reference_validator.py ContentReferenceValidator._is_valid_array_reference 8 1 0 88%
postrfp/ref/service/reference_validator.py ContentReferenceValidator._get_error_message 4 0 0 100%
postrfp/ref/service/reference_validator.py ContentReferenceValidator.validate_reference 4 0 0 100%
postrfp/ref/service/reference_validator.py (no function) 13 0 0 100%
postrfp/ref/service/search_service.py search_content_by_subject 12 2 0 83%
postrfp/ref/service/search_service.py (no function) 7 0 0 100%
postrfp/shared/__init__.py (no function) 0 0 0 100%
postrfp/shared/attachments.py get_sub_path 14 0 0 100%
postrfp/shared/attachments.py local_to_full 2 0 0 100%
postrfp/shared/attachments.py root_attachments_dir 1 0 0 100%
postrfp/shared/attachments.py get_full_path 2 0 0 100%
postrfp/shared/attachments.py save_to_disc 9 0 0 100%
postrfp/shared/attachments.py delete_from_disc 4 0 0 100%
postrfp/shared/attachments.py find_orphan_answer_attachment 4 0 0 100%
postrfp/shared/attachments.py delete_orphan_answer_attachments 17 0 0 100%
postrfp/shared/attachments.py save_issue_attachment 13 0 0 100%
postrfp/shared/attachments.py save_project_attachment 13 0 0 100%
postrfp/shared/attachments.py delete_project_attachment 4 0 0 100%
postrfp/shared/attachments.py (no function) 23 0 3 100%
postrfp/shared/constants.py (no function) 13 0 2 100%
postrfp/shared/decorators.py _set_exposed 4 0 0 100%
postrfp/shared/decorators.py _check_docstring 3 0 0 100%
postrfp/shared/decorators.py http 3 0 0 100%
postrfp/shared/decorators.py http_etag 4 0 0 100%
postrfp/shared/decorators.py http_auth.__init__ 4 0 0 100%
postrfp/shared/decorators.py http_auth.__call__ 4 0 0 100%
postrfp/shared/decorators.py (no function) 15 0 0 100%
postrfp/shared/exceptions.py AuthorizationFailure.__init__ 13 0 0 100%
postrfp/shared/exceptions.py AuthorizationFailure.__repr__ 0 0 4 100%
postrfp/shared/exceptions.py AuthorizationFailure.__str__ 1 0 0 100%
postrfp/shared/exceptions.py LacksPermission.__init__ 2 0 0 100%
postrfp/shared/exceptions.py (no function) 9 0 9 100%
postrfp/shared/expression.py evaluate_expression 9 2 0 78%
postrfp/shared/expression.py (no function) 5 0 0 100%
postrfp/shared/fetch/__init__.py (no function) 11 0 0 100%
postrfp/shared/fetch/answq.py issue 1 0 0 100%
postrfp/shared/fetch/answq.py answer 1 0 0 100%
postrfp/shared/fetch/answq.py answers_in_issues_query 1 0 0 100%
postrfp/shared/fetch/answq.py visible_answers 6 0 0 100%
postrfp/shared/fetch/answq.py element_answers 2 0 0 100%
postrfp/shared/fetch/answq.py importable_answer_lookup 4 0 0 100%
postrfp/shared/fetch/answq.py answer_attachments_q 7 0 0 100%
postrfp/shared/fetch/answq.py answering_stats 5 0 0 100%
postrfp/shared/fetch/answq.py (no function) 15 0 0 100%
postrfp/shared/fetch/audq.py audit_events 4 0 0 100%
postrfp/shared/fetch/audq.py project_audit_events 2 0 0 100%
postrfp/shared/fetch/audq.py latest_event 2 0 0 100%
postrfp/shared/fetch/audq.py webhooks_for_event 4 0 0 100%
postrfp/shared/fetch/audq.py (no function) 11 0 0 100%
postrfp/shared/fetch/autoscoreq.py _build_score_key 1 0 0 100%
postrfp/shared/fetch/autoscoreq.py _get_multichoice_elements_with_choices 1 0 0 100%
postrfp/shared/fetch/autoscoreq.py _process_answer 9 4 0 56%
postrfp/shared/fetch/autoscoreq.py _fetch_and_process_question_answers 7 7 0 0%
postrfp/shared/fetch/autoscoreq.py _fetch_all_autoscore_answers_batch 22 2 0 91%
postrfp/shared/fetch/autoscoreq.py _calculate_final_score 1 0 0 100%
postrfp/shared/fetch/autoscoreq.py _create_autoscore_entry 1 0 0 100%
postrfp/shared/fetch/autoscoreq.py generate_autoscores 19 3 0 84%
postrfp/shared/fetch/autoscoreq.py scores_dict 8 8 0 0%
postrfp/shared/fetch/autoscoreq.py scores_dict_scoreset 11 1 0 91%
postrfp/shared/fetch/autoscoreq.py (no function) 23 0 0 100%
postrfp/shared/fetch/flattening.py ElementGrid.__init__ 24 0 0 100%
postrfp/shared/fetch/flattening.py ElementGrid.get_element 3 0 0 100%
postrfp/shared/fetch/flattening.py ElementGrid.find_headers_for 33 0 0 100%
postrfp/shared/fetch/flattening.py embeddings_for_issue 5 5 0 0%
postrfp/shared/fetch/flattening.py build_label_answer_mapping 12 0 0 100%
postrfp/shared/fetch/flattening.py _detect_form_structure 14 3 0 79%
postrfp/shared/fetch/flattening.py _process_complex_table 10 0 0 100%
postrfp/shared/fetch/flattening.py _build_label_path 15 0 0 100%
postrfp/shared/fetch/flattening.py _create_output_item 1 0 0 100%
postrfp/shared/fetch/flattening.py _normalize_value 8 0 0 100%
postrfp/shared/fetch/flattening.py _process_single_column_form 12 0 0 100%
postrfp/shared/fetch/flattening.py _process_two_column_form 9 0 0 100%
postrfp/shared/fetch/flattening.py _determine_label_with_fallback 5 0 0 100%
postrfp/shared/fetch/flattening.py (no function) 18 0 0 100%
postrfp/shared/fetch/nodesq.py light_nodes 5 0 0 100%
postrfp/shared/fetch/nodesq.py light_tree 24 5 0 79%
postrfp/shared/fetch/nodesq.py (no function) 7 0 0 100%
postrfp/shared/fetch/projq.py project 4 0 0 100%
postrfp/shared/fetch/projq.py projects_with_watched 7 0 0 100%
postrfp/shared/fetch/projq.py participant_notes_query 5 0 0 100%
postrfp/shared/fetch/projq.py vendor_notes 3 0 0 100%
postrfp/shared/fetch/projq.py note 1 0 0 100%
postrfp/shared/fetch/projq.py issues_for_respondent 3 0 0 100%
postrfp/shared/fetch/projq.py category_for_user 3 0 0 100%
postrfp/shared/fetch/projq.py (no function) 15 0 0 100%
postrfp/shared/fetch/quesq.py qelement 4 1 0 75%
postrfp/shared/fetch/quesq.py question 5 0 0 100%
postrfp/shared/fetch/quesq.py question_of_project 1 0 0 100%
postrfp/shared/fetch/quesq.py question_of_section 1 0 0 100%
postrfp/shared/fetch/quesq.py question_instance_by_number 1 0 0 100%
postrfp/shared/fetch/quesq.py response_states 7 0 0 100%
postrfp/shared/fetch/quesq.py answered_questions 10 0 0 100%
postrfp/shared/fetch/quesq.py iter_quick_questions 37 0 0 100%
postrfp/shared/fetch/quesq.py questionnaire_stats 10 0 0 100%
postrfp/shared/fetch/quesq.py unanswered_mandatory 3 0 0 100%
postrfp/shared/fetch/quesq.py _question_ids_q 4 0 0 100%
postrfp/shared/fetch/quesq.py importable_answers 3 0 0 100%
postrfp/shared/fetch/quesq.py duplicated_qdefs 9 0 0 100%
postrfp/shared/fetch/quesq.py (no function) 26 0 0 100%
postrfp/shared/fetch/scoreq.py scores 5 0 0 100%
postrfp/shared/fetch/scoreq.py or_create_score 13 1 0 92%
postrfp/shared/fetch/scoreq.py or_create_scores_batch 27 4 0 85%
postrfp/shared/fetch/scoreq.py scoring_data 4 0 0 100%
postrfp/shared/fetch/scoreq.py score_totals_by_project 2 0 0 100%
postrfp/shared/fetch/scoreq.py score_gaps 30 1 0 97%
postrfp/shared/fetch/scoreq.py question_scoresummary 5 0 0 100%
postrfp/shared/fetch/scoreq.py subsection_scoressummary 4 0 0 100%
postrfp/shared/fetch/scoreq.py section_scoresummary 2 0 0 100%
postrfp/shared/fetch/scoreq.py get_permission_for_scoreset 3 0 0 100%
postrfp/shared/fetch/scoreq.py (no function) 28 0 3 100%
postrfp/shared/fetch/searchq.py search 15 0 1 100%
postrfp/shared/fetch/searchq.py (no function) 7 0 0 100%
postrfp/shared/fetch/secq.py section 1 0 0 100%
postrfp/shared/fetch/secq.py section_of_project 1 0 0 100%
postrfp/shared/fetch/secq.py section_by_id 1 0 0 100%
postrfp/shared/fetch/secq.py sections 3 0 0 100%
postrfp/shared/fetch/secq.py visible_subsections_query 6 0 0 100%
postrfp/shared/fetch/secq.py get_subsections_recursive 3 0 0 100%
postrfp/shared/fetch/secq.py sec_total_weighting 10 0 0 100%
postrfp/shared/fetch/secq.py visible_nodes 8 0 0 100%
postrfp/shared/fetch/secq.py (no function) 17 0 0 100%
postrfp/shared/fetch/userq.py user 1 0 0 100%
postrfp/shared/fetch/userq.py organisation 1 0 0 100%
postrfp/shared/fetch/userq.py user_by_password 7 0 0 100%
postrfp/shared/fetch/userq.py dummy_hash 1 1 0 0%
postrfp/shared/fetch/userq.py project_users 9 0 0 100%
postrfp/shared/fetch/userq.py issue_watchers 2 0 0 100%
postrfp/shared/fetch/userq.py project_watchers 2 0 0 100%
postrfp/shared/fetch/userq.py edges_for_org_query 1 0 0 100%
postrfp/shared/fetch/userq.py (no function) 16 0 0 100%
postrfp/shared/fetch/view_scoring.py get_child_scores 14 0 0 100%
postrfp/shared/fetch/view_scoring.py (no function) 6 0 0 100%
postrfp/shared/fetch/weightq.py _ws_weights 18 0 0 100%
postrfp/shared/fetch/weightq.py _default_weights 1 0 0 100%
postrfp/shared/fetch/weightq.py weightings_dict 3 0 0 100%
postrfp/shared/fetch/weightq.py total_weightings_dict 10 0 0 100%
postrfp/shared/fetch/weightq.py (no function) 19 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.__table_args__ 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.__init_subclass__ 3 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.get_registered_entities 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.get_entity_by_name 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.get_entity_names 1 1 0 0%
postrfp/shared/fsm_entity.py FSMEntity.current_status_id 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.workflow_id 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.current_status 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.workflow 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.clear_workflow 4 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.actions_for_current_status 3 1 0 67%
postrfp/shared/fsm_entity.py FSMEntity.status_by_name 1 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.status_name 3 0 0 100%
postrfp/shared/fsm_entity.py FSMEntity.status_name 16 1 0 94%
postrfp/shared/fsm_entity.py FSMEntity.get_context_schema 0 0 1 100%
postrfp/shared/fsm_entity.py FSMEntity.get_context_data 0 0 1 100%
postrfp/shared/fsm_entity.py require_fsm_methods 11 1 0 91%
postrfp/shared/fsm_entity.py (no function) 38 0 0 100%
postrfp/shared/init/__init__.py (no function) 0 0 0 100%
postrfp/shared/init/dbconfig.py set_connection_timezone 2 0 0 100%
postrfp/shared/init/dbconfig.py _check_connection_timezone 7 0 0 100%
postrfp/shared/init/dbconfig.py check_connection 18 1 0 94%
postrfp/shared/init/dbconfig.py build_engine 8 0 0 100%
postrfp/shared/init/dbconfig.py (no function) 14 0 0 100%
postrfp/shared/init/sysconfig.py configure_postrfp 10 1 0 90%
postrfp/shared/init/sysconfig.py log_setup_details 10 1 0 90%
postrfp/shared/init/sysconfig.py configure_logging 0 0 23 100%
postrfp/shared/init/sysconfig.py (no function) 11 0 1 100%
postrfp/shared/issue_transition.py change_issue_status 29 5 0 83%
postrfp/shared/issue_transition.py _handle_not_sent 8 0 0 100%
postrfp/shared/issue_transition.py _handle_opportunity 16 3 0 81%
postrfp/shared/issue_transition.py _handle_accepted 29 2 0 93%
postrfp/shared/issue_transition.py _handle_updateable 6 2 0 67%
postrfp/shared/issue_transition.py _handle_submitted 6 1 0 83%
postrfp/shared/issue_transition.py _handle_retracted 6 0 0 100%
postrfp/shared/issue_transition.py (no function) 16 0 0 100%
postrfp/shared/movenodes.py AbstractNodeMover.__init__ 11 0 0 100%
postrfp/shared/movenodes.py AbstractNodeMover.initialise 0 0 11 100%
postrfp/shared/movenodes.py AbstractNodeMover._find_previous_parents 0 0 2 100%
postrfp/shared/movenodes.py AbstractNodeMover._reset_previous_parent_positions 0 0 2 100%
postrfp/shared/movenodes.py AbstractNodeMover._delete_orphan 0 0 2 100%
postrfp/shared/movenodes.py AbstractNodeMover.execute 8 0 0 100%
postrfp/shared/movenodes.py AbstractNodeMover._find_renumbering_ancestor 13 1 0 92%
postrfp/shared/movenodes.py AbstractNodeMover._handle_orphans 5 0 0 100%
postrfp/shared/movenodes.py AbstractNodeMover._update_positions_and_relationships 7 0 0 100%
postrfp/shared/movenodes.py AbstractNodeMover.renumber_ancestor 2 0 0 100%
postrfp/shared/movenodes.py SectionsMover.initialise 7 0 0 100%
postrfp/shared/movenodes.py SectionsMover._find_previous_parents 1 0 0 100%
postrfp/shared/movenodes.py SectionsMover._reset_previous_parent_positions 3 0 0 100%
postrfp/shared/movenodes.py SectionsMover._delete_orphan 1 0 0 100%
postrfp/shared/movenodes.py QuestionsMover.initialise 7 0 0 100%
postrfp/shared/movenodes.py QuestionsMover._find_previous_parents 2 0 0 100%
postrfp/shared/movenodes.py QuestionsMover._reset_previous_parent_positions 2 0 0 100%
postrfp/shared/movenodes.py QuestionsMover._delete_orphan 1 0 0 100%
postrfp/shared/movenodes.py (no function) 33 0 16 100%
postrfp/shared/pager.py Pager.__init__ 5 0 0 100%
postrfp/shared/pager.py Pager.startfrom 1 0 0 100%
postrfp/shared/pager.py Pager.current_page 1 1 0 0%
postrfp/shared/pager.py Pager.goto 1 0 0 100%
postrfp/shared/pager.py Pager.total_pages 1 0 0 100%
postrfp/shared/pager.py Pager.has_next 1 0 0 100%
postrfp/shared/pager.py Pager.__repr__ 0 0 1 100%
postrfp/shared/pager.py Pager.as_pagination 1 0 0 100%
postrfp/shared/pager.py (no function) 13 0 1 100%
postrfp/shared/password.py build_hasher 1 0 0 100%
postrfp/shared/password.py create_signature 2 0 0 100%
postrfp/shared/password.py validate_hash 10 0 0 100%
postrfp/shared/password.py dummy_argon2_hash 5 0 0 100%
postrfp/shared/password.py (no function) 9 0 0 100%
postrfp/shared/response.py quote_header_value 1 0 0 100%
postrfp/shared/response.py file_size 1 0 0 100%
postrfp/shared/response.py XAccelResponse.set_x_accel 2 0 0 100%
postrfp/shared/response.py XAccelAttachmentResponse.__init__ 6 0 0 100%
postrfp/shared/response.py XAccelTempResponse.__init__ 7 0 0 100%
postrfp/shared/response.py (no function) 17 0 0 100%
postrfp/shared/serial/__init__.py (no function) 5 0 0 100%
postrfp/shared/serial/authmodels.py (no function) 16 0 0 100%
postrfp/shared/serial/common.py ScoringModel.__str__ 1 0 0 100%
postrfp/shared/serial/common.py (no function) 25 0 0 100%
postrfp/shared/serial/models.py BaseOrganisation.set_type 1 0 0 100%
postrfp/shared/serial/models.py User.get_roles 3 1 0 67%
postrfp/shared/serial/models.py NewIssue.either_email_or_respondent 5 0 0 100%
postrfp/shared/serial/models.py NewIssue.nonify 3 0 0 100%
postrfp/shared/serial/models.py NewWeightSet.check_src_weightset 8 0 0 100%
postrfp/shared/serial/models.py AllocatedToList.__iter__ 1 0 0 100%
postrfp/shared/serial/models.py SectionChildNodes.either_or 6 2 0 67%
postrfp/shared/serial/models.py FullProject.set_permissions 1 0 0 100%
postrfp/shared/serial/models.py FullProject.perms 1 0 0 100%
postrfp/shared/serial/models.py Watcher.set_is_watching 2 0 0 100%
postrfp/shared/serial/models.py Watcher.none_if_zerolength 3 0 0 100%
postrfp/shared/serial/models.py NewTag.normalise_colour 3 0 0 100%
postrfp/shared/serial/models.py NewWebhook.validate_event_type 4 0 0 100%
postrfp/shared/serial/models.py (no function) 588 0 0 100%
postrfp/shared/serial/qmodels.py QuestionDef.nest_elements 28 0 0 100%
postrfp/shared/serial/qmodels.py (no function) 76 0 0 100%
postrfp/shared/serial/refmodels.py (no function) 102 0 0 100%
postrfp/shared/serial/scoremodels.py (no function) 29 0 3 100%
postrfp/shared/tools.py api_version_resource 2 0 0 100%
postrfp/shared/tools.py read_api_version 1 0 0 100%
postrfp/shared/tools.py populate_answers 10 0 0 100%
postrfp/shared/tools.py populate_answers.factory 1 0 0 100%
postrfp/shared/tools.py list_missing_templates 10 0 0 100%
postrfp/shared/tools.py save_templates_to_disc 14 0 0 100%
postrfp/shared/tools.py upload_templates_to_postmark 0 0 17 100%
postrfp/shared/tools.py (no function) 17 0 1 100%
postrfp/shared/types.py Authoriser.__call__ 0 0 1 100%
postrfp/shared/types.py Adaptor.__call__ 0 0 1 100%
postrfp/shared/types.py SuxHandler.path 0 0 1 100%
postrfp/shared/types.py SuxHandler.adaptors 0 0 1 100%
postrfp/shared/types.py SuxHandler.return_value 0 0 1 100%
postrfp/shared/types.py SuxHandler.required_arguments 0 0 1 100%
postrfp/shared/types.py SuxHandler.optional_arguments 0 0 1 100%
postrfp/shared/types.py SuxType.iter_handlers 0 0 1 100%
postrfp/shared/types.py (no function) 19 0 22 100%
postrfp/shared/update.py grant_project_permission 12 0 0 100%
postrfp/shared/update.py grant_section_permissions 7 0 0 100%
postrfp/shared/update.py _update_or_create_weighting 8 0 0 100%
postrfp/shared/update.py save_weightset_weightings 20 0 0 100%
postrfp/shared/update.py save_default_weightings 6 2 0 67%
postrfp/shared/update.py set_initial_weightings 8 0 0 100%
postrfp/shared/update.py copy_weightings 5 0 0 100%
postrfp/shared/update.py reset_scores 15 0 2 100%
postrfp/shared/update.py save_answers 21 0 0 100%
postrfp/shared/update.py import_section 13 0 0 100%
postrfp/shared/update.py import_q_instance 13 0 0 100%
postrfp/shared/update.py copy_q_definition 8 0 0 100%
postrfp/shared/update.py delete_qinstances_update_def_refcounts 6 0 0 100%
postrfp/shared/update.py delete_qinstances_update_def_refcounts.qf 4 0 0 100%
postrfp/shared/update.py log_score_event 13 8 0 38%
postrfp/shared/update.py label_text 7 0 0 100%
postrfp/shared/update.py question_titles 10 0 0 100%
postrfp/shared/update.py choices_text 10 0 0 100%
postrfp/shared/update.py pretty_choices 7 0 0 100%
postrfp/shared/update.py update_create_qdef 17 0 0 100%
postrfp/shared/update.py check_for_saved_answers 7 0 0 100%
postrfp/shared/update.py delete_project_section 7 0 0 100%
postrfp/shared/update.py delete_project_section_question 14 0 0 100%
postrfp/shared/update.py batch_create_audit_events 11 1 0 91%
postrfp/shared/update.py batch_log_answer_events 0 0 24 100%
postrfp/shared/update.py log_score_events_batch 20 0 0 100%
postrfp/shared/update.py (no function) 41 0 9 100%
postrfp/shared/utils.py benchmark.__init__ 0 0 2 100%
postrfp/shared/utils.py benchmark.__enter__ 0 0 1 100%
postrfp/shared/utils.py benchmark.__exit__ 0 0 11 100%
postrfp/shared/utils.py profiled 0 0 11 100%
postrfp/shared/utils.py json_default 11 0 0 100%
postrfp/shared/utils.py (no function) 12 0 34 100%
postrfp/templates/__init__.py init_jinja 10 0 0 100%
postrfp/templates/__init__.py get_template 2 0 0 100%
postrfp/templates/__init__.py (no function) 8 0 0 100%
postrfp/vendor/__init__.py (no function) 0 0 0 100%
postrfp/vendor/api/__init__.py (no function) 1 0 0 100%
postrfp/vendor/api/attachments.py post_issue_attachment 4 0 0 100%
postrfp/vendor/api/attachments.py post_issue_answer_attachment 19 0 0 100%
postrfp/vendor/api/attachments.py get_issue_answer_attachment 5 0 0 100%
postrfp/vendor/api/attachments.py get_issue_attachment 4 0 0 100%
postrfp/vendor/api/attachments.py get_issue_attachments 3 0 0 100%
postrfp/vendor/api/attachments.py delete_issue_attachments 7 0 0 100%
postrfp/vendor/api/attachments.py get_issue_question_attachment 7 1 0 86%
postrfp/vendor/api/attachments.py (no function) 26 0 0 100%
postrfp/vendor/api/audit.py get_events 4 0 0 100%
postrfp/vendor/api/audit.py (no function) 9 0 2 100%
postrfp/vendor/api/issue.py _issue_q 1 0 0 100%
postrfp/vendor/api/issue.py get_issue 3 0 0 100%
postrfp/vendor/api/issue.py get_issues 2 0 0 100%
postrfp/vendor/api/issue.py post_issue_status 9 1 0 89%
postrfp/vendor/api/issue.py post_issue_workflow 3 0 0 100%
postrfp/vendor/api/issue.py post_issue_note 11 0 0 100%
postrfp/vendor/api/issue.py get_issue_notes 5 0 0 100%
postrfp/vendor/api/issue.py (no function) 24 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_tree 4 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_question 6 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_sections 4 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_section 7 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_section_stats 4 0 0 100%
postrfp/vendor/api/questionnaire.py post_issue_question_answers 8 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_answers_search 4 0 0 100%
postrfp/vendor/api/questionnaire.py post_issue_answers_replace 12 0 0 100%
postrfp/vendor/api/questionnaire.py delete_issue_answer_element 14 0 0 100%
postrfp/vendor/api/questionnaire.py get_issue_answerimport 5 0 0 100%
postrfp/vendor/api/questionnaire.py post_issue_answerimport 23 0 0 100%
postrfp/vendor/api/questionnaire.py (no function) 41 0 0 100%
postrfp/vendor/api/reports.py get_issue_scoregaps 7 0 0 100%
postrfp/vendor/api/reports.py (no function) 10 0 0 100%
postrfp/vendor/api/users.py get_users 2 0 0 100%
postrfp/vendor/api/users.py get_whoami 1 0 0 100%
postrfp/vendor/api/users.py get_user 4 0 0 100%
postrfp/vendor/api/users.py put_user 19 2 0 89%
postrfp/vendor/api/users.py post_user 15 0 0 100%
postrfp/vendor/api/users.py delete_user 8 0 0 100%
postrfp/vendor/api/users.py get_roles 4 0 0 100%
postrfp/vendor/api/users.py get_permissions 1 0 0 100%
postrfp/vendor/api/users.py get_issue_watchlist 6 0 0 100%
postrfp/vendor/api/users.py auth_wl_change 6 0 0 100%
postrfp/vendor/api/users.py post_issue_watchers 7 0 0 100%
postrfp/vendor/api/users.py delete_issue_watchers 8 0 0 100%
postrfp/vendor/api/users.py (no function) 35 0 0 100%
postrfp/vendor/api/workflow.py get_issue_section_workflow 11 0 0 100%
postrfp/vendor/api/workflow.py post_issue_allocate 7 0 0 100%
postrfp/vendor/api/workflow.py (no function) 16 0 0 100%
postrfp/vendor/validation.py validate 2 0 0 100%
postrfp/vendor/validation.py Validator.__init__ 10 0 0 100%
postrfp/vendor/validation.py Validator.validate 6 0 0 100%
postrfp/vendor/validation.py Validator.check_visibility 7 0 0 100%
postrfp/vendor/validation.py Validator.check_user_permissions 2 0 0 100%
postrfp/vendor/validation.py Validator.check_rules 5 0 0 100%
postrfp/vendor/validation.py Validator.check_issue_rules 11 0 0 100%
postrfp/vendor/validation.py Validator.check_answering_rules 9 0 0 100%
postrfp/vendor/validation.py Validator.authorise_winloss 5 0 0 100%
postrfp/vendor/validation.py Validator.fail 2 0 0 100%
postrfp/vendor/validation.py Validator.invalid_issue_status 1 0 0 100%
postrfp/vendor/validation.py Validator.raise_on_error 2 0 0 100%
postrfp/vendor/validation.py (no function) 17 0 0 100%
postrfp/web/__init__.py (no function) 0 0 0 100%
postrfp/web/adaptors/__init__.py (no function) 0 0 0 100%
postrfp/web/adaptors/auth.py session 1 1 0 0%
postrfp/web/adaptors/auth.py request 1 1 0 0%
postrfp/web/adaptors/auth.py (no function) 8 0 0 100%
postrfp/web/adaptors/core.py PagerArg.extract 7 0 0 100%
postrfp/web/adaptors/core.py PagerArg.update_openapi_path_object 2 2 0 0%
postrfp/web/adaptors/core.py check_node_number 9 0 0 100%
postrfp/web/adaptors/core.py search_val 3 0 0 100%
postrfp/web/adaptors/core.py default_scoreset 3 0 0 100%
postrfp/web/adaptors/core.py val_evt_type 3 0 0 100%
postrfp/web/adaptors/core.py UserObject.extract 4 0 0 100%
postrfp/web/adaptors/core.py session 1 0 0 100%
postrfp/web/adaptors/core.py user 1 0 0 100%
postrfp/web/adaptors/core.py effective_user 1 0 0 100%
postrfp/web/adaptors/core.py (no function) 130 0 0 100%
postrfp/web/adaptors/ref.py (no function) 22 0 0 100%
postrfp/web/apps/__init__.py (no function) 6 0 0 100%
postrfp/web/apps/authentication.py TokenAuthenticationApp.__init__ 3 0 0 100%
postrfp/web/apps/authentication.py TokenAuthenticationApp.validate_user 0 0 1 100%
postrfp/web/apps/authentication.py TokenAuthenticationApp.build_sux 1 0 0 100%
postrfp/web/apps/authentication.py status 1 0 0 100%
postrfp/web/apps/authentication.py (no function) 14 0 1 100%
postrfp/web/apps/buyer.py BuyerApp.validate_user 4 0 0 100%
postrfp/web/apps/buyer.py BuyerApp.build_sux 1 0 0 100%
postrfp/web/apps/buyer.py raise_check 1 0 0 100%
postrfp/web/apps/buyer.py (no function) 14 0 0 100%
postrfp/web/apps/fsm.py FsmApp.__init__ 3 0 0 100%
postrfp/web/apps/fsm.py FsmApp.validate_user 0 0 1 100%
postrfp/web/apps/fsm.py FsmApp.build_sux 1 0 0 100%
postrfp/web/apps/fsm.py status 1 0 0 100%
postrfp/web/apps/fsm.py (no function) 14 0 1 100%
postrfp/web/apps/ref.py RefApp.__init__ 3 0 0 100%
postrfp/web/apps/ref.py RefApp.validate_user 0 0 1 100%
postrfp/web/apps/ref.py RefApp.build_sux 1 0 0 100%
postrfp/web/apps/ref.py status 1 1 0 0%
postrfp/web/apps/ref.py (no function) 14 0 1 100%
postrfp/web/apps/vendor.py VendorApp.validate_user 0 0 1 100%
postrfp/web/apps/vendor.py VendorApp.build_sux 1 0 0 100%
postrfp/web/apps/vendor.py (no function) 9 0 1 100%
postrfp/web/base.py jsonify_models 5 0 0 100%
postrfp/web/base.py render 18 0 0 100%
postrfp/web/base.py commit_or_rollback 7 0 0 100%
postrfp/web/base.py WSGIApp.__init__ 15 0 0 100%
postrfp/web/base.py WSGIApp.build_sux 0 0 5 100%
postrfp/web/base.py WSGIApp.__call__ 14 0 0 100%
postrfp/web/base.py WSGIApp.authenticate 2 0 0 100%
postrfp/web/base.py WSGIApp.resolve_route 7 0 0 100%
postrfp/web/base.py WSGIApp.rest_api 8 0 0 100%
postrfp/web/base.py WSGIApp.route 2 0 0 100%
postrfp/web/base.py WSGIApp.route.wrapper 7 0 0 100%
postrfp/web/base.py WSGIApp.__repr__ 0 0 1 100%
postrfp/web/base.py WSGIApp.validate_user 0 0 1 100%
postrfp/web/base.py (no function) 38 0 4 100%
postrfp/web/exception.py render_error 22 0 0 100%
postrfp/web/exception.py log_exception 4 0 0 100%
postrfp/web/exception.py ex_message 5 0 0 100%
postrfp/web/exception.py resolve_exception 45 2 0 96%
postrfp/web/exception.py (no function) 20 0 0 100%
postrfp/web/ext/__init__.py (no function) 0 0 0 100%
postrfp/web/ext/apilinks.py Link.__init__ 7 0 0 100%
postrfp/web/ext/apilinks.py Link.as_dict 4 0 0 100%
postrfp/web/ext/apilinks.py (no function) 21 0 0 100%
postrfp/web/ext/apispec.py responses 27 4 0 85%
postrfp/web/ext/apispec.py operations_from_handler 7 0 0 100%
postrfp/web/ext/apispec.py SuxPlugin.init_spec 2 0 0 100%
postrfp/web/ext/apispec.py SuxPlugin.path_helper 3 0 0 100%
postrfp/web/ext/apispec.py (no function) 12 0 2 100%
postrfp/web/ext/openapi_types.py (no function) 8 0 0 100%
postrfp/web/ext/specs/__init__.py (no function) 0 0 0 100%
postrfp/web/hooks/__init__.py (no function) 4 0 0 100%
postrfp/web/hooks/mail_delivered.py postmark_isodate 3 0 0 100%
postrfp/web/hooks/mail_delivered.py DeliveredHook.update_notification_record 5 0 0 100%
postrfp/web/hooks/mail_delivered.py BounceHook.update_notification_record 6 0 0 100%
postrfp/web/hooks/mail_delivered.py (no function) 14 0 0 100%
postrfp/web/hooks/webapp.py WebhookApp.validate_user 0 0 1 100%
postrfp/web/hooks/webapp.py WebhookApp.build_sux 0 0 1 100%
postrfp/web/hooks/webapp.py WebhookApp.register_route 1 0 0 100%
postrfp/web/hooks/webapp.py PostmarkVars.__init__ 4 0 0 100%
postrfp/web/hooks/webapp.py NotificationHook.__call__ 18 1 0 94%
postrfp/web/hooks/webapp.py NotificationHook.extract 3 0 0 100%
postrfp/web/hooks/webapp.py NotificationHook.lookup 1 0 0 100%
postrfp/web/hooks/webapp.py NotificationHook.check_emails_match 3 0 0 100%
postrfp/web/hooks/webapp.py NotificationHook.update_notification_record 0 0 1 100%
postrfp/web/hooks/webapp.py (no function) 23 0 2 100%
postrfp/web/middleware.py DevMiddleware.__init__ 0 0 8 100%
postrfp/web/middleware.py DevMiddleware.static_app 0 0 1 100%
postrfp/web/middleware.py DevMiddleware.__call__ 0 0 13 100%
postrfp/web/middleware.py DevMiddleware.process_request 0 0 5 100%
postrfp/web/middleware.py DevMiddleware.process_response 0 0 11 100%
postrfp/web/middleware.py DevMiddleware.test_rollback 0 0 19 100%
postrfp/web/middleware.py DevMiddleware.test_mailbox 0 0 10 100%
postrfp/web/middleware.py DevMiddleware.test_process_events 0 0 15 100%
postrfp/web/middleware.py DevMiddleware.xaccel 0 0 28 100%
postrfp/web/middleware.py DevMiddleware.config 0 0 4 100%
postrfp/web/middleware.py DispatchingMiddleware.__init__ 2 0 0 100%
postrfp/web/middleware.py DispatchingMiddleware.__call__ 13 0 0 100%
postrfp/web/middleware.py (no function) 16 0 23 100%
postrfp/web/mounts.py build_app_mounts 10 0 0 100%
postrfp/web/mounts.py (no function) 4 0 0 100%
postrfp/web/request.py HttpRequest.is_https 1 0 0 100%
postrfp/web/request.py HttpRequest.prefers_json 3 0 0 100%
postrfp/web/request.py (no function) 6 0 0 100%
postrfp/web/suxint/__init__.py (no function) 7 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.__init__ 15 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.validate 3 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.print_enum 3 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.validate_enums 8 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.typed 12 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.__call__ 5 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.extract 0 0 1 100%
postrfp/web/suxint/extractors.py ArgExtractor.update_openapi_path_object 14 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.augment_openapi_path_object 0 0 1 100%
postrfp/web/suxint/extractors.py ArgExtractor.swagger_type 1 0 0 100%
postrfp/web/suxint/extractors.py ArgExtractor.doc_name 1 0 0 100%
postrfp/web/suxint/extractors.py PathArg.__init__ 3 0 0 100%
postrfp/web/suxint/extractors.py PathArg.extract 9 0 0 100%
postrfp/web/suxint/extractors.py PathArg.doc_name 1 0 0 100%
postrfp/web/suxint/extractors.py GetArg.extract 9 0 0 100%
postrfp/web/suxint/extractors.py GetArgSet.__init__ 4 0 0 100%
postrfp/web/suxint/extractors.py GetArgSet.extract 10 0 0 100%
postrfp/web/suxint/extractors.py GetArgSet.augment_openapi_path_object 6 0 0 100%
postrfp/web/suxint/extractors.py _get_or_create_schema 1 0 0 100%
postrfp/web/suxint/extractors.py PostArg.extract 7 0 0 100%
postrfp/web/suxint/extractors.py PostArg.update_openapi_path_object 6 0 0 100%
postrfp/web/suxint/extractors.py PostFileArg.__init__ 2 0 0 100%
postrfp/web/suxint/extractors.py PostFileArg.extract 4 0 0 100%
postrfp/web/suxint/extractors.py PostFileArg.update_openapi_path_object 4 0 0 100%
postrfp/web/suxint/extractors.py SchemaDocArg.__init__ 4 0 0 100%
postrfp/web/suxint/extractors.py SchemaDocArg.extract 13 0 0 100%
postrfp/web/suxint/extractors.py SchemaDocArg.update_openapi_path_object 1 0 0 100%
postrfp/web/suxint/extractors.py (no function) 61 0 1 100%
postrfp/web/suxint/handler.py Handler.__init__ 8 0 0 100%
postrfp/web/suxint/handler.py Handler.method 1 0 0 100%
postrfp/web/suxint/handler.py Handler.path 4 0 0 100%
postrfp/web/suxint/handler.py Handler.path.lookup 5 0 0 100%
postrfp/web/suxint/handler.py Handler.path_params 4 0 0 100%
postrfp/web/suxint/handler.py Handler.adaptors 4 0 0 100%
postrfp/web/suxint/handler.py Handler.parameters 3 0 0 100%
postrfp/web/suxint/handler.py Handler.required_arguments 1 0 0 100%
postrfp/web/suxint/handler.py Handler.optional_arguments 1 0 0 100%
postrfp/web/suxint/handler.py Handler.docs 8 0 0 100%
postrfp/web/suxint/handler.py Handler.permissions 3 0 0 100%
postrfp/web/suxint/handler.py Handler.errors 3 0 0 100%
postrfp/web/suxint/handler.py Handler.return_annotation 6 0 0 100%
postrfp/web/suxint/handler.py Handler.return_value 3 0 0 100%
postrfp/web/suxint/handler.py Handler.__repr__ 0 0 3 100%
postrfp/web/suxint/handler.py DocString.__init__ 4 0 0 100%
postrfp/web/suxint/handler.py DocString._key 1 0 0 100%
postrfp/web/suxint/handler.py DocString.intro 2 0 0 100%
postrfp/web/suxint/handler.py DocString.permissions 1 0 0 100%
postrfp/web/suxint/handler.py DocString.errors 1 0 0 100%
postrfp/web/suxint/handler.py (no function) 42 0 1 100%
postrfp/web/suxint/openapi.py any_of_fix 6 0 0 100%
postrfp/web/suxint/openapi.py servers_object 1 0 0 100%
postrfp/web/suxint/openapi.py add_model_components 12 0 2 100%
postrfp/web/suxint/openapi.py create_spec 23 0 0 100%
postrfp/web/suxint/openapi.py (no function) 13 0 0 100%
postrfp/web/suxint/sux.py Sux.__init__ 21 0 0 100%
postrfp/web/suxint/sux.py Sux.load_handler_module 5 0 0 100%
postrfp/web/suxint/sux.py Sux.load_handler_cache 2 0 0 100%
postrfp/web/suxint/sux.py Sux.load_adaptors 7 0 0 100%
postrfp/web/suxint/sux.py Sux.extract_handler_name 7 0 0 100%
postrfp/web/suxint/sux.py Sux.no_matching_handler 7 0 0 100%
postrfp/web/suxint/sux.py Sux.args_for_handler 7 0 0 100%
postrfp/web/suxint/sux.py Sux.__call__ 32 0 0 100%
postrfp/web/suxint/sux.py Sux.run_authoriser 8 0 0 100%
postrfp/web/suxint/sux.py Sux.execute_handler 1 0 0 100%
postrfp/web/suxint/sux.py Sux.iter_handler_modules 4 0 0 100%
postrfp/web/suxint/sux.py Sux.iter_handlers 12 0 0 100%
postrfp/web/suxint/sux.py Sux.handler_by_name 4 0 0 100%
postrfp/web/suxint/sux.py (no function) 31 0 0 100%
postrfp/web/suxint/validate.py validate_handlers 37 0 0 100%
postrfp/web/suxint/validate.py validate_handlers._unwrap_annotated 3 0 0 100%
postrfp/web/suxint/validate.py (no function) 9 0 0 100%
Total   11699 360 785 97%

No items found using the specified filter.