From 87f5dcbcdc7c70a45f45c5d8b19d5be081e88048 Mon Sep 17 00:00:00 2001 From: Gio Date: Wed, 23 Feb 2022 19:21:51 +0000 Subject: [PATCH 1/3] 1st poetry --- .env.example | 45 + .envrc.example | 21 + .gitignore | 6 +- .python-version | 1 + README.md | 7 +- crm/server_settings.py | 47 - manage_local.py => manage_local.py.obsolete | 0 poetry.lock | 1721 +++++++++++++++++ pyproject.toml | 94 + requirements.txt => requirements.txt.obsolete | 0 setup.py => setup.py.obsolete | 0 {accounts => src/accounts}/__init__.py | 0 {accounts => src/accounts}/apps.py | 0 .../accounts}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190128_1237.py | 0 .../migrations/0003_auto_20190201_1840.py | 0 .../migrations/0004_account_status.py | 0 .../migrations/0005_auto_20190212_1334.py | 0 .../migrations/0006_auto_20190212_1708.py | 0 .../accounts}/migrations/0007_email.py | 0 .../migrations/0008_account_assigned_to.py | 0 .../migrations/0009_auto_20190809_1659.py | 0 .../migrations/0010_account_teams.py | 0 .../migrations/0011_account_company.py | 0 .../migrations/0012_remove_account_company.py | 0 .../migrations/0013_auto_20210913_1918.py | 0 .../0014_rename_company_account_org.py | 0 .../migrations/0015_alter_account_org.py | 0 .../accounts}/migrations/__init__.py | 0 {accounts => src/accounts}/models.py | 0 {accounts => src/accounts}/serializer.py | 0 {accounts => src/accounts}/swagger_params.py | 0 {accounts => src/accounts}/tasks.py | 0 .../accounts}/tests_celery_tasks.py | 0 {accounts => src/accounts}/urls.py | 0 {accounts => src/accounts}/views.py | 0 {cases => src/cases}/__init__.py | 0 {cases => src/cases}/apps.py | 0 .../cases}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190128_1237.py | 0 .../migrations/0003_auto_20190212_1334.py | 0 .../cases}/migrations/0004_case_teams.py | 0 .../cases}/migrations/0005_case_company.py | 0 .../migrations/0006_auto_20210323_1747.py | 0 .../migrations/0007_remove_case_company.py | 0 .../migrations/0008_auto_20210913_1918.py | 0 .../0009_rename_company_case_org.py | 0 .../cases}/migrations/0010_alter_case_org.py | 0 {cases => src/cases}/migrations/__init__.py | 0 {cases => src/cases}/models.py | 0 {cases => src/cases}/serializer.py | 0 {cases => src/cases}/swagger_params.py | 0 {cases => src/cases}/tasks.py | 0 {cases => src/cases}/tests_celery_tasks.py | 0 {cases => src/cases}/urls.py | 0 {cases => src/cases}/views.py | 0 {common => src/common}/__init__.py | 0 .../common}/access_decorators_mixins.py | 0 {common => src/common}/admin.py | 0 {common => src/common}/app_urls/__init__.py | 0 {common => src/common}/apps.py | 0 .../common}/context_processors/__init__.py | 0 .../common}/context_processors/common.py | 0 {common => src/common}/custom_auth.py | 0 {common => src/common}/middleware/__init__.py | 0 .../common}/middleware/get_company.py | 0 .../common}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190128_1237.py | 0 .../common}/migrations/0003_document.py | 0 .../migrations/0004_attachments_case.py | 0 .../migrations/0005_auto_20190204_1400.py | 0 .../common}/migrations/0006_comment_user.py | 0 .../migrations/0007_auto_20190212_1334.py | 0 .../common}/migrations/0008_google.py | 0 .../migrations/0009_document_shared_to.py | 0 .../common}/migrations/0010_apisettings.py | 0 .../migrations/0011_auto_20190218_1230.py | 0 .../migrations/0012_apisettings_website.py | 0 .../migrations/0013_auto_20190508_1540.py | 0 .../migrations/0014_auto_20190524_1113.py | 0 .../migrations/0015_auto_20190604_1830.py | 0 .../migrations/0016_auto_20190624_1816.py | 0 .../migrations/0017_auto_20190722_1443.py | 0 .../common}/migrations/0018_document_teams.py | 0 .../migrations/0019_auto_20200401_0941.py | 0 .../migrations/0020_auto_20200409_1653.py | 0 .../migrations/0021_document_company.py | 0 .../migrations/0022_auto_20200609_1203.py | 0 .../migrations/0023_apisettings_company.py | 0 .../migrations/0024_remove_user_company.py | 0 .../migrations/0025_auto_20210324_1307.py | 0 .../migrations/0026_auto_20210325_1923.py | 0 .../migrations/0027_auto_20210418_1112.py | 0 .../common}/migrations/0028_user_phone.py | 0 .../migrations/0029_auto_20210730_1328.py | 0 .../migrations/0030_alter_user_role.py | 0 .../migrations/0031_auto_20210805_1214.py | 0 .../migrations/0032_remove_user_user_type.py | 0 .../0033_alter_user_alternate_email.py | 0 .../migrations/0034_auto_20210913_1918.py | 0 .../0035_remove_company_sub_domain.py | 0 .../migrations/0036_auto_20210922_1801.py | 0 .../migrations/0037_alter_profile_org.py | 0 .../migrations/0038_auto_20220120_1318.py | 0 .../migrations/0039_auto_20220202_2023.py | 0 {common => src/common}/migrations/__init__.py | 0 {common => src/common}/models.py | 0 {common => src/common}/serializer.py | 0 {common => src/common}/status.py | 0 {common => src/common}/swagger_params.py | 0 {common => src/common}/tasks.py | 0 .../common}/templates/comment_email.html | 0 .../templates/password_reset_email.html | 0 .../common}/templates/user_delete_email.html | 0 .../common}/templates/user_status.html | 0 .../templates/user_status_activate.html | 0 .../templates/user_status_deactivate.html | 0 .../common}/templates/user_status_in.html | 0 .../common}/templatetags/__init__.py | 0 .../common}/templatetags/common_tags.py | 0 {common => src/common}/tests_celery_tasks.py | 0 {common => src/common}/token_generator.py | 0 {common => src/common}/urls.py | 0 {common => src/common}/utils.py | 0 {common => src/common}/views.py | 0 {contacts => src/contacts}/__init__.py | 0 {contacts => src/contacts}/admin.py | 0 {contacts => src/contacts}/apps.py | 0 .../contacts}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190210_1810.py | 0 .../migrations/0002_auto_20190212_1334.py | 0 .../migrations/0003_merge_20190214_1427.py | 0 .../migrations/0004_contact_teams.py | 0 .../migrations/0005_contact_company.py | 0 .../migrations/0006_remove_contact_company.py | 0 .../migrations/0007_auto_20210716_1554.py | 0 .../migrations/0008_auto_20210913_1918.py | 0 .../0009_rename_company_contact_org.py | 0 .../migrations/0010_auto_20211006_1251.py | 0 .../contacts}/migrations/__init__.py | 0 {contacts => src/contacts}/models.py | 0 {contacts => src/contacts}/serializer.py | 0 {contacts => src/contacts}/swagger_params.py | 0 {contacts => src/contacts}/tasks.py | 0 .../contacts}/tests_celery_tasks.py | 0 {contacts => src/contacts}/urls.py | 0 {contacts => src/contacts}/views.py | 0 {crm => src/crm}/__init__.py | 0 {crm => src/crm}/celery.py | 0 src/crm/environ.py | 31 + src/crm/server_settings.py | 50 + {crm => src/crm}/settings.py | 42 +- {crm => src/crm}/urls.py | 0 {crm => src/crm}/wsgi.py | 0 {emails => src/emails}/__init__.py | 0 {emails => src/emails}/admin.py | 0 {emails => src/emails}/apps.py | 0 {emails => src/emails}/forms.py | 0 .../emails}/migrations/0001_initial.py | 0 {emails => src/emails}/migrations/__init__.py | 0 {emails => src/emails}/models.py | 0 {emails => src/emails}/serializer.py | 0 .../emails}/templates/create_mail.html | 0 {emails => src/emails}/templates/emails.html | 0 .../emails}/templates/mail_all.html | 0 .../emails}/templates/mail_center.html | 0 .../emails}/templates/mail_drafts.html | 0 .../emails}/templates/mail_important.html | 0 .../emails}/templates/mail_sent.html | 0 .../emails}/templates/mail_trash.html | 0 {emails => src/emails}/tests.py | 0 {emails => src/emails}/urls.py | 0 {emails => src/emails}/views.py | 0 {events => src/events}/__init__.py | 0 {events => src/events}/admin.py | 0 {events => src/events}/apps.py | 0 .../events}/migrations/0001_initial.py | 0 .../migrations/0002_event_date_of_meeting.py | 0 .../events}/migrations/0003_event_teams.py | 0 .../events}/migrations/0004_event_company.py | 0 .../migrations/0005_remove_event_company.py | 0 .../migrations/0006_auto_20210913_1918.py | 0 .../0007_rename_company_event_org.py | 0 {events => src/events}/migrations/__init__.py | 0 {events => src/events}/models.py | 0 {events => src/events}/serializer.py | 0 {events => src/events}/swagger_params.py | 0 {events => src/events}/tasks.py | 0 .../assigned_to_email_template_event.html | 0 {events => src/events}/tests_celery_tasks.py | 0 {events => src/events}/urls.py | 0 {events => src/events}/views.py | 0 {invoices => src/invoices}/__init__.py | 0 {invoices => src/invoices}/admin.py | 0 {invoices => src/invoices}/api_urls.py | 0 {invoices => src/invoices}/api_views.py | 0 {invoices => src/invoices}/apps.py | 0 {invoices => src/invoices}/forms.py | 0 .../invoices}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190524_1113.py | 0 .../migrations/0003_auto_20190527_1620.py | 0 .../migrations/0004_auto_20190603_1844.py | 0 .../migrations/0005_invoicehistory.py | 0 .../migrations/0006_invoice_account.py | 0 .../migrations/0007_auto_20190909_1621.py | 0 .../migrations/0008_invoice_teams.py | 0 .../migrations/0009_invoice_company.py | 0 .../invoices}/migrations/0010_invoice_tax.py | 0 .../0011_rename_company_invoice_org.py | 0 .../invoices}/migrations/__init__.py | 0 {invoices => src/invoices}/models.py | 0 {invoices => src/invoices}/serializer.py | 0 {invoices => src/invoices}/swagger_params.py | 0 {invoices => src/invoices}/tasks.py | 0 .../templates/assigned_to_email_template.html | 0 .../templates/invoice_cancelled.html | 0 .../invoices}/templates/invoice_create_1.html | 0 .../templates/invoice_detail_email.html | 0 .../templates/invoice_download_pdf.html | 0 .../invoices}/templates/invoices_create.html | 0 .../invoices}/templates/invoices_detail.html | 0 .../templates/invoices_detail_1.html | 0 .../invoices}/templates/invoices_list.html | 0 {invoices => src/invoices}/tests.py | 0 .../invoices}/tests_celery_tasks.py | 0 {invoices => src/invoices}/urls.py | 0 {invoices => src/invoices}/views.py | 0 {leads => src/leads}/__init__.py | 0 {leads => src/leads}/admin.py | 0 {leads => src/leads}/apps.py | 0 {leads => src/leads}/forms.py | 0 .../leads}/migrations/0001_initial.py | 0 .../leads}/migrations/0002_lead_tags.py | 0 .../migrations/0003_auto_20190211_1142.py | 0 .../migrations/0004_auto_20190212_1334.py | 0 .../migrations/0005_auto_20190212_1708.py | 0 .../migrations/0006_auto_20190218_1217.py | 0 .../migrations/0007_auto_20190306_1226.py | 0 .../migrations/0008_auto_20190315_1503.py | 0 .../migrations/0009_lead_created_from_site.py | 0 .../leads}/migrations/0010_lead_teams.py | 0 .../migrations/0011_auto_20200401_0937.py | 0 .../leads}/migrations/0012_lead_company.py | 0 .../migrations/0013_remove_lead_company.py | 0 .../migrations/0014_auto_20210324_1208.py | 0 .../migrations/0015_auto_20210913_1918.py | 0 .../0016_rename_company_lead_org.py | 0 .../leads}/migrations/0017_alter_lead_org.py | 0 .../migrations/0018_auto_20211022_1731.py | 0 .../migrations/0019_auto_20211022_1732.py | 0 {leads => src/leads}/migrations/__init__.py | 0 {leads => src/leads}/models.py | 0 {leads => src/leads}/serializer.py | 0 {leads => src/leads}/swagger_params.py | 0 {leads => src/leads}/tasks.py | 0 {leads => src/leads}/tests_celery_tasks.py | 0 {leads => src/leads}/urls.py | 0 {leads => src/leads}/views.py | 0 {opportunity => src/opportunity}/__init__.py | 0 {opportunity => src/opportunity}/admin.py | 0 {opportunity => src/opportunity}/apps.py | 0 .../opportunity}/migrations/0001_initial.py | 0 .../migrations/0002_opportunity_tags.py | 0 .../migrations/0003_auto_20190212_1334.py | 0 .../migrations/0004_opportunity_teams.py | 0 .../migrations/0005_opportunity_company.py | 0 .../0006_remove_opportunity_company.py | 0 .../migrations/0007_auto_20210913_1918.py | 0 .../0008_rename_company_opportunity_org.py | 0 .../migrations/0009_auto_20211006_1251.py | 0 .../opportunity}/migrations/__init__.py | 0 {opportunity => src/opportunity}/models.py | 0 .../opportunity}/serializer.py | 0 .../opportunity}/swagger_params.py | 0 {opportunity => src/opportunity}/tasks.py | 0 .../opportunity}/tests_celery_tasks.py | 0 {opportunity => src/opportunity}/urls.py | 0 {opportunity => src/opportunity}/views.py | 0 {planner => src/planner}/__init__.py | 0 {planner => src/planner}/admin.py | 0 {planner => src/planner}/apps.py | 0 {planner => src/planner}/forms.py | 0 .../planner}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190212_1334.py | 0 .../planner}/migrations/__init__.py | 0 {planner => src/planner}/models.py | 0 {planner => src/planner}/serializer.py | 0 {planner => src/planner}/templates/calls.html | 0 .../planner}/templates/calls_list.html | 0 .../planner}/templates/contacts.html | 0 .../planner}/templates/dialog_models.html | 0 .../planner}/templates/events_base.html | 0 {planner => src/planner}/templates/leads.html | 0 .../planner}/templates/meetings.html | 0 .../planner}/templates/meetings_list.html | 0 .../planner}/templates/reminder.html | 0 {planner => src/planner}/templates/tasks.html | 0 .../planner}/templates/tasks_list.html | 0 {planner => src/planner}/templates/users.html | 0 {planner => src/planner}/tests.py | 0 {planner => src/planner}/urls.py | 0 {planner => src/planner}/views.py | 0 {tasks => src/tasks}/__init__.py | 0 {tasks => src/tasks}/admin.py | 0 {tasks => src/tasks}/apps.py | 0 {tasks => src/tasks}/celery_tasks.py | 0 .../tasks}/migrations/0001_initial.py | 0 .../tasks}/migrations/0002_task_created_by.py | 0 .../tasks}/migrations/0003_task_created_on.py | 0 .../tasks}/migrations/0004_task_teams.py | 0 .../tasks}/migrations/0005_task_company.py | 0 .../migrations/0006_remove_task_company.py | 0 .../migrations/0007_auto_20210913_1918.py | 0 .../0008_rename_company_task_org.py | 0 .../tasks}/migrations/0009_alter_task_org.py | 0 {tasks => src/tasks}/migrations/__init__.py | 0 {tasks => src/tasks}/models.py | 0 {tasks => src/tasks}/serializer.py | 0 {tasks => src/tasks}/swagger_params.py | 0 .../templates/tasks_email_template.html | 0 {tasks => src/tasks}/tests_celery_tasks.py | 0 {tasks => src/tasks}/urls.py | 0 {tasks => src/tasks}/utils.py | 0 {tasks => src/tasks}/views.py | 0 {teams => src/teams}/__init__.py | 0 {teams => src/teams}/admin.py | 0 {teams => src/teams}/apps.py | 0 .../teams}/migrations/0001_initial.py | 0 .../migrations/0002_auto_20190624_1250.py | 0 .../migrations/0003_auto_20190909_1621.py | 0 .../teams}/migrations/0004_teams_company.py | 0 .../migrations/0005_remove_teams_company.py | 0 .../migrations/0006_auto_20210913_1918.py | 0 .../0007_rename_company_teams_org.py | 0 {teams => src/teams}/migrations/__init__.py | 0 {teams => src/teams}/models.py | 0 {teams => src/teams}/serializer.py | 0 {teams => src/teams}/swagger_params.py | 0 {teams => src/teams}/tasks.py | 0 {teams => src/teams}/urls.py | 0 {teams => src/teams}/views.py | 0 .../assigned_to/account_assigned.html | 0 .../assigned_to/cases_assigned.html | 0 .../assigned_to/contact_assigned.html | 0 .../assigned_to/leads_assigned.html | 0 .../assigned_to/opportunity_assigned.html | 0 {templates => src/templates}/base.html | 0 .../registration/password_reset_email.html | 0 {templates => src/templates}/root.html | 0 .../templates}/root_email_template.html | 0 .../templates}/root_email_template_new.html | 0 351 files changed, 1990 insertions(+), 75 deletions(-) create mode 100644 .env.example create mode 100644 .envrc.example create mode 100644 .python-version delete mode 100644 crm/server_settings.py rename manage_local.py => manage_local.py.obsolete (100%) create mode 100644 poetry.lock create mode 100644 pyproject.toml rename requirements.txt => requirements.txt.obsolete (100%) rename setup.py => setup.py.obsolete (100%) rename {accounts => src/accounts}/__init__.py (100%) rename {accounts => src/accounts}/apps.py (100%) rename {accounts => src/accounts}/migrations/0001_initial.py (100%) rename {accounts => src/accounts}/migrations/0002_auto_20190128_1237.py (100%) rename {accounts => src/accounts}/migrations/0003_auto_20190201_1840.py (100%) rename {accounts => src/accounts}/migrations/0004_account_status.py (100%) rename {accounts => src/accounts}/migrations/0005_auto_20190212_1334.py (100%) rename {accounts => src/accounts}/migrations/0006_auto_20190212_1708.py (100%) rename {accounts => src/accounts}/migrations/0007_email.py (100%) rename {accounts => src/accounts}/migrations/0008_account_assigned_to.py (100%) rename {accounts => src/accounts}/migrations/0009_auto_20190809_1659.py (100%) rename {accounts => src/accounts}/migrations/0010_account_teams.py (100%) rename {accounts => src/accounts}/migrations/0011_account_company.py (100%) rename {accounts => src/accounts}/migrations/0012_remove_account_company.py (100%) rename {accounts => src/accounts}/migrations/0013_auto_20210913_1918.py (100%) rename {accounts => src/accounts}/migrations/0014_rename_company_account_org.py (100%) rename {accounts => src/accounts}/migrations/0015_alter_account_org.py (100%) rename {accounts => src/accounts}/migrations/__init__.py (100%) rename {accounts => src/accounts}/models.py (100%) rename {accounts => src/accounts}/serializer.py (100%) rename {accounts => src/accounts}/swagger_params.py (100%) rename {accounts => src/accounts}/tasks.py (100%) rename {accounts => src/accounts}/tests_celery_tasks.py (100%) rename {accounts => src/accounts}/urls.py (100%) rename {accounts => src/accounts}/views.py (100%) rename {cases => src/cases}/__init__.py (100%) rename {cases => src/cases}/apps.py (100%) rename {cases => src/cases}/migrations/0001_initial.py (100%) rename {cases => src/cases}/migrations/0002_auto_20190128_1237.py (100%) rename {cases => src/cases}/migrations/0003_auto_20190212_1334.py (100%) rename {cases => src/cases}/migrations/0004_case_teams.py (100%) rename {cases => src/cases}/migrations/0005_case_company.py (100%) rename {cases => src/cases}/migrations/0006_auto_20210323_1747.py (100%) rename {cases => src/cases}/migrations/0007_remove_case_company.py (100%) rename {cases => src/cases}/migrations/0008_auto_20210913_1918.py (100%) rename {cases => src/cases}/migrations/0009_rename_company_case_org.py (100%) rename {cases => src/cases}/migrations/0010_alter_case_org.py (100%) rename {cases => src/cases}/migrations/__init__.py (100%) rename {cases => src/cases}/models.py (100%) rename {cases => src/cases}/serializer.py (100%) rename {cases => src/cases}/swagger_params.py (100%) rename {cases => src/cases}/tasks.py (100%) rename {cases => src/cases}/tests_celery_tasks.py (100%) rename {cases => src/cases}/urls.py (100%) rename {cases => src/cases}/views.py (100%) rename {common => src/common}/__init__.py (100%) rename {common => src/common}/access_decorators_mixins.py (100%) rename {common => src/common}/admin.py (100%) rename {common => src/common}/app_urls/__init__.py (100%) rename {common => src/common}/apps.py (100%) rename {common => src/common}/context_processors/__init__.py (100%) rename {common => src/common}/context_processors/common.py (100%) rename {common => src/common}/custom_auth.py (100%) rename {common => src/common}/middleware/__init__.py (100%) rename {common => src/common}/middleware/get_company.py (100%) rename {common => src/common}/migrations/0001_initial.py (100%) rename {common => src/common}/migrations/0002_auto_20190128_1237.py (100%) rename {common => src/common}/migrations/0003_document.py (100%) rename {common => src/common}/migrations/0004_attachments_case.py (100%) rename {common => src/common}/migrations/0005_auto_20190204_1400.py (100%) rename {common => src/common}/migrations/0006_comment_user.py (100%) rename {common => src/common}/migrations/0007_auto_20190212_1334.py (100%) rename {common => src/common}/migrations/0008_google.py (100%) rename {common => src/common}/migrations/0009_document_shared_to.py (100%) rename {common => src/common}/migrations/0010_apisettings.py (100%) rename {common => src/common}/migrations/0011_auto_20190218_1230.py (100%) rename {common => src/common}/migrations/0012_apisettings_website.py (100%) rename {common => src/common}/migrations/0013_auto_20190508_1540.py (100%) rename {common => src/common}/migrations/0014_auto_20190524_1113.py (100%) rename {common => src/common}/migrations/0015_auto_20190604_1830.py (100%) rename {common => src/common}/migrations/0016_auto_20190624_1816.py (100%) rename {common => src/common}/migrations/0017_auto_20190722_1443.py (100%) rename {common => src/common}/migrations/0018_document_teams.py (100%) rename {common => src/common}/migrations/0019_auto_20200401_0941.py (100%) rename {common => src/common}/migrations/0020_auto_20200409_1653.py (100%) rename {common => src/common}/migrations/0021_document_company.py (100%) rename {common => src/common}/migrations/0022_auto_20200609_1203.py (100%) rename {common => src/common}/migrations/0023_apisettings_company.py (100%) rename {common => src/common}/migrations/0024_remove_user_company.py (100%) rename {common => src/common}/migrations/0025_auto_20210324_1307.py (100%) rename {common => src/common}/migrations/0026_auto_20210325_1923.py (100%) rename {common => src/common}/migrations/0027_auto_20210418_1112.py (100%) rename {common => src/common}/migrations/0028_user_phone.py (100%) rename {common => src/common}/migrations/0029_auto_20210730_1328.py (100%) rename {common => src/common}/migrations/0030_alter_user_role.py (100%) rename {common => src/common}/migrations/0031_auto_20210805_1214.py (100%) rename {common => src/common}/migrations/0032_remove_user_user_type.py (100%) rename {common => src/common}/migrations/0033_alter_user_alternate_email.py (100%) rename {common => src/common}/migrations/0034_auto_20210913_1918.py (100%) rename {common => src/common}/migrations/0035_remove_company_sub_domain.py (100%) rename {common => src/common}/migrations/0036_auto_20210922_1801.py (100%) rename {common => src/common}/migrations/0037_alter_profile_org.py (100%) rename {common => src/common}/migrations/0038_auto_20220120_1318.py (100%) rename {common => src/common}/migrations/0039_auto_20220202_2023.py (100%) rename {common => src/common}/migrations/__init__.py (100%) rename {common => src/common}/models.py (100%) rename {common => src/common}/serializer.py (100%) rename {common => src/common}/status.py (100%) rename {common => src/common}/swagger_params.py (100%) rename {common => src/common}/tasks.py (100%) rename {common => src/common}/templates/comment_email.html (100%) rename {common => src/common}/templates/password_reset_email.html (100%) rename {common => src/common}/templates/user_delete_email.html (100%) rename {common => src/common}/templates/user_status.html (100%) rename {common => src/common}/templates/user_status_activate.html (100%) rename {common => src/common}/templates/user_status_deactivate.html (100%) rename {common => src/common}/templates/user_status_in.html (100%) rename {common => src/common}/templatetags/__init__.py (100%) rename {common => src/common}/templatetags/common_tags.py (100%) rename {common => src/common}/tests_celery_tasks.py (100%) rename {common => src/common}/token_generator.py (100%) rename {common => src/common}/urls.py (100%) rename {common => src/common}/utils.py (100%) rename {common => src/common}/views.py (100%) rename {contacts => src/contacts}/__init__.py (100%) rename {contacts => src/contacts}/admin.py (100%) rename {contacts => src/contacts}/apps.py (100%) rename {contacts => src/contacts}/migrations/0001_initial.py (100%) rename {contacts => src/contacts}/migrations/0002_auto_20190210_1810.py (100%) rename {contacts => src/contacts}/migrations/0002_auto_20190212_1334.py (100%) rename {contacts => src/contacts}/migrations/0003_merge_20190214_1427.py (100%) rename {contacts => src/contacts}/migrations/0004_contact_teams.py (100%) rename {contacts => src/contacts}/migrations/0005_contact_company.py (100%) rename {contacts => src/contacts}/migrations/0006_remove_contact_company.py (100%) rename {contacts => src/contacts}/migrations/0007_auto_20210716_1554.py (100%) rename {contacts => src/contacts}/migrations/0008_auto_20210913_1918.py (100%) rename {contacts => src/contacts}/migrations/0009_rename_company_contact_org.py (100%) rename {contacts => src/contacts}/migrations/0010_auto_20211006_1251.py (100%) rename {contacts => src/contacts}/migrations/__init__.py (100%) rename {contacts => src/contacts}/models.py (100%) rename {contacts => src/contacts}/serializer.py (100%) rename {contacts => src/contacts}/swagger_params.py (100%) rename {contacts => src/contacts}/tasks.py (100%) rename {contacts => src/contacts}/tests_celery_tasks.py (100%) rename {contacts => src/contacts}/urls.py (100%) rename {contacts => src/contacts}/views.py (100%) rename {crm => src/crm}/__init__.py (100%) rename {crm => src/crm}/celery.py (100%) create mode 100644 src/crm/environ.py create mode 100644 src/crm/server_settings.py rename {crm => src/crm}/settings.py (86%) rename {crm => src/crm}/urls.py (100%) rename {crm => src/crm}/wsgi.py (100%) rename {emails => src/emails}/__init__.py (100%) rename {emails => src/emails}/admin.py (100%) rename {emails => src/emails}/apps.py (100%) rename {emails => src/emails}/forms.py (100%) rename {emails => src/emails}/migrations/0001_initial.py (100%) rename {emails => src/emails}/migrations/__init__.py (100%) rename {emails => src/emails}/models.py (100%) rename {emails => src/emails}/serializer.py (100%) rename {emails => src/emails}/templates/create_mail.html (100%) rename {emails => src/emails}/templates/emails.html (100%) rename {emails => src/emails}/templates/mail_all.html (100%) rename {emails => src/emails}/templates/mail_center.html (100%) rename {emails => src/emails}/templates/mail_drafts.html (100%) rename {emails => src/emails}/templates/mail_important.html (100%) rename {emails => src/emails}/templates/mail_sent.html (100%) rename {emails => src/emails}/templates/mail_trash.html (100%) rename {emails => src/emails}/tests.py (100%) rename {emails => src/emails}/urls.py (100%) rename {emails => src/emails}/views.py (100%) rename {events => src/events}/__init__.py (100%) rename {events => src/events}/admin.py (100%) rename {events => src/events}/apps.py (100%) rename {events => src/events}/migrations/0001_initial.py (100%) rename {events => src/events}/migrations/0002_event_date_of_meeting.py (100%) rename {events => src/events}/migrations/0003_event_teams.py (100%) rename {events => src/events}/migrations/0004_event_company.py (100%) rename {events => src/events}/migrations/0005_remove_event_company.py (100%) rename {events => src/events}/migrations/0006_auto_20210913_1918.py (100%) rename {events => src/events}/migrations/0007_rename_company_event_org.py (100%) rename {events => src/events}/migrations/__init__.py (100%) rename {events => src/events}/models.py (100%) rename {events => src/events}/serializer.py (100%) rename {events => src/events}/swagger_params.py (100%) rename {events => src/events}/tasks.py (100%) rename {events => src/events}/templates/assigned_to_email_template_event.html (100%) rename {events => src/events}/tests_celery_tasks.py (100%) rename {events => src/events}/urls.py (100%) rename {events => src/events}/views.py (100%) rename {invoices => src/invoices}/__init__.py (100%) rename {invoices => src/invoices}/admin.py (100%) rename {invoices => src/invoices}/api_urls.py (100%) rename {invoices => src/invoices}/api_views.py (100%) rename {invoices => src/invoices}/apps.py (100%) rename {invoices => src/invoices}/forms.py (100%) rename {invoices => src/invoices}/migrations/0001_initial.py (100%) rename {invoices => src/invoices}/migrations/0002_auto_20190524_1113.py (100%) rename {invoices => src/invoices}/migrations/0003_auto_20190527_1620.py (100%) rename {invoices => src/invoices}/migrations/0004_auto_20190603_1844.py (100%) rename {invoices => src/invoices}/migrations/0005_invoicehistory.py (100%) rename {invoices => src/invoices}/migrations/0006_invoice_account.py (100%) rename {invoices => src/invoices}/migrations/0007_auto_20190909_1621.py (100%) rename {invoices => src/invoices}/migrations/0008_invoice_teams.py (100%) rename {invoices => src/invoices}/migrations/0009_invoice_company.py (100%) rename {invoices => src/invoices}/migrations/0010_invoice_tax.py (100%) rename {invoices => src/invoices}/migrations/0011_rename_company_invoice_org.py (100%) rename {invoices => src/invoices}/migrations/__init__.py (100%) rename {invoices => src/invoices}/models.py (100%) rename {invoices => src/invoices}/serializer.py (100%) rename {invoices => src/invoices}/swagger_params.py (100%) rename {invoices => src/invoices}/tasks.py (100%) rename {invoices => src/invoices}/templates/assigned_to_email_template.html (100%) rename {invoices => src/invoices}/templates/invoice_cancelled.html (100%) rename {invoices => src/invoices}/templates/invoice_create_1.html (100%) rename {invoices => src/invoices}/templates/invoice_detail_email.html (100%) rename {invoices => src/invoices}/templates/invoice_download_pdf.html (100%) rename {invoices => src/invoices}/templates/invoices_create.html (100%) rename {invoices => src/invoices}/templates/invoices_detail.html (100%) rename {invoices => src/invoices}/templates/invoices_detail_1.html (100%) rename {invoices => src/invoices}/templates/invoices_list.html (100%) rename {invoices => src/invoices}/tests.py (100%) rename {invoices => src/invoices}/tests_celery_tasks.py (100%) rename {invoices => src/invoices}/urls.py (100%) rename {invoices => src/invoices}/views.py (100%) rename {leads => src/leads}/__init__.py (100%) rename {leads => src/leads}/admin.py (100%) rename {leads => src/leads}/apps.py (100%) rename {leads => src/leads}/forms.py (100%) rename {leads => src/leads}/migrations/0001_initial.py (100%) rename {leads => src/leads}/migrations/0002_lead_tags.py (100%) rename {leads => src/leads}/migrations/0003_auto_20190211_1142.py (100%) rename {leads => src/leads}/migrations/0004_auto_20190212_1334.py (100%) rename {leads => src/leads}/migrations/0005_auto_20190212_1708.py (100%) rename {leads => src/leads}/migrations/0006_auto_20190218_1217.py (100%) rename {leads => src/leads}/migrations/0007_auto_20190306_1226.py (100%) rename {leads => src/leads}/migrations/0008_auto_20190315_1503.py (100%) rename {leads => src/leads}/migrations/0009_lead_created_from_site.py (100%) rename {leads => src/leads}/migrations/0010_lead_teams.py (100%) rename {leads => src/leads}/migrations/0011_auto_20200401_0937.py (100%) rename {leads => src/leads}/migrations/0012_lead_company.py (100%) rename {leads => src/leads}/migrations/0013_remove_lead_company.py (100%) rename {leads => src/leads}/migrations/0014_auto_20210324_1208.py (100%) rename {leads => src/leads}/migrations/0015_auto_20210913_1918.py (100%) rename {leads => src/leads}/migrations/0016_rename_company_lead_org.py (100%) rename {leads => src/leads}/migrations/0017_alter_lead_org.py (100%) rename {leads => src/leads}/migrations/0018_auto_20211022_1731.py (100%) rename {leads => src/leads}/migrations/0019_auto_20211022_1732.py (100%) rename {leads => src/leads}/migrations/__init__.py (100%) rename {leads => src/leads}/models.py (100%) rename {leads => src/leads}/serializer.py (100%) rename {leads => src/leads}/swagger_params.py (100%) rename {leads => src/leads}/tasks.py (100%) rename {leads => src/leads}/tests_celery_tasks.py (100%) rename {leads => src/leads}/urls.py (100%) rename {leads => src/leads}/views.py (100%) rename {opportunity => src/opportunity}/__init__.py (100%) rename {opportunity => src/opportunity}/admin.py (100%) rename {opportunity => src/opportunity}/apps.py (100%) rename {opportunity => src/opportunity}/migrations/0001_initial.py (100%) rename {opportunity => src/opportunity}/migrations/0002_opportunity_tags.py (100%) rename {opportunity => src/opportunity}/migrations/0003_auto_20190212_1334.py (100%) rename {opportunity => src/opportunity}/migrations/0004_opportunity_teams.py (100%) rename {opportunity => src/opportunity}/migrations/0005_opportunity_company.py (100%) rename {opportunity => src/opportunity}/migrations/0006_remove_opportunity_company.py (100%) rename {opportunity => src/opportunity}/migrations/0007_auto_20210913_1918.py (100%) rename {opportunity => src/opportunity}/migrations/0008_rename_company_opportunity_org.py (100%) rename {opportunity => src/opportunity}/migrations/0009_auto_20211006_1251.py (100%) rename {opportunity => src/opportunity}/migrations/__init__.py (100%) rename {opportunity => src/opportunity}/models.py (100%) rename {opportunity => src/opportunity}/serializer.py (100%) rename {opportunity => src/opportunity}/swagger_params.py (100%) rename {opportunity => src/opportunity}/tasks.py (100%) rename {opportunity => src/opportunity}/tests_celery_tasks.py (100%) rename {opportunity => src/opportunity}/urls.py (100%) rename {opportunity => src/opportunity}/views.py (100%) rename {planner => src/planner}/__init__.py (100%) rename {planner => src/planner}/admin.py (100%) rename {planner => src/planner}/apps.py (100%) rename {planner => src/planner}/forms.py (100%) rename {planner => src/planner}/migrations/0001_initial.py (100%) rename {planner => src/planner}/migrations/0002_auto_20190212_1334.py (100%) rename {planner => src/planner}/migrations/__init__.py (100%) rename {planner => src/planner}/models.py (100%) rename {planner => src/planner}/serializer.py (100%) rename {planner => src/planner}/templates/calls.html (100%) rename {planner => src/planner}/templates/calls_list.html (100%) rename {planner => src/planner}/templates/contacts.html (100%) rename {planner => src/planner}/templates/dialog_models.html (100%) rename {planner => src/planner}/templates/events_base.html (100%) rename {planner => src/planner}/templates/leads.html (100%) rename {planner => src/planner}/templates/meetings.html (100%) rename {planner => src/planner}/templates/meetings_list.html (100%) rename {planner => src/planner}/templates/reminder.html (100%) rename {planner => src/planner}/templates/tasks.html (100%) rename {planner => src/planner}/templates/tasks_list.html (100%) rename {planner => src/planner}/templates/users.html (100%) rename {planner => src/planner}/tests.py (100%) rename {planner => src/planner}/urls.py (100%) rename {planner => src/planner}/views.py (100%) rename {tasks => src/tasks}/__init__.py (100%) rename {tasks => src/tasks}/admin.py (100%) rename {tasks => src/tasks}/apps.py (100%) rename {tasks => src/tasks}/celery_tasks.py (100%) rename {tasks => src/tasks}/migrations/0001_initial.py (100%) rename {tasks => src/tasks}/migrations/0002_task_created_by.py (100%) rename {tasks => src/tasks}/migrations/0003_task_created_on.py (100%) rename {tasks => src/tasks}/migrations/0004_task_teams.py (100%) rename {tasks => src/tasks}/migrations/0005_task_company.py (100%) rename {tasks => src/tasks}/migrations/0006_remove_task_company.py (100%) rename {tasks => src/tasks}/migrations/0007_auto_20210913_1918.py (100%) rename {tasks => src/tasks}/migrations/0008_rename_company_task_org.py (100%) rename {tasks => src/tasks}/migrations/0009_alter_task_org.py (100%) rename {tasks => src/tasks}/migrations/__init__.py (100%) rename {tasks => src/tasks}/models.py (100%) rename {tasks => src/tasks}/serializer.py (100%) rename {tasks => src/tasks}/swagger_params.py (100%) rename {tasks => src/tasks}/templates/tasks_email_template.html (100%) rename {tasks => src/tasks}/tests_celery_tasks.py (100%) rename {tasks => src/tasks}/urls.py (100%) rename {tasks => src/tasks}/utils.py (100%) rename {tasks => src/tasks}/views.py (100%) rename {teams => src/teams}/__init__.py (100%) rename {teams => src/teams}/admin.py (100%) rename {teams => src/teams}/apps.py (100%) rename {teams => src/teams}/migrations/0001_initial.py (100%) rename {teams => src/teams}/migrations/0002_auto_20190624_1250.py (100%) rename {teams => src/teams}/migrations/0003_auto_20190909_1621.py (100%) rename {teams => src/teams}/migrations/0004_teams_company.py (100%) rename {teams => src/teams}/migrations/0005_remove_teams_company.py (100%) rename {teams => src/teams}/migrations/0006_auto_20210913_1918.py (100%) rename {teams => src/teams}/migrations/0007_rename_company_teams_org.py (100%) rename {teams => src/teams}/migrations/__init__.py (100%) rename {teams => src/teams}/models.py (100%) rename {teams => src/teams}/serializer.py (100%) rename {teams => src/teams}/swagger_params.py (100%) rename {teams => src/teams}/tasks.py (100%) rename {teams => src/teams}/urls.py (100%) rename {teams => src/teams}/views.py (100%) rename {templates => src/templates}/assigned_to/account_assigned.html (100%) rename {templates => src/templates}/assigned_to/cases_assigned.html (100%) rename {templates => src/templates}/assigned_to/contact_assigned.html (100%) rename {templates => src/templates}/assigned_to/leads_assigned.html (100%) rename {templates => src/templates}/assigned_to/opportunity_assigned.html (100%) rename {templates => src/templates}/base.html (100%) rename {templates => src/templates}/registration/password_reset_email.html (100%) rename {templates => src/templates}/root.html (100%) rename {templates => src/templates}/root_email_template.html (100%) rename {templates => src/templates}/root_email_template_new.html (100%) diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..d4ce64754 --- /dev/null +++ b/.env.example @@ -0,0 +1,45 @@ +# Environment variables + +#SECRET_KEY="asnc34c29823v23v3v23" + +DEBUG=True +DOMAIN_NAME="example.com" +TIME_ZONE="Europe/London" + +ALLOWED_HOSTS=127.0.0.1,localhost,.example.com + +# AWS +#AWS_BUCKET_NAME +# +#AWS_ACCESS_KEY_ID +#AWS_SECRET_ACCESS_KEY +#AWS_SES_REGION_NAME +#AWS_SES_REGION_ENDPOINT + + +# DB +#DBNAME=ktcrm +#DBUSER=postgres +#DBPASSWORD=oracol0 +#DBHOST=172.0.0.1 +#DBPORT=5432 +DATABASE_URL="postgres://postgres:password@172.17.0.1:5432/ktcrm" + +# Sentry +SENTRY_DSN=http://a43.....d4df3ea@172.17.0.1:9000/5 + +# Celery +#CELERY_BROKER_URL="redis://172.17.0.1:6379/9" +#CELERY_RESULT_BACKEND="redis://172.17.0.1:6379/10" + +# Swagger +SWAGGER_ROOT_URL="http://swagger.ktcrm.example.com" + +#CACHES +MEMCACHELOCATION="172.17.0.1:11211" + +# Email +DEFAULT_FROM_EMAIL="trac@example.com" +MARKETING_REPLY_EMAIL="info@example.com" +PASSWORD_RESET_MAIL_FROM_USER="trac@example.com" +ADMIN_EMAIL="admin@example.com" diff --git a/.envrc.example b/.envrc.example new file mode 100644 index 000000000..64128350b --- /dev/null +++ b/.envrc.example @@ -0,0 +1,21 @@ +dotenv + +layout_poetry() { + if [[ ! -f pyproject.toml ]]; then + log_error 'No pyproject.toml found. Use `poetry new` or `poetry init` to create one first.' + exit 2 + fi + + # local VENV=$(poetry env list --full-path | cut -d' ' -f1) + local VENV='.venv' + if [[ -z $VENV || ! -d $VENV/bin ]]; then + log_error 'No created poetry virtual environment found. Use `poetry install` to create one first.' + exit 2 + fi + VENV=$VENV/bin + export VIRTUAL_ENV=$(echo "$VENV" | rev | cut -d'/' -f2- | rev) + export POETRY_ACTIVE=1 + PATH_add "$VENV" +} + +layout poetry diff --git a/.gitignore b/.gitignore index 3a3cfe2a8..c29cf850a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,10 @@ ref.css.map crm/dev_settings\.py env .env +.envrc +.direnv +.history +dist docs/build celerybeat-schedule local_settings.py @@ -24,4 +28,4 @@ media .sass-cache server.log .vscode -static \ No newline at end of file +static diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..11aaa0686 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.9.5 diff --git a/README.md b/README.md index c086f7872..9dee0ca90 100644 --- a/README.md +++ b/README.md @@ -48,10 +48,11 @@ virtualenv venv source venv/bin/activate ``` -* Install the project's dependencie +* Install the project's dependencies ``` -pip install -r requirements.txt +# pip install -r requirements.txt +poetry install ``` #### env variables @@ -63,7 +64,7 @@ pip install -r requirements.txt python manage.py migrate python manage.py runserver ``` -Then open http://localhost:8000 in your borwser and create a new account with test as company name. We mapped `test.localhost` to `127.0.0.1`. So, it should work properly. +Then open http://localhost:8000 in your browser and create a new account with test as company name. We mapped `test.localhost` to `127.0.0.1`. So, it should work properly. diff --git a/crm/server_settings.py b/crm/server_settings.py deleted file mode 100644 index 1822f7724..000000000 --- a/crm/server_settings.py +++ /dev/null @@ -1,47 +0,0 @@ -import os -import sentry_sdk -from sentry_sdk.integrations.django import DjangoIntegration - -DEBUG = False - -AWS_STORAGE_BUCKET_NAME = AWS_BUCKET_NAME = os.getenv("AWS_BUCKET_NAME", "") -AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID", "") -AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY", "") -S3_DOMAIN = AWS_S3_CUSTOM_DOMAIN = str(AWS_BUCKET_NAME) + ".s3.amazonaws.com" -AWS_SES_REGION_NAME = os.getenv("AWS_SES_REGION_NAME", "") -AWS_SES_REGION_ENDPOINT = os.getenv("AWS_SES_REGION_ENDPOINT", "") - -AWS_S3_OBJECT_PARAMETERS = { - "CacheControl": "max-age=86400", -} - -DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage" -DEFAULT_S3_PATH = "media" - -MEDIA_ROOT = "/%s/" % DEFAULT_S3_PATH -MEDIA_URL = "//%s/%s/" % (S3_DOMAIN, DEFAULT_S3_PATH) -# STATIC_URL = "https://%s/" % (S3_DOMAIN) -# ADMIN_MEDIA_PREFIX = STATIC_URL + "admin/" - -CORS_ORIGIN_ALLOW_ALL = True - -AWS_IS_GZIPPED = True -AWS_ENABLED = True -AWS_S3_SECURE_URLS = True - -EMAIL_BACKEND = "django_ses.SESBackend" - -SESSION_COOKIE_DOMAIN = ".bottlecrm.com" - -sentry_sdk.init( - dsn=os.getenv("SENTRY_DSN"), - integrations=[DjangoIntegration()], - traces_sample_rate=1.0, - # If you wish to associate users to errors (assuming you are using - # django.contrib.auth) you may enable sending PII data. - send_default_pii=True, -) - -RAVEN_CONFIG = { - "dsn": os.getenv("SENTRY_DSN", ""), -} diff --git a/manage_local.py b/manage_local.py.obsolete similarity index 100% rename from manage_local.py rename to manage_local.py.obsolete diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 000000000..64fd2e4d3 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1721 @@ +[[package]] +name = "amqp" +version = "5.0.9" +description = "Low-level AMQP client for Python (fork of amqplib)." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +vine = "5.0.0" + +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "arrow" +version = "1.2.1" +description = "Better dates & times for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +python-dateutil = ">=2.7.0" + +[[package]] +name = "asgiref" +version = "3.5.0" +description = "ASGI specs, helper code, and adapters" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "billiard" +version = "3.6.4.0" +description = "Python multiprocessing fork with improvements and bugfixes" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "black" +version = "20.8b1" +description = "The uncompromising code formatter." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +appdirs = "*" +click = ">=7.1.2" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.6,<1" +regex = ">=2020.1.8" +toml = ">=0.10.1" +typed-ast = ">=1.4.0" +typing-extensions = ">=3.7.4" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] + +[[package]] +name = "boto3" +version = "1.20.37" +description = "The AWS SDK for Python" +category = "main" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +botocore = ">=1.23.37,<1.24.0" +jmespath = ">=0.7.1,<1.0.0" +s3transfer = ">=0.5.0,<0.6.0" + +[package.extras] +crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] + +[[package]] +name = "botocore" +version = "1.23.54" +description = "Low-level, data-driven core of boto 3." +category = "main" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +jmespath = ">=0.7.1,<1.0.0" +python-dateutil = ">=2.1,<3.0.0" +urllib3 = ">=1.25.4,<1.27" + +[package.extras] +crt = ["awscrt (==0.12.5)"] + +[[package]] +name = "celery" +version = "5.2.3" +description = "Distributed Task Queue." +category = "main" +optional = false +python-versions = ">=3.7," + +[package.dependencies] +billiard = ">=3.6.4.0,<4.0" +click = ">=8.0.3,<9.0" +click-didyoumean = ">=0.0.3" +click-plugins = ">=1.1.1" +click-repl = ">=0.2.0" +kombu = ">=5.2.3,<6.0" +pytz = ">=2021.3" +vine = ">=5.0.0,<6.0" + +[package.extras] +arangodb = ["pyArango (>=1.3.2)"] +auth = ["cryptography"] +azureblockblob = ["azure-storage-blob (==12.9.0)"] +brotli = ["brotli (>=1.0.0)", "brotlipy (>=0.7.0)"] +cassandra = ["cassandra-driver (<3.21.0)"] +consul = ["python-consul2"] +cosmosdbsql = ["pydocumentdb (==2.3.2)"] +couchbase = ["couchbase (>=3.0.0)"] +couchdb = ["pycouchdb"] +django = ["Django (>=1.11)"] +dynamodb = ["boto3 (>=1.9.178)"] +elasticsearch = ["elasticsearch"] +eventlet = ["eventlet (>=0.32.0)"] +gevent = ["gevent (>=1.5.0)"] +librabbitmq = ["librabbitmq (>=1.5.0)"] +memcache = ["pylibmc"] +mongodb = ["pymongo[srv] (>=3.11.1)"] +msgpack = ["msgpack"] +pymemcache = ["python-memcached"] +pyro = ["pyro4"] +pytest = ["pytest-celery"] +redis = ["redis (>=3.4.1,!=4.0.0,!=4.0.1)"] +s3 = ["boto3 (>=1.9.125)"] +slmq = ["softlayer-messaging (>=1.0.3)"] +solar = ["ephem"] +sqlalchemy = ["sqlalchemy"] +sqs = ["kombu"] +tblib = ["tblib (>=1.3.0)", "tblib (>=1.5.0)"] +yaml = ["PyYAML (>=3.10)"] +zookeeper = ["kazoo (>=1.3.1)"] +zstd = ["zstandard"] + +[[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.0.4" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "click-didyoumean" +version = "0.3.0" +description = "Enables git-like *did-you-mean* feature in click" +category = "main" +optional = false +python-versions = ">=3.6.2,<4.0.0" + +[package.dependencies] +click = ">=7" + +[[package]] +name = "click-plugins" +version = "1.1.1" +description = "An extension module for click to enable registering CLI commands via setuptools entry-points." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = ">=4.0" + +[package.extras] +dev = ["pytest (>=3.6)", "pytest-cov", "wheel", "coveralls"] + +[[package]] +name = "click-repl" +version = "0.2.0" +description = "REPL plugin for Click" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" +prompt-toolkit = "*" +six = "*" + +[[package]] +name = "codacy-coverage" +version = "1.3.11" +description = "Codacy coverage reporter for Python" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +requests = ">=2.9.1" + +[package.extras] +dev = ["check-manifest"] +test = ["coverage", "nosetests"] + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "coreapi" +version = "2.3.3" +description = "Python client library for Core API." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +coreschema = "*" +itypes = "*" +requests = "*" +uritemplate = "*" + +[[package]] +name = "coreschema" +version = "0.0.4" +description = "Core Schema." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +jinja2 = "*" + +[[package]] +name = "coverage" +version = "6.2" +description = "Code coverage measurement for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "deprecated" +version = "1.2.13" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] + +[[package]] +name = "django" +version = "3.2.11" +description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +asgiref = ">=3.3.2,<4" +pytz = "*" +sqlparse = ">=0.2.2" + +[package.extras] +argon2 = ["argon2-cffi (>=19.1.0)"] +bcrypt = ["bcrypt"] + +[[package]] +name = "django-cors-headers" +version = "3.11.0" +description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Django = ">=2.2" + +[[package]] +name = "django-environ" +version = "0.8.1" +description = "A package that allows you to utilize 12factor inspired environment variables to configure your Django application." +category = "main" +optional = false +python-versions = ">=3.4,<4" + +[package.extras] +develop = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)", "furo (>=2021.8.17b43,<2021.9.0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] +docs = ["furo (>=2021.8.17b43,<2021.9.0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] +testing = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)"] + +[[package]] +name = "django-phonenumber-field" +version = "6.0.0" +description = "An international phone number field for django models." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +Django = ">=2.2" + +[package.extras] +phonenumbers = ["phonenumbers (>=7.0.2)"] +phonenumberslite = ["phonenumberslite (>=7.0.2)"] + +[[package]] +name = "django-ses" +version = "2.3.1" +description = "A Django email backend for Amazon's Simple Email Service" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +boto3 = ">=1.0.0" +django = ">=2.2" +future = ">=0.16.0" +pytz = ">=2016.10" + +[package.extras] +bounce = ["requests (<3)", "m2crypto"] +events = ["requests (<3)", "m2crypto"] + +[[package]] +name = "django-settings-export" +version = "1.2.1" +description = "This Django app allows you to export certain settings to your templates." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +django = "*" + +[[package]] +name = "django-storages" +version = "1.12.3" +description = "Support for many storage backends in Django" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +Django = ">=2.2" + +[package.extras] +azure = ["azure-storage-blob (>=12.0.0)"] +boto3 = ["boto3 (>=1.4.4)"] +dropbox = ["dropbox (>=7.2.1)"] +google = ["google-cloud-storage (>=1.27.0)"] +libcloud = ["apache-libcloud"] +sftp = ["paramiko"] + +[[package]] +name = "djangorestframework" +version = "3.12.2" +description = "Web APIs for Django, made easy." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +django = ">=2.2" + +[[package]] +name = "djangorestframework-jwt" +version = "1.11.0" +description = "JSON Web Token based authentication for Django REST framework" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +PyJWT = ">=1.5.2,<2.0.0" + +[[package]] +name = "drf-compound-fields" +version = "2.0.0" +description = "Django-REST-framework serializer fields for compound types." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +Django = "*" +djangorestframework = "<4" + +[[package]] +name = "drf-yasg" +version = "1.20.0" +description = "Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +coreapi = ">=2.3.3" +coreschema = ">=0.0.4" +Django = ">=2.2.16" +djangorestframework = ">=3.10.3" +inflection = ">=0.3.1" +packaging = "*" +"ruamel.yaml" = ">=0.15.34" +uritemplate = ">=3.0.0" + +[package.extras] +validation = ["swagger-spec-validator (>=2.1.0)"] + +[[package]] +name = "et-xmlfile" +version = "1.1.0" +description = "An implementation of lxml.xmlfile for the standard library" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "html5lib" +version = "1.1" +description = "HTML parser based on the WHATWG HTML specification" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +six = ">=1.9" +webencodings = "*" + +[package.extras] +all = ["genshi", "chardet (>=2.2)", "lxml"] +chardet = ["chardet (>=2.2)"] +genshi = ["genshi"] +lxml = ["lxml"] + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "inflection" +version = "0.5.1" +description = "A port of Ruby on Rails inflector to Python" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "itypes" +version = "1.2.0" +description = "Simple immutable types for python." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "jinja2" +version = "3.0.3" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jmespath" +version = "0.10.0" +description = "JSON Matching Expressions" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "kombu" +version = "5.2.3" +description = "Messaging library for Python." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +amqp = ">=5.0.9,<6.0.0" +vine = "*" + +[package.extras] +azureservicebus = ["azure-servicebus (>=7.0.0)"] +azurestoragequeues = ["azure-storage-queue"] +consul = ["python-consul (>=0.6.0)"] +librabbitmq = ["librabbitmq (>=2.0.0)"] +mongodb = ["pymongo (>=3.3.0,<3.12.1)"] +msgpack = ["msgpack"] +pyro = ["pyro4"] +qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] +redis = ["redis (>=3.4.1,!=4.0.0,!=4.0.1)"] +slmq = ["softlayer-messaging (>=1.0.3)"] +sqlalchemy = ["sqlalchemy"] +sqs = ["boto3 (>=1.9.12)", "pycurl (>=7.44.1,<7.45.0)", "urllib3 (>=1.26.7)"] +yaml = ["PyYAML (>=3.10)"] +zookeeper = ["kazoo (>=1.3.1)"] + +[[package]] +name = "markupsafe" +version = "2.1.0" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "openpyxl" +version = "3.0.9" +description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +et-xmlfile = "*" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pathspec" +version = "0.9.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "pdfkit" +version = "1.0.0" +description = "Wkhtmltopdf python wrapper to convert html to pdf using the webkit rendering engine and qt" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "phonenumbers" +version = "8.12.41" +description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pip-check" +version = "2.7" +description = "Display installed pip packages and their update status.." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +terminaltables = "*" + +[[package]] +name = "pipdeptree" +version = "2.2.1" +description = "Command line utility to show dependency tree of packages" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" + +[package.extras] +graphviz = ["graphviz"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.28" +description = "Library for building powerful interactive command lines in Python" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "psycopg2-binary" +version = "2.9.3" +description = "psycopg2 - Python-PostgreSQL Database Adapter" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pyjwt" +version = "1.7.1" +description = "JSON Web Token implementation in Python" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +crypto = ["cryptography (>=1.4)"] +flake8 = ["flake8", "flake8-import-order", "pep8-naming"] +test = ["pytest (>=4.0.1,<5.0.0)", "pytest-cov (>=2.6.0,<3.0.0)", "pytest-runner (>=4.2,<5.0.0)"] + +[[package]] +name = "pyparsing" +version = "3.0.7" +description = "Python parsing module" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "7.0.1" +description = "pytest: simple powerful testing with Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-django" +version = "4.5.2" +description = "A Django plugin for pytest." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +pytest = ">=5.4.0" + +[package.extras] +docs = ["sphinx", "sphinx-rtd-theme"] +testing = ["django", "django-configurations (>=2.0)"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "0.19.2" +description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pytoml" +version = "0.1.21" +description = "A parser for TOML-0.4.0" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pytz" +version = "2021.3" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "redis" +version = "4.1.1" +description = "Python client for Redis database and key-value store" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +deprecated = ">=1.2.3" +packaging = ">=20.4" + +[package.extras] +hiredis = ["hiredis (>=1.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] + +[[package]] +name = "regex" +version = "2022.1.18" +description = "Alternative regular expression module, to replace re." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "requests" +version = "2.27.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + +[[package]] +name = "ruamel.yaml" +version = "0.17.21" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" +optional = false +python-versions = ">=3" + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel.yaml.clib" +version = "0.2.6" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "s3transfer" +version = "0.5.1" +description = "An Amazon S3 Transfer Manager" +category = "main" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +botocore = ">=1.12.36,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] + +[[package]] +name = "sentry-sdk" +version = "1.5.2" +description = "Python client for Sentry (https://sentry.io)" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +certifi = "*" +urllib3 = ">=1.10.0" + +[package.extras] +aiohttp = ["aiohttp (>=3.5)"] +beam = ["apache-beam (>=2.12)"] +bottle = ["bottle (>=0.12.13)"] +celery = ["celery (>=3)"] +chalice = ["chalice (>=1.16.0)"] +django = ["django (>=1.8)"] +falcon = ["falcon (>=1.4)"] +flask = ["flask (>=0.11)", "blinker (>=1.1)"] +httpx = ["httpx (>=0.16.0)"] +pure_eval = ["pure-eval", "executing", "asttokens"] +pyspark = ["pyspark (>=2.4.4)"] +quart = ["quart (>=0.16.1)", "blinker (>=1.1)"] +rq = ["rq (>=0.6)"] +sanic = ["sanic (>=0.8)"] +sqlalchemy = ["sqlalchemy (>=1.2)"] +tornado = ["tornado (>=5)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "sqlparse" +version = "0.4.2" +description = "A non-validating SQL parser." +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "terminaltables" +version = "3.1.10" +description = "Generate simple tables in terminals from a nested list of strings." +category = "main" +optional = false +python-versions = ">=2.6" + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "typed-ast" +version = "1.5.2" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typing-extensions" +version = "4.1.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "uritemplate" +version = "4.1.1" +description = "Implementation of RFC 6570 URI Templates" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "urllib3" +version = "1.26.8" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "vine" +version = "5.0.0" +description = "Promises, promises, promises." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "whitenoise" +version = "5.3.0" +description = "Radically simplified static file serving for WSGI applications" +category = "main" +optional = false +python-versions = ">=3.5, <4" + +[package.extras] +brotli = ["brotli"] + +[[package]] +name = "wrapt" +version = "1.13.3" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "xlrd" +version = "2.0.1" +description = "Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.extras] +build = ["wheel", "twine"] +docs = ["sphinx"] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "xlwt" +version = "1.3.0" +description = "Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+" +category = "main" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "^3.9" +content-hash = "18e6438768bb622b67d3c411c4beab986e77bfdfcc40729ba36b9ae9b7f5c432" + +[metadata.files] +amqp = [ + {file = "amqp-5.0.9-py3-none-any.whl", hash = "sha256:9cd81f7b023fc04bbb108718fbac674f06901b77bfcdce85b10e2a5d0ee91be5"}, + {file = "amqp-5.0.9.tar.gz", hash = "sha256:1e5f707424e544078ca196e72ae6a14887ce74e02bd126be54b7c03c971bef18"}, +] +appdirs = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] +arrow = [ + {file = "arrow-1.2.1-py3-none-any.whl", hash = "sha256:6b2914ef3997d1fd7b37a71ce9dd61a6e329d09e1c7b44f4d3099ca4a5c0933e"}, + {file = "arrow-1.2.1.tar.gz", hash = "sha256:c2dde3c382d9f7e6922ce636bf0b318a7a853df40ecb383b29192e6c5cc82840"}, +] +asgiref = [ + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +billiard = [ + {file = "billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b"}, + {file = "billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547"}, +] +black = [ + {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"}, +] +boto3 = [ + {file = "boto3-1.20.37-py3-none-any.whl", hash = "sha256:55c7004af4296648ee497417dfc454d9c39770c265f67e28e1c5f10e11f3b644"}, + {file = "boto3-1.20.37.tar.gz", hash = "sha256:0e2f8aa8ee71f144d8afbe9ff7d0bb40525b94535e0695bdb200687970c9f452"}, +] +botocore = [ + {file = "botocore-1.23.54-py3-none-any.whl", hash = "sha256:06ae8076c4dcf3d72bec4d37e5f2dce4a92a18a8cdaa3bfaa6e3b7b5e30a8d7e"}, + {file = "botocore-1.23.54.tar.gz", hash = "sha256:4bb9ba16cccee5f5a2602049bc3e2db6865346b2550667f3013bdf33b0a01ceb"}, +] +celery = [ + {file = "celery-5.2.3-py3-none-any.whl", hash = "sha256:8aacd02fc23a02760686d63dde1eb0daa9f594e735e73ea8fb15c2ff15cb608c"}, + {file = "celery-5.2.3.tar.gz", hash = "sha256:e2cd41667ad97d4f6a2f4672d1c6a6ebada194c619253058b5f23704aaadaa82"}, +] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +] +click = [ + {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, + {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, +] +click-didyoumean = [ + {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"}, + {file = "click_didyoumean-0.3.0-py3-none-any.whl", hash = "sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667"}, +] +click-plugins = [ + {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, + {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, +] +click-repl = [ + {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"}, + {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"}, +] +codacy-coverage = [ + {file = "codacy-coverage-1.3.11.tar.gz", hash = "sha256:b94651934745c638a980ad8d67494077e60f71e19e29aad1c275b66e0a070cbc"}, + {file = "codacy_coverage-1.3.11-py2.py3-none-any.whl", hash = "sha256:d8a1ce56b0dd156d6b1de14fa6217d32ec86097902f08a17ff2f95ba27264474"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +coreapi = [ + {file = "coreapi-2.3.3-py2.py3-none-any.whl", hash = "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3"}, + {file = "coreapi-2.3.3.tar.gz", hash = "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb"}, +] +coreschema = [ + {file = "coreschema-0.0.4-py2-none-any.whl", hash = "sha256:5e6ef7bf38c1525d5e55a895934ab4273548629f16aed5c0a6caa74ebf45551f"}, + {file = "coreschema-0.0.4.tar.gz", hash = "sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607"}, +] +coverage = [ + {file = "coverage-6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6dbc1536e105adda7a6312c778f15aaabe583b0e9a0b0a324990334fd458c94b"}, + {file = "coverage-6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174cf9b4bef0db2e8244f82059a5a72bd47e1d40e71c68ab055425172b16b7d0"}, + {file = "coverage-6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92b8c845527eae547a2a6617d336adc56394050c3ed8a6918683646328fbb6da"}, + {file = "coverage-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c7912d1526299cb04c88288e148c6c87c0df600eca76efd99d84396cfe00ef1d"}, + {file = "coverage-6.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d2033d5db1d58ae2d62f095e1aefb6988af65b4b12cb8987af409587cc0739"}, + {file = "coverage-6.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3feac4084291642165c3a0d9eaebedf19ffa505016c4d3db15bfe235718d4971"}, + {file = "coverage-6.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:276651978c94a8c5672ea60a2656e95a3cce2a3f31e9fb2d5ebd4c215d095840"}, + {file = "coverage-6.2-cp310-cp310-win32.whl", hash = "sha256:f506af4f27def639ba45789fa6fde45f9a217da0be05f8910458e4557eed020c"}, + {file = "coverage-6.2-cp310-cp310-win_amd64.whl", hash = "sha256:3f7c17209eef285c86f819ff04a6d4cbee9b33ef05cbcaae4c0b4e8e06b3ec8f"}, + {file = "coverage-6.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:13362889b2d46e8d9f97c421539c97c963e34031ab0cb89e8ca83a10cc71ac76"}, + {file = "coverage-6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:22e60a3ca5acba37d1d4a2ee66e051f5b0e1b9ac950b5b0cf4aa5366eda41d47"}, + {file = "coverage-6.2-cp311-cp311-win_amd64.whl", hash = "sha256:b637c57fdb8be84e91fac60d9325a66a5981f8086c954ea2772efe28425eaf64"}, + {file = "coverage-6.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f467bbb837691ab5a8ca359199d3429a11a01e6dfb3d9dcc676dc035ca93c0a9"}, + {file = "coverage-6.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2641f803ee9f95b1f387f3e8f3bf28d83d9b69a39e9911e5bfee832bea75240d"}, + {file = "coverage-6.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1219d760ccfafc03c0822ae2e06e3b1248a8e6d1a70928966bafc6838d3c9e48"}, + {file = "coverage-6.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9a2b5b52be0a8626fcbffd7e689781bf8c2ac01613e77feda93d96184949a98e"}, + {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8e2c35a4c1f269704e90888e56f794e2d9c0262fb0c1b1c8c4ee44d9b9e77b5d"}, + {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5d6b09c972ce9200264c35a1d53d43ca55ef61836d9ec60f0d44273a31aa9f17"}, + {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e3db840a4dee542e37e09f30859f1612da90e1c5239a6a2498c473183a50e781"}, + {file = "coverage-6.2-cp36-cp36m-win32.whl", hash = "sha256:4e547122ca2d244f7c090fe3f4b5a5861255ff66b7ab6d98f44a0222aaf8671a"}, + {file = "coverage-6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:01774a2c2c729619760320270e42cd9e797427ecfddd32c2a7b639cdc481f3c0"}, + {file = "coverage-6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb8b8ee99b3fffe4fd86f4c81b35a6bf7e4462cba019997af2fe679365db0c49"}, + {file = "coverage-6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:619346d57c7126ae49ac95b11b0dc8e36c1dd49d148477461bb66c8cf13bb521"}, + {file = "coverage-6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0a7726f74ff63f41e95ed3a89fef002916c828bb5fcae83b505b49d81a066884"}, + {file = "coverage-6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cfd9386c1d6f13b37e05a91a8583e802f8059bebfccde61a418c5808dea6bbfa"}, + {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:17e6c11038d4ed6e8af1407d9e89a2904d573be29d51515f14262d7f10ef0a64"}, + {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c254b03032d5a06de049ce8bca8338a5185f07fb76600afff3c161e053d88617"}, + {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dca38a21e4423f3edb821292e97cec7ad38086f84313462098568baedf4331f8"}, + {file = "coverage-6.2-cp37-cp37m-win32.whl", hash = "sha256:600617008aa82032ddeace2535626d1bc212dfff32b43989539deda63b3f36e4"}, + {file = "coverage-6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:bf154ba7ee2fd613eb541c2bc03d3d9ac667080a737449d1a3fb342740eb1a74"}, + {file = "coverage-6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f9afb5b746781fc2abce26193d1c817b7eb0e11459510fba65d2bd77fe161d9e"}, + {file = "coverage-6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edcada2e24ed68f019175c2b2af2a8b481d3d084798b8c20d15d34f5c733fa58"}, + {file = "coverage-6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9c8c4283e17690ff1a7427123ffb428ad6a52ed720d550e299e8291e33184dc"}, + {file = "coverage-6.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f614fc9956d76d8a88a88bb41ddc12709caa755666f580af3a688899721efecd"}, + {file = "coverage-6.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9365ed5cce5d0cf2c10afc6add145c5037d3148585b8ae0e77cc1efdd6aa2953"}, + {file = "coverage-6.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8bdfe9ff3a4ea37d17f172ac0dff1e1c383aec17a636b9b35906babc9f0f5475"}, + {file = "coverage-6.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:63c424e6f5b4ab1cf1e23a43b12f542b0ec2e54f99ec9f11b75382152981df57"}, + {file = "coverage-6.2-cp38-cp38-win32.whl", hash = "sha256:49dbff64961bc9bdd2289a2bda6a3a5a331964ba5497f694e2cbd540d656dc1c"}, + {file = "coverage-6.2-cp38-cp38-win_amd64.whl", hash = "sha256:9a29311bd6429be317c1f3fe4bc06c4c5ee45e2fa61b2a19d4d1d6111cb94af2"}, + {file = "coverage-6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03b20e52b7d31be571c9c06b74746746d4eb82fc260e594dc662ed48145e9efd"}, + {file = "coverage-6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:215f8afcc02a24c2d9a10d3790b21054b58d71f4b3c6f055d4bb1b15cecce685"}, + {file = "coverage-6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a4bdeb0a52d1d04123b41d90a4390b096f3ef38eee35e11f0b22c2d031222c6c"}, + {file = "coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c332d8f8d448ded473b97fefe4a0983265af21917d8b0cdcb8bb06b2afe632c3"}, + {file = "coverage-6.2-cp39-cp39-win32.whl", hash = "sha256:6e1394d24d5938e561fbeaa0cd3d356207579c28bd1792f25a068743f2d5b282"}, + {file = "coverage-6.2-cp39-cp39-win_amd64.whl", hash = "sha256:86f2e78b1eff847609b1ca8050c9e1fa3bd44ce755b2ec30e70f2d3ba3844644"}, + {file = "coverage-6.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:5829192582c0ec8ca4a2532407bc14c2f338d9878a10442f5d03804a95fac9de"}, + {file = "coverage-6.2.tar.gz", hash = "sha256:e2cad8093172b7d1595b4ad66f24270808658e11acf43a8f95b41276162eb5b8"}, +] +deprecated = [ + {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, + {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, +] +django = [ + {file = "Django-3.2.11-py3-none-any.whl", hash = "sha256:0a0a37f0b93aef30c4bf3a839c187e1175bcdeb7e177341da0cb7b8194416891"}, + {file = "Django-3.2.11.tar.gz", hash = "sha256:69c94abe5d6b1b088bf475e09b7b74403f943e34da107e798465d2045da27e75"}, +] +django-cors-headers = [ + {file = "django-cors-headers-3.11.0.tar.gz", hash = "sha256:eb98389bf7a2afc5d374806af4a9149697e3a6955b5a2dc2bf049f7d33647456"}, + {file = "django_cors_headers-3.11.0-py3-none-any.whl", hash = "sha256:a22be2befd4069c4fc174f11cf067351df5c061a3a5f94a01650b4e928b0372b"}, +] +django-environ = [ + {file = "django-environ-0.8.1.tar.gz", hash = "sha256:6f0bc902b43891656b20486938cba0861dc62892784a44919170719572a534cb"}, + {file = "django_environ-0.8.1-py2.py3-none-any.whl", hash = "sha256:42593bee519a527602a467c7b682aee1a051c2597f98c45f4f4f44169ecdb6e5"}, +] +django-phonenumber-field = [ + {file = "django-phonenumber-field-6.0.0.tar.gz", hash = "sha256:9695d3beda772c503ad4e04a4f7012a8227e9e3e4fd0ea4ffb07c43245bf4a8d"}, + {file = "django_phonenumber_field-6.0.0-py3-none-any.whl", hash = "sha256:bbb9cb2e6fc53c476de40428e1354c313a040e8b2fb69ea8ead4ba41a60f926a"}, +] +django-ses = [ + {file = "django-ses-2.3.1.tar.gz", hash = "sha256:ececf3b4284001d776e8021e9090184690495c652c0b45f4cfb984688819895b"}, + {file = "django_ses-2.3.1-py2.py3-none-any.whl", hash = "sha256:34ae53fb439042bda83b4e3bcd5dfc9ac507899ee8f526d1923aa0875696842d"}, +] +django-settings-export = [ + {file = "django-settings-export-1.2.1.tar.gz", hash = "sha256:fceeae49fc597f654c1217415d8e049fc81c930b7154f5d8f28c432db738ff79"}, +] +django-storages = [ + {file = "django-storages-1.12.3.tar.gz", hash = "sha256:a475edb2f0f04c4f7e548919a751ecd50117270833956ed5bd585c0575d2a5e7"}, + {file = "django_storages-1.12.3-py3-none-any.whl", hash = "sha256:204a99f218b747c46edbfeeb1310d357f83f90fa6a6024d8d0a3f422570cee84"}, +] +djangorestframework = [ + {file = "djangorestframework-3.12.2-py3-none-any.whl", hash = "sha256:0209bafcb7b5010fdfec784034f059d512256424de2a0f084cb82b096d6dd6a7"}, + {file = "djangorestframework-3.12.2.tar.gz", hash = "sha256:0898182b4737a7b584a2c73735d89816343369f259fea932d90dc78e35d8ac33"}, +] +djangorestframework-jwt = [ + {file = "djangorestframework-jwt-1.11.0.tar.gz", hash = "sha256:5efe33032f3a4518a300dc51a51c92145ad95fb6f4b272e5aa24701db67936a7"}, + {file = "djangorestframework_jwt-1.11.0-py2.py3-none-any.whl", hash = "sha256:ab15dfbbe535eede8e2e53adaf52ef0cf018ee27dbfad10cbc4cbec2ab63d38c"}, +] +drf-compound-fields = [ + {file = "drf-compound-fields-2.0.0.tar.gz", hash = "sha256:12e8acf5b9971f4e3be0542174fd0728bc47e718bdd82f0f85daa9b83c1cc8c5"}, +] +drf-yasg = [ + {file = "drf-yasg-1.20.0.tar.gz", hash = "sha256:d50f197c7f02545d0b736df88c6d5cf874f8fea2507ad85ad7de6ae5bf2d9e5a"}, + {file = "drf_yasg-1.20.0-py2.py3-none-any.whl", hash = "sha256:8b72e5b1875931a8d11af407be3a9a5ba8776541492947a0df5bafda6b7f8267"}, +] +et-xmlfile = [ + {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, + {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, +] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +html5lib = [ + {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, + {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, +] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +inflection = [ + {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, + {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +itypes = [ + {file = "itypes-1.2.0-py2.py3-none-any.whl", hash = "sha256:03da6872ca89d29aef62773672b2d408f490f80db48b23079a4b194c86dd04c6"}, + {file = "itypes-1.2.0.tar.gz", hash = "sha256:af886f129dea4a2a1e3d36595a2d139589e4dd287f5cab0b40e799ee81570ff1"}, +] +jinja2 = [ + {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, + {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, +] +jmespath = [ + {file = "jmespath-0.10.0-py2.py3-none-any.whl", hash = "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f"}, + {file = "jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9"}, +] +kombu = [ + {file = "kombu-5.2.3-py3-none-any.whl", hash = "sha256:eeaeb8024f3a5cfc71c9250e45cddb8493f269d74ada2f74909a93c59c4b4179"}, + {file = "kombu-5.2.3.tar.gz", hash = "sha256:81a90c1de97e08d3db37dbf163eaaf667445e1068c98bfd89f051a40e9f6dbbd"}, +] +markupsafe = [ + {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-win32.whl", hash = "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454"}, + {file = "MarkupSafe-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a"}, + {file = "MarkupSafe-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-win32.whl", hash = "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8"}, + {file = "MarkupSafe-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-win32.whl", hash = "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05"}, + {file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"}, + {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +openpyxl = [ + {file = "openpyxl-3.0.9-py2.py3-none-any.whl", hash = "sha256:8f3b11bd896a95468a4ab162fc4fcd260d46157155d1f8bfaabb99d88cfcf79f"}, + {file = "openpyxl-3.0.9.tar.gz", hash = "sha256:40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] +pdfkit = [ + {file = "pdfkit-1.0.0-py2-none-any.whl", hash = "sha256:cc122e5aed594198ff7aaa566f2950d2163763576ab891c161bb1f6c630f5a8e"}, + {file = "pdfkit-1.0.0-py3-none-any.whl", hash = "sha256:a7a4ca0d978e44fa8310c4909f087052430a6e8e0b1dd7ceef657f139789f96f"}, + {file = "pdfkit-1.0.0.tar.gz", hash = "sha256:992f821e1e18fc8a0e701ecae24b51a2d598296a180caee0a24c0af181da02a9"}, +] +phonenumbers = [ + {file = "phonenumbers-8.12.41-py2.py3-none-any.whl", hash = "sha256:2b8c7a7ffac4fe2be3d8bf20dad316ea1292f27422c9e18b1f3cd16734d4a5ed"}, + {file = "phonenumbers-8.12.41.tar.gz", hash = "sha256:f477da623a51cba084567d6a67b1882a8aaaf3e7beadad655f8613a8f887ac62"}, +] +pip-check = [ + {file = "pip-check-2.7.tar.gz", hash = "sha256:17d1612af84fecfebdf8f8c60b9eaa9c389814a49affdcd88a1d4fd98fd17aee"}, + {file = "pip_check-2.7-py2.py3-none-any.whl", hash = "sha256:f14ba13b0a66cd9d4732f958fa79d0b0ed2ef7833239927ef4336266265b72fa"}, +] +pipdeptree = [ + {file = "pipdeptree-2.2.1-py3-none-any.whl", hash = "sha256:e20655a38d6e363d8e86d6a85e8a648680a3f4b6d039d6ee3ab0f539da1ad6ce"}, + {file = "pipdeptree-2.2.1.tar.gz", hash = "sha256:2b97d80c64d229e01ad242f14229a899263c6e8645c588ec5b054c1b81f3065d"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.28-py3-none-any.whl", hash = "sha256:30129d870dcb0b3b6a53efdc9d0a83ea96162ffd28ffe077e94215b233dc670c"}, + {file = "prompt_toolkit-3.0.28.tar.gz", hash = "sha256:9f1cd16b1e86c2968f2519d7fb31dd9d669916f515612c269d14e9ed52b51650"}, +] +psycopg2-binary = [ + {file = "psycopg2-binary-2.9.3.tar.gz", hash = "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:0a29729145aaaf1ad8bafe663131890e2111f13416b60e460dae0a96af5905c9"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a79d622f5206d695d7824cbf609a4f5b88ea6d6dab5f7c147fc6d333a8787e4"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:090f3348c0ab2cceb6dfbe6bf721ef61262ddf518cd6cc6ecc7d334996d64efa"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a9e1f75f96ea388fbcef36c70640c4efbe4650658f3d6a2967b4cc70e907352e"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c3ae8e75eb7160851e59adc77b3a19a976e50622e44fd4fd47b8b18208189d42"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-win32.whl", hash = "sha256:7b1e9b80afca7b7a386ef087db614faebbf8839b7f4db5eb107d0f1a53225029"}, + {file = "psycopg2_binary-2.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:8b344adbb9a862de0c635f4f0425b7958bf5a4b927c8594e6e8d261775796d53"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:e847774f8ffd5b398a75bc1c18fbb56564cda3d629fe68fd81971fece2d3c67e"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68641a34023d306be959101b345732360fc2ea4938982309b786f7be1b43a4a1"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3303f8807f342641851578ee7ed1f3efc9802d00a6f83c101d21c608cb864460"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:e3699852e22aa68c10de06524a3721ade969abf382da95884e6a10ff798f9281"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:526ea0378246d9b080148f2d6681229f4b5964543c170dd10bf4faaab6e0d27f"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:b1c8068513f5b158cf7e29c43a77eb34b407db29aca749d3eb9293ee0d3103ca"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:15803fa813ea05bef089fa78835118b5434204f3a17cb9f1e5dbfd0b9deea5af"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:152f09f57417b831418304c7f30d727dc83a12761627bb826951692cc6491e57"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:404224e5fef3b193f892abdbf8961ce20e0b6642886cfe1fe1923f41aaa75c9d"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-win32.whl", hash = "sha256:1f6b813106a3abdf7b03640d36e24669234120c72e91d5cbaeb87c5f7c36c65b"}, + {file = "psycopg2_binary-2.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:2d872e3c9d5d075a2e104540965a1cf898b52274a5923936e5bfddb58c59c7c2"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:10bb90fb4d523a2aa67773d4ff2b833ec00857f5912bafcfd5f5414e45280fb1"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a52ecab70af13e899f7847b3e074eeb16ebac5615665db33bce8a1009cf33"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a29b3ca4ec9defec6d42bf5feb36bb5817ba3c0230dd83b4edf4bf02684cd0ae"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:12b11322ea00ad8db8c46f18b7dfc47ae215e4df55b46c67a94b4effbaec7094"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:53293533fcbb94c202b7c800a12c873cfe24599656b341f56e71dd2b557be063"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c381bda330ddf2fccbafab789d83ebc6c53db126e4383e73794c74eedce855ef"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d29409b625a143649d03d0fd7b57e4b92e0ecad9726ba682244b73be91d2fdb"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:183a517a3a63503f70f808b58bfbf962f23d73b6dccddae5aa56152ef2bcb232"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:15c4e4cfa45f5a60599d9cec5f46cd7b1b29d86a6390ec23e8eebaae84e64554"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-win32.whl", hash = "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba"}, + {file = "psycopg2_binary-2.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:63638d875be8c2784cfc952c9ac34e2b50e43f9f0a0660b65e2a87d656b3116c"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ffb7a888a047696e7f8240d649b43fb3644f14f0ee229077e7f6b9f9081635bd"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c9d5450c566c80c396b7402895c4369a410cab5a82707b11aee1e624da7d004"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:d1c1b569ecafe3a69380a94e6ae09a4789bbb23666f3d3a08d06bbd2451f5ef1"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8fc53f9af09426a61db9ba357865c77f26076d48669f2e1bb24d85a22fb52307"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-win32.whl", hash = "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce"}, + {file = "psycopg2_binary-2.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:7af0dd86ddb2f8af5da57a976d27cd2cd15510518d582b478fbb2292428710b4"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93cd1967a18aa0edd4b95b1dfd554cf15af657cb606280996d393dadc88c3c35"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bda845b664bb6c91446ca9609fc69f7db6c334ec5e4adc87571c34e4f47b7ddb"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:01310cf4cf26db9aea5158c217caa92d291f0500051a6469ac52166e1a16f5b7"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99485cab9ba0fa9b84f1f9e1fef106f44a46ef6afdeec8885e0b88d0772b49e8"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-win32.whl", hash = "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d"}, + {file = "psycopg2_binary-2.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pyjwt = [ + {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"}, + {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"}, +] +pyparsing = [ + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, +] +pytest = [ + {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, + {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, +] +pytest-django = [ + {file = "pytest-django-4.5.2.tar.gz", hash = "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2"}, + {file = "pytest_django-4.5.2-py3-none-any.whl", hash = "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +python-dotenv = [ + {file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"}, + {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"}, +] +pytoml = [ + {file = "pytoml-0.1.21-py2.py3-none-any.whl", hash = "sha256:57a21e6347049f73bfb62011ff34cd72774c031b9828cb628a752225136dfc33"}, + {file = "pytoml-0.1.21.tar.gz", hash = "sha256:8eecf7c8d0adcff3b375b09fe403407aa9b645c499e5ab8cac670ac4a35f61e7"}, +] +pytz = [ + {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, + {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, +] +redis = [ + {file = "redis-4.1.1-py3-none-any.whl", hash = "sha256:bc97d18938ca18d66737d0ef88584a2073069589e4026813cfba9ad6df9a9f40"}, + {file = "redis-4.1.1.tar.gz", hash = "sha256:07420a3fbedd8e012c31d4fadac943fb81568946da202c5a5bc237774e5280a0"}, +] +regex = [ + {file = "regex-2022.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:34316bf693b1d2d29c087ee7e4bb10cdfa39da5f9c50fa15b07489b4ab93a1b5"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a0b9f6a1a15d494b35f25ed07abda03209fa76c33564c09c9e81d34f4b919d7"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f99112aed4fb7cee00c7f77e8b964a9b10f69488cdff626ffd797d02e2e4484f"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a2bf98ac92f58777c0fafc772bf0493e67fcf677302e0c0a630ee517a43b949"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8618d9213a863c468a865e9d2ec50221015f7abf52221bc927152ef26c484b4c"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b52cc45e71657bc4743a5606d9023459de929b2a198d545868e11898ba1c3f59"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e12949e5071c20ec49ef00c75121ed2b076972132fc1913ddf5f76cae8d10b4"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b02e3e72665cd02afafb933453b0c9f6c59ff6e3708bd28d0d8580450e7e88af"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abfcb0ef78df0ee9df4ea81f03beea41849340ce33a4c4bd4dbb99e23ec781b6"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6213713ac743b190ecbf3f316d6e41d099e774812d470422b3a0f137ea635832"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:61ebbcd208d78658b09e19c78920f1ad38936a0aa0f9c459c46c197d11c580a0"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b013f759cd69cb0a62de954d6d2096d648bc210034b79b1881406b07ed0a83f9"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9187500d83fd0cef4669385cbb0961e227a41c0c9bc39219044e35810793edf7"}, + {file = "regex-2022.1.18-cp310-cp310-win32.whl", hash = "sha256:94c623c331a48a5ccc7d25271399aff29729fa202c737ae3b4b28b89d2b0976d"}, + {file = "regex-2022.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:1a171eaac36a08964d023eeff740b18a415f79aeb212169080c170ec42dd5184"}, + {file = "regex-2022.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:49810f907dfe6de8da5da7d2b238d343e6add62f01a15d03e2195afc180059ed"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d2f5c3f7057530afd7b739ed42eb04f1011203bc5e4663e1e1d01bb50f813e3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85ffd6b1cb0dfb037ede50ff3bef80d9bf7fa60515d192403af6745524524f3b"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba37f11e1d020969e8a779c06b4af866ffb6b854d7229db63c5fdddfceaa917f"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e27ea1ebe4a561db75a880ac659ff439dec7f55588212e71700bb1ddd5af9"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37978254d9d00cda01acc1997513f786b6b971e57b778fbe7c20e30ae81a97f3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54a1eb9fd38f2779e973d2f8958fd575b532fe26013405d1afb9ee2374e7ab8"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:768632fd8172ae03852e3245f11c8a425d95f65ff444ce46b3e673ae5b057b74"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:de2923886b5d3214be951bc2ce3f6b8ac0d6dfd4a0d0e2a4d2e5523d8046fdfb"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1333b3ce73269f986b1fa4d5d395643810074dc2de5b9d262eb258daf37dc98f"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d19a34f8a3429bd536996ad53597b805c10352a8561d8382e05830df389d2b43"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d2f355a951f60f0843f2368b39970e4667517e54e86b1508e76f92b44811a8a"}, + {file = "regex-2022.1.18-cp36-cp36m-win32.whl", hash = "sha256:2245441445099411b528379dee83e56eadf449db924648e5feb9b747473f42e3"}, + {file = "regex-2022.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:25716aa70a0d153cd844fe861d4f3315a6ccafce22b39d8aadbf7fcadff2b633"}, + {file = "regex-2022.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e070d3aef50ac3856f2ef5ec7214798453da878bb5e5a16c16a61edf1817cc3"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22709d701e7037e64dae2a04855021b62efd64a66c3ceed99dfd684bfef09e38"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9099bf89078675c372339011ccfc9ec310310bf6c292b413c013eb90ffdcafc"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04611cc0f627fc4a50bc4a9a2e6178a974c6a6a4aa9c1cca921635d2c47b9c87"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:552a39987ac6655dad4bf6f17dd2b55c7b0c6e949d933b8846d2e312ee80005a"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e031899cb2bc92c0cf4d45389eff5b078d1936860a1be3aa8c94fa25fb46ed8"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2dacb3dae6b8cc579637a7b72f008bff50a94cde5e36e432352f4ca57b9e54c4"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e5c31d70a478b0ca22a9d2d76d520ae996214019d39ed7dd93af872c7f301e52"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb804c7d0bfbd7e3f33924ff49757de9106c44e27979e2492819c16972ec0da2"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:36b2d700a27e168fa96272b42d28c7ac3ff72030c67b32f37c05616ebd22a202"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:16f81025bb3556eccb0681d7946e2b35ff254f9f888cff7d2120e8826330315c"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:da80047524eac2acf7c04c18ac7a7da05a9136241f642dd2ed94269ef0d0a45a"}, + {file = "regex-2022.1.18-cp37-cp37m-win32.whl", hash = "sha256:6ca45359d7a21644793de0e29de497ef7f1ae7268e346c4faf87b421fea364e6"}, + {file = "regex-2022.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:38289f1690a7e27aacd049e420769b996826f3728756859420eeee21cc857118"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6014038f52b4b2ac1fa41a58d439a8a00f015b5c0735a0cd4b09afe344c94899"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b5d6f9aed3153487252d00a18e53f19b7f52a1651bc1d0c4b5844bc286dfa52"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d24b03daf7415f78abc2d25a208f234e2c585e5e6f92f0204d2ab7b9ab48e3"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf594cc7cc9d528338d66674c10a5b25e3cde7dd75c3e96784df8f371d77a298"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd914db437ec25bfa410f8aa0aa2f3ba87cdfc04d9919d608d02330947afaeab"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90b6840b6448203228a9d8464a7a0d99aa8fa9f027ef95fe230579abaf8a6ee1"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11772be1eb1748e0e197a40ffb82fb8fd0d6914cd147d841d9703e2bef24d288"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a602bdc8607c99eb5b391592d58c92618dcd1537fdd87df1813f03fed49957a6"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7e26eac9e52e8ce86f915fd33380f1b6896a2b51994e40bb094841e5003429b4"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:519c0b3a6fbb68afaa0febf0d28f6c4b0a1074aefc484802ecb9709faf181607"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3c7ea86b9ca83e30fa4d4cd0eaf01db3ebcc7b2726a25990966627e39577d729"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:51f02ca184518702975b56affde6c573ebad4e411599005ce4468b1014b4786c"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:385ccf6d011b97768a640e9d4de25412204fbe8d6b9ae39ff115d4ff03f6fe5d"}, + {file = "regex-2022.1.18-cp38-cp38-win32.whl", hash = "sha256:1f8c0ae0a0de4e19fddaaff036f508db175f6f03db318c80bbc239a1def62d02"}, + {file = "regex-2022.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:760c54ad1b8a9b81951030a7e8e7c3ec0964c1cb9fee585a03ff53d9e531bb8e"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:93c20777a72cae8620203ac11c4010365706062aa13aaedd1a21bb07adbb9d5d"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6aa427c55a0abec450bca10b64446331b5ca8f79b648531138f357569705bc4a"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38baee6bdb7fe1b110b6b3aaa555e6e872d322206b7245aa39572d3fc991ee4"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:752e7ddfb743344d447367baa85bccd3629c2c3940f70506eb5f01abce98ee68"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8acef4d8a4353f6678fd1035422a937c2170de58a2b29f7da045d5249e934101"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73d2166e4b210b73d1429c4f1ca97cea9cc090e5302df2a7a0a96ce55373f1c"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24c89346734a4e4d60ecf9b27cac4c1fee3431a413f7aa00be7c4d7bbacc2c4d"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:596f5ae2eeddb79b595583c2e0285312b2783b0ec759930c272dbf02f851ff75"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ecfe51abf7f045e0b9cdde71ca9e153d11238679ef7b5da6c82093874adf3338"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1d6301f5288e9bdca65fab3de6b7de17362c5016d6bf8ee4ba4cbe833b2eda0f"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:93cce7d422a0093cfb3606beae38a8e47a25232eea0f292c878af580a9dc7605"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cf0db26a1f76aa6b3aa314a74b8facd586b7a5457d05b64f8082a62c9c49582a"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:defa0652696ff0ba48c8aff5a1fac1eef1ca6ac9c660b047fc8e7623c4eb5093"}, + {file = "regex-2022.1.18-cp39-cp39-win32.whl", hash = "sha256:6db1b52c6f2c04fafc8da17ea506608e6be7086715dab498570c3e55e4f8fbd1"}, + {file = "regex-2022.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:ebaeb93f90c0903233b11ce913a7cb8f6ee069158406e056f884854c737d2442"}, + {file = "regex-2022.1.18.tar.gz", hash = "sha256:97f32dc03a8054a4c4a5ab5d761ed4861e828b2c200febd4e46857069a483916"}, +] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] +"ruamel.yaml" = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] +"ruamel.yaml.clib" = [ + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, + {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, +] +s3transfer = [ + {file = "s3transfer-0.5.1-py3-none-any.whl", hash = "sha256:25c140f5c66aa79e1ac60be50dcd45ddc59e83895f062a3aab263b870102911f"}, + {file = "s3transfer-0.5.1.tar.gz", hash = "sha256:69d264d3e760e569b78aaa0f22c97e955891cd22e32b10c51f784eeda4d9d10a"}, +] +sentry-sdk = [ + {file = "sentry-sdk-1.5.2.tar.gz", hash = "sha256:7bbaa32bba806ec629962f207b597e86831c7ee2c1f287c21ba7de7fea9a9c46"}, + {file = "sentry_sdk-1.5.2-py2.py3-none-any.whl", hash = "sha256:2cec50166bcb67e1965f8073541b2321e3864cd6fd42a526bcde9f0c4e4cc3f8"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +sqlparse = [ + {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, + {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, +] +terminaltables = [ + {file = "terminaltables-3.1.10-py2.py3-none-any.whl", hash = "sha256:e4fdc4179c9e4aab5f674d80f09d76fa436b96fdc698a8505e0a36bf0804a874"}, + {file = "terminaltables-3.1.10.tar.gz", hash = "sha256:ba6eca5cb5ba02bba4c9f4f985af80c54ec3dccf94cfcd190154386255e47543"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +typed-ast = [ + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, +] +typing-extensions = [ + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, +] +uritemplate = [ + {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, + {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, +] +urllib3 = [ + {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, + {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, +] +vine = [ + {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, + {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +whitenoise = [ + {file = "whitenoise-5.3.0-py2.py3-none-any.whl", hash = "sha256:d963ef25639d1417e8a247be36e6aedd8c7c6f0a08adcb5a89146980a96b577c"}, + {file = "whitenoise-5.3.0.tar.gz", hash = "sha256:d234b871b52271ae7ed6d9da47ffe857c76568f11dd30e28e18c5869dbd11e12"}, +] +wrapt = [ + {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"}, + {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"}, + {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"}, + {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"}, + {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"}, + {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"}, + {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"}, + {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"}, + {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"}, + {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"}, + {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"}, + {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"}, + {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"}, + {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"}, + {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"}, + {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"}, + {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"}, + {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"}, + {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, +] +xlrd = [ + {file = "xlrd-2.0.1-py2.py3-none-any.whl", hash = "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd"}, + {file = "xlrd-2.0.1.tar.gz", hash = "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88"}, +] +xlwt = [ + {file = "xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e"}, + {file = "xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..ea5735287 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,94 @@ +[tool.poetry] +name = "django_crm" +version = "0.7.0" +description = "An opensourse CRM developed on django framework" +authors = ["Micropyramid "] +license = "MIT" +homepage = "https://github.com/MicroPyramid/Django-CRM.git" +repository = "https://github.com/GigiusB/Django-CRM" +classifiers=[ + "Development Status :: 4 - Beta", + "Framework :: Django", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.2", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", +] +packages = [ + { include = "accounts", from="src" }, + { include = "cases", from="src" }, + { include = "common", from="src" }, + { include = "crm", from="src" }, + { include = "emails", from="src" }, + { include = "events", from="src" }, + { include = "invoices", from="src" }, + { include = "leads", from="src" }, + { include = "opportunity", from="src" }, + { include = "planner", from="src" }, + { include = "tasks", from="src" }, + { include = "teams", from="src" }, +] +include = ["src/templates"] +exclude = ["tests"] + +[tool.poetry.dependencies] +python = "^3.9" +django = "3.2.11" +arrow = "1.2.1" +black = "20.8b1" +boto3 = "1.20.37" +# CacheControl = "0.12.10" +celery = "5.2.3" +codacy-coverage = "1.3.11" +# contextlib2 = "21.6.0" +coverage = "6.2" +# cssselect = "1.1.0" +# distlib = "0.3.3" +# distro = "1.6.0" +django-cors-headers = "3.11.0" +django-phonenumber-field = "6.0.0" +django-ses = "2.3.1" +django-settings-export = "1.2.1" +django-storages = "1.12.3" +# docker = "5.0.2" +djangorestframework = "3.12.2" +djangorestframework-jwt = "1.11.0" +drf-compound-fields = "2.0.0" +drf-yasg = "1.20.0" +html5lib = "1.1" +# importlib-metadata = "4.10.1" +# ipaddr = "2.2.0" +# lockfile = "0.12.2" +# lxml = "4.7.1" +openpyxl = "3.0.9" +pdfkit = "1.0.0" +phonenumbers = "8.12.41" +# Pillow = "9.0.0" +pip-check = "2.7" +pipdeptree = "2.2.1" +# progress = "1.6" +psycopg2-binary = "2.9.3" +pytest-django = "4.5.2" +python-dotenv = "0.19.2" +# python-memcached = "1.59" +pytoml = "0.1.21" +redis = "4.1.1" +# retrying = "1.3.3" +sentry-sdk = "1.5.2" +# setuptools = "60.5.0" +# uWSGI = "2.0.20" +# wheel = "0.37.1" +whitenoise = "5.3.0" +xlrd = "2.0.1" +xlwt = "1.3.0" +django-environ = "^0.8.1" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/requirements.txt b/requirements.txt.obsolete similarity index 100% rename from requirements.txt rename to requirements.txt.obsolete diff --git a/setup.py b/setup.py.obsolete similarity index 100% rename from setup.py rename to setup.py.obsolete diff --git a/accounts/__init__.py b/src/accounts/__init__.py similarity index 100% rename from accounts/__init__.py rename to src/accounts/__init__.py diff --git a/accounts/apps.py b/src/accounts/apps.py similarity index 100% rename from accounts/apps.py rename to src/accounts/apps.py diff --git a/accounts/migrations/0001_initial.py b/src/accounts/migrations/0001_initial.py similarity index 100% rename from accounts/migrations/0001_initial.py rename to src/accounts/migrations/0001_initial.py diff --git a/accounts/migrations/0002_auto_20190128_1237.py b/src/accounts/migrations/0002_auto_20190128_1237.py similarity index 100% rename from accounts/migrations/0002_auto_20190128_1237.py rename to src/accounts/migrations/0002_auto_20190128_1237.py diff --git a/accounts/migrations/0003_auto_20190201_1840.py b/src/accounts/migrations/0003_auto_20190201_1840.py similarity index 100% rename from accounts/migrations/0003_auto_20190201_1840.py rename to src/accounts/migrations/0003_auto_20190201_1840.py diff --git a/accounts/migrations/0004_account_status.py b/src/accounts/migrations/0004_account_status.py similarity index 100% rename from accounts/migrations/0004_account_status.py rename to src/accounts/migrations/0004_account_status.py diff --git a/accounts/migrations/0005_auto_20190212_1334.py b/src/accounts/migrations/0005_auto_20190212_1334.py similarity index 100% rename from accounts/migrations/0005_auto_20190212_1334.py rename to src/accounts/migrations/0005_auto_20190212_1334.py diff --git a/accounts/migrations/0006_auto_20190212_1708.py b/src/accounts/migrations/0006_auto_20190212_1708.py similarity index 100% rename from accounts/migrations/0006_auto_20190212_1708.py rename to src/accounts/migrations/0006_auto_20190212_1708.py diff --git a/accounts/migrations/0007_email.py b/src/accounts/migrations/0007_email.py similarity index 100% rename from accounts/migrations/0007_email.py rename to src/accounts/migrations/0007_email.py diff --git a/accounts/migrations/0008_account_assigned_to.py b/src/accounts/migrations/0008_account_assigned_to.py similarity index 100% rename from accounts/migrations/0008_account_assigned_to.py rename to src/accounts/migrations/0008_account_assigned_to.py diff --git a/accounts/migrations/0009_auto_20190809_1659.py b/src/accounts/migrations/0009_auto_20190809_1659.py similarity index 100% rename from accounts/migrations/0009_auto_20190809_1659.py rename to src/accounts/migrations/0009_auto_20190809_1659.py diff --git a/accounts/migrations/0010_account_teams.py b/src/accounts/migrations/0010_account_teams.py similarity index 100% rename from accounts/migrations/0010_account_teams.py rename to src/accounts/migrations/0010_account_teams.py diff --git a/accounts/migrations/0011_account_company.py b/src/accounts/migrations/0011_account_company.py similarity index 100% rename from accounts/migrations/0011_account_company.py rename to src/accounts/migrations/0011_account_company.py diff --git a/accounts/migrations/0012_remove_account_company.py b/src/accounts/migrations/0012_remove_account_company.py similarity index 100% rename from accounts/migrations/0012_remove_account_company.py rename to src/accounts/migrations/0012_remove_account_company.py diff --git a/accounts/migrations/0013_auto_20210913_1918.py b/src/accounts/migrations/0013_auto_20210913_1918.py similarity index 100% rename from accounts/migrations/0013_auto_20210913_1918.py rename to src/accounts/migrations/0013_auto_20210913_1918.py diff --git a/accounts/migrations/0014_rename_company_account_org.py b/src/accounts/migrations/0014_rename_company_account_org.py similarity index 100% rename from accounts/migrations/0014_rename_company_account_org.py rename to src/accounts/migrations/0014_rename_company_account_org.py diff --git a/accounts/migrations/0015_alter_account_org.py b/src/accounts/migrations/0015_alter_account_org.py similarity index 100% rename from accounts/migrations/0015_alter_account_org.py rename to src/accounts/migrations/0015_alter_account_org.py diff --git a/accounts/migrations/__init__.py b/src/accounts/migrations/__init__.py similarity index 100% rename from accounts/migrations/__init__.py rename to src/accounts/migrations/__init__.py diff --git a/accounts/models.py b/src/accounts/models.py similarity index 100% rename from accounts/models.py rename to src/accounts/models.py diff --git a/accounts/serializer.py b/src/accounts/serializer.py similarity index 100% rename from accounts/serializer.py rename to src/accounts/serializer.py diff --git a/accounts/swagger_params.py b/src/accounts/swagger_params.py similarity index 100% rename from accounts/swagger_params.py rename to src/accounts/swagger_params.py diff --git a/accounts/tasks.py b/src/accounts/tasks.py similarity index 100% rename from accounts/tasks.py rename to src/accounts/tasks.py diff --git a/accounts/tests_celery_tasks.py b/src/accounts/tests_celery_tasks.py similarity index 100% rename from accounts/tests_celery_tasks.py rename to src/accounts/tests_celery_tasks.py diff --git a/accounts/urls.py b/src/accounts/urls.py similarity index 100% rename from accounts/urls.py rename to src/accounts/urls.py diff --git a/accounts/views.py b/src/accounts/views.py similarity index 100% rename from accounts/views.py rename to src/accounts/views.py diff --git a/cases/__init__.py b/src/cases/__init__.py similarity index 100% rename from cases/__init__.py rename to src/cases/__init__.py diff --git a/cases/apps.py b/src/cases/apps.py similarity index 100% rename from cases/apps.py rename to src/cases/apps.py diff --git a/cases/migrations/0001_initial.py b/src/cases/migrations/0001_initial.py similarity index 100% rename from cases/migrations/0001_initial.py rename to src/cases/migrations/0001_initial.py diff --git a/cases/migrations/0002_auto_20190128_1237.py b/src/cases/migrations/0002_auto_20190128_1237.py similarity index 100% rename from cases/migrations/0002_auto_20190128_1237.py rename to src/cases/migrations/0002_auto_20190128_1237.py diff --git a/cases/migrations/0003_auto_20190212_1334.py b/src/cases/migrations/0003_auto_20190212_1334.py similarity index 100% rename from cases/migrations/0003_auto_20190212_1334.py rename to src/cases/migrations/0003_auto_20190212_1334.py diff --git a/cases/migrations/0004_case_teams.py b/src/cases/migrations/0004_case_teams.py similarity index 100% rename from cases/migrations/0004_case_teams.py rename to src/cases/migrations/0004_case_teams.py diff --git a/cases/migrations/0005_case_company.py b/src/cases/migrations/0005_case_company.py similarity index 100% rename from cases/migrations/0005_case_company.py rename to src/cases/migrations/0005_case_company.py diff --git a/cases/migrations/0006_auto_20210323_1747.py b/src/cases/migrations/0006_auto_20210323_1747.py similarity index 100% rename from cases/migrations/0006_auto_20210323_1747.py rename to src/cases/migrations/0006_auto_20210323_1747.py diff --git a/cases/migrations/0007_remove_case_company.py b/src/cases/migrations/0007_remove_case_company.py similarity index 100% rename from cases/migrations/0007_remove_case_company.py rename to src/cases/migrations/0007_remove_case_company.py diff --git a/cases/migrations/0008_auto_20210913_1918.py b/src/cases/migrations/0008_auto_20210913_1918.py similarity index 100% rename from cases/migrations/0008_auto_20210913_1918.py rename to src/cases/migrations/0008_auto_20210913_1918.py diff --git a/cases/migrations/0009_rename_company_case_org.py b/src/cases/migrations/0009_rename_company_case_org.py similarity index 100% rename from cases/migrations/0009_rename_company_case_org.py rename to src/cases/migrations/0009_rename_company_case_org.py diff --git a/cases/migrations/0010_alter_case_org.py b/src/cases/migrations/0010_alter_case_org.py similarity index 100% rename from cases/migrations/0010_alter_case_org.py rename to src/cases/migrations/0010_alter_case_org.py diff --git a/cases/migrations/__init__.py b/src/cases/migrations/__init__.py similarity index 100% rename from cases/migrations/__init__.py rename to src/cases/migrations/__init__.py diff --git a/cases/models.py b/src/cases/models.py similarity index 100% rename from cases/models.py rename to src/cases/models.py diff --git a/cases/serializer.py b/src/cases/serializer.py similarity index 100% rename from cases/serializer.py rename to src/cases/serializer.py diff --git a/cases/swagger_params.py b/src/cases/swagger_params.py similarity index 100% rename from cases/swagger_params.py rename to src/cases/swagger_params.py diff --git a/cases/tasks.py b/src/cases/tasks.py similarity index 100% rename from cases/tasks.py rename to src/cases/tasks.py diff --git a/cases/tests_celery_tasks.py b/src/cases/tests_celery_tasks.py similarity index 100% rename from cases/tests_celery_tasks.py rename to src/cases/tests_celery_tasks.py diff --git a/cases/urls.py b/src/cases/urls.py similarity index 100% rename from cases/urls.py rename to src/cases/urls.py diff --git a/cases/views.py b/src/cases/views.py similarity index 100% rename from cases/views.py rename to src/cases/views.py diff --git a/common/__init__.py b/src/common/__init__.py similarity index 100% rename from common/__init__.py rename to src/common/__init__.py diff --git a/common/access_decorators_mixins.py b/src/common/access_decorators_mixins.py similarity index 100% rename from common/access_decorators_mixins.py rename to src/common/access_decorators_mixins.py diff --git a/common/admin.py b/src/common/admin.py similarity index 100% rename from common/admin.py rename to src/common/admin.py diff --git a/common/app_urls/__init__.py b/src/common/app_urls/__init__.py similarity index 100% rename from common/app_urls/__init__.py rename to src/common/app_urls/__init__.py diff --git a/common/apps.py b/src/common/apps.py similarity index 100% rename from common/apps.py rename to src/common/apps.py diff --git a/common/context_processors/__init__.py b/src/common/context_processors/__init__.py similarity index 100% rename from common/context_processors/__init__.py rename to src/common/context_processors/__init__.py diff --git a/common/context_processors/common.py b/src/common/context_processors/common.py similarity index 100% rename from common/context_processors/common.py rename to src/common/context_processors/common.py diff --git a/common/custom_auth.py b/src/common/custom_auth.py similarity index 100% rename from common/custom_auth.py rename to src/common/custom_auth.py diff --git a/common/middleware/__init__.py b/src/common/middleware/__init__.py similarity index 100% rename from common/middleware/__init__.py rename to src/common/middleware/__init__.py diff --git a/common/middleware/get_company.py b/src/common/middleware/get_company.py similarity index 100% rename from common/middleware/get_company.py rename to src/common/middleware/get_company.py diff --git a/common/migrations/0001_initial.py b/src/common/migrations/0001_initial.py similarity index 100% rename from common/migrations/0001_initial.py rename to src/common/migrations/0001_initial.py diff --git a/common/migrations/0002_auto_20190128_1237.py b/src/common/migrations/0002_auto_20190128_1237.py similarity index 100% rename from common/migrations/0002_auto_20190128_1237.py rename to src/common/migrations/0002_auto_20190128_1237.py diff --git a/common/migrations/0003_document.py b/src/common/migrations/0003_document.py similarity index 100% rename from common/migrations/0003_document.py rename to src/common/migrations/0003_document.py diff --git a/common/migrations/0004_attachments_case.py b/src/common/migrations/0004_attachments_case.py similarity index 100% rename from common/migrations/0004_attachments_case.py rename to src/common/migrations/0004_attachments_case.py diff --git a/common/migrations/0005_auto_20190204_1400.py b/src/common/migrations/0005_auto_20190204_1400.py similarity index 100% rename from common/migrations/0005_auto_20190204_1400.py rename to src/common/migrations/0005_auto_20190204_1400.py diff --git a/common/migrations/0006_comment_user.py b/src/common/migrations/0006_comment_user.py similarity index 100% rename from common/migrations/0006_comment_user.py rename to src/common/migrations/0006_comment_user.py diff --git a/common/migrations/0007_auto_20190212_1334.py b/src/common/migrations/0007_auto_20190212_1334.py similarity index 100% rename from common/migrations/0007_auto_20190212_1334.py rename to src/common/migrations/0007_auto_20190212_1334.py diff --git a/common/migrations/0008_google.py b/src/common/migrations/0008_google.py similarity index 100% rename from common/migrations/0008_google.py rename to src/common/migrations/0008_google.py diff --git a/common/migrations/0009_document_shared_to.py b/src/common/migrations/0009_document_shared_to.py similarity index 100% rename from common/migrations/0009_document_shared_to.py rename to src/common/migrations/0009_document_shared_to.py diff --git a/common/migrations/0010_apisettings.py b/src/common/migrations/0010_apisettings.py similarity index 100% rename from common/migrations/0010_apisettings.py rename to src/common/migrations/0010_apisettings.py diff --git a/common/migrations/0011_auto_20190218_1230.py b/src/common/migrations/0011_auto_20190218_1230.py similarity index 100% rename from common/migrations/0011_auto_20190218_1230.py rename to src/common/migrations/0011_auto_20190218_1230.py diff --git a/common/migrations/0012_apisettings_website.py b/src/common/migrations/0012_apisettings_website.py similarity index 100% rename from common/migrations/0012_apisettings_website.py rename to src/common/migrations/0012_apisettings_website.py diff --git a/common/migrations/0013_auto_20190508_1540.py b/src/common/migrations/0013_auto_20190508_1540.py similarity index 100% rename from common/migrations/0013_auto_20190508_1540.py rename to src/common/migrations/0013_auto_20190508_1540.py diff --git a/common/migrations/0014_auto_20190524_1113.py b/src/common/migrations/0014_auto_20190524_1113.py similarity index 100% rename from common/migrations/0014_auto_20190524_1113.py rename to src/common/migrations/0014_auto_20190524_1113.py diff --git a/common/migrations/0015_auto_20190604_1830.py b/src/common/migrations/0015_auto_20190604_1830.py similarity index 100% rename from common/migrations/0015_auto_20190604_1830.py rename to src/common/migrations/0015_auto_20190604_1830.py diff --git a/common/migrations/0016_auto_20190624_1816.py b/src/common/migrations/0016_auto_20190624_1816.py similarity index 100% rename from common/migrations/0016_auto_20190624_1816.py rename to src/common/migrations/0016_auto_20190624_1816.py diff --git a/common/migrations/0017_auto_20190722_1443.py b/src/common/migrations/0017_auto_20190722_1443.py similarity index 100% rename from common/migrations/0017_auto_20190722_1443.py rename to src/common/migrations/0017_auto_20190722_1443.py diff --git a/common/migrations/0018_document_teams.py b/src/common/migrations/0018_document_teams.py similarity index 100% rename from common/migrations/0018_document_teams.py rename to src/common/migrations/0018_document_teams.py diff --git a/common/migrations/0019_auto_20200401_0941.py b/src/common/migrations/0019_auto_20200401_0941.py similarity index 100% rename from common/migrations/0019_auto_20200401_0941.py rename to src/common/migrations/0019_auto_20200401_0941.py diff --git a/common/migrations/0020_auto_20200409_1653.py b/src/common/migrations/0020_auto_20200409_1653.py similarity index 100% rename from common/migrations/0020_auto_20200409_1653.py rename to src/common/migrations/0020_auto_20200409_1653.py diff --git a/common/migrations/0021_document_company.py b/src/common/migrations/0021_document_company.py similarity index 100% rename from common/migrations/0021_document_company.py rename to src/common/migrations/0021_document_company.py diff --git a/common/migrations/0022_auto_20200609_1203.py b/src/common/migrations/0022_auto_20200609_1203.py similarity index 100% rename from common/migrations/0022_auto_20200609_1203.py rename to src/common/migrations/0022_auto_20200609_1203.py diff --git a/common/migrations/0023_apisettings_company.py b/src/common/migrations/0023_apisettings_company.py similarity index 100% rename from common/migrations/0023_apisettings_company.py rename to src/common/migrations/0023_apisettings_company.py diff --git a/common/migrations/0024_remove_user_company.py b/src/common/migrations/0024_remove_user_company.py similarity index 100% rename from common/migrations/0024_remove_user_company.py rename to src/common/migrations/0024_remove_user_company.py diff --git a/common/migrations/0025_auto_20210324_1307.py b/src/common/migrations/0025_auto_20210324_1307.py similarity index 100% rename from common/migrations/0025_auto_20210324_1307.py rename to src/common/migrations/0025_auto_20210324_1307.py diff --git a/common/migrations/0026_auto_20210325_1923.py b/src/common/migrations/0026_auto_20210325_1923.py similarity index 100% rename from common/migrations/0026_auto_20210325_1923.py rename to src/common/migrations/0026_auto_20210325_1923.py diff --git a/common/migrations/0027_auto_20210418_1112.py b/src/common/migrations/0027_auto_20210418_1112.py similarity index 100% rename from common/migrations/0027_auto_20210418_1112.py rename to src/common/migrations/0027_auto_20210418_1112.py diff --git a/common/migrations/0028_user_phone.py b/src/common/migrations/0028_user_phone.py similarity index 100% rename from common/migrations/0028_user_phone.py rename to src/common/migrations/0028_user_phone.py diff --git a/common/migrations/0029_auto_20210730_1328.py b/src/common/migrations/0029_auto_20210730_1328.py similarity index 100% rename from common/migrations/0029_auto_20210730_1328.py rename to src/common/migrations/0029_auto_20210730_1328.py diff --git a/common/migrations/0030_alter_user_role.py b/src/common/migrations/0030_alter_user_role.py similarity index 100% rename from common/migrations/0030_alter_user_role.py rename to src/common/migrations/0030_alter_user_role.py diff --git a/common/migrations/0031_auto_20210805_1214.py b/src/common/migrations/0031_auto_20210805_1214.py similarity index 100% rename from common/migrations/0031_auto_20210805_1214.py rename to src/common/migrations/0031_auto_20210805_1214.py diff --git a/common/migrations/0032_remove_user_user_type.py b/src/common/migrations/0032_remove_user_user_type.py similarity index 100% rename from common/migrations/0032_remove_user_user_type.py rename to src/common/migrations/0032_remove_user_user_type.py diff --git a/common/migrations/0033_alter_user_alternate_email.py b/src/common/migrations/0033_alter_user_alternate_email.py similarity index 100% rename from common/migrations/0033_alter_user_alternate_email.py rename to src/common/migrations/0033_alter_user_alternate_email.py diff --git a/common/migrations/0034_auto_20210913_1918.py b/src/common/migrations/0034_auto_20210913_1918.py similarity index 100% rename from common/migrations/0034_auto_20210913_1918.py rename to src/common/migrations/0034_auto_20210913_1918.py diff --git a/common/migrations/0035_remove_company_sub_domain.py b/src/common/migrations/0035_remove_company_sub_domain.py similarity index 100% rename from common/migrations/0035_remove_company_sub_domain.py rename to src/common/migrations/0035_remove_company_sub_domain.py diff --git a/common/migrations/0036_auto_20210922_1801.py b/src/common/migrations/0036_auto_20210922_1801.py similarity index 100% rename from common/migrations/0036_auto_20210922_1801.py rename to src/common/migrations/0036_auto_20210922_1801.py diff --git a/common/migrations/0037_alter_profile_org.py b/src/common/migrations/0037_alter_profile_org.py similarity index 100% rename from common/migrations/0037_alter_profile_org.py rename to src/common/migrations/0037_alter_profile_org.py diff --git a/common/migrations/0038_auto_20220120_1318.py b/src/common/migrations/0038_auto_20220120_1318.py similarity index 100% rename from common/migrations/0038_auto_20220120_1318.py rename to src/common/migrations/0038_auto_20220120_1318.py diff --git a/common/migrations/0039_auto_20220202_2023.py b/src/common/migrations/0039_auto_20220202_2023.py similarity index 100% rename from common/migrations/0039_auto_20220202_2023.py rename to src/common/migrations/0039_auto_20220202_2023.py diff --git a/common/migrations/__init__.py b/src/common/migrations/__init__.py similarity index 100% rename from common/migrations/__init__.py rename to src/common/migrations/__init__.py diff --git a/common/models.py b/src/common/models.py similarity index 100% rename from common/models.py rename to src/common/models.py diff --git a/common/serializer.py b/src/common/serializer.py similarity index 100% rename from common/serializer.py rename to src/common/serializer.py diff --git a/common/status.py b/src/common/status.py similarity index 100% rename from common/status.py rename to src/common/status.py diff --git a/common/swagger_params.py b/src/common/swagger_params.py similarity index 100% rename from common/swagger_params.py rename to src/common/swagger_params.py diff --git a/common/tasks.py b/src/common/tasks.py similarity index 100% rename from common/tasks.py rename to src/common/tasks.py diff --git a/common/templates/comment_email.html b/src/common/templates/comment_email.html similarity index 100% rename from common/templates/comment_email.html rename to src/common/templates/comment_email.html diff --git a/common/templates/password_reset_email.html b/src/common/templates/password_reset_email.html similarity index 100% rename from common/templates/password_reset_email.html rename to src/common/templates/password_reset_email.html diff --git a/common/templates/user_delete_email.html b/src/common/templates/user_delete_email.html similarity index 100% rename from common/templates/user_delete_email.html rename to src/common/templates/user_delete_email.html diff --git a/common/templates/user_status.html b/src/common/templates/user_status.html similarity index 100% rename from common/templates/user_status.html rename to src/common/templates/user_status.html diff --git a/common/templates/user_status_activate.html b/src/common/templates/user_status_activate.html similarity index 100% rename from common/templates/user_status_activate.html rename to src/common/templates/user_status_activate.html diff --git a/common/templates/user_status_deactivate.html b/src/common/templates/user_status_deactivate.html similarity index 100% rename from common/templates/user_status_deactivate.html rename to src/common/templates/user_status_deactivate.html diff --git a/common/templates/user_status_in.html b/src/common/templates/user_status_in.html similarity index 100% rename from common/templates/user_status_in.html rename to src/common/templates/user_status_in.html diff --git a/common/templatetags/__init__.py b/src/common/templatetags/__init__.py similarity index 100% rename from common/templatetags/__init__.py rename to src/common/templatetags/__init__.py diff --git a/common/templatetags/common_tags.py b/src/common/templatetags/common_tags.py similarity index 100% rename from common/templatetags/common_tags.py rename to src/common/templatetags/common_tags.py diff --git a/common/tests_celery_tasks.py b/src/common/tests_celery_tasks.py similarity index 100% rename from common/tests_celery_tasks.py rename to src/common/tests_celery_tasks.py diff --git a/common/token_generator.py b/src/common/token_generator.py similarity index 100% rename from common/token_generator.py rename to src/common/token_generator.py diff --git a/common/urls.py b/src/common/urls.py similarity index 100% rename from common/urls.py rename to src/common/urls.py diff --git a/common/utils.py b/src/common/utils.py similarity index 100% rename from common/utils.py rename to src/common/utils.py diff --git a/common/views.py b/src/common/views.py similarity index 100% rename from common/views.py rename to src/common/views.py diff --git a/contacts/__init__.py b/src/contacts/__init__.py similarity index 100% rename from contacts/__init__.py rename to src/contacts/__init__.py diff --git a/contacts/admin.py b/src/contacts/admin.py similarity index 100% rename from contacts/admin.py rename to src/contacts/admin.py diff --git a/contacts/apps.py b/src/contacts/apps.py similarity index 100% rename from contacts/apps.py rename to src/contacts/apps.py diff --git a/contacts/migrations/0001_initial.py b/src/contacts/migrations/0001_initial.py similarity index 100% rename from contacts/migrations/0001_initial.py rename to src/contacts/migrations/0001_initial.py diff --git a/contacts/migrations/0002_auto_20190210_1810.py b/src/contacts/migrations/0002_auto_20190210_1810.py similarity index 100% rename from contacts/migrations/0002_auto_20190210_1810.py rename to src/contacts/migrations/0002_auto_20190210_1810.py diff --git a/contacts/migrations/0002_auto_20190212_1334.py b/src/contacts/migrations/0002_auto_20190212_1334.py similarity index 100% rename from contacts/migrations/0002_auto_20190212_1334.py rename to src/contacts/migrations/0002_auto_20190212_1334.py diff --git a/contacts/migrations/0003_merge_20190214_1427.py b/src/contacts/migrations/0003_merge_20190214_1427.py similarity index 100% rename from contacts/migrations/0003_merge_20190214_1427.py rename to src/contacts/migrations/0003_merge_20190214_1427.py diff --git a/contacts/migrations/0004_contact_teams.py b/src/contacts/migrations/0004_contact_teams.py similarity index 100% rename from contacts/migrations/0004_contact_teams.py rename to src/contacts/migrations/0004_contact_teams.py diff --git a/contacts/migrations/0005_contact_company.py b/src/contacts/migrations/0005_contact_company.py similarity index 100% rename from contacts/migrations/0005_contact_company.py rename to src/contacts/migrations/0005_contact_company.py diff --git a/contacts/migrations/0006_remove_contact_company.py b/src/contacts/migrations/0006_remove_contact_company.py similarity index 100% rename from contacts/migrations/0006_remove_contact_company.py rename to src/contacts/migrations/0006_remove_contact_company.py diff --git a/contacts/migrations/0007_auto_20210716_1554.py b/src/contacts/migrations/0007_auto_20210716_1554.py similarity index 100% rename from contacts/migrations/0007_auto_20210716_1554.py rename to src/contacts/migrations/0007_auto_20210716_1554.py diff --git a/contacts/migrations/0008_auto_20210913_1918.py b/src/contacts/migrations/0008_auto_20210913_1918.py similarity index 100% rename from contacts/migrations/0008_auto_20210913_1918.py rename to src/contacts/migrations/0008_auto_20210913_1918.py diff --git a/contacts/migrations/0009_rename_company_contact_org.py b/src/contacts/migrations/0009_rename_company_contact_org.py similarity index 100% rename from contacts/migrations/0009_rename_company_contact_org.py rename to src/contacts/migrations/0009_rename_company_contact_org.py diff --git a/contacts/migrations/0010_auto_20211006_1251.py b/src/contacts/migrations/0010_auto_20211006_1251.py similarity index 100% rename from contacts/migrations/0010_auto_20211006_1251.py rename to src/contacts/migrations/0010_auto_20211006_1251.py diff --git a/contacts/migrations/__init__.py b/src/contacts/migrations/__init__.py similarity index 100% rename from contacts/migrations/__init__.py rename to src/contacts/migrations/__init__.py diff --git a/contacts/models.py b/src/contacts/models.py similarity index 100% rename from contacts/models.py rename to src/contacts/models.py diff --git a/contacts/serializer.py b/src/contacts/serializer.py similarity index 100% rename from contacts/serializer.py rename to src/contacts/serializer.py diff --git a/contacts/swagger_params.py b/src/contacts/swagger_params.py similarity index 100% rename from contacts/swagger_params.py rename to src/contacts/swagger_params.py diff --git a/contacts/tasks.py b/src/contacts/tasks.py similarity index 100% rename from contacts/tasks.py rename to src/contacts/tasks.py diff --git a/contacts/tests_celery_tasks.py b/src/contacts/tests_celery_tasks.py similarity index 100% rename from contacts/tests_celery_tasks.py rename to src/contacts/tests_celery_tasks.py diff --git a/contacts/urls.py b/src/contacts/urls.py similarity index 100% rename from contacts/urls.py rename to src/contacts/urls.py diff --git a/contacts/views.py b/src/contacts/views.py similarity index 100% rename from contacts/views.py rename to src/contacts/views.py diff --git a/crm/__init__.py b/src/crm/__init__.py similarity index 100% rename from crm/__init__.py rename to src/crm/__init__.py diff --git a/crm/celery.py b/src/crm/celery.py similarity index 100% rename from crm/celery.py rename to src/crm/celery.py diff --git a/src/crm/environ.py b/src/crm/environ.py new file mode 100644 index 000000000..3d318eaf0 --- /dev/null +++ b/src/crm/environ.py @@ -0,0 +1,31 @@ +import environ + +env = environ.Env( + # set casting, default value + DEBUG=(bool, False), + SECRET_KEY=(str, "&q1&ftrxho9lrzm$$%6!cplb5ac957-9y@t@17u(3yqqb#9xl%"), + ALLOWED_HOSTS=(list, ["127.0.0.1", "localhost", ".bottlecrm.com"]), + ENV_TYPE=(str, "dev"), + + DEFAULT_FROM_EMAIL=(str, ''), + ADMIN_EMAIL=(str, ''), + MARKETING_REPLY_EMAIL=(str, ''), + PASSWORD_RESET_MAIL_FROM_USER=(str, ''), + + CELERY_BROKER_URL=(str, "redis://127.0.0.1:6379/9"), + CELERY_RESULT_BACKEND=(str, "redis://127.0.0.1:6379/10"), + + TIME_ZONE=(str, "Asia/Kolkata"), + + DOMAIN_NAME=(str, 'example.com'), + + # Server + AWS_BUCKET_NAME=(str, ''), + AWS_ACCESS_KEY_ID=(str, ''), + AWS_SECRET_ACCESS_KEY=(str, ''), + AWS_S3_CUSTOM_DOMAIN=(str, ''), + AWS_SES_REGION_NAME=(str, ''), + AWS_SES_REGION_ENDPOINT=(str, ''), + + SENTRY_DSN=(str, ''), +) diff --git a/src/crm/server_settings.py b/src/crm/server_settings.py new file mode 100644 index 000000000..bfbbd1cb1 --- /dev/null +++ b/src/crm/server_settings.py @@ -0,0 +1,50 @@ +import os +import sentry_sdk +from sentry_sdk.integrations.django import DjangoIntegration + +from .environ import env + +DEBUG = False + +AWS_STORAGE_BUCKET_NAME = AWS_BUCKET_NAME = env("AWS_BUCKET_NAME") +AWS_ACCESS_KEY_ID = env("AWS_ACCESS_KEY_ID") +AWS_SECRET_ACCESS_KEY = env("AWS_SECRET_ACCESS_KEY") +S3_DOMAIN = AWS_S3_CUSTOM_DOMAIN = env("S3_DOMAIN") # .s3.amazonaws.com +AWS_SES_REGION_NAME = env("AWS_SES_REGION_NAME") +AWS_SES_REGION_ENDPOINT = env("AWS_SES_REGION_ENDPOINT") + +AWS_S3_OBJECT_PARAMETERS = { + "CacheControl": "max-age=86400", +} + +DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage" +DEFAULT_S3_PATH = "media" + +MEDIA_ROOT = "/%s/" % DEFAULT_S3_PATH +MEDIA_URL = "//%s/%s/" % (S3_DOMAIN, DEFAULT_S3_PATH) +# STATIC_URL = "https://%s/" % (S3_DOMAIN) +# ADMIN_MEDIA_PREFIX = STATIC_URL + "admin/" + +CORS_ORIGIN_ALLOW_ALL = True + +AWS_IS_GZIPPED = True +AWS_ENABLED = True +AWS_S3_SECURE_URLS = True + +EMAIL_BACKEND = "django_ses.SESBackend" + +SESSION_COOKIE_DOMAIN = ".bottlecrm.com" + +if sentry_dsn := env("SENTRY_DSN"): + sentry_sdk.init( + dsn=sentry_dsn, + integrations=[DjangoIntegration()], + traces_sample_rate=1.0, + # If you wish to associate users to errors (assuming you are using + # django.contrib.auth) you may enable sending PII data. + send_default_pii=True, + ) + + RAVEN_CONFIG = { + "dsn": sentry_dsn, + } diff --git a/crm/settings.py b/src/crm/settings.py similarity index 86% rename from crm/settings.py rename to src/crm/settings.py index 0e42f0e99..a54609dba 100644 --- a/crm/settings.py +++ b/src/crm/settings.py @@ -1,22 +1,23 @@ import os -from dotenv import load_dotenv +# from dotenv import load_dotenv from corsheaders.defaults import default_headers +from .environ import env + # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # env_path = Path(".") / ".env" -load_dotenv() +# load_dotenv() + # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = os.getenv( - "SECRET_KEY", "&q1&ftrxho9lrzm$$%6!cplb5ac957-9y@t@17u(3yqqb#9xl%" -) +SECRET_KEY = env("SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = os.getenv("DEBUG") +DEBUG = env("DEBUG") -ALLOWED_HOSTS = ["localhost", "127.0.0.1", ".bottlecrm.com"] +ALLOWED_HOSTS = env.list("ALLOWED_HOSTS") INSTALLED_APPS = [ "django.contrib.auth", @@ -84,14 +85,7 @@ # https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql", - "NAME": os.getenv("DBNAME"), - "USER": os.getenv("DBUSER"), - "PASSWORD": os.getenv("DBPASSWORD"), - "HOST": os.getenv("DBHOST"), - "PORT": os.getenv("DBPORT"), - } + "default": env.db() } # Password validation @@ -116,7 +110,7 @@ # https://docs.djangoproject.com/en/1.10/topics/i18n/ -TIME_ZONE = "Asia/Kolkata" +TIME_ZONE = env('TIME_ZONE') USE_I18N = True @@ -127,7 +121,7 @@ AUTH_USER_MODEL = "common.User" STATIC_ROOT = os.path.join(BASE_DIR, "static") STATIC_URL = "/static/" -ENV_TYPE = os.getenv("ENV_TYPE", "dev") +ENV_TYPE = env("ENV_TYPE") if ENV_TYPE == "dev": # SESSION_COOKIE_DOMAIN = "localhost:8000" @@ -138,15 +132,15 @@ elif ENV_TYPE == "live": from .server_settings import * -DEFAULT_FROM_EMAIL = os.getenv("DEFAULT_FROM_EMAIL", "") -ADMIN_EMAIL = os.getenv("ADMIN_EMAIL", "") -MARKETING_REPLY_EMAIL = os.getenv("MARKETING_REPLY_EMAIL", "") -PASSWORD_RESET_MAIL_FROM_USER = os.getenv("PASSWORD_RESET_MAIL_FROM_USER", "") +DEFAULT_FROM_EMAIL = env("DEFAULT_FROM_EMAIL", "") +ADMIN_EMAIL = env("ADMIN_EMAIL", "") +MARKETING_REPLY_EMAIL = env("MARKETING_REPLY_EMAIL", "") +PASSWORD_RESET_MAIL_FROM_USER = env("PASSWORD_RESET_MAIL_FROM_USER", "") # celery Tasks -CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL") -CELERY_RESULT_BACKEND = os.getenv("CELERY_RESULT_BACKEND") +CELERY_BROKER_URL = env.cache_url("CELERY_BROKER_URL") +CELERY_RESULT_BACKEND = env.cache_url("CELERY_RESULT_BACKEND") LOGGING = { @@ -244,4 +238,4 @@ STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" -DOMAIN_NAME = os.getenv("DOMAIN_NAME") +DOMAIN_NAME = env("DOMAIN_NAME") diff --git a/crm/urls.py b/src/crm/urls.py similarity index 100% rename from crm/urls.py rename to src/crm/urls.py diff --git a/crm/wsgi.py b/src/crm/wsgi.py similarity index 100% rename from crm/wsgi.py rename to src/crm/wsgi.py diff --git a/emails/__init__.py b/src/emails/__init__.py similarity index 100% rename from emails/__init__.py rename to src/emails/__init__.py diff --git a/emails/admin.py b/src/emails/admin.py similarity index 100% rename from emails/admin.py rename to src/emails/admin.py diff --git a/emails/apps.py b/src/emails/apps.py similarity index 100% rename from emails/apps.py rename to src/emails/apps.py diff --git a/emails/forms.py b/src/emails/forms.py similarity index 100% rename from emails/forms.py rename to src/emails/forms.py diff --git a/emails/migrations/0001_initial.py b/src/emails/migrations/0001_initial.py similarity index 100% rename from emails/migrations/0001_initial.py rename to src/emails/migrations/0001_initial.py diff --git a/emails/migrations/__init__.py b/src/emails/migrations/__init__.py similarity index 100% rename from emails/migrations/__init__.py rename to src/emails/migrations/__init__.py diff --git a/emails/models.py b/src/emails/models.py similarity index 100% rename from emails/models.py rename to src/emails/models.py diff --git a/emails/serializer.py b/src/emails/serializer.py similarity index 100% rename from emails/serializer.py rename to src/emails/serializer.py diff --git a/emails/templates/create_mail.html b/src/emails/templates/create_mail.html similarity index 100% rename from emails/templates/create_mail.html rename to src/emails/templates/create_mail.html diff --git a/emails/templates/emails.html b/src/emails/templates/emails.html similarity index 100% rename from emails/templates/emails.html rename to src/emails/templates/emails.html diff --git a/emails/templates/mail_all.html b/src/emails/templates/mail_all.html similarity index 100% rename from emails/templates/mail_all.html rename to src/emails/templates/mail_all.html diff --git a/emails/templates/mail_center.html b/src/emails/templates/mail_center.html similarity index 100% rename from emails/templates/mail_center.html rename to src/emails/templates/mail_center.html diff --git a/emails/templates/mail_drafts.html b/src/emails/templates/mail_drafts.html similarity index 100% rename from emails/templates/mail_drafts.html rename to src/emails/templates/mail_drafts.html diff --git a/emails/templates/mail_important.html b/src/emails/templates/mail_important.html similarity index 100% rename from emails/templates/mail_important.html rename to src/emails/templates/mail_important.html diff --git a/emails/templates/mail_sent.html b/src/emails/templates/mail_sent.html similarity index 100% rename from emails/templates/mail_sent.html rename to src/emails/templates/mail_sent.html diff --git a/emails/templates/mail_trash.html b/src/emails/templates/mail_trash.html similarity index 100% rename from emails/templates/mail_trash.html rename to src/emails/templates/mail_trash.html diff --git a/emails/tests.py b/src/emails/tests.py similarity index 100% rename from emails/tests.py rename to src/emails/tests.py diff --git a/emails/urls.py b/src/emails/urls.py similarity index 100% rename from emails/urls.py rename to src/emails/urls.py diff --git a/emails/views.py b/src/emails/views.py similarity index 100% rename from emails/views.py rename to src/emails/views.py diff --git a/events/__init__.py b/src/events/__init__.py similarity index 100% rename from events/__init__.py rename to src/events/__init__.py diff --git a/events/admin.py b/src/events/admin.py similarity index 100% rename from events/admin.py rename to src/events/admin.py diff --git a/events/apps.py b/src/events/apps.py similarity index 100% rename from events/apps.py rename to src/events/apps.py diff --git a/events/migrations/0001_initial.py b/src/events/migrations/0001_initial.py similarity index 100% rename from events/migrations/0001_initial.py rename to src/events/migrations/0001_initial.py diff --git a/events/migrations/0002_event_date_of_meeting.py b/src/events/migrations/0002_event_date_of_meeting.py similarity index 100% rename from events/migrations/0002_event_date_of_meeting.py rename to src/events/migrations/0002_event_date_of_meeting.py diff --git a/events/migrations/0003_event_teams.py b/src/events/migrations/0003_event_teams.py similarity index 100% rename from events/migrations/0003_event_teams.py rename to src/events/migrations/0003_event_teams.py diff --git a/events/migrations/0004_event_company.py b/src/events/migrations/0004_event_company.py similarity index 100% rename from events/migrations/0004_event_company.py rename to src/events/migrations/0004_event_company.py diff --git a/events/migrations/0005_remove_event_company.py b/src/events/migrations/0005_remove_event_company.py similarity index 100% rename from events/migrations/0005_remove_event_company.py rename to src/events/migrations/0005_remove_event_company.py diff --git a/events/migrations/0006_auto_20210913_1918.py b/src/events/migrations/0006_auto_20210913_1918.py similarity index 100% rename from events/migrations/0006_auto_20210913_1918.py rename to src/events/migrations/0006_auto_20210913_1918.py diff --git a/events/migrations/0007_rename_company_event_org.py b/src/events/migrations/0007_rename_company_event_org.py similarity index 100% rename from events/migrations/0007_rename_company_event_org.py rename to src/events/migrations/0007_rename_company_event_org.py diff --git a/events/migrations/__init__.py b/src/events/migrations/__init__.py similarity index 100% rename from events/migrations/__init__.py rename to src/events/migrations/__init__.py diff --git a/events/models.py b/src/events/models.py similarity index 100% rename from events/models.py rename to src/events/models.py diff --git a/events/serializer.py b/src/events/serializer.py similarity index 100% rename from events/serializer.py rename to src/events/serializer.py diff --git a/events/swagger_params.py b/src/events/swagger_params.py similarity index 100% rename from events/swagger_params.py rename to src/events/swagger_params.py diff --git a/events/tasks.py b/src/events/tasks.py similarity index 100% rename from events/tasks.py rename to src/events/tasks.py diff --git a/events/templates/assigned_to_email_template_event.html b/src/events/templates/assigned_to_email_template_event.html similarity index 100% rename from events/templates/assigned_to_email_template_event.html rename to src/events/templates/assigned_to_email_template_event.html diff --git a/events/tests_celery_tasks.py b/src/events/tests_celery_tasks.py similarity index 100% rename from events/tests_celery_tasks.py rename to src/events/tests_celery_tasks.py diff --git a/events/urls.py b/src/events/urls.py similarity index 100% rename from events/urls.py rename to src/events/urls.py diff --git a/events/views.py b/src/events/views.py similarity index 100% rename from events/views.py rename to src/events/views.py diff --git a/invoices/__init__.py b/src/invoices/__init__.py similarity index 100% rename from invoices/__init__.py rename to src/invoices/__init__.py diff --git a/invoices/admin.py b/src/invoices/admin.py similarity index 100% rename from invoices/admin.py rename to src/invoices/admin.py diff --git a/invoices/api_urls.py b/src/invoices/api_urls.py similarity index 100% rename from invoices/api_urls.py rename to src/invoices/api_urls.py diff --git a/invoices/api_views.py b/src/invoices/api_views.py similarity index 100% rename from invoices/api_views.py rename to src/invoices/api_views.py diff --git a/invoices/apps.py b/src/invoices/apps.py similarity index 100% rename from invoices/apps.py rename to src/invoices/apps.py diff --git a/invoices/forms.py b/src/invoices/forms.py similarity index 100% rename from invoices/forms.py rename to src/invoices/forms.py diff --git a/invoices/migrations/0001_initial.py b/src/invoices/migrations/0001_initial.py similarity index 100% rename from invoices/migrations/0001_initial.py rename to src/invoices/migrations/0001_initial.py diff --git a/invoices/migrations/0002_auto_20190524_1113.py b/src/invoices/migrations/0002_auto_20190524_1113.py similarity index 100% rename from invoices/migrations/0002_auto_20190524_1113.py rename to src/invoices/migrations/0002_auto_20190524_1113.py diff --git a/invoices/migrations/0003_auto_20190527_1620.py b/src/invoices/migrations/0003_auto_20190527_1620.py similarity index 100% rename from invoices/migrations/0003_auto_20190527_1620.py rename to src/invoices/migrations/0003_auto_20190527_1620.py diff --git a/invoices/migrations/0004_auto_20190603_1844.py b/src/invoices/migrations/0004_auto_20190603_1844.py similarity index 100% rename from invoices/migrations/0004_auto_20190603_1844.py rename to src/invoices/migrations/0004_auto_20190603_1844.py diff --git a/invoices/migrations/0005_invoicehistory.py b/src/invoices/migrations/0005_invoicehistory.py similarity index 100% rename from invoices/migrations/0005_invoicehistory.py rename to src/invoices/migrations/0005_invoicehistory.py diff --git a/invoices/migrations/0006_invoice_account.py b/src/invoices/migrations/0006_invoice_account.py similarity index 100% rename from invoices/migrations/0006_invoice_account.py rename to src/invoices/migrations/0006_invoice_account.py diff --git a/invoices/migrations/0007_auto_20190909_1621.py b/src/invoices/migrations/0007_auto_20190909_1621.py similarity index 100% rename from invoices/migrations/0007_auto_20190909_1621.py rename to src/invoices/migrations/0007_auto_20190909_1621.py diff --git a/invoices/migrations/0008_invoice_teams.py b/src/invoices/migrations/0008_invoice_teams.py similarity index 100% rename from invoices/migrations/0008_invoice_teams.py rename to src/invoices/migrations/0008_invoice_teams.py diff --git a/invoices/migrations/0009_invoice_company.py b/src/invoices/migrations/0009_invoice_company.py similarity index 100% rename from invoices/migrations/0009_invoice_company.py rename to src/invoices/migrations/0009_invoice_company.py diff --git a/invoices/migrations/0010_invoice_tax.py b/src/invoices/migrations/0010_invoice_tax.py similarity index 100% rename from invoices/migrations/0010_invoice_tax.py rename to src/invoices/migrations/0010_invoice_tax.py diff --git a/invoices/migrations/0011_rename_company_invoice_org.py b/src/invoices/migrations/0011_rename_company_invoice_org.py similarity index 100% rename from invoices/migrations/0011_rename_company_invoice_org.py rename to src/invoices/migrations/0011_rename_company_invoice_org.py diff --git a/invoices/migrations/__init__.py b/src/invoices/migrations/__init__.py similarity index 100% rename from invoices/migrations/__init__.py rename to src/invoices/migrations/__init__.py diff --git a/invoices/models.py b/src/invoices/models.py similarity index 100% rename from invoices/models.py rename to src/invoices/models.py diff --git a/invoices/serializer.py b/src/invoices/serializer.py similarity index 100% rename from invoices/serializer.py rename to src/invoices/serializer.py diff --git a/invoices/swagger_params.py b/src/invoices/swagger_params.py similarity index 100% rename from invoices/swagger_params.py rename to src/invoices/swagger_params.py diff --git a/invoices/tasks.py b/src/invoices/tasks.py similarity index 100% rename from invoices/tasks.py rename to src/invoices/tasks.py diff --git a/invoices/templates/assigned_to_email_template.html b/src/invoices/templates/assigned_to_email_template.html similarity index 100% rename from invoices/templates/assigned_to_email_template.html rename to src/invoices/templates/assigned_to_email_template.html diff --git a/invoices/templates/invoice_cancelled.html b/src/invoices/templates/invoice_cancelled.html similarity index 100% rename from invoices/templates/invoice_cancelled.html rename to src/invoices/templates/invoice_cancelled.html diff --git a/invoices/templates/invoice_create_1.html b/src/invoices/templates/invoice_create_1.html similarity index 100% rename from invoices/templates/invoice_create_1.html rename to src/invoices/templates/invoice_create_1.html diff --git a/invoices/templates/invoice_detail_email.html b/src/invoices/templates/invoice_detail_email.html similarity index 100% rename from invoices/templates/invoice_detail_email.html rename to src/invoices/templates/invoice_detail_email.html diff --git a/invoices/templates/invoice_download_pdf.html b/src/invoices/templates/invoice_download_pdf.html similarity index 100% rename from invoices/templates/invoice_download_pdf.html rename to src/invoices/templates/invoice_download_pdf.html diff --git a/invoices/templates/invoices_create.html b/src/invoices/templates/invoices_create.html similarity index 100% rename from invoices/templates/invoices_create.html rename to src/invoices/templates/invoices_create.html diff --git a/invoices/templates/invoices_detail.html b/src/invoices/templates/invoices_detail.html similarity index 100% rename from invoices/templates/invoices_detail.html rename to src/invoices/templates/invoices_detail.html diff --git a/invoices/templates/invoices_detail_1.html b/src/invoices/templates/invoices_detail_1.html similarity index 100% rename from invoices/templates/invoices_detail_1.html rename to src/invoices/templates/invoices_detail_1.html diff --git a/invoices/templates/invoices_list.html b/src/invoices/templates/invoices_list.html similarity index 100% rename from invoices/templates/invoices_list.html rename to src/invoices/templates/invoices_list.html diff --git a/invoices/tests.py b/src/invoices/tests.py similarity index 100% rename from invoices/tests.py rename to src/invoices/tests.py diff --git a/invoices/tests_celery_tasks.py b/src/invoices/tests_celery_tasks.py similarity index 100% rename from invoices/tests_celery_tasks.py rename to src/invoices/tests_celery_tasks.py diff --git a/invoices/urls.py b/src/invoices/urls.py similarity index 100% rename from invoices/urls.py rename to src/invoices/urls.py diff --git a/invoices/views.py b/src/invoices/views.py similarity index 100% rename from invoices/views.py rename to src/invoices/views.py diff --git a/leads/__init__.py b/src/leads/__init__.py similarity index 100% rename from leads/__init__.py rename to src/leads/__init__.py diff --git a/leads/admin.py b/src/leads/admin.py similarity index 100% rename from leads/admin.py rename to src/leads/admin.py diff --git a/leads/apps.py b/src/leads/apps.py similarity index 100% rename from leads/apps.py rename to src/leads/apps.py diff --git a/leads/forms.py b/src/leads/forms.py similarity index 100% rename from leads/forms.py rename to src/leads/forms.py diff --git a/leads/migrations/0001_initial.py b/src/leads/migrations/0001_initial.py similarity index 100% rename from leads/migrations/0001_initial.py rename to src/leads/migrations/0001_initial.py diff --git a/leads/migrations/0002_lead_tags.py b/src/leads/migrations/0002_lead_tags.py similarity index 100% rename from leads/migrations/0002_lead_tags.py rename to src/leads/migrations/0002_lead_tags.py diff --git a/leads/migrations/0003_auto_20190211_1142.py b/src/leads/migrations/0003_auto_20190211_1142.py similarity index 100% rename from leads/migrations/0003_auto_20190211_1142.py rename to src/leads/migrations/0003_auto_20190211_1142.py diff --git a/leads/migrations/0004_auto_20190212_1334.py b/src/leads/migrations/0004_auto_20190212_1334.py similarity index 100% rename from leads/migrations/0004_auto_20190212_1334.py rename to src/leads/migrations/0004_auto_20190212_1334.py diff --git a/leads/migrations/0005_auto_20190212_1708.py b/src/leads/migrations/0005_auto_20190212_1708.py similarity index 100% rename from leads/migrations/0005_auto_20190212_1708.py rename to src/leads/migrations/0005_auto_20190212_1708.py diff --git a/leads/migrations/0006_auto_20190218_1217.py b/src/leads/migrations/0006_auto_20190218_1217.py similarity index 100% rename from leads/migrations/0006_auto_20190218_1217.py rename to src/leads/migrations/0006_auto_20190218_1217.py diff --git a/leads/migrations/0007_auto_20190306_1226.py b/src/leads/migrations/0007_auto_20190306_1226.py similarity index 100% rename from leads/migrations/0007_auto_20190306_1226.py rename to src/leads/migrations/0007_auto_20190306_1226.py diff --git a/leads/migrations/0008_auto_20190315_1503.py b/src/leads/migrations/0008_auto_20190315_1503.py similarity index 100% rename from leads/migrations/0008_auto_20190315_1503.py rename to src/leads/migrations/0008_auto_20190315_1503.py diff --git a/leads/migrations/0009_lead_created_from_site.py b/src/leads/migrations/0009_lead_created_from_site.py similarity index 100% rename from leads/migrations/0009_lead_created_from_site.py rename to src/leads/migrations/0009_lead_created_from_site.py diff --git a/leads/migrations/0010_lead_teams.py b/src/leads/migrations/0010_lead_teams.py similarity index 100% rename from leads/migrations/0010_lead_teams.py rename to src/leads/migrations/0010_lead_teams.py diff --git a/leads/migrations/0011_auto_20200401_0937.py b/src/leads/migrations/0011_auto_20200401_0937.py similarity index 100% rename from leads/migrations/0011_auto_20200401_0937.py rename to src/leads/migrations/0011_auto_20200401_0937.py diff --git a/leads/migrations/0012_lead_company.py b/src/leads/migrations/0012_lead_company.py similarity index 100% rename from leads/migrations/0012_lead_company.py rename to src/leads/migrations/0012_lead_company.py diff --git a/leads/migrations/0013_remove_lead_company.py b/src/leads/migrations/0013_remove_lead_company.py similarity index 100% rename from leads/migrations/0013_remove_lead_company.py rename to src/leads/migrations/0013_remove_lead_company.py diff --git a/leads/migrations/0014_auto_20210324_1208.py b/src/leads/migrations/0014_auto_20210324_1208.py similarity index 100% rename from leads/migrations/0014_auto_20210324_1208.py rename to src/leads/migrations/0014_auto_20210324_1208.py diff --git a/leads/migrations/0015_auto_20210913_1918.py b/src/leads/migrations/0015_auto_20210913_1918.py similarity index 100% rename from leads/migrations/0015_auto_20210913_1918.py rename to src/leads/migrations/0015_auto_20210913_1918.py diff --git a/leads/migrations/0016_rename_company_lead_org.py b/src/leads/migrations/0016_rename_company_lead_org.py similarity index 100% rename from leads/migrations/0016_rename_company_lead_org.py rename to src/leads/migrations/0016_rename_company_lead_org.py diff --git a/leads/migrations/0017_alter_lead_org.py b/src/leads/migrations/0017_alter_lead_org.py similarity index 100% rename from leads/migrations/0017_alter_lead_org.py rename to src/leads/migrations/0017_alter_lead_org.py diff --git a/leads/migrations/0018_auto_20211022_1731.py b/src/leads/migrations/0018_auto_20211022_1731.py similarity index 100% rename from leads/migrations/0018_auto_20211022_1731.py rename to src/leads/migrations/0018_auto_20211022_1731.py diff --git a/leads/migrations/0019_auto_20211022_1732.py b/src/leads/migrations/0019_auto_20211022_1732.py similarity index 100% rename from leads/migrations/0019_auto_20211022_1732.py rename to src/leads/migrations/0019_auto_20211022_1732.py diff --git a/leads/migrations/__init__.py b/src/leads/migrations/__init__.py similarity index 100% rename from leads/migrations/__init__.py rename to src/leads/migrations/__init__.py diff --git a/leads/models.py b/src/leads/models.py similarity index 100% rename from leads/models.py rename to src/leads/models.py diff --git a/leads/serializer.py b/src/leads/serializer.py similarity index 100% rename from leads/serializer.py rename to src/leads/serializer.py diff --git a/leads/swagger_params.py b/src/leads/swagger_params.py similarity index 100% rename from leads/swagger_params.py rename to src/leads/swagger_params.py diff --git a/leads/tasks.py b/src/leads/tasks.py similarity index 100% rename from leads/tasks.py rename to src/leads/tasks.py diff --git a/leads/tests_celery_tasks.py b/src/leads/tests_celery_tasks.py similarity index 100% rename from leads/tests_celery_tasks.py rename to src/leads/tests_celery_tasks.py diff --git a/leads/urls.py b/src/leads/urls.py similarity index 100% rename from leads/urls.py rename to src/leads/urls.py diff --git a/leads/views.py b/src/leads/views.py similarity index 100% rename from leads/views.py rename to src/leads/views.py diff --git a/opportunity/__init__.py b/src/opportunity/__init__.py similarity index 100% rename from opportunity/__init__.py rename to src/opportunity/__init__.py diff --git a/opportunity/admin.py b/src/opportunity/admin.py similarity index 100% rename from opportunity/admin.py rename to src/opportunity/admin.py diff --git a/opportunity/apps.py b/src/opportunity/apps.py similarity index 100% rename from opportunity/apps.py rename to src/opportunity/apps.py diff --git a/opportunity/migrations/0001_initial.py b/src/opportunity/migrations/0001_initial.py similarity index 100% rename from opportunity/migrations/0001_initial.py rename to src/opportunity/migrations/0001_initial.py diff --git a/opportunity/migrations/0002_opportunity_tags.py b/src/opportunity/migrations/0002_opportunity_tags.py similarity index 100% rename from opportunity/migrations/0002_opportunity_tags.py rename to src/opportunity/migrations/0002_opportunity_tags.py diff --git a/opportunity/migrations/0003_auto_20190212_1334.py b/src/opportunity/migrations/0003_auto_20190212_1334.py similarity index 100% rename from opportunity/migrations/0003_auto_20190212_1334.py rename to src/opportunity/migrations/0003_auto_20190212_1334.py diff --git a/opportunity/migrations/0004_opportunity_teams.py b/src/opportunity/migrations/0004_opportunity_teams.py similarity index 100% rename from opportunity/migrations/0004_opportunity_teams.py rename to src/opportunity/migrations/0004_opportunity_teams.py diff --git a/opportunity/migrations/0005_opportunity_company.py b/src/opportunity/migrations/0005_opportunity_company.py similarity index 100% rename from opportunity/migrations/0005_opportunity_company.py rename to src/opportunity/migrations/0005_opportunity_company.py diff --git a/opportunity/migrations/0006_remove_opportunity_company.py b/src/opportunity/migrations/0006_remove_opportunity_company.py similarity index 100% rename from opportunity/migrations/0006_remove_opportunity_company.py rename to src/opportunity/migrations/0006_remove_opportunity_company.py diff --git a/opportunity/migrations/0007_auto_20210913_1918.py b/src/opportunity/migrations/0007_auto_20210913_1918.py similarity index 100% rename from opportunity/migrations/0007_auto_20210913_1918.py rename to src/opportunity/migrations/0007_auto_20210913_1918.py diff --git a/opportunity/migrations/0008_rename_company_opportunity_org.py b/src/opportunity/migrations/0008_rename_company_opportunity_org.py similarity index 100% rename from opportunity/migrations/0008_rename_company_opportunity_org.py rename to src/opportunity/migrations/0008_rename_company_opportunity_org.py diff --git a/opportunity/migrations/0009_auto_20211006_1251.py b/src/opportunity/migrations/0009_auto_20211006_1251.py similarity index 100% rename from opportunity/migrations/0009_auto_20211006_1251.py rename to src/opportunity/migrations/0009_auto_20211006_1251.py diff --git a/opportunity/migrations/__init__.py b/src/opportunity/migrations/__init__.py similarity index 100% rename from opportunity/migrations/__init__.py rename to src/opportunity/migrations/__init__.py diff --git a/opportunity/models.py b/src/opportunity/models.py similarity index 100% rename from opportunity/models.py rename to src/opportunity/models.py diff --git a/opportunity/serializer.py b/src/opportunity/serializer.py similarity index 100% rename from opportunity/serializer.py rename to src/opportunity/serializer.py diff --git a/opportunity/swagger_params.py b/src/opportunity/swagger_params.py similarity index 100% rename from opportunity/swagger_params.py rename to src/opportunity/swagger_params.py diff --git a/opportunity/tasks.py b/src/opportunity/tasks.py similarity index 100% rename from opportunity/tasks.py rename to src/opportunity/tasks.py diff --git a/opportunity/tests_celery_tasks.py b/src/opportunity/tests_celery_tasks.py similarity index 100% rename from opportunity/tests_celery_tasks.py rename to src/opportunity/tests_celery_tasks.py diff --git a/opportunity/urls.py b/src/opportunity/urls.py similarity index 100% rename from opportunity/urls.py rename to src/opportunity/urls.py diff --git a/opportunity/views.py b/src/opportunity/views.py similarity index 100% rename from opportunity/views.py rename to src/opportunity/views.py diff --git a/planner/__init__.py b/src/planner/__init__.py similarity index 100% rename from planner/__init__.py rename to src/planner/__init__.py diff --git a/planner/admin.py b/src/planner/admin.py similarity index 100% rename from planner/admin.py rename to src/planner/admin.py diff --git a/planner/apps.py b/src/planner/apps.py similarity index 100% rename from planner/apps.py rename to src/planner/apps.py diff --git a/planner/forms.py b/src/planner/forms.py similarity index 100% rename from planner/forms.py rename to src/planner/forms.py diff --git a/planner/migrations/0001_initial.py b/src/planner/migrations/0001_initial.py similarity index 100% rename from planner/migrations/0001_initial.py rename to src/planner/migrations/0001_initial.py diff --git a/planner/migrations/0002_auto_20190212_1334.py b/src/planner/migrations/0002_auto_20190212_1334.py similarity index 100% rename from planner/migrations/0002_auto_20190212_1334.py rename to src/planner/migrations/0002_auto_20190212_1334.py diff --git a/planner/migrations/__init__.py b/src/planner/migrations/__init__.py similarity index 100% rename from planner/migrations/__init__.py rename to src/planner/migrations/__init__.py diff --git a/planner/models.py b/src/planner/models.py similarity index 100% rename from planner/models.py rename to src/planner/models.py diff --git a/planner/serializer.py b/src/planner/serializer.py similarity index 100% rename from planner/serializer.py rename to src/planner/serializer.py diff --git a/planner/templates/calls.html b/src/planner/templates/calls.html similarity index 100% rename from planner/templates/calls.html rename to src/planner/templates/calls.html diff --git a/planner/templates/calls_list.html b/src/planner/templates/calls_list.html similarity index 100% rename from planner/templates/calls_list.html rename to src/planner/templates/calls_list.html diff --git a/planner/templates/contacts.html b/src/planner/templates/contacts.html similarity index 100% rename from planner/templates/contacts.html rename to src/planner/templates/contacts.html diff --git a/planner/templates/dialog_models.html b/src/planner/templates/dialog_models.html similarity index 100% rename from planner/templates/dialog_models.html rename to src/planner/templates/dialog_models.html diff --git a/planner/templates/events_base.html b/src/planner/templates/events_base.html similarity index 100% rename from planner/templates/events_base.html rename to src/planner/templates/events_base.html diff --git a/planner/templates/leads.html b/src/planner/templates/leads.html similarity index 100% rename from planner/templates/leads.html rename to src/planner/templates/leads.html diff --git a/planner/templates/meetings.html b/src/planner/templates/meetings.html similarity index 100% rename from planner/templates/meetings.html rename to src/planner/templates/meetings.html diff --git a/planner/templates/meetings_list.html b/src/planner/templates/meetings_list.html similarity index 100% rename from planner/templates/meetings_list.html rename to src/planner/templates/meetings_list.html diff --git a/planner/templates/reminder.html b/src/planner/templates/reminder.html similarity index 100% rename from planner/templates/reminder.html rename to src/planner/templates/reminder.html diff --git a/planner/templates/tasks.html b/src/planner/templates/tasks.html similarity index 100% rename from planner/templates/tasks.html rename to src/planner/templates/tasks.html diff --git a/planner/templates/tasks_list.html b/src/planner/templates/tasks_list.html similarity index 100% rename from planner/templates/tasks_list.html rename to src/planner/templates/tasks_list.html diff --git a/planner/templates/users.html b/src/planner/templates/users.html similarity index 100% rename from planner/templates/users.html rename to src/planner/templates/users.html diff --git a/planner/tests.py b/src/planner/tests.py similarity index 100% rename from planner/tests.py rename to src/planner/tests.py diff --git a/planner/urls.py b/src/planner/urls.py similarity index 100% rename from planner/urls.py rename to src/planner/urls.py diff --git a/planner/views.py b/src/planner/views.py similarity index 100% rename from planner/views.py rename to src/planner/views.py diff --git a/tasks/__init__.py b/src/tasks/__init__.py similarity index 100% rename from tasks/__init__.py rename to src/tasks/__init__.py diff --git a/tasks/admin.py b/src/tasks/admin.py similarity index 100% rename from tasks/admin.py rename to src/tasks/admin.py diff --git a/tasks/apps.py b/src/tasks/apps.py similarity index 100% rename from tasks/apps.py rename to src/tasks/apps.py diff --git a/tasks/celery_tasks.py b/src/tasks/celery_tasks.py similarity index 100% rename from tasks/celery_tasks.py rename to src/tasks/celery_tasks.py diff --git a/tasks/migrations/0001_initial.py b/src/tasks/migrations/0001_initial.py similarity index 100% rename from tasks/migrations/0001_initial.py rename to src/tasks/migrations/0001_initial.py diff --git a/tasks/migrations/0002_task_created_by.py b/src/tasks/migrations/0002_task_created_by.py similarity index 100% rename from tasks/migrations/0002_task_created_by.py rename to src/tasks/migrations/0002_task_created_by.py diff --git a/tasks/migrations/0003_task_created_on.py b/src/tasks/migrations/0003_task_created_on.py similarity index 100% rename from tasks/migrations/0003_task_created_on.py rename to src/tasks/migrations/0003_task_created_on.py diff --git a/tasks/migrations/0004_task_teams.py b/src/tasks/migrations/0004_task_teams.py similarity index 100% rename from tasks/migrations/0004_task_teams.py rename to src/tasks/migrations/0004_task_teams.py diff --git a/tasks/migrations/0005_task_company.py b/src/tasks/migrations/0005_task_company.py similarity index 100% rename from tasks/migrations/0005_task_company.py rename to src/tasks/migrations/0005_task_company.py diff --git a/tasks/migrations/0006_remove_task_company.py b/src/tasks/migrations/0006_remove_task_company.py similarity index 100% rename from tasks/migrations/0006_remove_task_company.py rename to src/tasks/migrations/0006_remove_task_company.py diff --git a/tasks/migrations/0007_auto_20210913_1918.py b/src/tasks/migrations/0007_auto_20210913_1918.py similarity index 100% rename from tasks/migrations/0007_auto_20210913_1918.py rename to src/tasks/migrations/0007_auto_20210913_1918.py diff --git a/tasks/migrations/0008_rename_company_task_org.py b/src/tasks/migrations/0008_rename_company_task_org.py similarity index 100% rename from tasks/migrations/0008_rename_company_task_org.py rename to src/tasks/migrations/0008_rename_company_task_org.py diff --git a/tasks/migrations/0009_alter_task_org.py b/src/tasks/migrations/0009_alter_task_org.py similarity index 100% rename from tasks/migrations/0009_alter_task_org.py rename to src/tasks/migrations/0009_alter_task_org.py diff --git a/tasks/migrations/__init__.py b/src/tasks/migrations/__init__.py similarity index 100% rename from tasks/migrations/__init__.py rename to src/tasks/migrations/__init__.py diff --git a/tasks/models.py b/src/tasks/models.py similarity index 100% rename from tasks/models.py rename to src/tasks/models.py diff --git a/tasks/serializer.py b/src/tasks/serializer.py similarity index 100% rename from tasks/serializer.py rename to src/tasks/serializer.py diff --git a/tasks/swagger_params.py b/src/tasks/swagger_params.py similarity index 100% rename from tasks/swagger_params.py rename to src/tasks/swagger_params.py diff --git a/tasks/templates/tasks_email_template.html b/src/tasks/templates/tasks_email_template.html similarity index 100% rename from tasks/templates/tasks_email_template.html rename to src/tasks/templates/tasks_email_template.html diff --git a/tasks/tests_celery_tasks.py b/src/tasks/tests_celery_tasks.py similarity index 100% rename from tasks/tests_celery_tasks.py rename to src/tasks/tests_celery_tasks.py diff --git a/tasks/urls.py b/src/tasks/urls.py similarity index 100% rename from tasks/urls.py rename to src/tasks/urls.py diff --git a/tasks/utils.py b/src/tasks/utils.py similarity index 100% rename from tasks/utils.py rename to src/tasks/utils.py diff --git a/tasks/views.py b/src/tasks/views.py similarity index 100% rename from tasks/views.py rename to src/tasks/views.py diff --git a/teams/__init__.py b/src/teams/__init__.py similarity index 100% rename from teams/__init__.py rename to src/teams/__init__.py diff --git a/teams/admin.py b/src/teams/admin.py similarity index 100% rename from teams/admin.py rename to src/teams/admin.py diff --git a/teams/apps.py b/src/teams/apps.py similarity index 100% rename from teams/apps.py rename to src/teams/apps.py diff --git a/teams/migrations/0001_initial.py b/src/teams/migrations/0001_initial.py similarity index 100% rename from teams/migrations/0001_initial.py rename to src/teams/migrations/0001_initial.py diff --git a/teams/migrations/0002_auto_20190624_1250.py b/src/teams/migrations/0002_auto_20190624_1250.py similarity index 100% rename from teams/migrations/0002_auto_20190624_1250.py rename to src/teams/migrations/0002_auto_20190624_1250.py diff --git a/teams/migrations/0003_auto_20190909_1621.py b/src/teams/migrations/0003_auto_20190909_1621.py similarity index 100% rename from teams/migrations/0003_auto_20190909_1621.py rename to src/teams/migrations/0003_auto_20190909_1621.py diff --git a/teams/migrations/0004_teams_company.py b/src/teams/migrations/0004_teams_company.py similarity index 100% rename from teams/migrations/0004_teams_company.py rename to src/teams/migrations/0004_teams_company.py diff --git a/teams/migrations/0005_remove_teams_company.py b/src/teams/migrations/0005_remove_teams_company.py similarity index 100% rename from teams/migrations/0005_remove_teams_company.py rename to src/teams/migrations/0005_remove_teams_company.py diff --git a/teams/migrations/0006_auto_20210913_1918.py b/src/teams/migrations/0006_auto_20210913_1918.py similarity index 100% rename from teams/migrations/0006_auto_20210913_1918.py rename to src/teams/migrations/0006_auto_20210913_1918.py diff --git a/teams/migrations/0007_rename_company_teams_org.py b/src/teams/migrations/0007_rename_company_teams_org.py similarity index 100% rename from teams/migrations/0007_rename_company_teams_org.py rename to src/teams/migrations/0007_rename_company_teams_org.py diff --git a/teams/migrations/__init__.py b/src/teams/migrations/__init__.py similarity index 100% rename from teams/migrations/__init__.py rename to src/teams/migrations/__init__.py diff --git a/teams/models.py b/src/teams/models.py similarity index 100% rename from teams/models.py rename to src/teams/models.py diff --git a/teams/serializer.py b/src/teams/serializer.py similarity index 100% rename from teams/serializer.py rename to src/teams/serializer.py diff --git a/teams/swagger_params.py b/src/teams/swagger_params.py similarity index 100% rename from teams/swagger_params.py rename to src/teams/swagger_params.py diff --git a/teams/tasks.py b/src/teams/tasks.py similarity index 100% rename from teams/tasks.py rename to src/teams/tasks.py diff --git a/teams/urls.py b/src/teams/urls.py similarity index 100% rename from teams/urls.py rename to src/teams/urls.py diff --git a/teams/views.py b/src/teams/views.py similarity index 100% rename from teams/views.py rename to src/teams/views.py diff --git a/templates/assigned_to/account_assigned.html b/src/templates/assigned_to/account_assigned.html similarity index 100% rename from templates/assigned_to/account_assigned.html rename to src/templates/assigned_to/account_assigned.html diff --git a/templates/assigned_to/cases_assigned.html b/src/templates/assigned_to/cases_assigned.html similarity index 100% rename from templates/assigned_to/cases_assigned.html rename to src/templates/assigned_to/cases_assigned.html diff --git a/templates/assigned_to/contact_assigned.html b/src/templates/assigned_to/contact_assigned.html similarity index 100% rename from templates/assigned_to/contact_assigned.html rename to src/templates/assigned_to/contact_assigned.html diff --git a/templates/assigned_to/leads_assigned.html b/src/templates/assigned_to/leads_assigned.html similarity index 100% rename from templates/assigned_to/leads_assigned.html rename to src/templates/assigned_to/leads_assigned.html diff --git a/templates/assigned_to/opportunity_assigned.html b/src/templates/assigned_to/opportunity_assigned.html similarity index 100% rename from templates/assigned_to/opportunity_assigned.html rename to src/templates/assigned_to/opportunity_assigned.html diff --git a/templates/base.html b/src/templates/base.html similarity index 100% rename from templates/base.html rename to src/templates/base.html diff --git a/templates/registration/password_reset_email.html b/src/templates/registration/password_reset_email.html similarity index 100% rename from templates/registration/password_reset_email.html rename to src/templates/registration/password_reset_email.html diff --git a/templates/root.html b/src/templates/root.html similarity index 100% rename from templates/root.html rename to src/templates/root.html diff --git a/templates/root_email_template.html b/src/templates/root_email_template.html similarity index 100% rename from templates/root_email_template.html rename to src/templates/root_email_template.html diff --git a/templates/root_email_template_new.html b/src/templates/root_email_template_new.html similarity index 100% rename from templates/root_email_template_new.html rename to src/templates/root_email_template_new.html From b53e47e8dfbb12c16ec14c4c3e03c42eb723857a Mon Sep 17 00:00:00 2001 From: Gio Date: Thu, 24 Feb 2022 09:10:19 +0000 Subject: [PATCH 2/3] Fixed derepcated ugettext --- .flake8 | 15 ++ .isort.cfg | 15 ++ poetry.lock | 241 +++++++++++++++++++++++++++++++- pyproject.toml | 5 + src/accounts/models.py | 2 +- src/adm/__init__.py | 0 src/cases/models.py | 2 +- src/common/app_urls/__init__.py | 2 + src/common/models.py | 2 +- src/common/utils.py | 2 +- src/contacts/models.py | 2 +- src/events/models.py | 2 +- src/invoices/models.py | 2 +- src/invoices/tests.py | 3 +- src/leads/models.py | 2 +- src/opportunity/models.py | 2 +- src/planner/models.py | 2 +- src/tasks/models.py | 2 +- src/teams/models.py | 2 +- src/web/__init__.py | 0 src/web/urls.py | 1 + 21 files changed, 292 insertions(+), 14 deletions(-) create mode 100644 .flake8 create mode 100644 .isort.cfg create mode 100644 src/adm/__init__.py create mode 100644 src/web/__init__.py create mode 100644 src/web/urls.py diff --git a/.flake8 b/.flake8 new file mode 100644 index 000000000..12609db43 --- /dev/null +++ b/.flake8 @@ -0,0 +1,15 @@ +[flake8] +max-complexity = 12 +max-line-length = 120 +exclude = + .*/ + __pycache__ + docs + src/aws + ~build + dist + *.md + datahub_notebooks/* + +per-file-ignores = + src/**/migrations/*.py:E501 diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 000000000..e91ff2512 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,15 @@ +[settings] +combine_as_imports = true +default_section = THIRDPARTY +include_trailing_comma = true +;forced_separate = django.contrib,django.utils +line_length = 80 +known_future_library = future,pies,__future__ +;known_standard_library = +known_third_party = rest_framework,django,constance +known_first_party = cbtconsole +multi_line_output = 0 +balanced_wrapping = true +;not_skip = __init__.py +sections = FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER +skip = .venv src/cbtconsole/cli/__init__.py diff --git a/poetry.lock b/poetry.lock index 64fd2e4d3..aa59baed9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -182,6 +182,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "cfgv" +version = "3.3.1" +description = "Validate configuration and produce human readable error messages." +category = "dev" +optional = false +python-versions = ">=3.6.1" + [[package]] name = "charset-normalizer" version = "2.0.12" @@ -315,6 +323,14 @@ wrapt = ">=1.10,<2" [package.extras] dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] +[[package]] +name = "distlib" +version = "0.3.4" +description = "Distribution utilities" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "django" version = "3.2.11" @@ -482,6 +498,31 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "filelock" +version = "3.6.0" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] +testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] + +[[package]] +name = "flake8" +version = "4.0.1" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.8.0,<2.9.0" +pyflakes = ">=2.4.0,<2.5.0" + [[package]] name = "future" version = "0.18.2" @@ -508,6 +549,17 @@ chardet = ["chardet (>=2.2)"] genshi = ["genshi"] lxml = ["lxml"] +[[package]] +name = "identify" +version = "2.4.11" +description = "File identification library for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +license = ["ukkonen"] + [[package]] name = "idna" version = "3.3" @@ -532,6 +584,20 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +requirements_deprecated_finder = ["pipreqs", "pip-api"] +colors = ["colorama (>=0.4.3,<0.5.0)"] +plugins = ["setuptools"] + [[package]] name = "itypes" version = "1.2.0" @@ -598,6 +664,14 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "mypy-extensions" version = "0.4.3" @@ -606,6 +680,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "nodeenv" +version = "1.6.0" +description = "Node.js virtual environment builder" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "openpyxl" version = "3.0.9" @@ -674,6 +756,18 @@ python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" [package.extras] graphviz = ["graphviz"] +[[package]] +name = "platformdirs" +version = "2.5.1" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] + [[package]] name = "pluggy" version = "1.0.0" @@ -686,6 +780,22 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "pre-commit" +version = "2.17.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +toml = "*" +virtualenv = ">=20.0.8" + [[package]] name = "prompt-toolkit" version = "3.0.28" @@ -713,6 +823,22 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pycodestyle" +version = "2.8.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pyflakes" +version = "2.4.0" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pyjwt" version = "1.7.1" @@ -811,6 +937,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "redis" version = "4.1.1" @@ -1005,6 +1139,24 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "virtualenv" +version = "20.13.1" +description = "Virtual Python Environment builder" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +distlib = ">=0.3.1,<1" +filelock = ">=3.2,<4" +platformdirs = ">=2,<3" +six = ">=1.9.0,<2" + +[package.extras] +docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] +testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] + [[package]] name = "wcwidth" version = "0.2.5" @@ -1064,7 +1216,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "18e6438768bb622b67d3c411c4beab986e77bfdfcc40729ba36b9ae9b7f5c432" +content-hash = "591326d7a97ac82418bd443835c5a1ae48522996959b78b0d682cb47ec786218" [metadata.files] amqp = [ @@ -1114,6 +1266,10 @@ certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] +cfgv = [ + {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, + {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, +] charset-normalizer = [ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, @@ -1203,6 +1359,10 @@ deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] +distlib = [ + {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, + {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, +] django = [ {file = "Django-3.2.11-py3-none-any.whl", hash = "sha256:0a0a37f0b93aef30c4bf3a839c187e1175bcdeb7e177341da0cb7b8194416891"}, {file = "Django-3.2.11.tar.gz", hash = "sha256:69c94abe5d6b1b088bf475e09b7b74403f943e34da107e798465d2045da27e75"}, @@ -1249,6 +1409,14 @@ et-xmlfile = [ {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, ] +filelock = [ + {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, + {file = "filelock-3.6.0.tar.gz", hash = "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85"}, +] +flake8 = [ + {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, + {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, +] future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] @@ -1256,6 +1424,10 @@ html5lib = [ {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, ] +identify = [ + {file = "identify-2.4.11-py2.py3-none-any.whl", hash = "sha256:fd906823ed1db23c7a48f9b176a1d71cb8abede1e21ebe614bac7bdd688d9213"}, + {file = "identify-2.4.11.tar.gz", hash = "sha256:2986942d3974c8f2e5019a190523b0b0e2a07cb8e89bf236727fb4b26f27f8fd"}, +] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -1268,6 +1440,10 @@ iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] itypes = [ {file = "itypes-1.2.0-py2.py3-none-any.whl", hash = "sha256:03da6872ca89d29aef62773672b2d408f490f80db48b23079a4b194c86dd04c6"}, {file = "itypes-1.2.0.tar.gz", hash = "sha256:af886f129dea4a2a1e3d36595a2d139589e4dd287f5cab0b40e799ee81570ff1"}, @@ -1326,10 +1502,18 @@ markupsafe = [ {file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"}, {file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"}, ] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] +nodeenv = [ + {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, + {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, +] openpyxl = [ {file = "openpyxl-3.0.9-py2.py3-none-any.whl", hash = "sha256:8f3b11bd896a95468a4ab162fc4fcd260d46157155d1f8bfaabb99d88cfcf79f"}, {file = "openpyxl-3.0.9.tar.gz", hash = "sha256:40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f"}, @@ -1359,10 +1543,18 @@ pipdeptree = [ {file = "pipdeptree-2.2.1-py3-none-any.whl", hash = "sha256:e20655a38d6e363d8e86d6a85e8a648680a3f4b6d039d6ee3ab0f539da1ad6ce"}, {file = "pipdeptree-2.2.1.tar.gz", hash = "sha256:2b97d80c64d229e01ad242f14229a899263c6e8645c588ec5b054c1b81f3065d"}, ] +platformdirs = [ + {file = "platformdirs-2.5.1-py3-none-any.whl", hash = "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227"}, + {file = "platformdirs-2.5.1.tar.gz", hash = "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d"}, +] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] +pre-commit = [ + {file = "pre_commit-2.17.0-py2.py3-none-any.whl", hash = "sha256:725fa7459782d7bec5ead072810e47351de01709be838c2ce1726b9591dad616"}, + {file = "pre_commit-2.17.0.tar.gz", hash = "sha256:c1a8040ff15ad3d648c70cc3e55b93e4d2d5b687320955505587fd79bbaed06a"}, +] prompt-toolkit = [ {file = "prompt_toolkit-3.0.28-py3-none-any.whl", hash = "sha256:30129d870dcb0b3b6a53efdc9d0a83ea96162ffd28ffe077e94215b233dc670c"}, {file = "prompt_toolkit-3.0.28.tar.gz", hash = "sha256:9f1cd16b1e86c2968f2519d7fb31dd9d669916f515612c269d14e9ed52b51650"}, @@ -1429,6 +1621,14 @@ py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +pycodestyle = [ + {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, + {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, +] +pyflakes = [ + {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, + {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, +] pyjwt = [ {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"}, {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"}, @@ -1461,6 +1661,41 @@ pytz = [ {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, ] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] redis = [ {file = "redis-4.1.1-py3-none-any.whl", hash = "sha256:bc97d18938ca18d66737d0ef88584a2073069589e4026813cfba9ad6df9a9f40"}, {file = "redis-4.1.1.tar.gz", hash = "sha256:07420a3fbedd8e012c31d4fadac943fb81568946da202c5a5bc237774e5280a0"}, @@ -1646,6 +1881,10 @@ vine = [ {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, ] +virtualenv = [ + {file = "virtualenv-20.13.1-py2.py3-none-any.whl", hash = "sha256:45e1d053cad4cd453181ae877c4ffc053546ae99e7dd049b9ff1d9be7491abf7"}, + {file = "virtualenv-20.13.1.tar.gz", hash = "sha256:e0621bcbf4160e4e1030f05065c8834b4e93f4fcc223255db2a823440aca9c14"}, +] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, diff --git a/pyproject.toml b/pyproject.toml index ea5735287..4c0f6c36d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,6 +88,11 @@ xlwt = "1.3.0" django-environ = "^0.8.1" [tool.poetry.dev-dependencies] +flake8 = "^4.0.1" +isort = "^5.10.1" +pre-commit = "^2.17.0" +pytest = "^7.0.1" +pytest-django = "^4.5.2" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/src/accounts/models.py b/src/accounts/models.py index 0e52c12dd..fbd2461c2 100644 --- a/src/accounts/models.py +++ b/src/accounts/models.py @@ -1,7 +1,7 @@ import arrow from django.db import models from django.utils.translation import pgettext_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.models import Org, Profile from common.utils import INDCHOICES, COUNTRIES diff --git a/src/adm/__init__.py b/src/adm/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cases/models.py b/src/cases/models.py index b2223f750..9df424dfc 100644 --- a/src/cases/models.py +++ b/src/cases/models.py @@ -1,7 +1,7 @@ import arrow from django.db import models from django.utils.translation import pgettext_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.contenttypes.models import ContentType from accounts.models import Account from contacts.models import Contact diff --git a/src/common/app_urls/__init__.py b/src/common/app_urls/__init__.py index 87267c877..a5ac1c72d 100644 --- a/src/common/app_urls/__init__.py +++ b/src/common/app_urls/__init__.py @@ -1,8 +1,10 @@ from django.urls import include, path +from django.contrib import admin app_name = "common_urls" urlpatterns = [ path("", include(("common.urls"))), + path("admin/", admin.site.urls), path("accounts/", include("accounts.urls", namespace="api_accounts")), path("contacts/", include("contacts.urls", namespace="api_contacts")), path("leads/", include("leads.urls", namespace="api_leads")), diff --git a/src/common/models.py b/src/common/models.py index 15743d8da..cd467beac 100644 --- a/src/common/models.py +++ b/src/common/models.py @@ -4,7 +4,7 @@ import os import time from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager from phonenumber_field.modelfields import PhoneNumberField from common.templatetags.common_tags import ( diff --git a/src/common/utils.py b/src/common/utils.py index 040606a53..ba7a9ff01 100644 --- a/src/common/utils.py +++ b/src/common/utils.py @@ -1,5 +1,5 @@ import pytz -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ def jwt_payload_handler(user): diff --git a/src/contacts/models.py b/src/contacts/models.py index ed17f16bf..865cbe947 100644 --- a/src/contacts/models.py +++ b/src/contacts/models.py @@ -1,6 +1,6 @@ import arrow from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.models import Address, Org, Profile from phonenumber_field.modelfields import PhoneNumberField diff --git a/src/events/models.py b/src/events/models.py index c0d77ade8..f74e34df6 100644 --- a/src/events/models.py +++ b/src/events/models.py @@ -1,7 +1,7 @@ import arrow from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.models import Org, Profile from contacts.models import Contact from teams.models import Teams diff --git a/src/invoices/models.py b/src/invoices/models.py index dc038c8cd..8f92ea5c5 100644 --- a/src/invoices/models.py +++ b/src/invoices/models.py @@ -1,7 +1,7 @@ import datetime import arrow from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.models import Address, User, Org from common.utils import CURRENCY_CODES from accounts.models import Account diff --git a/src/invoices/tests.py b/src/invoices/tests.py index 78b221cba..b74cd9ab0 100644 --- a/src/invoices/tests.py +++ b/src/invoices/tests.py @@ -5,8 +5,9 @@ from django.urls import reverse from accounts.models import Account -from common.models import Address, Attachments, Comment, User, Company +from common.models import Address, Attachments, Comment, User from invoices.models import Invoice, InvoiceHistory +from leads.models import Company from teams.models import Teams diff --git a/src/leads/models.py b/src/leads/models.py index ac8420bd0..515e04739 100644 --- a/src/leads/models.py +++ b/src/leads/models.py @@ -1,7 +1,7 @@ import arrow from django.db import models from django.utils.translation import pgettext_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from phonenumber_field.modelfields import PhoneNumberField from accounts.models import Tags diff --git a/src/opportunity/models.py b/src/opportunity/models.py index 10d23ccb7..abffb87e2 100644 --- a/src/opportunity/models.py +++ b/src/opportunity/models.py @@ -1,7 +1,7 @@ import arrow from django.db import models from django.utils.translation import pgettext_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.models import Account, Tags from contacts.models import Contact diff --git a/src/planner/models.py b/src/planner/models.py index 72f253289..3e4b2d6e5 100644 --- a/src/planner/models.py +++ b/src/planner/models.py @@ -1,6 +1,6 @@ from django.db import models from django.utils.translation import pgettext_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey diff --git a/src/tasks/models.py b/src/tasks/models.py index 6805a3b3a..9f531d168 100644 --- a/src/tasks/models.py +++ b/src/tasks/models.py @@ -3,7 +3,7 @@ from common.models import Profile, Org from accounts.models import Account from contacts.models import Contact -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from teams.models import Teams diff --git a/src/teams/models.py b/src/teams/models.py index 8260c532b..768a8e148 100644 --- a/src/teams/models.py +++ b/src/teams/models.py @@ -2,7 +2,7 @@ from django.db import models from common.models import Org, Profile -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class Teams(models.Model): diff --git a/src/web/__init__.py b/src/web/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/web/urls.py b/src/web/urls.py new file mode 100644 index 000000000..637600f58 --- /dev/null +++ b/src/web/urls.py @@ -0,0 +1 @@ +urlpatterns = [] From ddd52bd9799755f72c155a82185f7d221aa70a55 Mon Sep 17 00:00:00 2001 From: Gio Date: Sat, 26 Feb 2022 21:35:24 +0000 Subject: [PATCH 3/3] WIP --- poetry.lock | 71 +++++++++++++++++++++++++++++++------------------- pyproject.toml | 8 +++--- pytest.ini | 3 ++- 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/poetry.lock b/poetry.lock index aa59baed9..ed60d301c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -43,7 +43,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] name = "atomicwrites" version = "1.4.0" description = "Atomic file writes." -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" @@ -51,7 +51,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" name = "attrs" version = "21.4.0" description = "Classes Without Boilerplate" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" @@ -254,7 +254,7 @@ six = "*" name = "codacy-coverage" version = "1.3.11" description = "Codacy coverage reporter for Python" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -302,7 +302,7 @@ jinja2 = "*" name = "coverage" version = "6.2" description = "Code coverage measurement for Python" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -580,7 +580,7 @@ python-versions = ">=3.5" name = "iniconfig" version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -772,7 +772,7 @@ test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -819,7 +819,7 @@ python-versions = ">=3.6" name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" @@ -865,9 +865,9 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.0.1" +version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -879,16 +879,16 @@ iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" py = ">=1.8.2" -tomli = ">=1.0.0" +toml = "*" [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] [[package]] name = "pytest-django" version = "4.5.2" description = "A Django plugin for pytest." -category = "main" +category = "dev" optional = false python-versions = ">=3.5" @@ -899,6 +899,28 @@ pytest = ">=5.4.0" docs = ["sphinx", "sphinx-rtd-theme"] testing = ["django", "django-configurations (>=2.0)"] +[[package]] +name = "pytest-env" +version = "0.6.2" +description = "py.test plugin that allows you to add environment variables." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pytest = ">=2.6.0" + +[[package]] +name = "pytest-pythonpath" +version = "0.7.4" +description = "pytest plugin for adding to the PYTHONPATH from command line or configs." +category = "dev" +optional = false +python-versions = ">=2.6, <4" + +[package.dependencies] +pytest = ">=2.5.2,<7" + [[package]] name = "python-dateutil" version = "2.8.2" @@ -1086,14 +1108,6 @@ category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -category = "main" -optional = false -python-versions = ">=3.7" - [[package]] name = "typed-ast" version = "1.5.2" @@ -1216,7 +1230,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "591326d7a97ac82418bd443835c5a1ae48522996959b78b0d682cb47ec786218" +content-hash = "2dacade1601622eafb01da885aa4a318cf4b1c22a604da8f2311e7d58327d884" [metadata.files] amqp = [ @@ -1638,13 +1652,20 @@ pyparsing = [ {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pytest = [ - {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, - {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, ] pytest-django = [ {file = "pytest-django-4.5.2.tar.gz", hash = "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2"}, {file = "pytest_django-4.5.2-py3-none-any.whl", hash = "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e"}, ] +pytest-env = [ + {file = "pytest-env-0.6.2.tar.gz", hash = "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2"}, +] +pytest-pythonpath = [ + {file = "pytest-pythonpath-0.7.4.tar.gz", hash = "sha256:64e195b23a8f8c0c631fb16882d9ad6fa4137ed1f2961ddd15d52065cd435db6"}, + {file = "pytest_pythonpath-0.7.4-py3-none-any.whl", hash = "sha256:e73e11dab2f0b83e73229e261242b251f0a369d7f527dbfec068822fd26a6ce5"}, +] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, @@ -1835,10 +1856,6 @@ toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] typed-ast = [ {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, diff --git a/pyproject.toml b/pyproject.toml index 4c0f6c36d..730f457a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,9 +43,7 @@ black = "20.8b1" boto3 = "1.20.37" # CacheControl = "0.12.10" celery = "5.2.3" -codacy-coverage = "1.3.11" # contextlib2 = "21.6.0" -coverage = "6.2" # cssselect = "1.1.0" # distlib = "0.3.3" # distro = "1.6.0" @@ -72,7 +70,6 @@ pip-check = "2.7" pipdeptree = "2.2.1" # progress = "1.6" psycopg2-binary = "2.9.3" -pytest-django = "4.5.2" python-dotenv = "0.19.2" # python-memcached = "1.59" pytoml = "0.1.21" @@ -91,8 +88,11 @@ django-environ = "^0.8.1" flake8 = "^4.0.1" isort = "^5.10.1" pre-commit = "^2.17.0" -pytest = "^7.0.1" pytest-django = "^4.5.2" +pytest-pythonpath = "^0.7.4" +pytest-env = "^0.6.2" +codacy-coverage = "1.3.11" +coverage = "6.2" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/pytest.ini b/pytest.ini index 4455c1e99..34635d6a8 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,4 +1,5 @@ [pytest] DJANGO_SETTINGS_MODULE=crm.settings -python_files = tests.py test_*.py *_tests.py +python_paths = ./src +python_files = tests.py test_*.py *_tests.py tests_*.py