workers-control 0.2.4__tar.gz → 0.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {workers_control-0.2.4/src/workers_control.egg-info → workers_control-0.2.6}/PKG-INFO +3 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/build_support/backend.py +7 -1
- {workers_control-0.2.4 → workers_control-0.2.6}/pyproject.toml +8 -14
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/email_notifications.py +3 -3
- workers_control-0.2.6/src/workers_control/core/interactors/accept_collaboration.py +82 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/accept_coordination_transfer.py +26 -22
- workers_control-0.2.4/src/workers_control/core/interactors/cancel_cooperation_solicitation.py → workers_control-0.2.6/src/workers_control/core/interactors/cancel_collaboration_solicitation.py +5 -5
- workers_control-0.2.4/src/workers_control/core/interactors/create_cooperation.py → workers_control-0.2.6/src/workers_control/core/interactors/create_collaboration.py +21 -19
- workers_control-0.2.6/src/workers_control/core/interactors/deny_collaboration.py +68 -0
- workers_control-0.2.6/src/workers_control/core/interactors/end_collaboration.py +73 -0
- workers_control-0.2.4/src/workers_control/core/interactors/get_coop_summary.py → workers_control-0.2.6/src/workers_control/core/interactors/get_collab_summary.py +22 -22
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_coordination_transfer_request_details.py +19 -17
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_plan_details.py +8 -8
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_statistics.py +7 -3
- workers_control-0.2.6/src/workers_control/core/interactors/list_all_collaborations.py +45 -0
- workers_control-0.2.4/src/workers_control/core/interactors/list_coordinations_of_cooperation.py → workers_control-0.2.6/src/workers_control/core/interactors/list_coordinations_of_collaboration.py +12 -12
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_coordinations_of_company.py +13 -13
- workers_control-0.2.4/src/workers_control/core/interactors/list_my_cooperating_plans.py → workers_control-0.2.6/src/workers_control/core/interactors/list_my_collaborating_plans.py +16 -16
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_transfers.py +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/query_offers.py +8 -8
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_private_consumption.py +5 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_productive_consumption.py +5 -3
- workers_control-0.2.4/src/workers_control/core/interactors/request_cooperation.py → workers_control-0.2.6/src/workers_control/core/interactors/request_collaboration.py +34 -32
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/request_coordination_transfer.py +9 -9
- workers_control-0.2.6/src/workers_control/core/interactors/show_company_collaborations.py +102 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_my_plans.py +16 -16
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_payout_factor_details.py +9 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/records.py +5 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/repositories.py +33 -33
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/services/account_details.py +4 -4
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/services/compensation_transfers.py +10 -10
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/services/price_calculator.py +7 -7
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/transfers.py +1 -1
- workers_control-0.2.6/src/workers_control/db/migrations/versions/d8c3f5a90e21_rename_cooperation_to_collaboration.py +52 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/models.py +9 -9
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/repositories.py +181 -165
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/class_based_view.py +3 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/dependency_injection.py +5 -4
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/flask_colors.py +5 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/flask_session.py +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/forms.py +8 -8
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/mail_service/__init__.py +6 -6
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/plotter.py +76 -22
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/auth/routes.py +7 -7
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/company/blueprint.py +3 -1
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/company/routes.py +36 -32
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/member/blueprint.py +3 -1
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/member/routes.py +7 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/plots/routes.py +2 -1
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/user/blueprint.py +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/user/routes.py +14 -13
- workers_control-0.2.4/src/workers_control/flask/templates/company/create_cooperation.html → workers_control-0.2.6/src/workers_control/flask/templates/company/create_collaboration.html +6 -6
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/dashboard.html +5 -5
- workers_control-0.2.4/src/workers_control/flask/templates/company/my_cooperations.html → workers_control-0.2.6/src/workers_control/flask/templates/company/my_collaborations.html +32 -32
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/my_plans.html +2 -2
- workers_control-0.2.4/src/workers_control/flask/templates/company/request_cooperation.html → workers_control-0.2.6/src/workers_control/flask/templates/company/request_collaboration.html +8 -8
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/request_coordination_transfer.html +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/show_coordination_transfer_request.html +2 -2
- workers_control-0.2.4/src/workers_control/flask/templates/user/coop_summary.html → workers_control-0.2.6/src/workers_control/flask/templates/user/collab_summary.html +10 -10
- workers_control-0.2.4/src/workers_control/flask/templates/user/list_all_cooperations.html → workers_control-0.2.6/src/workers_control/flask/templates/user/list_all_collaborations.html +5 -5
- workers_control-0.2.4/src/workers_control/flask/templates/user/list_coordinations_of_cooperation.html → workers_control-0.2.6/src/workers_control/flask/templates/user/list_coordinations_of_collaboration.html +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/query_offers.html +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/statistics.html +34 -32
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/translations/de/LC_MESSAGES/messages.po +356 -354
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/translations/en/LC_MESSAGES/messages.po +347 -345
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/translations/es/LC_MESSAGES/messages.po +404 -399
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/translations/messages.pot +297 -336
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/url_index.py +12 -10
- workers_control-0.2.4/src/workers_control/flask/views/accept_cooperation_request_view.py → workers_control-0.2.6/src/workers_control/flask/views/accept_collaboration_request_view.py +11 -11
- workers_control-0.2.4/src/workers_control/flask/views/cancel_cooperation_request_view.py → workers_control-0.2.6/src/workers_control/flask/views/cancel_collaboration_request_view.py +9 -9
- workers_control-0.2.4/src/workers_control/flask/views/coop_summary_view.py → workers_control-0.2.6/src/workers_control/flask/views/collab_summary_view.py +12 -12
- workers_control-0.2.4/src/workers_control/flask/views/create_cooperation_view.py → workers_control-0.2.6/src/workers_control/flask/views/create_collaboration_view.py +17 -15
- workers_control-0.2.4/src/workers_control/flask/views/deny_cooperation_view.py → workers_control-0.2.6/src/workers_control/flask/views/deny_collaboration_view.py +13 -13
- workers_control-0.2.4/src/workers_control/flask/views/end_cooperation_view.py → workers_control-0.2.6/src/workers_control/flask/views/end_collaboration_view.py +11 -9
- workers_control-0.2.4/src/workers_control/flask/views/end_plan_cooperation_view.py → workers_control-0.2.6/src/workers_control/flask/views/end_plan_collaboration_view.py +11 -11
- workers_control-0.2.4/src/workers_control/flask/views/list_all_cooperations_view.py → workers_control-0.2.6/src/workers_control/flask/views/list_all_collaborations_view.py +8 -8
- workers_control-0.2.6/src/workers_control/flask/views/list_coordinators_of_collaboration_view.py +34 -0
- workers_control-0.2.4/src/workers_control/flask/views/request_cooperation_view.py → workers_control-0.2.6/src/workers_control/flask/views/request_collaboration_view.py +20 -17
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/request_coordination_transfer_view.py +5 -5
- workers_control-0.2.6/src/workers_control/flask/views/show_my_collaborations_view.py +58 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/signup_member_view.py +2 -2
- workers_control-0.2.4/src/workers_control/web/email/cooperation_request_email_presenter.py → workers_control-0.2.6/src/workers_control/web/email/collaboration_request_email_presenter.py +5 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/email_sender.py +4 -4
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/request_coordination_transfer_presenter.py +3 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/formatters/datetime_formatter.py +3 -1
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/forms/__init__.py +1 -1
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/url_index.py +5 -5
- workers_control-0.2.6/src/workers_control/web/www/controllers/end_collaboration_controller.py +35 -0
- workers_control-0.2.4/src/workers_control/web/www/controllers/request_cooperation_controller.py → workers_control-0.2.6/src/workers_control/web/www/controllers/request_collaboration_controller.py +12 -12
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/request_coordination_transfer_controller.py +3 -3
- workers_control-0.2.6/src/workers_control/web/www/presenters/__init__.py +0 -0
- workers_control-0.2.6/src/workers_control/web/www/presenters/accept_collaboration_request_presenter.py +57 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/accept_coordination_transfer_presenter.py +2 -2
- workers_control-0.2.4/src/workers_control/web/www/presenters/cancel_cooperation_request_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/cancel_collaboration_request_presenter.py +3 -3
- workers_control-0.2.4/src/workers_control/web/www/presenters/create_cooperation_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/create_collaboration_presenter.py +14 -14
- workers_control-0.2.6/src/workers_control/web/www/presenters/deny_collaboration_presenter.py +57 -0
- workers_control-0.2.4/src/workers_control/web/www/presenters/end_cooperation_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/end_collaboration_presenter.py +10 -10
- workers_control-0.2.4/src/workers_control/web/www/presenters/end_plan_cooperation_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/end_plan_collaboration_presenter.py +6 -6
- workers_control-0.2.4/src/workers_control/web/www/presenters/get_coop_summary_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/get_collab_summary_presenter.py +20 -20
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_coordination_transfer_request_details_presenter.py +5 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_plan_details_presenter.py +5 -5
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_statistics_presenter.py +15 -22
- workers_control-0.2.6/src/workers_control/web/www/presenters/list_all_collaborations_presenter.py +52 -0
- workers_control-0.2.4/src/workers_control/web/www/presenters/list_coordinations_of_cooperation_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/list_coordinations_of_collaboration_presenter.py +14 -14
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_transfers_presenter.py +3 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/query_offers_presenter.py +3 -3
- workers_control-0.2.4/src/workers_control/web/www/presenters/request_cooperation_presenter.py → workers_control-0.2.6/src/workers_control/web/www/presenters/request_collaboration_presenter.py +23 -21
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/request_coordination_transfer_presenter.py +6 -6
- workers_control-0.2.6/src/workers_control/web/www/presenters/show_my_collaborations_presenter.py +189 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_my_plans_presenter.py +9 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/transfers.py +2 -2
- {workers_control-0.2.4 → workers_control-0.2.6/src/workers_control.egg-info}/PKG-INFO +3 -3
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control.egg-info/SOURCES.txt +43 -45
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control.egg-info/requires.txt +2 -2
- workers_control-0.2.4/src/workers_control/core/interactors/accept_cooperation.py +0 -80
- workers_control-0.2.4/src/workers_control/core/interactors/deny_cooperation.py +0 -68
- workers_control-0.2.4/src/workers_control/core/interactors/end_cooperation.py +0 -73
- workers_control-0.2.4/src/workers_control/core/interactors/list_all_cooperations.py +0 -41
- workers_control-0.2.4/src/workers_control/core/interactors/preview_private_consumption.py +0 -46
- workers_control-0.2.4/src/workers_control/core/interactors/show_company_cooperations.py +0 -102
- workers_control-0.2.4/src/workers_control/flask/views/__init__.py +0 -25
- workers_control-0.2.4/src/workers_control/flask/views/list_coordinators_of_cooperation_view.py +0 -30
- workers_control-0.2.4/src/workers_control/flask/views/show_my_cooperations_view.py +0 -56
- workers_control-0.2.4/src/workers_control/web/www/controllers/approve_plan_controller.py +0 -10
- workers_control-0.2.4/src/workers_control/web/www/controllers/end_cooperation_controller.py +0 -33
- workers_control-0.2.4/src/workers_control/web/www/controllers/reject_plan_controller.py +0 -10
- workers_control-0.2.4/src/workers_control/web/www/presenters/accept_cooperation_request_presenter.py +0 -59
- workers_control-0.2.4/src/workers_control/web/www/presenters/deny_cooperation_presenter.py +0 -58
- workers_control-0.2.4/src/workers_control/web/www/presenters/list_all_cooperations_presenter.py +0 -48
- workers_control-0.2.4/src/workers_control/web/www/presenters/show_my_cooperations_presenter.py +0 -187
- {workers_control-0.2.4 → workers_control-0.2.6}/LICENSE +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/MANIFEST.in +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/README.rst +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/build_support/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/build_support/babel.cfg +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/build_support/project.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/build_support/translations.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/setup.cfg +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/accountant_notifications.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/anonymization.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/control_thresholds.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/datetime_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/decimal.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/email.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/injector.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/answer_company_work_invite.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/approve_plan.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/change_user_email_address.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/change_user_name.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/change_user_password.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/confirm_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/confirm_member.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/create_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/create_draft_from_plan.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/create_plan_draft.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/deactivate_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/delete_draft.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/edit_draft.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/file_plan_with_accounting.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_accountant_dashboard.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_company_dashboard.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_company_summary.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_draft_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_member_dashboard.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_plan_for_review.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_private_consumption_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_productive_consumption_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/get_user_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/hide_plan.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/invite_worker_to_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_active_plans_of_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_available_languages.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_basic_services_of_worker.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_pending_work_invites.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_plans_with_pending_review.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_registered_hours_worked.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/list_workers.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/log_in_accountant.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/log_in_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/log_in_member.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/query_companies.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/query_company_consumptions.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/query_private_consumptions.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_accountant.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_hours_worked.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_member.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_private_consumption_of_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/register_productive_consumption_of_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/reject_plan.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/remove_worker_from_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/request_email_address_change.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/request_user_password_reset.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/resend_confirmation_mail.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/resend_work_invite.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/review_registered_consumptions.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/revoke_plan_filing.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/select_private_consumption.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/select_private_consumption_of_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/select_productive_consumption.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/select_productive_consumption_of_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/send_accountant_registration_token.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_a_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_company_accounts.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_company_work_invite_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_member_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_p_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_prd_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_psf_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/interactors/show_r_account_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/password_hasher.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/services/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/services/payout_factor.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/services/psf_balance.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/db.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/alembic.ini +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/env.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/script.py.mako +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/17911726c134_add_deactivated_on_to_basic_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/399a221ebea4_add_private_consumption_of_basic_.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/480a749375de_drop_transaction_table.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/4fd90069eb82_remove_social_accounting_account.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/686f2af1cbfe_add_basic_service_transfer_types.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/68ac7ccf6086_create_table_emailoutbox.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/7a4d0412c2a7_add_productive_consumption_of_basic_.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/a3e7b2c1d4f5_use_native_uuid_column_types.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/b40539bf0293_add_basic_service_table.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/c5e8a9d0f1b2_add_taxes_to_basic_service_consumptions.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/c9f2e1a4b8d7_add_outbox_status_columns.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/db/migrations/versions/f4a9c2e1b6d3_replace_plan_review_with_plan_rejection.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/email_sending_worker/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/email_sending_worker/interface.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/email_sending_worker/smtp_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/email_sending_worker/worker.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/babel.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/commands.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/config/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/config/checks.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/config/loader.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/config/options.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/config/production_defaults.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/context_processors.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/control_thresholds.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/database.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/datetime.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/email_configuration.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/extensions.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/filters.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/flask_request.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/language_repository.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/logging_config.json +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/mail_sender/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/mail_service/interface.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/mail_service/mail_storage_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/notifications.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/password_hasher.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/payout_factor.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/profiling.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/accountant/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/accountant/blueprint.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/accountant/routes.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/auth/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/company/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/healthcheck/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/healthcheck/blueprint.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/member/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/plots/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/routes/user/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/static/bulma.css +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/static/colors.css +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/static/favicon.ico +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/static/main.css +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/static/main.js +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/static/main.module.js +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/accountant/dashboard.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/accountant/notification-about-new-plan.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/accountant/plans-to-review-list.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/accountant/review_plan.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/accountant_invitation.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/activate.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/help.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/login_accountant.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/login_company.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/login_member.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/password_reset_confirmation_email.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/request_password_reset.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/reset_password.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/reset_password_email.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/reset_password_invalid.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/signup_accountant.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/signup_company.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/signup_member.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/start.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/unconfirmed_company.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/auth/unconfirmed_member.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/base.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/consumption_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/create_draft.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/draft_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/invite_worker_to_company.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/list_pending_work_invites.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/list_registered_hours_worked.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/my_consumptions.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/register_hours_worked.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/register_productive_consumption.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/register_productive_consumption_of_basic_service.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/rejected_plan_notification.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/remove_worker_from_company.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/company/review_registered_consumptions.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/at.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/basket-shopping.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/book.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/calendar.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/chart-line.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/chart-pie.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/check.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/copy.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/credit-card.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/edit.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/envelope.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/exchange-alt.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/exclamation-triangle.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/eye-slashed.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/eye.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/file-circle-plus.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/file.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/hands-helping.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/hourglass.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/industry.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/info-circle.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/key.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/list.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/oil-can.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/redo.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/square-arrow-up-right.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/times.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/trash.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/user.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/icons/users.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/company_summary.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/copy_toggle.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/draft_form.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/form_field_error.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/language_selection.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/navbar.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/navigation.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/pagination.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/plan_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/show_notifications.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/tooltips.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/macros/transfers.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/basic_services.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/consumption_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/consumptions.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/create_basic_service.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/dashboard.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/my_account.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/notification-about-work-invitation.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/register_private_consumption.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/register_private_consumption_of_basic_service.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/member/show_company_work_invite_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/account_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/account_psf.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/change_user_name.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/company_account_a.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/company_account_p.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/company_account_prd.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/company_account_r.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/company_accounts.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/company_summary.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/confirm_email_address_change.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/http_error.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/list_transfers.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/name_change_confirmation.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/plan_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/query_companies.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/request_email_address_change.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/request_email_change_notification.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/request_email_change_warning.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/show_basic_service.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/templates/user/show_payout_factor_details.html +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/text_renderer.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/token.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/translator.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/types.py +0 -0
- {workers_control-0.2.4/src/workers_control/web → workers_control-0.2.6/src/workers_control/flask/views}/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/accountant_invitation_email_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/change_email_address_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/change_user_name_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/company_dashboard_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/company_work_invite_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/create_basic_service_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/create_draft_from_plan_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/create_draft_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/deactivate_basic_service_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/delete_draft_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/draft_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/file_plan_with_accounting_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/get_plan_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/get_private_consumption_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/get_productive_consumption_details.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/get_statistics_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/healthcheck_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/hide_plan_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/http_error_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/invite_worker_to_company.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/list_basic_services_of_worker_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/list_pending_work_invites_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/list_registered_hours_worked_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/list_transfers.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/log_in_accountant_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/log_in_company_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/log_in_member_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/member_dashboard_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/query_companies.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/query_company_consumptions_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/query_offers.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/query_private_consumptions.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/register_hours_worked_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/register_private_consumption.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/register_private_consumption_of_basic_service_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/register_productive_consumption.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/register_productive_consumption_of_basic_service_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/remove_worker_from_company_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/request_email_address_change_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/request_password_reset_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/resend_confirmation_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/reset_password_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/review_plan_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/review_registered_consumptions_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/revoke_plan_filing_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_a_account_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_basic_service_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_company_accounts_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_coordination_transfer_request_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_member_account_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_my_plans_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_p_account_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_payout_factor_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_prd_account_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_psf_account_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/show_r_account_details_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/signup_accountant_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/views/signup_company_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/flask/wsgi.py +0 -0
- {workers_control-0.2.4/src/workers_control/web/formatters → workers_control-0.2.6/src/workers_control/web}/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/colors.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/accountant_invitation_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/company_notifier.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/email_change_confirmation_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/email_change_warning_view.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/invite_worker_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/name_change_confirmation_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/notify_about_worker_removal_from_company_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/notify_accountant_about_new_plan_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/registration_email_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/email/reset_password_email_presenter.py +0 -0
- {workers_control-0.2.4/src/workers_control/web/www → workers_control-0.2.6/src/workers_control/web/formatters}/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/forms/fields.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/forms/formfield_parsers.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/json.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/language_service.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/malformed_input_data.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/notification.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/pagination.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/request.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/session.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/text_renderer.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/token.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/translator.py +0 -0
- {workers_control-0.2.4/src/workers_control/web/www/controllers → workers_control-0.2.6/src/workers_control/web/www}/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/authentication.py +0 -0
- {workers_control-0.2.4/src/workers_control/web/www/presenters → workers_control-0.2.6/src/workers_control/web/www/controllers}/__init__.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/accept_coordination_transfer_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/answer_company_work_invite_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/change_user_email_address_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/change_user_name_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/confirm_company_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/confirm_member_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/create_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/create_draft_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/create_draft_from_plan_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/deactivate_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/delete_draft_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/draft_form_validator.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/edit_draft_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/file_plan_with_accounting_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/get_private_consumption_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/get_productive_consumption_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/invite_worker_to_company_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/list_basic_services_of_worker_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/list_pending_work_invites_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/list_registered_hours_worked_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/list_transfers_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/list_workers_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/log_in_accountant_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/query_companies_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/query_offers_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/query_private_consumptions_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_accountant_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_company_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_hours_worked_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_member_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_private_consumption_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_private_consumption_form_validator.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_private_consumption_of_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_private_consumption_of_basic_service_form_validator.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_productive_consumption_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_productive_consumption_of_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/register_productive_consumption_of_basic_service_form_validator.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/remove_worker_from_company_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/request_email_address_change_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/request_password_reset_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/resend_work_invite_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/reset_password_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/review_plan_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/review_registered_consumptions_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/revoke_plan_filing_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/select_private_consumption_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/select_private_consumption_of_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/select_productive_consumption_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/select_productive_consumption_of_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_a_account_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_basic_service_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_company_accounts_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_company_work_invite_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_p_account_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_prd_account_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/show_r_account_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/controllers/user_account_details_controller.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/navbar.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/answer_company_work_invite_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/approve_plan_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/change_user_email_address_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/change_user_name_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/company_consumptions_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/create_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/create_draft_from_plan_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/create_draft_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/deactivate_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/delete_draft_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/edit_draft_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/file_plan_with_accounting_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_accountant_dashboard_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_company_dashboard_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_company_summary_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_draft_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_member_dashboard_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/get_plan_for_review_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/hide_plan_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/invite_worker_to_company_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_available_languages_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_basic_services_of_worker_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_pending_work_invites_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_plans_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_plans_with_pending_review_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_registered_hours_worked_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/list_workers_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/log_in_accountant_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/log_in_company_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/log_in_member_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/private_consumption_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/private_consumptions_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/productive_consumption_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/query_companies_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_accountant_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_company_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_hours_worked_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_member_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_private_consumption_of_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_private_consumption_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_productive_consumption_of_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/register_productive_consumption_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/reject_plan_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/remove_worker_from_company_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/request_email_address_change_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/request_password_reset_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/resend_work_invite_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/reset_password_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/review_registered_consumptions_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/revoke_plan_filing_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/select_private_consumption_of_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/select_private_consumption_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/select_productive_consumption_of_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/select_productive_consumption_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_a_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_basic_service_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_company_accounts_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_company_work_invite_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_member_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_p_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_payout_factor_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_prd_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_psf_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/show_r_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/presenters/user_account_details_presenter.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/web/www/response.py +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control.egg-info/dependency_links.txt +0 -0
- {workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: workers-control
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: A flask app for labour time accounting.
|
|
5
5
|
License-Expression: AGPL-3.0-or-later
|
|
6
6
|
Project-URL: Source, https://github.com/ida-arbeitszeit/workers-control
|
|
@@ -15,12 +15,12 @@ Description-Content-Type: text/x-rst
|
|
|
15
15
|
License-File: LICENSE
|
|
16
16
|
Requires-Dist: alembic==1.18.1
|
|
17
17
|
Requires-Dist: email-validator==2.3.0
|
|
18
|
-
Requires-Dist: flask
|
|
18
|
+
Requires-Dist: flask<=3.1.3,>=3.1.2
|
|
19
19
|
Requires-Dist: flask-babel==4.0.0
|
|
20
20
|
Requires-Dist: flask-talisman==1.1.0
|
|
21
21
|
Requires-Dist: flask-login==0.6.3
|
|
22
22
|
Requires-Dist: flask-wtf==1.2.2
|
|
23
|
-
Requires-Dist: matplotlib<=3.11.
|
|
23
|
+
Requires-Dist: matplotlib<=3.11.1,>=3.10.9
|
|
24
24
|
Provides-Extra: profiling
|
|
25
25
|
Requires-Dist: flask_profiler; extra == "profiling"
|
|
26
26
|
Dynamic: license-file
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional
|
|
2
|
+
|
|
1
3
|
from setuptools import build_meta as _orig
|
|
2
4
|
from setuptools.build_meta import * # noqa: F403,F401
|
|
3
5
|
|
|
4
6
|
from build_support import translations
|
|
5
7
|
|
|
6
8
|
|
|
7
|
-
def build_wheel(
|
|
9
|
+
def build_wheel( # type: ignore[no-redef]
|
|
10
|
+
wheel_directory: str,
|
|
11
|
+
config_settings: Optional[Dict[str, Any]] = None,
|
|
12
|
+
metadata_directory: Optional[str] = None,
|
|
13
|
+
) -> str:
|
|
8
14
|
translations.compile_messages()
|
|
9
15
|
return _orig.build_wheel(wheel_directory, config_settings, metadata_directory)
|
|
@@ -5,7 +5,7 @@ backend-path = ["."]
|
|
|
5
5
|
|
|
6
6
|
[project]
|
|
7
7
|
name = "workers-control"
|
|
8
|
-
version = "0.2.
|
|
8
|
+
version = "0.2.6"
|
|
9
9
|
description = "A flask app for labour time accounting."
|
|
10
10
|
license = "AGPL-3.0-or-later"
|
|
11
11
|
requires-python = ">=3.13"
|
|
@@ -21,12 +21,12 @@ dependencies = [
|
|
|
21
21
|
# Pin to exact versions, if possible.
|
|
22
22
|
"alembic==1.18.1",
|
|
23
23
|
"email-validator==2.3.0",
|
|
24
|
-
"flask
|
|
24
|
+
"flask>=3.1.2, <=3.1.3", # different versions in stable/unstable nixpkgs
|
|
25
25
|
"flask-babel==4.0.0",
|
|
26
26
|
"flask-talisman==1.1.0",
|
|
27
27
|
"flask-login==0.6.3",
|
|
28
28
|
"flask-wtf==1.2.2",
|
|
29
|
-
"matplotlib>=3.10.9, <=3.11.
|
|
29
|
+
"matplotlib>=3.10.9, <=3.11.1" # different versions in stable/unstable nixpkgs
|
|
30
30
|
]
|
|
31
31
|
|
|
32
32
|
[project.optional-dependencies]
|
|
@@ -68,20 +68,14 @@ exclude = '''
|
|
|
68
68
|
'''
|
|
69
69
|
disable_error_code = "type-abstract"
|
|
70
70
|
explicit_package_bases = true
|
|
71
|
+
disallow_untyped_defs = true
|
|
71
72
|
|
|
72
73
|
[[tool.mypy.overrides]]
|
|
73
74
|
module = [
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
allow_untyped_defs = false
|
|
79
|
-
|
|
80
|
-
[[tool.mypy.overrides]]
|
|
81
|
-
module = [
|
|
82
|
-
"flask_babel",
|
|
83
|
-
"flask_login",
|
|
84
|
-
"flask_wtf",
|
|
75
|
+
"flask_babel.*",
|
|
76
|
+
"flask_login.*",
|
|
77
|
+
"flask_talisman.*",
|
|
78
|
+
"flask_wtf.*",
|
|
85
79
|
"parameterized.*",
|
|
86
80
|
"wtforms.*",
|
|
87
81
|
]
|
{workers_control-0.2.4 → workers_control-0.2.6}/src/workers_control/core/email_notifications.py
RENAMED
|
@@ -64,7 +64,7 @@ class NameChangeConfirmation:
|
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
@dataclass
|
|
67
|
-
class
|
|
67
|
+
class CollaborationRequestEmail:
|
|
68
68
|
coordinator_email_address: str
|
|
69
69
|
coordinator_name: str
|
|
70
70
|
|
|
@@ -73,7 +73,7 @@ class CooperationRequestEmail:
|
|
|
73
73
|
class CoordinationTransferRequest:
|
|
74
74
|
candidate_email: str
|
|
75
75
|
candidate_name: str
|
|
76
|
-
|
|
76
|
+
collaboration_name: str
|
|
77
77
|
transfer_request: UUID
|
|
78
78
|
|
|
79
79
|
|
|
@@ -103,7 +103,7 @@ Message: TypeAlias = Union[
|
|
|
103
103
|
AccountantInvitation,
|
|
104
104
|
AccountantNotificationAboutNewPlan,
|
|
105
105
|
CompanyRegistration,
|
|
106
|
-
|
|
106
|
+
CollaborationRequestEmail,
|
|
107
107
|
CoordinationTransferRequest,
|
|
108
108
|
EmailChangeWarning,
|
|
109
109
|
EmailChangeConfirmation,
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum, auto
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from uuid import UUID
|
|
5
|
+
|
|
6
|
+
from workers_control.core.datetime_service import DatetimeService
|
|
7
|
+
from workers_control.core.repositories import DatabaseGateway
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class AcceptCollaborationRequest:
|
|
12
|
+
requester_id: UUID
|
|
13
|
+
plan_id: UUID
|
|
14
|
+
collaboration_id: UUID
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class AcceptCollaborationResponse:
|
|
19
|
+
class RejectionReason(Exception, Enum):
|
|
20
|
+
plan_not_found = auto()
|
|
21
|
+
collaboration_not_found = auto()
|
|
22
|
+
plan_inactive = auto()
|
|
23
|
+
plan_has_collaboration = auto()
|
|
24
|
+
plan_is_public_service = auto()
|
|
25
|
+
collaboration_was_not_requested = auto()
|
|
26
|
+
requester_is_not_coordinator = auto()
|
|
27
|
+
|
|
28
|
+
rejection_reason: Optional[RejectionReason]
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def is_rejected(self) -> bool:
|
|
32
|
+
return self.rejection_reason is not None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@dataclass
|
|
36
|
+
class AcceptCollaborationInteractor:
|
|
37
|
+
database_gateway: DatabaseGateway
|
|
38
|
+
datetime_service: DatetimeService
|
|
39
|
+
|
|
40
|
+
def execute(
|
|
41
|
+
self, request: AcceptCollaborationRequest
|
|
42
|
+
) -> AcceptCollaborationResponse:
|
|
43
|
+
try:
|
|
44
|
+
self._validate_request(request)
|
|
45
|
+
except AcceptCollaborationResponse.RejectionReason as reason:
|
|
46
|
+
return AcceptCollaborationResponse(rejection_reason=reason)
|
|
47
|
+
plan = self.database_gateway.get_plans().with_id(request.plan_id)
|
|
48
|
+
plan.update().set_collaboration(
|
|
49
|
+
request.collaboration_id
|
|
50
|
+
).set_requested_collaboration(None).perform()
|
|
51
|
+
return AcceptCollaborationResponse(rejection_reason=None)
|
|
52
|
+
|
|
53
|
+
def _validate_request(self, request: AcceptCollaborationRequest) -> None:
|
|
54
|
+
plan_and_collaboration = (
|
|
55
|
+
self.database_gateway.get_plans()
|
|
56
|
+
.with_id(request.plan_id)
|
|
57
|
+
.joined_with_collaboration()
|
|
58
|
+
.first()
|
|
59
|
+
)
|
|
60
|
+
collaboration_and_coordinator = (
|
|
61
|
+
self.database_gateway.get_collaborations()
|
|
62
|
+
.with_id(request.collaboration_id)
|
|
63
|
+
.joined_with_current_coordinator()
|
|
64
|
+
.first()
|
|
65
|
+
)
|
|
66
|
+
now = self.datetime_service.now()
|
|
67
|
+
if collaboration_and_coordinator is None:
|
|
68
|
+
raise AcceptCollaborationResponse.RejectionReason.collaboration_not_found
|
|
69
|
+
collaboration, coordinator = collaboration_and_coordinator
|
|
70
|
+
if plan_and_collaboration is None:
|
|
71
|
+
raise AcceptCollaborationResponse.RejectionReason.plan_not_found
|
|
72
|
+
plan, current_collaboration = plan_and_collaboration
|
|
73
|
+
if not plan.is_active_as_of(now):
|
|
74
|
+
raise AcceptCollaborationResponse.RejectionReason.plan_inactive
|
|
75
|
+
if current_collaboration:
|
|
76
|
+
raise AcceptCollaborationResponse.RejectionReason.plan_has_collaboration
|
|
77
|
+
if plan.is_public_service:
|
|
78
|
+
raise AcceptCollaborationResponse.RejectionReason.plan_is_public_service
|
|
79
|
+
if plan.requested_collaboration != collaboration.id:
|
|
80
|
+
raise AcceptCollaborationResponse.RejectionReason.collaboration_was_not_requested
|
|
81
|
+
if request.requester_id != coordinator.id:
|
|
82
|
+
raise AcceptCollaborationResponse.RejectionReason.requester_is_not_coordinator
|
|
@@ -4,7 +4,7 @@ from typing import Optional
|
|
|
4
4
|
from uuid import UUID
|
|
5
5
|
|
|
6
6
|
from workers_control.core.datetime_service import DatetimeService
|
|
7
|
-
from workers_control.core.records import
|
|
7
|
+
from workers_control.core.records import Collaboration, CoordinationTransferRequest
|
|
8
8
|
from workers_control.core.repositories import DatabaseGateway
|
|
9
9
|
|
|
10
10
|
|
|
@@ -26,7 +26,7 @@ class AcceptCoordinationTransferInteractor:
|
|
|
26
26
|
accepting_company_is_not_candidate = auto()
|
|
27
27
|
|
|
28
28
|
rejection_reason: Optional[RejectionReason]
|
|
29
|
-
|
|
29
|
+
collaboration_id: Optional[UUID]
|
|
30
30
|
transfer_request_id: UUID
|
|
31
31
|
|
|
32
32
|
@property
|
|
@@ -35,63 +35,67 @@ class AcceptCoordinationTransferInteractor:
|
|
|
35
35
|
|
|
36
36
|
def accept_coordination_transfer(self, request: Request) -> Response:
|
|
37
37
|
try:
|
|
38
|
-
transfer_request,
|
|
38
|
+
transfer_request, collaboration = self._validate_request(request)
|
|
39
39
|
except self.Response.RejectionReason as reason:
|
|
40
40
|
return self.Response(
|
|
41
41
|
rejection_reason=reason,
|
|
42
|
-
|
|
42
|
+
collaboration_id=None,
|
|
43
43
|
transfer_request_id=request.transfer_request_id,
|
|
44
44
|
)
|
|
45
|
-
|
|
46
|
-
transfer_request,
|
|
45
|
+
collaboration_id = self._create_new_coordination_tenure(
|
|
46
|
+
transfer_request, collaboration
|
|
47
47
|
)
|
|
48
48
|
return self.Response(
|
|
49
49
|
rejection_reason=None,
|
|
50
|
-
|
|
50
|
+
collaboration_id=collaboration_id,
|
|
51
51
|
transfer_request_id=request.transfer_request_id,
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
def _validate_request(
|
|
55
55
|
self, request: Request
|
|
56
|
-
) -> tuple[CoordinationTransferRequest,
|
|
56
|
+
) -> tuple[CoordinationTransferRequest, Collaboration]:
|
|
57
57
|
result = (
|
|
58
58
|
self.database_gateway.get_coordination_transfer_requests()
|
|
59
59
|
.with_id(request.transfer_request_id)
|
|
60
|
-
.
|
|
60
|
+
.joined_with_collaboration()
|
|
61
61
|
.first()
|
|
62
62
|
)
|
|
63
63
|
if result is None:
|
|
64
64
|
raise self.Response.RejectionReason.transfer_request_not_found
|
|
65
|
-
transfer_request,
|
|
65
|
+
transfer_request, collaboration = result
|
|
66
66
|
if transfer_request.candidate != request.accepting_company:
|
|
67
67
|
raise self.Response.RejectionReason.accepting_company_is_not_candidate
|
|
68
|
-
if self.
|
|
69
|
-
|
|
68
|
+
if self._collaboration_has_a_coordination_tenure_starting_after_transfer_request(
|
|
69
|
+
collaboration=collaboration, transfer_request=transfer_request
|
|
70
70
|
):
|
|
71
71
|
raise self.Response.RejectionReason.transfer_request_closed
|
|
72
|
-
return transfer_request,
|
|
72
|
+
return transfer_request, collaboration
|
|
73
73
|
|
|
74
74
|
def _create_new_coordination_tenure(
|
|
75
|
-
self,
|
|
75
|
+
self,
|
|
76
|
+
transfer_request: CoordinationTransferRequest,
|
|
77
|
+
collaboration: Collaboration,
|
|
76
78
|
) -> UUID:
|
|
77
79
|
new_tenure = self.database_gateway.create_coordination_tenure(
|
|
78
80
|
company=transfer_request.candidate,
|
|
79
|
-
|
|
81
|
+
collaboration=collaboration.id,
|
|
80
82
|
start_date=self.datetime_service.now(),
|
|
81
83
|
)
|
|
82
|
-
return new_tenure.
|
|
84
|
+
return new_tenure.collaboration
|
|
83
85
|
|
|
84
|
-
def
|
|
85
|
-
self,
|
|
86
|
+
def _collaboration_has_a_coordination_tenure_starting_after_transfer_request(
|
|
87
|
+
self,
|
|
88
|
+
transfer_request: CoordinationTransferRequest,
|
|
89
|
+
collaboration: Collaboration,
|
|
86
90
|
) -> bool:
|
|
87
|
-
|
|
91
|
+
latest_coordination_tenure_of_collaboration = (
|
|
88
92
|
self.database_gateway.get_coordination_tenures()
|
|
89
|
-
.
|
|
93
|
+
.of_collaboration(collaboration.id)
|
|
90
94
|
.ordered_by_start_date(ascending=False)
|
|
91
95
|
.first()
|
|
92
96
|
)
|
|
93
|
-
assert
|
|
97
|
+
assert latest_coordination_tenure_of_collaboration
|
|
94
98
|
return (
|
|
95
|
-
|
|
99
|
+
latest_coordination_tenure_of_collaboration.start_date
|
|
96
100
|
> transfer_request.request_date
|
|
97
101
|
)
|
|
@@ -5,23 +5,23 @@ from workers_control.core.repositories import DatabaseGateway
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
@dataclass
|
|
8
|
-
class
|
|
8
|
+
class CancelCollaborationSolicitationRequest:
|
|
9
9
|
requester_id: UUID
|
|
10
10
|
plan_id: UUID
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
@dataclass
|
|
14
|
-
class
|
|
14
|
+
class CancelCollaborationSolicitationInteractor:
|
|
15
15
|
database_gateway: DatabaseGateway
|
|
16
16
|
|
|
17
|
-
def execute(self, request:
|
|
17
|
+
def execute(self, request: CancelCollaborationSolicitationRequest) -> bool:
|
|
18
18
|
plans_changed_count = (
|
|
19
19
|
self.database_gateway.get_plans()
|
|
20
20
|
.with_id(request.plan_id)
|
|
21
21
|
.planned_by(request.requester_id)
|
|
22
|
-
.
|
|
22
|
+
.that_request_collaboration_with_coordinator()
|
|
23
23
|
.update()
|
|
24
|
-
.
|
|
24
|
+
.set_requested_collaboration(None)
|
|
25
25
|
.perform()
|
|
26
26
|
)
|
|
27
27
|
return bool(plans_changed_count)
|
|
@@ -9,20 +9,20 @@ from workers_control.core.repositories import DatabaseGateway
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
@dataclass
|
|
12
|
-
class
|
|
12
|
+
class CreateCollaborationRequest:
|
|
13
13
|
coordinator_id: UUID
|
|
14
14
|
name: str
|
|
15
15
|
definition: str
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
@dataclass
|
|
19
|
-
class
|
|
19
|
+
class CreateCollaborationResponse:
|
|
20
20
|
class RejectionReason(Exception, Enum):
|
|
21
21
|
coordinator_not_found = auto()
|
|
22
|
-
|
|
22
|
+
collaboration_with_name_exists = auto()
|
|
23
23
|
|
|
24
24
|
rejection_reason: Optional[RejectionReason]
|
|
25
|
-
|
|
25
|
+
collaboration_id: Optional[UUID]
|
|
26
26
|
|
|
27
27
|
@property
|
|
28
28
|
def is_rejected(self) -> bool:
|
|
@@ -30,19 +30,21 @@ class CreateCooperationResponse:
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
@dataclass
|
|
33
|
-
class
|
|
33
|
+
class CreateCollaborationInteractor:
|
|
34
34
|
datetime_service: DatetimeService
|
|
35
35
|
database_gateway: DatabaseGateway
|
|
36
36
|
|
|
37
|
-
def execute(
|
|
37
|
+
def execute(
|
|
38
|
+
self, request: CreateCollaborationRequest
|
|
39
|
+
) -> CreateCollaborationResponse:
|
|
38
40
|
try:
|
|
39
41
|
coordinator = self._validate_request(request)
|
|
40
|
-
except
|
|
41
|
-
return
|
|
42
|
-
rejection_reason=reason,
|
|
42
|
+
except CreateCollaborationResponse.RejectionReason as reason:
|
|
43
|
+
return CreateCollaborationResponse(
|
|
44
|
+
rejection_reason=reason, collaboration_id=None
|
|
43
45
|
)
|
|
44
46
|
account = self.database_gateway.create_account()
|
|
45
|
-
|
|
47
|
+
collaboration = self.database_gateway.create_collaboration(
|
|
46
48
|
self.datetime_service.now(),
|
|
47
49
|
request.name,
|
|
48
50
|
request.definition,
|
|
@@ -50,26 +52,26 @@ class CreateCooperationInteractor:
|
|
|
50
52
|
)
|
|
51
53
|
self.database_gateway.create_coordination_tenure(
|
|
52
54
|
company=coordinator.id,
|
|
53
|
-
|
|
55
|
+
collaboration=collaboration.id,
|
|
54
56
|
start_date=self.datetime_service.now(),
|
|
55
57
|
)
|
|
56
|
-
return
|
|
57
|
-
rejection_reason=None,
|
|
58
|
+
return CreateCollaborationResponse(
|
|
59
|
+
rejection_reason=None, collaboration_id=collaboration.id
|
|
58
60
|
)
|
|
59
61
|
|
|
60
|
-
def _validate_request(self, request:
|
|
62
|
+
def _validate_request(self, request: CreateCollaborationRequest) -> Company:
|
|
61
63
|
coordinator = (
|
|
62
64
|
self.database_gateway.get_companies()
|
|
63
65
|
.with_id(request.coordinator_id)
|
|
64
66
|
.first()
|
|
65
67
|
)
|
|
66
|
-
|
|
67
|
-
self.database_gateway.
|
|
68
|
+
collabs_with_requested_name = (
|
|
69
|
+
self.database_gateway.get_collaborations().with_name_ignoring_case(
|
|
68
70
|
request.name
|
|
69
71
|
)
|
|
70
72
|
)
|
|
71
73
|
if coordinator is None:
|
|
72
|
-
raise
|
|
73
|
-
if
|
|
74
|
-
raise
|
|
74
|
+
raise CreateCollaborationResponse.RejectionReason.coordinator_not_found
|
|
75
|
+
if collabs_with_requested_name:
|
|
76
|
+
raise CreateCollaborationResponse.RejectionReason.collaboration_with_name_exists
|
|
75
77
|
return coordinator
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum, auto
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from uuid import UUID
|
|
5
|
+
|
|
6
|
+
from workers_control.core.datetime_service import DatetimeService
|
|
7
|
+
from workers_control.core.repositories import DatabaseGateway
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class DenyCollaborationRequest:
|
|
12
|
+
requester_id: UUID
|
|
13
|
+
plan_id: UUID
|
|
14
|
+
collaboration_id: UUID
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class DenyCollaborationResponse:
|
|
19
|
+
class RejectionReason(Exception, Enum):
|
|
20
|
+
plan_not_found = auto()
|
|
21
|
+
collaboration_not_found = auto()
|
|
22
|
+
collaboration_was_not_requested = auto()
|
|
23
|
+
requester_is_not_coordinator = auto()
|
|
24
|
+
plan_is_inactive = auto()
|
|
25
|
+
|
|
26
|
+
rejection_reason: Optional[RejectionReason]
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def is_rejected(self) -> bool:
|
|
30
|
+
return self.rejection_reason is not None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass
|
|
34
|
+
class DenyCollaborationInteractor:
|
|
35
|
+
database_gateway: DatabaseGateway
|
|
36
|
+
datetime_service: DatetimeService
|
|
37
|
+
|
|
38
|
+
def execute(self, request: DenyCollaborationRequest) -> DenyCollaborationResponse:
|
|
39
|
+
try:
|
|
40
|
+
self._validate_request(request)
|
|
41
|
+
except DenyCollaborationResponse.RejectionReason as reason:
|
|
42
|
+
return DenyCollaborationResponse(rejection_reason=reason)
|
|
43
|
+
|
|
44
|
+
self.database_gateway.get_plans().with_id(
|
|
45
|
+
request.plan_id
|
|
46
|
+
).update().set_requested_collaboration(None).perform()
|
|
47
|
+
return DenyCollaborationResponse(rejection_reason=None)
|
|
48
|
+
|
|
49
|
+
def _validate_request(self, request: DenyCollaborationRequest) -> None:
|
|
50
|
+
plan = self.database_gateway.get_plans().with_id(request.plan_id).first()
|
|
51
|
+
now = self.datetime_service.now()
|
|
52
|
+
collaboration_and_coordinator = (
|
|
53
|
+
self.database_gateway.get_collaborations()
|
|
54
|
+
.with_id(request.collaboration_id)
|
|
55
|
+
.joined_with_current_coordinator()
|
|
56
|
+
.first()
|
|
57
|
+
)
|
|
58
|
+
if not collaboration_and_coordinator:
|
|
59
|
+
raise DenyCollaborationResponse.RejectionReason.collaboration_not_found
|
|
60
|
+
collaboration, coordinator = collaboration_and_coordinator
|
|
61
|
+
if plan is None:
|
|
62
|
+
raise DenyCollaborationResponse.RejectionReason.plan_not_found
|
|
63
|
+
if not plan.is_active_as_of(now):
|
|
64
|
+
raise DenyCollaborationResponse.RejectionReason.plan_is_inactive
|
|
65
|
+
if plan.requested_collaboration != collaboration.id:
|
|
66
|
+
raise DenyCollaborationResponse.RejectionReason.collaboration_was_not_requested
|
|
67
|
+
if request.requester_id != coordinator.id:
|
|
68
|
+
raise DenyCollaborationResponse.RejectionReason.requester_is_not_coordinator
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum, auto
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from uuid import UUID
|
|
5
|
+
|
|
6
|
+
from workers_control.core.repositories import DatabaseGateway
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class EndCollaborationRequest:
|
|
11
|
+
requester_id: UUID
|
|
12
|
+
plan_id: UUID
|
|
13
|
+
collaboration_id: UUID
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass
|
|
17
|
+
class EndCollaborationResponse:
|
|
18
|
+
class RejectionReason(Exception, Enum):
|
|
19
|
+
plan_not_found = auto()
|
|
20
|
+
collaboration_not_found = auto()
|
|
21
|
+
plan_has_no_collaboration = auto()
|
|
22
|
+
requester_is_not_authorized = auto()
|
|
23
|
+
|
|
24
|
+
rejection_reason: Optional[RejectionReason]
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def is_rejected(self) -> bool:
|
|
28
|
+
return self.rejection_reason is not None
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass
|
|
32
|
+
class EndCollaborationInteractor:
|
|
33
|
+
database_gateway: DatabaseGateway
|
|
34
|
+
|
|
35
|
+
def execute(self, request: EndCollaborationRequest) -> EndCollaborationResponse:
|
|
36
|
+
try:
|
|
37
|
+
self._validate_request(request)
|
|
38
|
+
except EndCollaborationResponse.RejectionReason as reason:
|
|
39
|
+
return EndCollaborationResponse(rejection_reason=reason)
|
|
40
|
+
assert (
|
|
41
|
+
self.database_gateway.get_plans()
|
|
42
|
+
.with_id(request.plan_id)
|
|
43
|
+
.update()
|
|
44
|
+
.set_collaboration(None)
|
|
45
|
+
.perform()
|
|
46
|
+
)
|
|
47
|
+
return EndCollaborationResponse(rejection_reason=None)
|
|
48
|
+
|
|
49
|
+
def _validate_request(self, request: EndCollaborationRequest) -> None:
|
|
50
|
+
plan_and_collaboration = (
|
|
51
|
+
self.database_gateway.get_plans()
|
|
52
|
+
.with_id(request.plan_id)
|
|
53
|
+
.joined_with_collaboration()
|
|
54
|
+
.first()
|
|
55
|
+
)
|
|
56
|
+
collaboration_and_coordinator = (
|
|
57
|
+
self.database_gateway.get_collaborations()
|
|
58
|
+
.with_id(request.collaboration_id)
|
|
59
|
+
.joined_with_current_coordinator()
|
|
60
|
+
.first()
|
|
61
|
+
)
|
|
62
|
+
if not collaboration_and_coordinator:
|
|
63
|
+
raise EndCollaborationResponse.RejectionReason.collaboration_not_found
|
|
64
|
+
if plan_and_collaboration is None:
|
|
65
|
+
raise EndCollaborationResponse.RejectionReason.plan_not_found
|
|
66
|
+
plan, current_collaboration = plan_and_collaboration
|
|
67
|
+
if not current_collaboration:
|
|
68
|
+
raise EndCollaborationResponse.RejectionReason.plan_has_no_collaboration
|
|
69
|
+
coordinator = collaboration_and_coordinator[1]
|
|
70
|
+
if (request.requester_id != coordinator.id) and (
|
|
71
|
+
request.requester_id != plan.planner
|
|
72
|
+
):
|
|
73
|
+
raise EndCollaborationResponse.RejectionReason.requester_is_not_authorized
|
|
@@ -10,9 +10,9 @@ from workers_control.core.services.price_calculator import PriceCalculator
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
@dataclass
|
|
13
|
-
class
|
|
13
|
+
class GetCollabSummaryRequest:
|
|
14
14
|
requester_id: UUID
|
|
15
|
-
|
|
15
|
+
collab_id: UUID
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
@dataclass
|
|
@@ -26,50 +26,50 @@ class AssociatedPlan:
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
@dataclass
|
|
29
|
-
class
|
|
29
|
+
class GetCollabSummaryResponse:
|
|
30
30
|
requester_is_coordinator: bool
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
collab_id: UUID
|
|
32
|
+
collab_name: str
|
|
33
|
+
collab_definition: str
|
|
34
34
|
current_coordinator: UUID
|
|
35
35
|
current_coordinator_name: str
|
|
36
|
-
|
|
36
|
+
collab_price: Optional[Decimal]
|
|
37
37
|
plans: List[AssociatedPlan]
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
@dataclass
|
|
41
|
-
class
|
|
41
|
+
class GetCollabSummaryInteractor:
|
|
42
42
|
database_gateway: DatabaseGateway
|
|
43
43
|
price_calculator: PriceCalculator
|
|
44
44
|
datetime_service: DatetimeService
|
|
45
45
|
|
|
46
46
|
def execute(
|
|
47
|
-
self, request:
|
|
48
|
-
) -> Optional[
|
|
49
|
-
|
|
50
|
-
self.database_gateway.
|
|
51
|
-
.with_id(request.
|
|
47
|
+
self, request: GetCollabSummaryRequest
|
|
48
|
+
) -> Optional[GetCollabSummaryResponse]:
|
|
49
|
+
collab_and_coordinator = (
|
|
50
|
+
self.database_gateway.get_collaborations()
|
|
51
|
+
.with_id(request.collab_id)
|
|
52
52
|
.joined_with_current_coordinator()
|
|
53
53
|
.first()
|
|
54
54
|
)
|
|
55
|
-
if
|
|
55
|
+
if collab_and_coordinator is None:
|
|
56
56
|
return None
|
|
57
|
-
|
|
57
|
+
collab, coordinator = collab_and_coordinator
|
|
58
58
|
now = self.datetime_service.now()
|
|
59
59
|
plan_result = (
|
|
60
60
|
self.database_gateway.get_plans()
|
|
61
|
-
.
|
|
61
|
+
.that_are_part_of_collaboration(request.collab_id)
|
|
62
62
|
.that_will_expire_after(now)
|
|
63
63
|
)
|
|
64
64
|
plans = list(plan_result)
|
|
65
|
-
return
|
|
65
|
+
return GetCollabSummaryResponse(
|
|
66
66
|
requester_is_coordinator=coordinator.id == request.requester_id,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
collab_id=collab.id,
|
|
68
|
+
collab_name=collab.name,
|
|
69
|
+
collab_definition=collab.definition,
|
|
70
70
|
current_coordinator=coordinator.id,
|
|
71
71
|
current_coordinator_name=coordinator.name,
|
|
72
|
-
|
|
72
|
+
collab_price=self._get_collaborative_price(plans),
|
|
73
73
|
plans=self._get_associated_plans(plans, request.requester_id),
|
|
74
74
|
)
|
|
75
75
|
|
|
@@ -78,7 +78,7 @@ class GetCoopSummaryInteractor:
|
|
|
78
78
|
assert planner
|
|
79
79
|
return planner.name
|
|
80
80
|
|
|
81
|
-
def
|
|
81
|
+
def _get_collaborative_price(self, plans: list[Plan]) -> Optional[Decimal]:
|
|
82
82
|
if not plans:
|
|
83
83
|
return None
|
|
84
84
|
return self.price_calculator.calculate_price(plans[0].id)
|