fincas 0.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- accounting/__init__.py +0 -0
- accounting/admin.py +167 -0
- accounting/api.py +66 -0
- accounting/apps.py +7 -0
- accounting/erp_urls.py +46 -0
- accounting/erp_views.py +1054 -0
- accounting/forms.py +63 -0
- accounting/management/__init__.py +0 -0
- accounting/management/commands/__init__.py +0 -0
- accounting/management/commands/import_qbo_export.py +197 -0
- accounting/management/commands/posting_rules.py +206 -0
- accounting/migrations/0001_initial.py +442 -0
- accounting/migrations/0002_documentpostingrule_journalentry_posting_key_and_more.py +191 -0
- accounting/migrations/0003_paymentproviderpostingoverride.py +67 -0
- accounting/migrations/__init__.py +0 -0
- accounting/models.py +811 -0
- accounting/periods.py +83 -0
- accounting/posting.py +280 -0
- accounting/qbo/__init__.py +8 -0
- accounting/qbo/importer.py +921 -0
- accounting/qbo/mapping.py +280 -0
- accounting/qbo/readers.py +416 -0
- accounting/serializers.py +17 -0
- accounting/test_m3_upload.py +103 -0
- accounting/tests/__init__.py +0 -0
- accounting/tests/fixtures/qbo_synthetic/AMBIGUITIES.md +61 -0
- accounting/tests/fixtures/qbo_synthetic/MANIFEST.json +111 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_account_hash.csv +6 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_account_hash.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_account_no.csv +6 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_account_no.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_account_number.csv +6 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_account_number.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_no.csv +6 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_no.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_num.csv +6 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_num.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_number.csv +6 -0
- accounting/tests/fixtures/qbo_synthetic/coa_account_number_via_number.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_description_vs_memo.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_description_vs_memo.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_duplicate_headers.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_duplicate_headers.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_empty_rows_and_spacers.csv +4 -0
- accounting/tests/fixtures/qbo_synthetic/coa_empty_rows_and_spacers.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_full_with_preamble_and_extras.csv +9 -0
- accounting/tests/fixtures/qbo_synthetic/coa_full_with_preamble_and_extras.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_case_variants.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_case_variants.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_normalization.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_normalization.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_only_one_match.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_only_one_match.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_punctuation.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_header_punctuation.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_minimal_columns.csv +3 -0
- accounting/tests/fixtures/qbo_synthetic/coa_minimal_columns.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_name_and_account_both_present.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_name_and_account_both_present.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_name_is_account.csv +3 -0
- accounting/tests/fixtures/qbo_synthetic/coa_name_is_account.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/coa_short_rows_padded.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/coa_short_rows_padded.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_dates_mixed.csv +5 -0
- accounting/tests/fixtures/qbo_synthetic/txn_dates_mixed.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_doc_number.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_doc_number.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_document_number.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_document_number.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_no.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_no.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_num.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_num.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_number.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_number.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_ref_no.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_ref_no.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_reference_number.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_doc_number_via_reference_number.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_duplicate_amount.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_duplicate_amount.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_customer.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_customer.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_customer_vendor.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_customer_vendor.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_entity.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_entity.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_payee.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_payee.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_vendor.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_entity_via_vendor.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_full_journal_with_preamble.csv +9 -0
- accounting/tests/fixtures/qbo_synthetic/txn_full_journal_with_preamble.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_header_normalization.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_header_normalization.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_header_punctuation.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_header_punctuation.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_memo_description_ambiguous.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_memo_description_ambiguous.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_minimal_columns.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_minimal_columns.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_money_variants.csv +5 -0
- accounting/tests/fixtures/qbo_synthetic/txn_money_variants.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_name_and_account.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_name_and_account.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_name_is_entity.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_name_is_entity.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_number_header_ambiguous.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_number_header_ambiguous.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_journal_id.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_journal_id.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_qbo_txn_id.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_qbo_txn_id.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_transaction_id.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_transaction_id.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_txn_id.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_qbo_id_via_txn_id.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_transaction_type_via_transaction_type.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_transaction_type_via_transaction_type.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_transaction_type_via_txn_type.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_transaction_type_via_txn_type.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_transaction_type_via_type.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_transaction_type_via_type.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_type_header_ambiguous.csv +2 -0
- accounting/tests/fixtures/qbo_synthetic/txn_type_header_ambiguous.xlsx +0 -0
- accounting/tests/fixtures/qbo_synthetic/txn_with_extras_and_blanks.csv +4 -0
- accounting/tests/fixtures/qbo_synthetic/txn_with_extras_and_blanks.xlsx +0 -0
- accounting/tests/test_accounting_import_view.py +325 -0
- accounting/tests/test_admin.py +200 -0
- accounting/tests/test_company_scoping.py +95 -0
- accounting/tests/test_double_entry_balance.py +221 -0
- accounting/tests/test_fiscal_period_guard.py +146 -0
- accounting/tests/test_import_command.py +276 -0
- accounting/tests/test_models.py +539 -0
- accounting/tests/test_period_close.py +258 -0
- accounting/tests/test_posting.py +679 -0
- accounting/tests/test_posting_rules_command.py +137 -0
- accounting/tests/test_qbo_aliases_fuzz.py +399 -0
- accounting/tests/test_qbo_import.py +1327 -0
- accounting/tests/test_qbo_mapping.py +116 -0
- accounting/tests/test_qbo_readers.py +353 -0
- accounting/tests/test_reconciliation.py +138 -0
- accounting/tests/test_reporting_views.py +399 -0
- accounting/urls.py +8 -0
- addons/__init__.py +86 -0
- chat/__init__.py +0 -0
- chat/admin.py +40 -0
- chat/apps.py +6 -0
- chat/context_processors.py +41 -0
- chat/llm/__init__.py +67 -0
- chat/llm/anthropic.py +196 -0
- chat/llm/base.py +123 -0
- chat/llm/openai_compat.py +766 -0
- chat/llm/registry.py +398 -0
- chat/llm/tool_schema.py +71 -0
- chat/management/__init__.py +0 -0
- chat/management/commands/__init__.py +0 -0
- chat/management/commands/check_llm_models.py +191 -0
- chat/migrations/0001_initial.py +105 -0
- chat/migrations/__init__.py +0 -0
- chat/models.py +98 -0
- chat/static/chat/chat.css +281 -0
- chat/static/chat/chat.js +638 -0
- chat/templates/chat/drawer.html +127 -0
- chat/test_m3_llm_abuse.py +175 -0
- chat/tests/__init__.py +0 -0
- chat/tests/test_anthropic.py +335 -0
- chat/tests/test_openai_compat.py +734 -0
- chat/tests/test_registry.py +243 -0
- chat/tests/test_stream_view.py +468 -0
- chat/tests/test_tools.py +68 -0
- chat/tests/test_trackc.py +235 -0
- chat/tools.py +49 -0
- chat/urls.py +17 -0
- chat/views.py +656 -0
- communications/__init__.py +0 -0
- communications/admin.py +97 -0
- communications/api.py +160 -0
- communications/apps.py +33 -0
- communications/backfill.py +164 -0
- communications/email_link.py +180 -0
- communications/ingest.py +365 -0
- communications/kinds.py +206 -0
- communications/management/__init__.py +0 -0
- communications/management/commands/__init__.py +0 -0
- communications/management/commands/resolve_participants.py +26 -0
- communications/migrations/0001_initial.py +98 -0
- communications/migrations/0002_communication_schema.py +290 -0
- communications/migrations/0003_backfill_email_communications.py +31 -0
- communications/migrations/0004_us_english_choice_labels.py +28 -0
- communications/migrations/__init__.py +0 -0
- communications/models.py +271 -0
- communications/participants.py +217 -0
- communications/serializers.py +84 -0
- communications/services.py +493 -0
- communications/templates/communications/emails/invoice_email.html +37 -0
- communications/templates/communications/emails/order_confirmation.html +188 -0
- communications/templates/communications/emails/order_confirmation.txt +31 -0
- communications/templates/communications/emails/quote_email.html +44 -0
- communications/templates/communications/emails/shipping_notification.html +192 -0
- communications/templates/communications/emails/shipping_notification.txt +29 -0
- communications/tests/__init__.py +0 -0
- communications/tests/helpers.py +48 -0
- communications/tests/test_communication_models.py +168 -0
- communications/tests/test_email_backfill.py +216 -0
- communications/tests/test_email_link.py +178 -0
- communications/tests/test_email_sends.py +516 -0
- communications/tests/test_ingest.py +331 -0
- communications/tests/test_ingest_activity.py +142 -0
- communications/tests/test_kinds.py +147 -0
- communications/tests/test_merge.py +49 -0
- communications/urls.py +8 -0
- content/__init__.py +0 -0
- content/admin.py +12 -0
- content/apps.py +5 -0
- content/erp_urls.py +17 -0
- content/erp_views.py +100 -0
- content/forms.py +42 -0
- content/migrations/0001_initial.py +69 -0
- content/migrations/__init__.py +0 -0
- content/models.py +45 -0
- content/serializers.py +16 -0
- content/test_m3_xss.py +74 -0
- content/tests.py +82 -0
- content/urls.py +8 -0
- content/views.py +21 -0
- core/__init__.py +0 -0
- core/access_matrix.py +300 -0
- core/admin.py +250 -0
- core/api_exceptions.py +41 -0
- core/apps.py +62 -0
- core/auth_views.py +198 -0
- core/authentication.py +416 -0
- core/cache_guard.py +276 -0
- core/checks.py +283 -0
- core/client_ip.py +67 -0
- core/context_processors.py +97 -0
- core/csv_safety.py +46 -0
- core/demo_clock.py +376 -0
- core/erp_urls.py +127 -0
- core/error_views.py +73 -0
- core/field_registry.py +289 -0
- core/forms.py +76 -0
- core/hook_registry.py +121 -0
- core/html_safety.py +30 -0
- core/http.py +18 -0
- core/identity/__init__.py +26 -0
- core/identity/backfill.py +270 -0
- core/identity/base.py +165 -0
- core/identity/models.py +60 -0
- core/identity/oidc.py +748 -0
- core/identity/providers.py +465 -0
- core/identity/resolve.py +731 -0
- core/identity/retire.py +209 -0
- core/integration_checks.py +199 -0
- core/integration_registry.py +372 -0
- core/integrations/__init__.py +12 -0
- core/integrations/accounts.py +175 -0
- core/integrations/checks.py +51 -0
- core/integrations/erasure.py +472 -0
- core/integrations/models.py +179 -0
- core/integrations/poll.py +162 -0
- core/integrations/ratelimit.py +163 -0
- core/integrations/transport.py +153 -0
- core/integrations/views.py +301 -0
- core/integrations/webhook.py +121 -0
- core/integrity.py +686 -0
- core/label_registry.py +335 -0
- core/labels.py +145 -0
- core/list_columns.py +368 -0
- core/list_export.py +166 -0
- core/list_prefs.py +67 -0
- core/lookups.py +27 -0
- core/management/__init__.py +0 -0
- core/management/commands/__init__.py +0 -0
- core/management/commands/backfill_tenancy.py +211 -0
- core/management/commands/check_external_refs.py +63 -0
- core/management/commands/check_money.py +118 -0
- core/management/commands/check_numbering.py +84 -0
- core/management/commands/check_outbox.py +50 -0
- core/management/commands/check_schema_parity.py +168 -0
- core/management/commands/check_sidecar.py +156 -0
- core/management/commands/check_tenancy.py +107 -0
- core/management/commands/create_api_key.py +118 -0
- core/management/commands/demo_roll_dates.py +87 -0
- core/management/commands/ensure_legacy_api_user.py +24 -0
- core/management/commands/ensure_storefront_identity.py +41 -0
- core/management/commands/generate_secrets.py +51 -0
- core/management/commands/integration_connect.py +63 -0
- core/management/commands/integrations_poll.py +30 -0
- core/management/commands/integrations_sync.py +60 -0
- core/management/commands/outbox.py +65 -0
- core/management/commands/process_outbox.py +67 -0
- core/management/commands/release_notes.py +59 -0
- core/management/commands/requeue_outbox.py +24 -0
- core/management/commands/revoke_api_key.py +44 -0
- core/management/commands/rotate_secrets.py +69 -0
- core/management/commands/seed_demo_data.py +421 -0
- core/management/commands/seed_release_test.py +365 -0
- core/management/commands/seed_test_edge.py +119 -0
- core/management/commands/seed_test_minimal.py +137 -0
- core/management/commands/setup_demo_user.py +51 -0
- core/management/commands/smoke_cutover.py +257 -0
- core/management/commands/sync_roles.py +99 -0
- core/management/release_exit_codes.py +51 -0
- core/managers.py +52 -0
- core/middleware.py +218 -0
- core/migration_ops.py +82 -0
- core/migrations/0001_initial.py +168 -0
- core/migrations/0002_storefront_identity.py +33 -0
- core/migrations/0003_userprofile_user.py +27 -0
- core/migrations/0004_integrationcheck.py +62 -0
- core/migrations/0005_externalref.py +69 -0
- core/migrations/0006_identity_schema.py +82 -0
- core/migrations/0007_timezones.py +34 -0
- core/migrations/0008_apikey.py +61 -0
- core/migrations/0009_api_service_account.py +50 -0
- core/migrations/0010_userprofile_legacy_external_id.py +25 -0
- core/migrations/0011_remove_userprofile_supabase_uid.py +24 -0
- core/migrations/0012_team.py +64 -0
- core/migrations/0012_useridentity_user_provider_uniq.py +63 -0
- core/migrations/0013_merge_team_useridentity_uniq.py +19 -0
- core/migrations/0014_list_preferences_savedfilter.py +84 -0
- core/migrations/0015_outboxevent.py +136 -0
- core/migrations/0016_integration_accounts.py +190 -0
- core/migrations/0017_erpusersettings_hidden_quick_actions.py +18 -0
- core/migrations/0018_us_english_choice_labels.py +28 -0
- core/migrations/0019_labeloverride.py +52 -0
- core/migrations/__init__.py +0 -0
- core/models.py +542 -0
- core/nav_registry.py +119 -0
- core/oidc_views.py +158 -0
- core/once.py +70 -0
- core/outbox/__init__.py +709 -0
- core/outbox/testing.py +26 -0
- core/permissions.py +73 -0
- core/plugin_apps.py +180 -0
- core/plugins/__init__.py +44 -0
- core/plugins/base.py +263 -0
- core/plugins/crm_adapter.py +946 -0
- core/plugins/crm_export.py +116 -0
- core/plugins/dispatch.py +136 -0
- core/plugins/payroll.py +182 -0
- core/plugins/registry.py +590 -0
- core/plugins/signals.py +199 -0
- core/plugins/url_auth.py +100 -0
- core/portal_auth.py +57 -0
- core/portal_permissions.py +31 -0
- core/portal_urls.py +16 -0
- core/portal_views.py +270 -0
- core/provenance.py +133 -0
- core/quick_actions.py +57 -0
- core/release_notes.py +556 -0
- core/release_test.py +209 -0
- core/role_registry.py +178 -0
- core/roles.py +399 -0
- core/saved_filters.py +202 -0
- core/schema.py +51 -0
- core/schema_parity.py +612 -0
- core/secrets.py +169 -0
- core/serializers.py +149 -0
- core/service_accounts.py +577 -0
- core/sidecar.py +804 -0
- core/sidecar_api.py +193 -0
- core/sidecar_forms.py +243 -0
- core/signals.py +36 -0
- core/sso_views.py +75 -0
- core/staff.py +175 -0
- core/storefront.py +170 -0
- core/teams.py +133 -0
- core/templatetags/__init__.py +0 -0
- core/templatetags/erp_tags.py +190 -0
- core/templatetags/labels.py +105 -0
- core/testing/__init__.py +1 -0
- core/testing/integration_fixtures.py +494 -0
- core/testing/no_network.py +312 -0
- core/tests/__init__.py +0 -0
- core/tests/access_matrix_expectations.py +439 -0
- core/tests/helpers.py +83 -0
- core/tests/legacy_schema.py +104 -0
- core/tests/plugin_fixtures/__init__.py +1 -0
- core/tests/plugin_fixtures/glue.py +45 -0
- core/tests/plugin_fixtures/unimported_glue.py +19 -0
- core/tests/test_access_matrix.py +805 -0
- core/tests/test_addons_alias.py +158 -0
- core/tests/test_alert_markup.py +30 -0
- core/tests/test_api_error_envelope.py +94 -0
- core/tests/test_api_protected_delete.py +66 -0
- core/tests/test_auth_matrix.py +576 -0
- core/tests/test_authentication.py +862 -0
- core/tests/test_backfill_tenancy.py +180 -0
- core/tests/test_cache_down.py +408 -0
- core/tests/test_cancel_button_wiring.py +109 -0
- core/tests/test_check_money.py +392 -0
- core/tests/test_check_numbering.py +202 -0
- core/tests/test_check_sidecar.py +110 -0
- core/tests/test_coupon_throttle_keys.py +112 -0
- core/tests/test_csv_safety.py +129 -0
- core/tests/test_dashboard_aggregates.py +251 -0
- core/tests/test_demo_clock.py +363 -0
- core/tests/test_demo_guard.py +173 -0
- core/tests/test_deploy_secrets.py +86 -0
- core/tests/test_document_sequence.py +39 -0
- core/tests/test_erp_staff_only.py +78 -0
- core/tests/test_erp_tags.py +31 -0
- core/tests/test_error_pages.py +124 -0
- core/tests/test_external_refs.py +110 -0
- core/tests/test_field_registry.py +189 -0
- core/tests/test_findings_check.py +200 -0
- core/tests/test_forge_absent.py +111 -0
- core/tests/test_harness_settings.py +272 -0
- core/tests/test_hook_registry.py +146 -0
- core/tests/test_identity_backfill.py +514 -0
- core/tests/test_identity_providers.py +486 -0
- core/tests/test_identity_retire.py +222 -0
- core/tests/test_integration_adapter.py +330 -0
- core/tests/test_integration_no_leak.py +125 -0
- core/tests/test_integration_poll.py +223 -0
- core/tests/test_integration_registry.py +330 -0
- core/tests/test_integration_secrets.py +268 -0
- core/tests/test_integration_views.py +350 -0
- core/tests/test_integration_webhook.py +160 -0
- core/tests/test_label_overrides_screen.py +112 -0
- core/tests/test_labels.py +343 -0
- core/tests/test_labels_never_leak.py +216 -0
- core/tests/test_list_a11y.py +231 -0
- core/tests/test_list_cell_display.py +65 -0
- core/tests/test_list_export_query.py +93 -0
- core/tests/test_list_infra.py +614 -0
- core/tests/test_list_sort_headers.py +86 -0
- core/tests/test_list_sorting.py +105 -0
- core/tests/test_m2d_auth_ux.py +241 -0
- core/tests/test_m2d_form_roundtrips.py +176 -0
- core/tests/test_m2d_render_sweep.py +230 -0
- core/tests/test_m3_csrf.py +62 -0
- core/tests/test_m3_ratelimit.py +108 -0
- core/tests/test_m3_secrets_headers.py +214 -0
- core/tests/test_m3_sqli.py +108 -0
- core/tests/test_nav_registry.py +96 -0
- core/tests/test_no_network.py +226 -0
- core/tests/test_oidc.py +837 -0
- core/tests/test_one_company.py +136 -0
- core/tests/test_openapi_schema.py +32 -0
- core/tests/test_outbox.py +583 -0
- core/tests/test_payroll_slot.py +139 -0
- core/tests/test_plugin_boot.py +188 -0
- core/tests/test_plugin_signal_emission.py +359 -0
- core/tests/test_plugins.py +113 -0
- core/tests/test_portal_auth.py +735 -0
- core/tests/test_portal_invite_resend.py +242 -0
- core/tests/test_portal_party.py +446 -0
- core/tests/test_prod_compose.py +144 -0
- core/tests/test_prod_settings_db.py +26 -0
- core/tests/test_query_counts.py +62 -0
- core/tests/test_release_notes.py +341 -0
- core/tests/test_role_registry.py +646 -0
- core/tests/test_schema_parity.py +538 -0
- core/tests/test_security_auth_flows.py +250 -0
- core/tests/test_security_input.py +477 -0
- core/tests/test_security_pii.py +140 -0
- core/tests/test_security_settings.py +122 -0
- core/tests/test_seed_release_test.py +120 -0
- core/tests/test_sentry_before_send.py +271 -0
- core/tests/test_session_company_resolution.py +62 -0
- core/tests/test_sidecar.py +416 -0
- core/tests/test_sidecar_api.py +237 -0
- core/tests/test_sidecar_registry.py +127 -0
- core/tests/test_sidecar_vendors.py +256 -0
- core/tests/test_smoke_cutover.py +147 -0
- core/tests/test_sso_views.py +116 -0
- core/tests/test_storefront_identity.py +483 -0
- core/tests/test_teams_and_staff.py +281 -0
- core/tests/test_template_comment_hygiene.py +70 -0
- core/tests/test_tenancy_remainder.py +229 -0
- core/tests/test_tenant_settings_fail_closed.py +95 -0
- core/tests/test_theme_registry.py +83 -0
- core/tests/test_token_scopes.py +354 -0
- core/tests/test_trackc_plugins.py +96 -0
- core/tests/test_tripwire.py +119 -0
- core/tests/test_tz.py +150 -0
- core/tests/test_us_english_values.py +20 -0
- core/tests/test_user_create_view.py +55 -0
- core/tests/test_user_roles_screen.py +104 -0
- core/theme_registry.py +131 -0
- core/throttling.py +254 -0
- core/tripwire_patterns.py +49 -0
- core/tz.py +90 -0
- core/urls.py +20 -0
- core/user_roles.py +78 -0
- core/views/__init__.py +293 -0
- core/views/account.py +218 -0
- core/views/dashboard.py +117 -0
- core/views/form_view.py +54 -0
- core/views/integrations.py +132 -0
- core/views/labels.py +122 -0
- core/views/list_view.py +576 -0
- core/views/mixins.py +47 -0
- core/views/teams.py +155 -0
- crm/__init__.py +0 -0
- crm/activity_compat.py +358 -0
- crm/admin.py +189 -0
- crm/api.py +797 -0
- crm/api_serializers.py +573 -0
- crm/apps.py +19 -0
- crm/assist.py +305 -0
- crm/backfill.py +1430 -0
- crm/conf.py +49 -0
- crm/due.py +84 -0
- crm/engagements.py +716 -0
- crm/erp_timeline.py +232 -0
- crm/erp_urls.py +49 -0
- crm/erp_views.py +1665 -0
- crm/fields/__init__.py +6 -0
- crm/fields/counts.py +166 -0
- crm/fields/inventory.py +305 -0
- crm/forms.py +611 -0
- crm/intake.py +286 -0
- crm/lifecycle.py +121 -0
- crm/management/__init__.py +0 -0
- crm/management/commands/__init__.py +0 -0
- crm/management/commands/ads_conversions.py +71 -0
- crm/management/commands/backfill_crm.py +90 -0
- crm/management/commands/check_engagements.py +93 -0
- crm/management/commands/check_field_inventory.py +60 -0
- crm/management/commands/crm_emit_due.py +25 -0
- crm/management/commands/field_inventory.py +88 -0
- crm/management/commands/reconcile_engagements.py +263 -0
- crm/management/commands/seed_crm.py +360 -0
- crm/management/commands/seed_my_day.py +277 -0
- crm/migrations/0001_initial.py +156 -0
- crm/migrations/0002_initial.py +81 -0
- crm/migrations/0003_initial.py +38 -0
- crm/migrations/0004_activitylog_company.py +25 -0
- crm/migrations/0005_backfill_activitylog_company.py +33 -0
- crm/migrations/0006_party_links.py +27 -0
- crm/migrations/0007_engagement_schema.py +923 -0
- crm/migrations/0008_seed_default_pipelines.py +29 -0
- crm/migrations/0009_task_communication.py +26 -0
- crm/migrations/0010_backfill_quote_engagements.py +40 -0
- crm/migrations/0011_lead_engagement.py +26 -0
- crm/migrations/0012_backfill_lead_engagements.py +31 -0
- crm/migrations/0013_backfill_activity_communications.py +30 -0
- crm/migrations/0014_tighten.py +35 -0
- crm/migrations/0015_engagement_owner_team.py +34 -0
- crm/migrations/0016_stamp_owner_team.py +27 -0
- crm/migrations/0017_engagement_metadata_gin.py +21 -0
- crm/migrations/0018_lead_source_ai_chat.py +32 -0
- crm/migrations/0019_closed_signed_stage.py +31 -0
- crm/migrations/0020_us_english_choice_labels.py +44 -0
- crm/migrations/__init__.py +0 -0
- crm/models.py +1075 -0
- crm/pipelines.py +126 -0
- crm/registries.py +335 -0
- crm/serializers.py +123 -0
- crm/tasks.py +326 -0
- crm/templatetags/__init__.py +0 -0
- crm/templatetags/crm_tags.py +19 -0
- crm/tests/__init__.py +0 -0
- crm/tests/helpers.py +81 -0
- crm/tests/test_api.py +601 -0
- crm/tests/test_assist_api.py +141 -0
- crm/tests/test_create_screens.py +187 -0
- crm/tests/test_engagement_models.py +353 -0
- crm/tests/test_engagement_services.py +241 -0
- crm/tests/test_erp_views.py +1035 -0
- crm/tests/test_field_inventory.py +402 -0
- crm/tests/test_lead_intake.py +360 -0
- crm/tests/test_lead_numbers.py +77 -0
- crm/tests/test_leads.py +313 -0
- crm/tests/test_owner_team.py +392 -0
- crm/tests/test_owner_team_migration.py +84 -0
- crm/tests/test_p4_screens.py +541 -0
- crm/tests/test_party_picker.py +120 -0
- crm/tests/test_quote_engagements.py +595 -0
- crm/tests/test_quote_from_engagement.py +163 -0
- crm/tests/test_reconstructed_history.py +126 -0
- crm/tests/test_registries.py +147 -0
- crm/tests/test_reopen_forbidden.py +69 -0
- crm/tests/test_seeding_and_checks.py +269 -0
- crm/tests/test_signals.py +464 -0
- crm/tests/test_step6_backfill.py +630 -0
- crm/tests/test_task_updated.py +176 -0
- crm/tests/test_tasks.py +293 -0
- crm/tests/test_touchpoints.py +241 -0
- crm/timeline.py +250 -0
- crm/touchpoints.py +371 -0
- crm/urls.py +33 -0
- crm/views.py +137 -0
- crm_import/__init__.py +6 -0
- crm_import/ai.py +757 -0
- crm_import/appliers/__init__.py +84 -0
- crm_import/appliers/activity.py +113 -0
- crm_import/appliers/associations.py +192 -0
- crm_import/appliers/base.py +363 -0
- crm_import/appliers/communications.py +262 -0
- crm_import/appliers/consent.py +266 -0
- crm_import/appliers/deals.py +870 -0
- crm_import/appliers/owners.py +85 -0
- crm_import/appliers/parties.py +389 -0
- crm_import/appliers/pipelines.py +116 -0
- crm_import/appliers/relationships.py +237 -0
- crm_import/appliers/tasks.py +252 -0
- crm_import/apps.py +12 -0
- crm_import/canonical/__init__.py +52 -0
- crm_import/canonical/io.py +206 -0
- crm_import/canonical/schema.py +388 -0
- crm_import/canonical/validate.py +671 -0
- crm_import/compare.py +294 -0
- crm_import/erp_urls.py +28 -0
- crm_import/erp_views.py +71 -0
- crm_import/locks.py +111 -0
- crm_import/management/__init__.py +0 -0
- crm_import/management/commands/__init__.py +0 -0
- crm_import/management/commands/check_canonical_export.py +63 -0
- crm_import/management/commands/crm_export_adapt.py +100 -0
- crm_import/management/commands/crm_import.py +320 -0
- crm_import/match.py +933 -0
- crm_import/migrations/0001_initial.py +416 -0
- crm_import/migrations/0002_us_english_choice_labels.py +33 -0
- crm_import/migrations/__init__.py +0 -0
- crm_import/models.py +334 -0
- crm_import/report.py +297 -0
- crm_import/review.py +1162 -0
- crm_import/runner.py +526 -0
- crm_import/sidecar.py +110 -0
- crm_import/stage.py +641 -0
- crm_import/tests/__init__.py +0 -0
- crm_import/tests/canonical_cases.py +102 -0
- crm_import/tests/fixtures/ai/recorded.json +26 -0
- crm_import/tests/fixtures/canonical/invalid/adapter-version-mismatch/case.json +13 -0
- crm_import/tests/fixtures/canonical/invalid/adapter-version-mismatch/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/archived-not-enumerated/case.json +14 -0
- crm_import/tests/fixtures/canonical/invalid/archived-not-enumerated/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/consent-shape/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/consent-shape/consent.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/consent-shape/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/invalid/coverage-inconsistent/case.json +28 -0
- crm_import/tests/fixtures/canonical/invalid/coverage-inconsistent/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/invalid/coverage-reason-missing/case.json +14 -0
- crm_import/tests/fixtures/canonical/invalid/coverage-reason-missing/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/dangling-association/associations.jsonl +4 -0
- crm_import/tests/fixtures/canonical/invalid/dangling-association/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/dangling-association/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-key/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-key/pipelines.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-key/property_defs.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-key/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-source-id/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-source-id/contacts.jsonl +5 -0
- crm_import/tests/fixtures/canonical/invalid/duplicate-source-id/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/invalid/file-absent-unknown/case.json +39 -0
- crm_import/tests/fixtures/canonical/invalid/file-absent-unknown/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/file-missing/case.json +6 -0
- crm_import/tests/fixtures/canonical/invalid/file-missing/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/hash-mismatch/case.json +4 -0
- crm_import/tests/fixtures/canonical/invalid/hash-mismatch/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/hash-mismatch/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/inconsistent/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/inconsistent/consent.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/inconsistent/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/inconsistent/tasks.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/inconsistent/validation.expected.json +24 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-encoding/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-encoding/owners.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-encoding/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-value/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-value/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-value/pipelines.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/invalid-value/validation.expected.json +24 -0
- crm_import/tests/fixtures/canonical/invalid/malformed-lines/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/malformed-lines/tasks.jsonl +5 -0
- crm_import/tests/fixtures/canonical/invalid/malformed-lines/validation.expected.json +24 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-invalid-json/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-invalid-json/manifest.json +1 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-invalid-json/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-missing/case.json +6 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-missing/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-provider-mismatch/case.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/manifest-provider-mismatch/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/missing-data-key/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/missing-data-key/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/missing-data-key/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/missing-envelope-key/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/missing-envelope-key/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/missing-envelope-key/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/object-type-missing/case.json +19 -0
- crm_import/tests/fixtures/canonical/invalid/object-type-missing/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/invalid/pipeline-key-shape/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/pipeline-key-shape/pipelines.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/pipeline-key-shape/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/pipeline-kind-mismatch/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/pipeline-kind-mismatch/relationships.jsonl +1 -0
- crm_import/tests/fixtures/canonical/invalid/pipeline-kind-mismatch/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/row-count-mismatch/case.json +14 -0
- crm_import/tests/fixtures/canonical/invalid/row-count-mismatch/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/source-mismatch/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/source-mismatch/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/source-mismatch/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/stage-not-in-pipeline/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/stage-not-in-pipeline/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/stage-not-in-pipeline/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/task-due-shape/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/task-due-shape/tasks.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/task-due-shape/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-key/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-key/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-key/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-reason-code/case.json +28 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-reason-code/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-version-manifest/case.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-version-manifest/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-version-record/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-version-record/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/unknown-version-record/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/unresolved-ref-partial/associations.jsonl +4 -0
- crm_import/tests/fixtures/canonical/invalid/unresolved-ref-partial/case.json +28 -0
- crm_import/tests/fixtures/canonical/invalid/unresolved-ref-partial/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/unsorted/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/unsorted/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/invalid/unsorted/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-object-type/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-object-type/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-object-type/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-ref-type/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-ref-type/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-ref-type/validation.expected.json +12 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-type/case.json +3 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-type/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/invalid/wrong-type/validation.expected.json +18 -0
- crm_import/tests/fixtures/canonical/valid-small/associations.jsonl +3 -0
- crm_import/tests/fixtures/canonical/valid-small/communications.jsonl +2 -0
- crm_import/tests/fixtures/canonical/valid-small/companies.jsonl +2 -0
- crm_import/tests/fixtures/canonical/valid-small/consent.jsonl +3 -0
- crm_import/tests/fixtures/canonical/valid-small/contacts.jsonl +3 -0
- crm_import/tests/fixtures/canonical/valid-small/deals.jsonl +2 -0
- crm_import/tests/fixtures/canonical/valid-small/expected/validation.expected.json +34 -0
- crm_import/tests/fixtures/canonical/valid-small/manifest.json +113 -0
- crm_import/tests/fixtures/canonical/valid-small/owners.jsonl +2 -0
- crm_import/tests/fixtures/canonical/valid-small/pipelines.jsonl +2 -0
- crm_import/tests/fixtures/canonical/valid-small/property_defs.jsonl +2 -0
- crm_import/tests/fixtures/canonical/valid-small/relationships.jsonl +1 -0
- crm_import/tests/fixtures/canonical/valid-small/tasks.jsonl +2 -0
- crm_import/tests/staging_helpers.py +147 -0
- crm_import/tests/test_ai.py +805 -0
- crm_import/tests/test_appliers.py +543 -0
- crm_import/tests/test_appliers_activity.py +654 -0
- crm_import/tests/test_appliers_deals.py +1008 -0
- crm_import/tests/test_appliers_deals_fixture.py +98 -0
- crm_import/tests/test_appliers_pg.py +82 -0
- crm_import/tests/test_canonical.py +409 -0
- crm_import/tests/test_job_models.py +447 -0
- crm_import/tests/test_review_views.py +833 -0
- crm_import/tests/test_runner.py +390 -0
- crm_import/tests/test_runner_pg.py +106 -0
- crm_import/tests/test_staging.py +817 -0
- crm_import/tests/test_staging_pg.py +92 -0
- crm_import/views/__init__.py +1 -0
- crm_import/views/review.py +605 -0
- crm_import/writelog.py +544 -0
- customers/__init__.py +0 -0
- customers/admin.py +37 -0
- customers/apps.py +5 -0
- customers/erp_urls.py +45 -0
- customers/erp_views.py +726 -0
- customers/forms.py +97 -0
- customers/management/__init__.py +0 -0
- customers/management/commands/__init__.py +0 -0
- customers/management/commands/check_tighten.py +27 -0
- customers/migrations/0001_initial.py +221 -0
- customers/migrations/0002_initial.py +67 -0
- customers/migrations/0003_customer_user.py +27 -0
- customers/migrations/0004_backfill_user_identity.py +34 -0
- customers/migrations/0005_party_links.py +87 -0
- customers/migrations/0006_rerun_identity_backfill.py +33 -0
- customers/migrations/0007_tighten.py +85 -0
- customers/migrations/0008_identity_retire_precheck.py +42 -0
- customers/migrations/0009_remove_customer_supabase_user_id.py +22 -0
- customers/migrations/__init__.py +0 -0
- customers/models.py +367 -0
- customers/pre_tighten.py +133 -0
- customers/serializers.py +71 -0
- customers/test_erased_display.py +68 -0
- customers/test_m3_xss.py +67 -0
- customers/test_portal_link_readonly.py +66 -0
- customers/test_quick_create_tenant.py +86 -0
- customers/test_tighten.py +315 -0
- customers/tests.py +59 -0
- customers/tighten.py +127 -0
- customers/urls.py +9 -0
- customers/views.py +35 -0
- discounts/__init__.py +0 -0
- discounts/admin.py +42 -0
- discounts/apps.py +7 -0
- discounts/erp_urls.py +17 -0
- discounts/erp_views.py +186 -0
- discounts/forms.py +81 -0
- discounts/migrations/0001_initial.py +141 -0
- discounts/migrations/__init__.py +0 -0
- discounts/models.py +78 -0
- discounts/serializers.py +31 -0
- discounts/urls.py +8 -0
- discounts/views.py +166 -0
- documents/__init__.py +0 -0
- documents/admin.py +14 -0
- documents/apps.py +5 -0
- documents/brand.py +31 -0
- documents/erp_urls.py +7 -0
- documents/erp_views.py +38 -0
- documents/management/__init__.py +0 -0
- documents/management/commands/__init__.py +0 -0
- documents/management/commands/auto_match_docs.py +414 -0
- documents/matcher.py +418 -0
- documents/migrations/0001_initial.py +116 -0
- documents/migrations/0002_initial.py +26 -0
- documents/migrations/__init__.py +0 -0
- documents/models.py +65 -0
- documents/serializers.py +40 -0
- documents/services/__init__.py +0 -0
- documents/services/document_context.py +363 -0
- documents/services/pdf.py +82 -0
- documents/templates/documents/base_document.html +351 -0
- documents/templates/documents/purchase_order.html +38 -0
- documents/templates/documents/sales_invoice.html +79 -0
- documents/templates/documents/sales_quote.html +82 -0
- documents/tests/__init__.py +0 -0
- documents/tests/test_auto_match.py +458 -0
- documents/tests/test_document_addresses.py +93 -0
- documents/tests/test_document_fonts.py +92 -0
- documents/tests/test_pdf_service.py +70 -0
- documents/tests/test_quote_pdf_service.py +146 -0
- documents/tests/test_trackc.py +223 -0
- documents/tests/test_upload_caps.py +78 -0
- documents/text_extract.py +52 -0
- documents/tigris_inventory.py +99 -0
- documents/urls.py +8 -0
- documents/views.py +19 -0
- erp_assist/__init__.py +0 -0
- erp_assist/core/__init__.py +21 -0
- erp_assist/core/_cache.py +109 -0
- erp_assist/core/_writable_fields.py +683 -0
- erp_assist/core/client.py +270 -0
- erp_assist/core/crm.py +565 -0
- erp_assist/core/customers.py +258 -0
- erp_assist/core/inventory.py +154 -0
- erp_assist/core/orders.py +526 -0
- erp_assist/core/parties.py +188 -0
- erp_assist/core/pricing.py +208 -0
- erp_assist/core/products.py +558 -0
- erp_assist/core/purchasing.py +343 -0
- erp_assist/http_adapter.py +27 -0
- erp_assist/mcp_adapter.py +2222 -0
- erp_assist/tests/__init__.py +0 -0
- erp_assist/tests/test_api_e2e.py +263 -0
- erp_assist/tests/test_crm_report_tools.py +149 -0
- erp_assist/tests/test_crm_tools.py +394 -0
- erp_assist/tests/test_customer_writable.py +35 -0
- erp_assist/tests/test_party_ambiguity.py +246 -0
- erp_assist/tests/test_quote_pipeline_moved.py +44 -0
- fincas-0.4.1.dist-info/METADATA +216 -0
- fincas-0.4.1.dist-info/RECORD +2326 -0
- fincas-0.4.1.dist-info/WHEEL +5 -0
- fincas-0.4.1.dist-info/licenses/LICENSE +21 -0
- fincas-0.4.1.dist-info/top_level.txt +26 -0
- fulfillment/__init__.py +0 -0
- fulfillment/admin.py +204 -0
- fulfillment/apps.py +5 -0
- fulfillment/carriers/__init__.py +26 -0
- fulfillment/carriers/base.py +118 -0
- fulfillment/carriers/easypost_carrier.py +184 -0
- fulfillment/carriers/manual.py +74 -0
- fulfillment/carriers/registry.py +41 -0
- fulfillment/erp_urls.py +17 -0
- fulfillment/erp_views.py +337 -0
- fulfillment/forms.py +63 -0
- fulfillment/label_service.py +293 -0
- fulfillment/migrations/0001_initial.py +120 -0
- fulfillment/migrations/0002_initial.py +79 -0
- fulfillment/migrations/0003_initial.py +27 -0
- fulfillment/migrations/__init__.py +0 -0
- fulfillment/models.py +117 -0
- fulfillment/printer.py +95 -0
- fulfillment/serializers.py +19 -0
- fulfillment/templates/admin/fulfillment/pickticket/change_form.html +143 -0
- fulfillment/tests/__init__.py +0 -0
- fulfillment/tests/test_carriers.py +82 -0
- fulfillment/tests/test_company_scoping.py +119 -0
- fulfillment/tests/test_m2d_print.py +69 -0
- fulfillment/tests/test_pick_ticket_transitions.py +100 -0
- fulfillment/urls.py +9 -0
- fulfillment/views.py +55 -0
- golden_erp/__init__.py +34 -0
- golden_erp/addons/__init__.py +7 -0
- golden_erp/addons/aircall/__init__.py +13 -0
- golden_erp/addons/aircall/adapter.py +304 -0
- golden_erp/addons/aircall/fixtures/comment-update/account.json +4 -0
- golden_erp/addons/aircall/fixtures/comment-update/case.json +37 -0
- golden_erp/addons/aircall/fixtures/comment-update/db.expected.json +57 -0
- golden_erp/addons/aircall/fixtures/comment-update/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/comment-update/inbound/002.json +49 -0
- golden_erp/addons/aircall/fixtures/comment-update/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/erased-call-skipped/account.json +4 -0
- golden_erp/addons/aircall/fixtures/erased-call-skipped/case.json +34 -0
- golden_erp/addons/aircall/fixtures/erased-call-skipped/db.expected.json +20 -0
- golden_erp/addons/aircall/fixtures/erased-call-skipped/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/erased-call-skipped/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/erased-number-skipped/account.json +4 -0
- golden_erp/addons/aircall/fixtures/erased-number-skipped/case.json +25 -0
- golden_erp/addons/aircall/fixtures/erased-number-skipped/db.expected.json +32 -0
- golden_erp/addons/aircall/fixtures/erased-number-skipped/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/erased-number-skipped/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/ignored-event/account.json +4 -0
- golden_erp/addons/aircall/fixtures/ignored-event/case.json +30 -0
- golden_erp/addons/aircall/fixtures/ignored-event/db.expected.json +17 -0
- golden_erp/addons/aircall/fixtures/ignored-event/inbound/001.json +14 -0
- golden_erp/addons/aircall/fixtures/ignored-event/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/inbound-answered-known/account.json +4 -0
- golden_erp/addons/aircall/fixtures/inbound-answered-known/case.json +36 -0
- golden_erp/addons/aircall/fixtures/inbound-answered-known/db.expected.json +50 -0
- golden_erp/addons/aircall/fixtures/inbound-answered-known/inbound/001.json +43 -0
- golden_erp/addons/aircall/fixtures/inbound-answered-known/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/missed-unknown-number/account.json +4 -0
- golden_erp/addons/aircall/fixtures/missed-unknown-number/case.json +30 -0
- golden_erp/addons/aircall/fixtures/missed-unknown-number/db.expected.json +50 -0
- golden_erp/addons/aircall/fixtures/missed-unknown-number/inbound/001.json +34 -0
- golden_erp/addons/aircall/fixtures/missed-unknown-number/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/newer-schema/account.json +4 -0
- golden_erp/addons/aircall/fixtures/newer-schema/case.json +28 -0
- golden_erp/addons/aircall/fixtures/newer-schema/db.expected.json +9 -0
- golden_erp/addons/aircall/fixtures/newer-schema/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/newer-schema/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/outbound-known/account.json +4 -0
- golden_erp/addons/aircall/fixtures/outbound-known/case.json +33 -0
- golden_erp/addons/aircall/fixtures/outbound-known/db.expected.json +42 -0
- golden_erp/addons/aircall/fixtures/outbound-known/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/outbound-known/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/account.json +6 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/case.json +50 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/db.expected.json +42 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/requests.expected.json +32 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/responses/001-page1.json +54 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/responses/002-page2.json +54 -0
- golden_erp/addons/aircall/fixtures/poll-backstop/responses/003-held.json +26 -0
- golden_erp/addons/aircall/fixtures/replayed-event/account.json +4 -0
- golden_erp/addons/aircall/fixtures/replayed-event/case.json +34 -0
- golden_erp/addons/aircall/fixtures/replayed-event/db.expected.json +50 -0
- golden_erp/addons/aircall/fixtures/replayed-event/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/replayed-event/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/token-mismatch/account.json +4 -0
- golden_erp/addons/aircall/fixtures/token-mismatch/case.json +30 -0
- golden_erp/addons/aircall/fixtures/token-mismatch/db.expected.json +9 -0
- golden_erp/addons/aircall/fixtures/token-mismatch/inbound/001.json +38 -0
- golden_erp/addons/aircall/fixtures/token-mismatch/requests.expected.json +1 -0
- golden_erp/addons/aircall/fixtures/voicemail/account.json +4 -0
- golden_erp/addons/aircall/fixtures/voicemail/case.json +30 -0
- golden_erp/addons/aircall/fixtures/voicemail/db.expected.json +50 -0
- golden_erp/addons/aircall/fixtures/voicemail/inbound/001.json +34 -0
- golden_erp/addons/aircall/fixtures/voicemail/requests.expected.json +1 -0
- golden_erp/addons/aircall/mapping.py +198 -0
- golden_erp/addons/aircall/plugin.py +26 -0
- golden_erp/addons/aircall/tests/__init__.py +0 -0
- golden_erp/addons/aircall/tests/helpers.py +42 -0
- golden_erp/addons/aircall/tests/test_aircall.py +406 -0
- golden_erp/addons/aircall/tests/test_contract.py +33 -0
- golden_erp/addons/aircall/tests/test_mapping.py +92 -0
- golden_erp/addons/aircall/values.py +62 -0
- golden_erp/addons/clickup/__init__.py +14 -0
- golden_erp/addons/clickup/adapter.py +1135 -0
- golden_erp/addons/clickup/fixtures/assignee-unknown/account.json +18 -0
- golden_erp/addons/clickup/fixtures/assignee-unknown/case.json +45 -0
- golden_erp/addons/clickup/fixtures/assignee-unknown/db.expected.json +30 -0
- golden_erp/addons/clickup/fixtures/assignee-unknown/inbound/001.json +36 -0
- golden_erp/addons/clickup/fixtures/assignee-unknown/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/deleted-cancels/account.json +18 -0
- golden_erp/addons/clickup/fixtures/deleted-cancels/case.json +65 -0
- golden_erp/addons/clickup/fixtures/deleted-cancels/db.expected.json +64 -0
- golden_erp/addons/clickup/fixtures/deleted-cancels/inbound/001-deleted.json +24 -0
- golden_erp/addons/clickup/fixtures/deleted-cancels/inbound/002-deleted.json +24 -0
- golden_erp/addons/clickup/fixtures/deleted-cancels/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/account.json +18 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/case.json +59 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/db.expected.json +48 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/inbound/001-echo.json +24 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/requests.expected.json +26 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/responses/001.json +40 -0
- golden_erp/addons/clickup/fixtures/echo-no-op/responses/002.json +40 -0
- golden_erp/addons/clickup/fixtures/erase/account.json +18 -0
- golden_erp/addons/clickup/fixtures/erase/case.json +59 -0
- golden_erp/addons/clickup/fixtures/erase/db.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/erase/requests.expected.json +25 -0
- golden_erp/addons/clickup/fixtures/erase/responses/001.json +34 -0
- golden_erp/addons/clickup/fixtures/erase/responses/002.json +9 -0
- golden_erp/addons/clickup/fixtures/inbound-create-linked/account.json +18 -0
- golden_erp/addons/clickup/fixtures/inbound-create-linked/case.json +36 -0
- golden_erp/addons/clickup/fixtures/inbound-create-linked/db.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/inbound-create-linked/inbound/001-created.json +24 -0
- golden_erp/addons/clickup/fixtures/inbound-create-linked/requests.expected.json +14 -0
- golden_erp/addons/clickup/fixtures/inbound-create-linked/responses/001.json +47 -0
- golden_erp/addons/clickup/fixtures/inbound-engagement-refused/account.json +18 -0
- golden_erp/addons/clickup/fixtures/inbound-engagement-refused/case.json +56 -0
- golden_erp/addons/clickup/fixtures/inbound-engagement-refused/db.expected.json +30 -0
- golden_erp/addons/clickup/fixtures/inbound-engagement-refused/inbound/001.json +43 -0
- golden_erp/addons/clickup/fixtures/inbound-engagement-refused/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/inbound-erased-skipped/account.json +18 -0
- golden_erp/addons/clickup/fixtures/inbound-erased-skipped/case.json +46 -0
- golden_erp/addons/clickup/fixtures/inbound-erased-skipped/db.expected.json +31 -0
- golden_erp/addons/clickup/fixtures/inbound-erased-skipped/inbound/001.json +36 -0
- golden_erp/addons/clickup/fixtures/inbound-erased-skipped/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/inbound-stale-ignored/account.json +18 -0
- golden_erp/addons/clickup/fixtures/inbound-stale-ignored/case.json +45 -0
- golden_erp/addons/clickup/fixtures/inbound-stale-ignored/db.expected.json +30 -0
- golden_erp/addons/clickup/fixtures/inbound-stale-ignored/inbound/001-stale.json +36 -0
- golden_erp/addons/clickup/fixtures/inbound-stale-ignored/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/inbound-status-map/account.json +18 -0
- golden_erp/addons/clickup/fixtures/inbound-status-map/case.json +48 -0
- golden_erp/addons/clickup/fixtures/inbound-status-map/db.expected.json +30 -0
- golden_erp/addons/clickup/fixtures/inbound-status-map/inbound/001-in-review.json +36 -0
- golden_erp/addons/clickup/fixtures/inbound-status-map/inbound/002-closed.json +36 -0
- golden_erp/addons/clickup/fixtures/inbound-status-map/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/inbound-unlinked-ignored/account.json +18 -0
- golden_erp/addons/clickup/fixtures/inbound-unlinked-ignored/case.json +35 -0
- golden_erp/addons/clickup/fixtures/inbound-unlinked-ignored/db.expected.json +9 -0
- golden_erp/addons/clickup/fixtures/inbound-unlinked-ignored/inbound/001-unlinked.json +30 -0
- golden_erp/addons/clickup/fixtures/inbound-unlinked-ignored/inbound/002-other-list.json +37 -0
- golden_erp/addons/clickup/fixtures/inbound-unlinked-ignored/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/newer-schema/account.json +18 -0
- golden_erp/addons/clickup/fixtures/newer-schema/case.json +34 -0
- golden_erp/addons/clickup/fixtures/newer-schema/db.expected.json +9 -0
- golden_erp/addons/clickup/fixtures/newer-schema/inbound/001.json +37 -0
- golden_erp/addons/clickup/fixtures/newer-schema/requests.expected.json +1 -0
- golden_erp/addons/clickup/fixtures/poll-pages/account.json +18 -0
- golden_erp/addons/clickup/fixtures/poll-pages/case.json +52 -0
- golden_erp/addons/clickup/fixtures/poll-pages/db.expected.json +49 -0
- golden_erp/addons/clickup/fixtures/poll-pages/requests.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/poll-pages/responses/001.json +81 -0
- golden_erp/addons/clickup/fixtures/poll-pages/responses/002.json +55 -0
- golden_erp/addons/clickup/fixtures/poll-pages/responses/003.json +22 -0
- golden_erp/addons/clickup/fixtures/push-complete/account.json +18 -0
- golden_erp/addons/clickup/fixtures/push-complete/case.json +51 -0
- golden_erp/addons/clickup/fixtures/push-complete/db.expected.json +41 -0
- golden_erp/addons/clickup/fixtures/push-complete/requests.expected.json +14 -0
- golden_erp/addons/clickup/fixtures/push-complete/responses/001.json +40 -0
- golden_erp/addons/clickup/fixtures/push-create/account.json +18 -0
- golden_erp/addons/clickup/fixtures/push-create/case.json +43 -0
- golden_erp/addons/clickup/fixtures/push-create/db.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/push-create/requests.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/push-create/responses/001.json +17 -0
- golden_erp/addons/clickup/fixtures/push-create/responses/002.json +40 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/account.json +18 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/case.json +49 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/db.expected.json +47 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/requests.expected.json +84 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/responses/001.json +18 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/responses/002.json +12 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/responses/003.json +45 -0
- golden_erp/addons/clickup/fixtures/push-create-timeout/responses/004.json +40 -0
- golden_erp/addons/clickup/fixtures/push-edit/account.json +18 -0
- golden_erp/addons/clickup/fixtures/push-edit/case.json +52 -0
- golden_erp/addons/clickup/fixtures/push-edit/db.expected.json +41 -0
- golden_erp/addons/clickup/fixtures/push-edit/requests.expected.json +14 -0
- golden_erp/addons/clickup/fixtures/push-edit/responses/001.json +40 -0
- golden_erp/addons/clickup/fixtures/push-reschedule/account.json +18 -0
- golden_erp/addons/clickup/fixtures/push-reschedule/case.json +52 -0
- golden_erp/addons/clickup/fixtures/push-reschedule/db.expected.json +42 -0
- golden_erp/addons/clickup/fixtures/push-reschedule/requests.expected.json +15 -0
- golden_erp/addons/clickup/fixtures/push-reschedule/responses/001.json +40 -0
- golden_erp/addons/clickup/fixtures/rate-limited/account.json +18 -0
- golden_erp/addons/clickup/fixtures/rate-limited/case.json +54 -0
- golden_erp/addons/clickup/fixtures/rate-limited/db.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/rate-limited/requests.expected.json +14 -0
- golden_erp/addons/clickup/fixtures/rate-limited/responses/001.json +18 -0
- golden_erp/addons/clickup/fixtures/webhook-replayed/account.json +18 -0
- golden_erp/addons/clickup/fixtures/webhook-replayed/case.json +40 -0
- golden_erp/addons/clickup/fixtures/webhook-replayed/db.expected.json +38 -0
- golden_erp/addons/clickup/fixtures/webhook-replayed/inbound/001.json +24 -0
- golden_erp/addons/clickup/fixtures/webhook-replayed/requests.expected.json +14 -0
- golden_erp/addons/clickup/fixtures/webhook-replayed/responses/001.json +41 -0
- golden_erp/addons/clickup/fixtures/webhook-tampered/account.json +18 -0
- golden_erp/addons/clickup/fixtures/webhook-tampered/case.json +33 -0
- golden_erp/addons/clickup/fixtures/webhook-tampered/db.expected.json +9 -0
- golden_erp/addons/clickup/fixtures/webhook-tampered/inbound/001.json +24 -0
- golden_erp/addons/clickup/fixtures/webhook-tampered/requests.expected.json +1 -0
- golden_erp/addons/clickup/mapping.py +226 -0
- golden_erp/addons/clickup/plugin.py +26 -0
- golden_erp/addons/clickup/tests/__init__.py +0 -0
- golden_erp/addons/clickup/tests/seed.py +99 -0
- golden_erp/addons/clickup/tests/test_adapter.py +606 -0
- golden_erp/addons/clickup/tests/test_contract.py +36 -0
- golden_erp/addons/clickup/tests/test_mapping.py +82 -0
- golden_erp/addons/clickup/values.py +69 -0
- golden_erp/addons/example_audit_notifier/__init__.py +5 -0
- golden_erp/addons/example_audit_notifier/plugin.py +100 -0
- golden_erp/addons/fixture_crm/__init__.py +13 -0
- golden_erp/addons/fixture_crm/adapter.py +235 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-erased-skipped/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-erased-skipped/case.json +27 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-erased-skipped/db.expected.json +20 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-erased-skipped/inbound/001.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-erased-skipped/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-known-party/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-known-party/case.json +19 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-known-party/db.expected.json +42 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-known-party/inbound/001.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-known-party/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unknown-party/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unknown-party/case.json +19 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unknown-party/db.expected.json +9 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unknown-party/inbound/001.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unknown-party/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unsupported-type/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unsupported-type/case.json +19 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unsupported-type/db.expected.json +9 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unsupported-type/inbound/001.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/inbound-unsupported-type/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/newer-schema/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/newer-schema/case.json +21 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/newer-schema/db.expected.json +9 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/newer-schema/inbound/001.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/newer-schema/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/account.json +7 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/case.json +39 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/db.expected.json +73 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/requests.expected.json +27 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/responses/001-page1.json +30 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/responses/002-page2.json +29 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/poll-pages/responses/003-empty.json +17 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create/case.json +26 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create/db.expected.json +26 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create/requests.expected.json +17 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create/responses/001-create.json +14 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create-timeout/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create-timeout/case.json +32 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create-timeout/db.expected.json +26 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create-timeout/requests.expected.json +29 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create-timeout/responses/001-create-lost.json +12 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-create-timeout/responses/002-search.json +15 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-update/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-update/case.json +33 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-update/db.expected.json +26 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-update/requests.expected.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/push-update/responses/001-patch.json +11 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/rate-limited/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/rate-limited/case.json +29 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/rate-limited/db.expected.json +17 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/rate-limited/requests.expected.json +17 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/rate-limited/responses/001-throttled.json +17 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-stale/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-stale/case.json +23 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-stale/db.expected.json +9 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-stale/inbound/001.json +23 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-stale/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-tampered/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-tampered/case.json +23 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-tampered/db.expected.json +9 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-tampered/inbound/001.json +23 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-tampered/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-valid/account.json +6 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-valid/case.json +23 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-valid/db.expected.json +50 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-valid/inbound/001.json +23 -0
- golden_erp/addons/fixture_crm/fixtures/fixture/webhook-valid/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/newer-schema/account.json +4 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/newer-schema/case.json +21 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/newer-schema/db.expected.json +9 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/newer-schema/inbound/001.json +16 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/newer-schema/requests.expected.json +1 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-per-grant/account.json +4 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-per-grant/case.json +48 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-per-grant/db.expected.json +42 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-per-grant/requests.expected.json +14 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-per-grant/responses/001-page.json +29 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-per-grant/responses/002-empty.json +17 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/account.json +4 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/case.json +52 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/db.expected.json +42 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/requests.expected.json +29 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/responses/001-token.json +13 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/responses/002-page.json +29 -0
- golden_erp/addons/fixture_crm/fixtures/fixture_oauth/poll-refreshes-token/responses/003-empty.json +17 -0
- golden_erp/addons/fixture_crm/mapping.py +55 -0
- golden_erp/addons/fixture_crm/plugin.py +22 -0
- golden_erp/addons/fixture_crm/tests/__init__.py +0 -0
- golden_erp/addons/fixture_crm/tests/test_contract.py +33 -0
- golden_erp/addons/fixture_crm/tests/test_mapping.py +29 -0
- golden_erp/addons/fixture_crm/values.py +29 -0
- golden_erp/addons/gmail/__init__.py +10 -0
- golden_erp/addons/gmail/adapter.py +844 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/case.json +87 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/db.expected.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/requests.expected.json +98 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/001.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/004.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/005.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/006.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/007.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/008.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/bcc-copy-adds-participant/responses/009.json +78 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/case.json +69 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/db.expected.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/requests.expected.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/responses/001.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/erased-sender-skipped/responses/004.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/case.json +63 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/db.expected.json +42 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/requests.expected.json +98 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/001.json +118 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/004.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/005.json +48 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/006.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/007.json +48 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/008.json +75 -0
- golden_erp/addons/gmail/fixtures/gmail/excluded-label/responses/009.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/case.json +57 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/db.expected.json +42 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/requests.expected.json +59 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/responses/001.json +14 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/responses/002.json +21 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/responses/003.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/responses/004.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/responses/005.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/first-sync-lists-recent/responses/006.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/case.json +69 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/db.expected.json +85 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/requests.expected.json +86 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/001.json +78 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/004.json +55 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/005.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/006.json +78 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/007.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/golden-send-bcc-skipped/responses/008.json +78 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/case.json +63 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/db.expected.json +42 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/requests.expected.json +73 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/001.json +21 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/002.json +12 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/003.json +20 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/004.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/005.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/006.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/history-expired-resyncs/responses/007.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/case.json +63 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/db.expected.json +42 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/requests.expected.json +50 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/responses/001.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/responses/004.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/html-only-body/responses/005.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/case.json +63 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/db.expected.json +42 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/requests.expected.json +50 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/responses/001.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/responses/004.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/inbound-known-contact/responses/005.json +94 -0
- golden_erp/addons/gmail/fixtures/gmail/newer-schema/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/newer-schema/case.json +50 -0
- golden_erp/addons/gmail/fixtures/gmail/newer-schema/db.expected.json +9 -0
- golden_erp/addons/gmail/fixtures/gmail/newer-schema/inbound/001.json +90 -0
- golden_erp/addons/gmail/fixtures/gmail/newer-schema/requests.expected.json +1 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-invalid-grant-revokes/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-invalid-grant-revokes/case.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-invalid-grant-revokes/db.expected.json +9 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-invalid-grant-revokes/requests.expected.json +31 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-invalid-grant-revokes/responses/001.json +15 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-invalid-grant-revokes/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/case.json +64 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/db.expected.json +42 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/requests.expected.json +65 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/responses/001.json +14 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/responses/002.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/responses/003.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/responses/004.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/responses/005.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/oauth-refresh/responses/006.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/case.json +63 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/db.expected.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/requests.expected.json +50 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/responses/001.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/responses/004.json +59 -0
- golden_erp/addons/gmail/fixtures/gmail/outbound-from-owner/responses/005.json +86 -0
- golden_erp/addons/gmail/fixtures/gmail/push-body-not-a-notification/account.json +6 -0
- golden_erp/addons/gmail/fixtures/gmail/push-body-not-a-notification/case.json +49 -0
- golden_erp/addons/gmail/fixtures/gmail/push-body-not-a-notification/db.expected.json +9 -0
- golden_erp/addons/gmail/fixtures/gmail/push-body-not-a-notification/inbound/push.json +95 -0
- golden_erp/addons/gmail/fixtures/gmail/push-body-not-a-notification/requests.expected.json +1 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/account.json +6 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/case.json +55 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/db.expected.json +57 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/inbound/push.json +18 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/requests.expected.json +58 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/responses/001.json +27 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/responses/002.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/responses/003.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/responses/004.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/responses/005.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/push-notification-polls/responses/006.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/push-wrong-audience/account.json +6 -0
- golden_erp/addons/gmail/fixtures/gmail/push-wrong-audience/case.json +49 -0
- golden_erp/addons/gmail/fixtures/gmail/push-wrong-audience/db.expected.json +9 -0
- golden_erp/addons/gmail/fixtures/gmail/push-wrong-audience/inbound/push.json +18 -0
- golden_erp/addons/gmail/fixtures/gmail/push-wrong-audience/requests.expected.json +10 -0
- golden_erp/addons/gmail/fixtures/gmail/push-wrong-audience/responses/001.json +27 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/case.json +87 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/db.expected.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/requests.expected.json +86 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/001.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/004.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/005.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/006.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/007.json +78 -0
- golden_erp/addons/gmail/fixtures/gmail/same-message-two-mailboxes/responses/008.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/case.json +102 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/db.expected.json +131 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/requests.expected.json +134 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/001.json +58 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/003.json +58 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/004.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/005.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/006.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/007.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/008.json +59 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/009.json +86 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/010.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/011.json +59 -0
- golden_erp/addons/gmail/fixtures/gmail/thread-across-mailboxes/responses/012.json +86 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/account.json +4 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/case.json +63 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/db.expected.json +9 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/requests.expected.json +74 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/001.json +98 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/002.json +17 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/003.json +38 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/004.json +47 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/005.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/006.json +51 -0
- golden_erp/addons/gmail/fixtures/gmail/unknown-only-skipped/responses/007.json +51 -0
- golden_erp/addons/gmail/mapping.py +317 -0
- golden_erp/addons/gmail/plugin.py +23 -0
- golden_erp/addons/gmail/pubsub.py +143 -0
- golden_erp/addons/gmail/tests/__init__.py +0 -0
- golden_erp/addons/gmail/tests/helpers.py +121 -0
- golden_erp/addons/gmail/tests/seed.py +92 -0
- golden_erp/addons/gmail/tests/test_contract.py +30 -0
- golden_erp/addons/gmail/tests/test_gmail.py +525 -0
- golden_erp/addons/gmail/tests/test_gmail_pg.py +82 -0
- golden_erp/addons/gmail/tests/test_mapping.py +101 -0
- golden_erp/addons/gmail/tests/test_pubsub.py +87 -0
- golden_erp/addons/gmail/values.py +47 -0
- golden_erp/addons/google_ads/__init__.py +1 -0
- golden_erp/addons/google_ads/adapter.py +301 -0
- golden_erp/addons/google_ads/conversions.py +150 -0
- golden_erp/addons/google_ads/fixtures/batch-partial-failure/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/batch-partial-failure/case.json +81 -0
- golden_erp/addons/google_ads/fixtures/batch-partial-failure/db.expected.json +65 -0
- golden_erp/addons/google_ads/fixtures/batch-partial-failure/requests.expected.json +66 -0
- golden_erp/addons/google_ads/fixtures/batch-partial-failure/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/batch-partial-failure/responses/002.json +56 -0
- golden_erp/addons/google_ads/fixtures/click-too-old/account.json +10 -0
- golden_erp/addons/google_ads/fixtures/click-too-old/case.json +37 -0
- golden_erp/addons/google_ads/fixtures/click-too-old/db.expected.json +25 -0
- golden_erp/addons/google_ads/fixtures/click-too-old/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/consent-override/account.json +10 -0
- golden_erp/addons/google_ads/fixtures/consent-override/case.json +37 -0
- golden_erp/addons/google_ads/fixtures/consent-override/db.expected.json +37 -0
- golden_erp/addons/google_ads/fixtures/consent-override/requests.expected.json +44 -0
- golden_erp/addons/google_ads/fixtures/consent-override/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/consent-override/responses/002.json +16 -0
- golden_erp/addons/google_ads/fixtures/erased-party/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/erased-party/case.json +38 -0
- golden_erp/addons/google_ads/fixtures/erased-party/db.expected.json +25 -0
- golden_erp/addons/google_ads/fixtures/erased-party/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/landing-url-click-parse/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/landing-url-click-parse/case.json +20 -0
- golden_erp/addons/google_ads/fixtures/landing-url-click-parse/db.expected.json +17 -0
- golden_erp/addons/google_ads/fixtures/landing-url-click-parse/inbound/001.json +20 -0
- golden_erp/addons/google_ads/fixtures/landing-url-click-parse/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/newer-schema/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/newer-schema/case.json +22 -0
- golden_erp/addons/google_ads/fixtures/newer-schema/db.expected.json +9 -0
- golden_erp/addons/google_ads/fixtures/newer-schema/inbound/001.json +7 -0
- golden_erp/addons/google_ads/fixtures/newer-schema/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/null-amount-no-value/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/null-amount-no-value/case.json +37 -0
- golden_erp/addons/google_ads/fixtures/null-amount-no-value/db.expected.json +38 -0
- golden_erp/addons/google_ads/fixtures/null-amount-no-value/requests.expected.json +43 -0
- golden_erp/addons/google_ads/fixtures/null-amount-no-value/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/null-amount-no-value/responses/002.json +16 -0
- golden_erp/addons/google_ads/fixtures/pipeline-unmapped/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/pipeline-unmapped/case.json +37 -0
- golden_erp/addons/google_ads/fixtures/pipeline-unmapped/db.expected.json +25 -0
- golden_erp/addons/google_ads/fixtures/pipeline-unmapped/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/reopen-retracts/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/reopen-retracts/case.json +40 -0
- golden_erp/addons/google_ads/fixtures/reopen-retracts/db.expected.json +45 -0
- golden_erp/addons/google_ads/fixtures/reopen-retracts/requests.expected.json +39 -0
- golden_erp/addons/google_ads/fixtures/reopen-retracts/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/reopen-retracts/responses/002.json +16 -0
- golden_erp/addons/google_ads/fixtures/replay-idempotent/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/replay-idempotent/case.json +38 -0
- golden_erp/addons/google_ads/fixtures/replay-idempotent/db.expected.json +37 -0
- golden_erp/addons/google_ads/fixtures/replay-idempotent/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/rewin-needs-review/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/rewin-needs-review/case.json +43 -0
- golden_erp/addons/google_ads/fixtures/rewin-needs-review/db.expected.json +52 -0
- golden_erp/addons/google_ads/fixtures/rewin-needs-review/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/touchpoint-post-unknown-email/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/touchpoint-post-unknown-email/case.json +20 -0
- golden_erp/addons/google_ads/fixtures/touchpoint-post-unknown-email/db.expected.json +24 -0
- golden_erp/addons/google_ads/fixtures/touchpoint-post-unknown-email/inbound/001.json +21 -0
- golden_erp/addons/google_ads/fixtures/touchpoint-post-unknown-email/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/two-currencies/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/two-currencies/case.json +59 -0
- golden_erp/addons/google_ads/fixtures/two-currencies/db.expected.json +62 -0
- golden_erp/addons/google_ads/fixtures/two-currencies/requests.expected.json +55 -0
- golden_erp/addons/google_ads/fixtures/two-currencies/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/two-currencies/responses/002.json +17 -0
- golden_erp/addons/google_ads/fixtures/won-no-click/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/won-no-click/case.json +58 -0
- golden_erp/addons/google_ads/fixtures/won-no-click/db.expected.json +39 -0
- golden_erp/addons/google_ads/fixtures/won-no-click/requests.expected.json +1 -0
- golden_erp/addons/google_ads/fixtures/won-with-gbraid/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/won-with-gbraid/case.json +41 -0
- golden_erp/addons/google_ads/fixtures/won-with-gbraid/db.expected.json +44 -0
- golden_erp/addons/google_ads/fixtures/won-with-gbraid/requests.expected.json +44 -0
- golden_erp/addons/google_ads/fixtures/won-with-gbraid/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/won-with-gbraid/responses/002.json +16 -0
- golden_erp/addons/google_ads/fixtures/won-with-gclid/account.json +9 -0
- golden_erp/addons/google_ads/fixtures/won-with-gclid/case.json +37 -0
- golden_erp/addons/google_ads/fixtures/won-with-gclid/db.expected.json +37 -0
- golden_erp/addons/google_ads/fixtures/won-with-gclid/requests.expected.json +44 -0
- golden_erp/addons/google_ads/fixtures/won-with-gclid/responses/001.json +16 -0
- golden_erp/addons/google_ads/fixtures/won-with-gclid/responses/002.json +16 -0
- golden_erp/addons/google_ads/mapping.py +140 -0
- golden_erp/addons/google_ads/plugin.py +41 -0
- golden_erp/addons/google_ads/tests/__init__.py +0 -0
- golden_erp/addons/google_ads/tests/test_adapter.py +343 -0
- golden_erp/addons/google_ads/tests/test_contract.py +101 -0
- golden_erp/addons/google_ads/tests/test_conversions.py +60 -0
- golden_erp/addons/google_ads/tests/test_mapping.py +87 -0
- golden_erp/addons/google_ads/values.py +79 -0
- golden_erp/addons/hubspot_export/__init__.py +4 -0
- golden_erp/addons/hubspot_export/adapter.py +163 -0
- golden_erp/addons/hubspot_export/convert.py +750 -0
- golden_erp/addons/hubspot_export/fixtures/cases/archived-forbidden/case.json +15 -0
- golden_erp/addons/hubspot_export/fixtures/cases/archived-forbidden/expected/manifest.expected.json +117 -0
- golden_erp/addons/hubspot_export/fixtures/cases/archived-forbidden/overlay/crawl/errors.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/cases/archived-not-enumerated/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/archived-not-enumerated/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/association-paged/case.json +9 -0
- golden_erp/addons/hubspot_export/fixtures/cases/association-paged/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/association-paged/overlay/crawl/tickets/page-0001.json +95 -0
- golden_erp/addons/hubspot_export/fixtures/cases/body-truncated/case.json +9 -0
- golden_erp/addons/hubspot_export/fixtures/cases/body-truncated/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/body-truncated/overlay/crawl/notes/page-0001.json +82 -0
- golden_erp/addons/hubspot_export/fixtures/cases/count-mismatch/case.json +9 -0
- golden_erp/addons/hubspot_export/fixtures/cases/count-mismatch/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/count-mismatch/overlay/crawl/companies/count.json +21 -0
- golden_erp/addons/hubspot_export/fixtures/cases/crawl-failed/case.json +5 -0
- golden_erp/addons/hubspot_export/fixtures/cases/crawl-failed/overlay/crawl/errors.json +13 -0
- golden_erp/addons/hubspot_export/fixtures/cases/export-no-time-zone/case.json +8 -0
- golden_erp/addons/hubspot_export/fixtures/cases/export-truncated/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/export-truncated/expected/manifest.expected.json +156 -0
- golden_erp/addons/hubspot_export/fixtures/cases/export-truncated/overlay/export/deals.csv +4 -0
- golden_erp/addons/hubspot_export/fixtures/cases/file-absent/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/file-absent/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/forbidden/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/forbidden/expected/manifest.expected.json +109 -0
- golden_erp/addons/hubspot_export/fixtures/cases/forbidden/overlay/crawl/errors.json +17 -0
- golden_erp/addons/hubspot_export/fixtures/cases/history-absent/case.json +11 -0
- golden_erp/addons/hubspot_export/fixtures/cases/history-absent/expected/manifest.expected.json +101 -0
- golden_erp/addons/hubspot_export/fixtures/cases/mixed/case.json +15 -0
- golden_erp/addons/hubspot_export/fixtures/cases/mixed/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/mixed/overlay/export/export.json +7 -0
- golden_erp/addons/hubspot_export/fixtures/cases/mixed/overlay/export/tasks.csv +3 -0
- golden_erp/addons/hubspot_export/fixtures/cases/newer-schema/case.json +5 -0
- golden_erp/addons/hubspot_export/fixtures/cases/newer-schema/overlay/crawl/contacts/page-0001.json +107 -0
- golden_erp/addons/hubspot_export/fixtures/cases/page-missing/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/page-missing/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/pair-forbidden/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/pair-forbidden/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/pair-forbidden/overlay/crawl/errors.json +13 -0
- golden_erp/addons/hubspot_export/fixtures/cases/pair-not-exported/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/pair-not-exported/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/search-capped/case.json +12 -0
- golden_erp/addons/hubspot_export/fixtures/cases/search-capped/expected/manifest.expected.json +117 -0
- golden_erp/addons/hubspot_export/fixtures/cases/search-capped/overlay/crawl/contacts/page-0001.json +115 -0
- golden_erp/addons/hubspot_export/fixtures/cases/search-capped/overlay/crawl/contacts/page-0002.json +73 -0
- golden_erp/addons/hubspot_export/fixtures/cases/unknown-owner/case.json +9 -0
- golden_erp/addons/hubspot_export/fixtures/cases/unknown-owner/expected/manifest.expected.json +111 -0
- golden_erp/addons/hubspot_export/fixtures/cases/unknown-owner/overlay/crawl/deals/page-0002.json +81 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/associations/contacts-companies/page-0001.json +144 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/associations/deals-contacts/page-0001.json +143 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/calls/archived/page-0001.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/calls/page-0001.json +78 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/companies/archived/page-0001.json +31 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/companies/count.json +21 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/companies/page-0001.json +84 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/contacts/archived/page-0001.json +32 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/contacts/page-0001.json +107 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/contacts/page-0002.json +66 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/deals/archived/page-0001.json +34 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/deals/page-0001.json +127 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/deals/page-0002.json +81 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/emails/archived/page-0001.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/emails/page-0001.json +89 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/errors.json +7 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/history/contacts/page-0001.json +105 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/history/deals/page-0001.json +151 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/meetings/archived/page-0001.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/meetings/page-0001.json +79 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/notes/archived/page-0001.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/notes/page-0001.json +81 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/owners-archived.json +34 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/owners.json +66 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/pipelines-deals.json +130 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/pipelines-tickets.json +68 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-calls.json +170 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-companies.json +193 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-contacts.json +335 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-deals.json +298 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-emails.json +150 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-meetings.json +143 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-notes.json +107 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-tasks.json +199 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/properties-tickets.json +159 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/recording.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/subscriptions/page-0001.json +77 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/tasks/archived/page-0001.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/tasks/page-0001.json +141 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/tickets/archived/page-0001.json +16 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/crawl/tickets/page-0001.json +89 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/associations.expected.jsonl +19 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/communications.expected.jsonl +8 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/companies.expected.jsonl +5 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/consent.expected.jsonl +5 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/contacts.expected.jsonl +8 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/deals.expected.jsonl +7 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/import-report.expected.json +717 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/manifest.expected.json +105 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/owners.expected.jsonl +4 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/pipelines.expected.jsonl +3 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/property_defs.expected.jsonl +107 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/relationships.expected.jsonl +2 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/expected/tasks.expected.jsonl +4 -0
- golden_erp/addons/hubspot_export/fixtures/crawl-small/mapping.toml +42 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/associations.expected.jsonl +9 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/companies.expected.jsonl +2 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/consent.expected.jsonl +1 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/contacts.expected.jsonl +3 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/deals.expected.jsonl +3 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/manifest.expected.json +152 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/owners.expected.jsonl +4 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/pipelines.expected.jsonl +3 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/property_defs.expected.jsonl +79 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/relationships.expected.jsonl +1 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/expected/tasks.expected.jsonl +2 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/companies.csv +3 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/contacts.csv +4 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/deals.csv +4 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/export.json +15 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/owners-archived.json +33 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/owners.json +64 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/pipelines-deals.json +130 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/pipelines-tickets.json +68 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/properties-companies.json +193 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/properties-contacts.json +335 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/properties-deals.json +298 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/properties-tasks.json +199 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/properties-tickets.json +159 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/tasks.csv +3 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/export/tickets.csv +2 -0
- golden_erp/addons/hubspot_export/fixtures/export-csv/mapping.toml +5 -0
- golden_erp/addons/hubspot_export/mapping.py +230 -0
- golden_erp/addons/hubspot_export/model.py +138 -0
- golden_erp/addons/hubspot_export/plugin.py +27 -0
- golden_erp/addons/hubspot_export/reader_crawl.py +346 -0
- golden_erp/addons/hubspot_export/reader_csv.py +334 -0
- golden_erp/addons/hubspot_export/recording.py +243 -0
- golden_erp/addons/hubspot_export/tests/__init__.py +0 -0
- golden_erp/addons/hubspot_export/tests/helpers.py +77 -0
- golden_erp/addons/hubspot_export/tests/test_adapter.py +661 -0
- golden_erp/addons/hubspot_export/values.py +219 -0
- golden_erp/addons/klaviyo/__init__.py +12 -0
- golden_erp/addons/klaviyo/adapter.py +816 -0
- golden_erp/addons/klaviyo/fixtures/erase/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/erase/case.json +33 -0
- golden_erp/addons/klaviyo/fixtures/erase/db.expected.json +17 -0
- golden_erp/addons/klaviyo/fixtures/erase/requests.expected.json +27 -0
- golden_erp/addons/klaviyo/fixtures/erase/responses/001.json +12 -0
- golden_erp/addons/klaviyo/fixtures/erased-profile-skipped/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/erased-profile-skipped/case.json +31 -0
- golden_erp/addons/klaviyo/fixtures/erased-profile-skipped/db.expected.json +20 -0
- golden_erp/addons/klaviyo/fixtures/erased-profile-skipped/inbound/001-event.json +29 -0
- golden_erp/addons/klaviyo/fixtures/erased-profile-skipped/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/events-received-opened/account.json +7 -0
- golden_erp/addons/klaviyo/fixtures/events-received-opened/case.json +60 -0
- golden_erp/addons/klaviyo/fixtures/events-received-opened/db.expected.json +66 -0
- golden_erp/addons/klaviyo/fixtures/events-received-opened/requests.expected.json +19 -0
- golden_erp/addons/klaviyo/fixtures/events-received-opened/responses/001.json +99 -0
- golden_erp/addons/klaviyo/fixtures/events-received-opened/responses/002.json +73 -0
- golden_erp/addons/klaviyo/fixtures/existing-profile-opt-out-pulled/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/existing-profile-opt-out-pulled/case.json +38 -0
- golden_erp/addons/klaviyo/fixtures/existing-profile-opt-out-pulled/db.expected.json +64 -0
- golden_erp/addons/klaviyo/fixtures/existing-profile-opt-out-pulled/requests.expected.json +39 -0
- golden_erp/addons/klaviyo/fixtures/existing-profile-opt-out-pulled/responses/001.json +17 -0
- golden_erp/addons/klaviyo/fixtures/existing-profile-opt-out-pulled/responses/002.json +32 -0
- golden_erp/addons/klaviyo/fixtures/hard-bounce-pulled/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/hard-bounce-pulled/case.json +40 -0
- golden_erp/addons/klaviyo/fixtures/hard-bounce-pulled/db.expected.json +47 -0
- golden_erp/addons/klaviyo/fixtures/hard-bounce-pulled/inbound/001-event.json +31 -0
- golden_erp/addons/klaviyo/fixtures/hard-bounce-pulled/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/newer-schema-refused/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/newer-schema-refused/case.json +21 -0
- golden_erp/addons/klaviyo/fixtures/newer-schema-refused/db.expected.json +9 -0
- golden_erp/addons/klaviyo/fixtures/newer-schema-refused/inbound/001-event.json +29 -0
- golden_erp/addons/klaviyo/fixtures/newer-schema-refused/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/profile-granted/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/profile-granted/case.json +38 -0
- golden_erp/addons/klaviyo/fixtures/profile-granted/db.expected.json +40 -0
- golden_erp/addons/klaviyo/fixtures/profile-granted/requests.expected.json +73 -0
- golden_erp/addons/klaviyo/fixtures/profile-granted/responses/001.json +17 -0
- golden_erp/addons/klaviyo/fixtures/profile-granted/responses/002.json +12 -0
- golden_erp/addons/klaviyo/fixtures/profile-no-consent-not-sent/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/profile-no-consent-not-sent/case.json +57 -0
- golden_erp/addons/klaviyo/fixtures/profile-no-consent-not-sent/db.expected.json +41 -0
- golden_erp/addons/klaviyo/fixtures/profile-no-consent-not-sent/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/profile-withdrawn-unsubscribes/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/profile-withdrawn-unsubscribes/case.json +52 -0
- golden_erp/addons/klaviyo/fixtures/profile-withdrawn-unsubscribes/db.expected.json +47 -0
- golden_erp/addons/klaviyo/fixtures/profile-withdrawn-unsubscribes/requests.expected.json +32 -0
- golden_erp/addons/klaviyo/fixtures/profile-withdrawn-unsubscribes/responses/001.json +12 -0
- golden_erp/addons/klaviyo/fixtures/rate-limited/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/rate-limited/case.json +38 -0
- golden_erp/addons/klaviyo/fixtures/rate-limited/db.expected.json +26 -0
- golden_erp/addons/klaviyo/fixtures/rate-limited/requests.expected.json +25 -0
- golden_erp/addons/klaviyo/fixtures/rate-limited/responses/001.json +21 -0
- golden_erp/addons/klaviyo/fixtures/reconcile-sweep/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/reconcile-sweep/case.json +65 -0
- golden_erp/addons/klaviyo/fixtures/reconcile-sweep/db.expected.json +74 -0
- golden_erp/addons/klaviyo/fixtures/reconcile-sweep/requests.expected.json +73 -0
- golden_erp/addons/klaviyo/fixtures/reconcile-sweep/responses/001.json +17 -0
- golden_erp/addons/klaviyo/fixtures/reconcile-sweep/responses/002.json +12 -0
- golden_erp/addons/klaviyo/fixtures/segment-lists/account.json +9 -0
- golden_erp/addons/klaviyo/fixtures/segment-lists/case.json +80 -0
- golden_erp/addons/klaviyo/fixtures/segment-lists/db.expected.json +50 -0
- golden_erp/addons/klaviyo/fixtures/segment-lists/requests.expected.json +46 -0
- golden_erp/addons/klaviyo/fixtures/segment-lists/responses/001.json +17 -0
- golden_erp/addons/klaviyo/fixtures/segment-lists/responses/002.json +12 -0
- golden_erp/addons/klaviyo/fixtures/spam-pulled/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/spam-pulled/case.json +40 -0
- golden_erp/addons/klaviyo/fixtures/spam-pulled/db.expected.json +64 -0
- golden_erp/addons/klaviyo/fixtures/spam-pulled/inbound/001-event.json +29 -0
- golden_erp/addons/klaviyo/fixtures/spam-pulled/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/subscribed-ignored/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/subscribed-ignored/case.json +34 -0
- golden_erp/addons/klaviyo/fixtures/subscribed-ignored/db.expected.json +28 -0
- golden_erp/addons/klaviyo/fixtures/subscribed-ignored/inbound/001-event.json +29 -0
- golden_erp/addons/klaviyo/fixtures/subscribed-ignored/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/suppression-pushed/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/suppression-pushed/case.json +53 -0
- golden_erp/addons/klaviyo/fixtures/suppression-pushed/db.expected.json +48 -0
- golden_erp/addons/klaviyo/fixtures/suppression-pushed/requests.expected.json +61 -0
- golden_erp/addons/klaviyo/fixtures/suppression-pushed/responses/001.json +12 -0
- golden_erp/addons/klaviyo/fixtures/suppression-pushed/responses/002.json +12 -0
- golden_erp/addons/klaviyo/fixtures/unknown-profile-dropped/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/unknown-profile-dropped/case.json +19 -0
- golden_erp/addons/klaviyo/fixtures/unknown-profile-dropped/db.expected.json +9 -0
- golden_erp/addons/klaviyo/fixtures/unknown-profile-dropped/inbound/001-event.json +29 -0
- golden_erp/addons/klaviyo/fixtures/unknown-profile-dropped/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/fixtures/unsubscribe-pulled/account.json +6 -0
- golden_erp/addons/klaviyo/fixtures/unsubscribe-pulled/case.json +50 -0
- golden_erp/addons/klaviyo/fixtures/unsubscribe-pulled/db.expected.json +71 -0
- golden_erp/addons/klaviyo/fixtures/unsubscribe-pulled/inbound/001-event.json +29 -0
- golden_erp/addons/klaviyo/fixtures/unsubscribe-pulled/requests.expected.json +1 -0
- golden_erp/addons/klaviyo/mapping.py +272 -0
- golden_erp/addons/klaviyo/plugin.py +31 -0
- golden_erp/addons/klaviyo/segments.py +120 -0
- golden_erp/addons/klaviyo/tests/__init__.py +0 -0
- golden_erp/addons/klaviyo/tests/seed.py +78 -0
- golden_erp/addons/klaviyo/tests/test_contract.py +39 -0
- golden_erp/addons/klaviyo/tests/test_klaviyo.py +640 -0
- golden_erp/addons/klaviyo/values.py +70 -0
- golden_erp/integrations.py +134 -0
- golden_erp/paths.py +15 -0
- golden_erp/settings/__init__.py +0 -0
- golden_erp/settings/base.py +810 -0
- golden_erp/settings/prod.py +190 -0
- golden_erp/static/assets/css/auth.css +318 -0
- golden_erp/static/assets/css/erp-compat.css +241 -0
- golden_erp/static/assets/css/erp-custom.css +264 -0
- golden_erp/static/assets/css/tabler-bindings.css +188 -0
- golden_erp/static/assets/css/tabler-icons.css +126 -0
- golden_erp/static/assets/css/tabler-vendors.min.css +8 -0
- golden_erp/static/assets/css/tabler.min.css +9 -0
- golden_erp/static/assets/css/themes/ember.css +58 -0
- golden_erp/static/assets/css/themes/eva-01.css +446 -0
- golden_erp/static/assets/css/themes/fincas.css +58 -0
- golden_erp/static/assets/css/themes/golden.css +58 -0
- golden_erp/static/assets/css/themes/graphite.css +58 -0
- golden_erp/static/assets/css/themes/midnight.css +58 -0
- golden_erp/static/assets/css/themes/paper.css +58 -0
- golden_erp/static/assets/css/themes/sage.css +58 -0
- golden_erp/static/assets/css/themes/slate.css +58 -0
- golden_erp/static/assets/fonts/docs/barlow-400.ttf +0 -0
- golden_erp/static/assets/fonts/docs/barlow-600.ttf +0 -0
- golden_erp/static/assets/fonts/docs/barlow-700.ttf +0 -0
- golden_erp/static/assets/fonts/docs/barlow-800.ttf +0 -0
- golden_erp/static/assets/fonts/docs/roboto-mono-400.ttf +0 -0
- golden_erp/static/assets/fonts/docs/roboto-mono-500.ttf +0 -0
- golden_erp/static/assets/fonts/docs/source-sans-3-400.ttf +0 -0
- golden_erp/static/assets/fonts/docs/source-sans-3-600.ttf +0 -0
- golden_erp/static/assets/fonts/tabler-icons-subset.ttf +0 -0
- golden_erp/static/assets/fonts/tabler-icons-subset.woff +0 -0
- golden_erp/static/assets/fonts/tabler-icons-subset.woff2 +0 -0
- golden_erp/static/assets/img/apple-icon.png +0 -0
- golden_erp/static/assets/img/bg-smart-home-1.jpg +0 -0
- golden_erp/static/assets/img/bg-smart-home-2.jpg +0 -0
- golden_erp/static/assets/img/bruce-mars.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved0.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved1.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved10.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved11.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved14.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved6.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved7.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved8.jpg +0 -0
- golden_erp/static/assets/img/curved-images/curved9.jpg +0 -0
- golden_erp/static/assets/img/curved-images/white-curved.jpg +0 -0
- golden_erp/static/assets/img/down-arrow-dark.svg +11 -0
- golden_erp/static/assets/img/down-arrow-white.svg +1 -0
- golden_erp/static/assets/img/down-arrow.svg +11 -0
- golden_erp/static/assets/img/favicon.png +0 -0
- golden_erp/static/assets/img/favicon.svg +13 -0
- golden_erp/static/assets/img/home-decor-1.jpg +0 -0
- golden_erp/static/assets/img/home-decor-2.jpg +0 -0
- golden_erp/static/assets/img/home-decor-3.jpg +0 -0
- golden_erp/static/assets/img/icons/flags/AU.png +0 -0
- golden_erp/static/assets/img/icons/flags/BR.png +0 -0
- golden_erp/static/assets/img/icons/flags/DE.png +0 -0
- golden_erp/static/assets/img/icons/flags/GB.png +0 -0
- golden_erp/static/assets/img/icons/flags/US.png +0 -0
- golden_erp/static/assets/img/illustrations/chat.png +0 -0
- golden_erp/static/assets/img/illustrations/danger-chat-ill.png +0 -0
- golden_erp/static/assets/img/illustrations/dark-lock-ill.png +0 -0
- golden_erp/static/assets/img/illustrations/error-404.png +0 -0
- golden_erp/static/assets/img/illustrations/error-500.png +0 -0
- golden_erp/static/assets/img/illustrations/lock.png +0 -0
- golden_erp/static/assets/img/illustrations/rocket-white.png +0 -0
- golden_erp/static/assets/img/ivana-square.jpg +0 -0
- golden_erp/static/assets/img/ivana-squares.jpg +0 -0
- golden_erp/static/assets/img/ivancik.jpg +0 -0
- golden_erp/static/assets/img/kal-visuals-square.jpg +0 -0
- golden_erp/static/assets/img/logo-ct-dark.png +0 -0
- golden_erp/static/assets/img/logo-ct.png +0 -0
- golden_erp/static/assets/img/logo.svg +11 -0
- golden_erp/static/assets/img/logos/gray-logos/logo-coinbase.svg +16 -0
- golden_erp/static/assets/img/logos/gray-logos/logo-nasa.svg +9 -0
- golden_erp/static/assets/img/logos/gray-logos/logo-netflix.svg +9 -0
- golden_erp/static/assets/img/logos/gray-logos/logo-pinterest.svg +9 -0
- golden_erp/static/assets/img/logos/gray-logos/logo-spotify.svg +9 -0
- golden_erp/static/assets/img/logos/gray-logos/logo-vodafone.svg +9 -0
- golden_erp/static/assets/img/logos/mastercard.png +0 -0
- golden_erp/static/assets/img/logos/visa.png +0 -0
- golden_erp/static/assets/img/marie.jpg +0 -0
- golden_erp/static/assets/img/meeting.jpg +0 -0
- golden_erp/static/assets/img/mercedes-eqc.png +0 -0
- golden_erp/static/assets/img/office-dark.jpg +0 -0
- golden_erp/static/assets/img/shapes/pattern-lines.svg +91 -0
- golden_erp/static/assets/img/shapes/waves-white.svg +48 -0
- golden_erp/static/assets/img/small-logos/icon-bulb.svg +37 -0
- golden_erp/static/assets/img/small-logos/icon-sun-cloud.png +0 -0
- golden_erp/static/assets/img/small-logos/logo-asana.svg +16 -0
- golden_erp/static/assets/img/small-logos/logo-atlassian.svg +16 -0
- golden_erp/static/assets/img/small-logos/logo-invision.svg +10 -0
- golden_erp/static/assets/img/small-logos/logo-jira.svg +21 -0
- golden_erp/static/assets/img/small-logos/logo-slack.svg +12 -0
- golden_erp/static/assets/img/small-logos/logo-spotify.svg +9 -0
- golden_erp/static/assets/img/small-logos/logo-xd.svg +11 -0
- golden_erp/static/assets/img/team-1.jpg +0 -0
- golden_erp/static/assets/img/team-2.jpg +0 -0
- golden_erp/static/assets/img/team-3.jpg +0 -0
- golden_erp/static/assets/img/team-4.jpg +0 -0
- golden_erp/static/assets/img/team-5.jpg +0 -0
- golden_erp/static/assets/img/vr-bg.jpg +0 -0
- golden_erp/static/assets/js/plugins/amcharts/animated.js +13 -0
- golden_erp/static/assets/js/plugins/amcharts/core.js +39339 -0
- golden_erp/static/assets/js/plugins/amcharts/maps.js +6133 -0
- golden_erp/static/assets/js/plugins/amcharts/worldLow.js +16230 -0
- golden_erp/static/assets/js/plugins/chartjs.min.js +13 -0
- golden_erp/static/assets/js/plugins/choices.min.js +11 -0
- golden_erp/static/assets/js/plugins/countup.min.js +1 -0
- golden_erp/static/assets/js/plugins/datatables.js +1283 -0
- golden_erp/static/assets/js/plugins/dragula/dragula.js +1079 -0
- golden_erp/static/assets/js/plugins/dragula/dragula.min.js +1 -0
- golden_erp/static/assets/js/plugins/dropzone.min.js +1 -0
- golden_erp/static/assets/js/plugins/flatpickr.min.js +2 -0
- golden_erp/static/assets/js/plugins/fullcalendar.min.js +6 -0
- golden_erp/static/assets/js/plugins/jkanban/jkanban.js +1870 -0
- golden_erp/static/assets/js/plugins/jkanban/jkanban.min.js +1 -0
- golden_erp/static/assets/js/plugins/leaflet.js +4629 -0
- golden_erp/static/assets/js/plugins/moment.min.js +8 -0
- golden_erp/static/assets/js/plugins/multistep-form.js +167 -0
- golden_erp/static/assets/js/plugins/nouislider.min.js +2 -0
- golden_erp/static/assets/js/plugins/orbit-controls.js +1049 -0
- golden_erp/static/assets/js/plugins/photoswipe-ui-default.min.js +858 -0
- golden_erp/static/assets/js/plugins/photoswipe.min.js +4 -0
- golden_erp/static/assets/js/plugins/quill.min.js +8 -0
- golden_erp/static/assets/js/plugins/round-slider.min.js +271 -0
- golden_erp/static/assets/js/plugins/sweetalert.min.js +5 -0
- golden_erp/static/assets/js/plugins/threejs.js +52759 -0
- golden_erp/static/assets/js/plugins/tilt.min.js +508 -0
- golden_erp/static/assets/js/tabler.min.js +13 -0
- golden_erp/static/images/logo-80.webp +0 -0
- golden_erp/templates/403.html +7 -0
- golden_erp/templates/404.html +6 -0
- golden_erp/templates/500.html +5 -0
- golden_erp/templates/base.html +155 -0
- golden_erp/templates/content/detail.html +97 -0
- golden_erp/templates/discounts/detail.html +132 -0
- golden_erp/templates/discounts/generate.html +108 -0
- golden_erp/templates/erp/_column_chooser.html +42 -0
- golden_erp/templates/erp/_definition_fieldsets.html +43 -0
- golden_erp/templates/erp/_definition_groups.html +21 -0
- golden_erp/templates/erp/_doc_people.html +37 -0
- golden_erp/templates/erp/_list_a11y_js.html +28 -0
- golden_erp/templates/erp/_list_a11y_script.html +6 -0
- golden_erp/templates/erp/_list_caption.html +1 -0
- golden_erp/templates/erp/_list_export.html +11 -0
- golden_erp/templates/erp/_list_live_region.html +2 -0
- golden_erp/templates/erp/_list_responsive.html +27 -0
- golden_erp/templates/erp/_list_sort_inputs.html +1 -0
- golden_erp/templates/erp/_list_tools_js.html +47 -0
- golden_erp/templates/erp/_other_data.html +26 -0
- golden_erp/templates/erp/_party_search_js.html +146 -0
- golden_erp/templates/erp/_report_heading.html +1 -0
- golden_erp/templates/erp/_saved_filters.html +44 -0
- golden_erp/templates/erp/_tracking_section.html +44 -0
- golden_erp/templates/erp/_tracking_section_js.html +115 -0
- golden_erp/templates/erp/_unify_upload_form.html +16 -0
- golden_erp/templates/erp/account.html +52 -0
- golden_erp/templates/erp/account_edit.html +39 -0
- golden_erp/templates/erp/accounting_account_register.html +129 -0
- golden_erp/templates/erp/accounting_dashboard.html +175 -0
- golden_erp/templates/erp/accounting_entries.html +112 -0
- golden_erp/templates/erp/accounting_entry_detail.html +72 -0
- golden_erp/templates/erp/accounting_import.html +171 -0
- golden_erp/templates/erp/accounting_periods.html +82 -0
- golden_erp/templates/erp/accounting_recon.html +98 -0
- golden_erp/templates/erp/accounting_trial_balance.html +112 -0
- golden_erp/templates/erp/crm/_communication.html +23 -0
- golden_erp/templates/erp/crm/_list_header.html +9 -0
- golden_erp/templates/erp/crm/_log_form.html +67 -0
- golden_erp/templates/erp/crm/_new_party_link.html +2 -0
- golden_erp/templates/erp/crm/_pager.html +16 -0
- golden_erp/templates/erp/crm/_task_row_actions.html +17 -0
- golden_erp/templates/erp/crm/_timeline.html +65 -0
- golden_erp/templates/erp/crm/admin_form.html +37 -0
- golden_erp/templates/erp/crm/create_form.html +60 -0
- golden_erp/templates/erp/crm/engagement_detail.html +417 -0
- golden_erp/templates/erp/crm/engagement_form.html +45 -0
- golden_erp/templates/erp/crm/engagement_list.html +248 -0
- golden_erp/templates/erp/crm/lead_list.html +95 -0
- golden_erp/templates/erp/crm/log_form.html +16 -0
- golden_erp/templates/erp/crm/my_day.html +86 -0
- golden_erp/templates/erp/crm/pipeline_list.html +74 -0
- golden_erp/templates/erp/crm/task_list.html +107 -0
- golden_erp/templates/erp/crm/timeline.html +22 -0
- golden_erp/templates/erp/crm_import/_queue_header.html +14 -0
- golden_erp/templates/erp/crm_import/_queue_row.html +175 -0
- golden_erp/templates/erp/crm_import/bulk_confirm.html +24 -0
- golden_erp/templates/erp/crm_import/job_list.html +15 -0
- golden_erp/templates/erp/crm_import/job_overview.html +157 -0
- golden_erp/templates/erp/crm_import/queue.html +292 -0
- golden_erp/templates/erp/crm_import/report.html +139 -0
- golden_erp/templates/erp/crm_report.html +184 -0
- golden_erp/templates/erp/customer_address_form.html +147 -0
- golden_erp/templates/erp/customer_detail.html +421 -0
- golden_erp/templates/erp/dashboard.html +242 -0
- golden_erp/templates/erp/document_form.html +2980 -0
- golden_erp/templates/erp/document_library.html +165 -0
- golden_erp/templates/erp/email_verify.html +25 -0
- golden_erp/templates/erp/email_verify_email.html +11 -0
- golden_erp/templates/erp/form.html +89 -0
- golden_erp/templates/erp/integrations.html +257 -0
- golden_erp/templates/erp/invoice_detail.html +168 -0
- golden_erp/templates/erp/list.html +321 -0
- golden_erp/templates/erp/parties/party_detail.html +550 -0
- golden_erp/templates/erp/parties/party_list.html +198 -0
- golden_erp/templates/erp/parties_merge/review.html +256 -0
- golden_erp/templates/erp/password_change.html +50 -0
- golden_erp/templates/erp/pick_ticket_print.html +168 -0
- golden_erp/templates/erp/price_list_detail.html +136 -0
- golden_erp/templates/erp/product_detail.html +312 -0
- golden_erp/templates/erp/product_profile.html +807 -0
- golden_erp/templates/erp/purchase_order_receive.html +125 -0
- golden_erp/templates/erp/report.html +187 -0
- golden_erp/templates/erp/settings/labels.html +56 -0
- golden_erp/templates/erp/settings/team_form.html +52 -0
- golden_erp/templates/erp/settings/teams.html +46 -0
- golden_erp/templates/erp/unify_batch_detail.html +117 -0
- golden_erp/templates/erp/unify_batch_list.html +57 -0
- golden_erp/templates/erp/unify_batch_upload.html +26 -0
- golden_erp/templates/erp/user_create.html +69 -0
- golden_erp/templates/erp/user_list.html +97 -0
- golden_erp/templates/erp/user_roles.html +43 -0
- golden_erp/templates/errors/base.html +59 -0
- golden_erp/templates/includes/footer.html +11 -0
- golden_erp/templates/includes/navigation.html +92 -0
- golden_erp/templates/includes/scripts.html +81 -0
- golden_erp/templates/includes/scroll_regions.html +44 -0
- golden_erp/templates/includes/sidebar.html +106 -0
- golden_erp/templates/includes/submit_guard.html +61 -0
- golden_erp/templates/registration/auth_base.html +44 -0
- golden_erp/templates/registration/login.html +71 -0
- golden_erp/templates/registration/password_reset.html +24 -0
- golden_erp/templates/registration/password_reset_complete.html +10 -0
- golden_erp/templates/registration/password_reset_confirm.html +49 -0
- golden_erp/templates/registration/password_reset_done.html +11 -0
- golden_erp/templates/registration/password_reset_email.html +9 -0
- golden_erp/templates/registration/password_reset_subject.txt +1 -0
- golden_erp/urls.py +103 -0
- inventory/__init__.py +0 -0
- inventory/admin.py +33 -0
- inventory/apps.py +5 -0
- inventory/erp_urls.py +15 -0
- inventory/erp_views.py +107 -0
- inventory/forms.py +31 -0
- inventory/migrations/0001_initial.py +156 -0
- inventory/migrations/0002_initial.py +39 -0
- inventory/migrations/0003_warehouse_company.py +26 -0
- inventory/migrations/__init__.py +0 -0
- inventory/models.py +198 -0
- inventory/serializers.py +19 -0
- inventory/tests.py +158 -0
- inventory/urls.py +9 -0
- inventory/views.py +43 -0
- llmhub/__init__.py +15 -0
- llmhub/admin.py +48 -0
- llmhub/apps.py +15 -0
- llmhub/audit.py +97 -0
- llmhub/checks.py +40 -0
- llmhub/client.py +680 -0
- llmhub/conf.py +310 -0
- llmhub/crypto.py +106 -0
- llmhub/drift.py +101 -0
- llmhub/erp_forms.py +125 -0
- llmhub/erp_urls.py +14 -0
- llmhub/erp_views.py +467 -0
- llmhub/management/__init__.py +0 -0
- llmhub/management/commands/__init__.py +0 -0
- llmhub/management/commands/llmhub_check.py +100 -0
- llmhub/middleware.py +40 -0
- llmhub/migrations/0001_initial.py +237 -0
- llmhub/migrations/__init__.py +0 -0
- llmhub/models.py +288 -0
- llmhub/purposes.py +141 -0
- llmhub/signals.py +81 -0
- llmhub/static/llmhub/settings.js +131 -0
- llmhub/templates/llmhub/settings.html +392 -0
- llmhub/tests/__init__.py +0 -0
- llmhub/tests/helpers.py +138 -0
- llmhub/tests/test_audit.py +175 -0
- llmhub/tests/test_chat_registry.py +103 -0
- llmhub/tests/test_client.py +474 -0
- llmhub/tests/test_commands.py +222 -0
- llmhub/tests/test_conf.py +248 -0
- llmhub/tests/test_purposes.py +66 -0
- llmhub/tests/test_security_guards.py +102 -0
- llmhub/tests/test_views.py +445 -0
- orders/__init__.py +0 -0
- orders/admin.py +177 -0
- orders/apps.py +8 -0
- orders/convert.py +283 -0
- orders/duplicate.py +178 -0
- orders/erp_urls.py +41 -0
- orders/erp_views.py +1493 -0
- orders/forms.py +451 -0
- orders/line_locks.py +91 -0
- orders/management/__init__.py +0 -0
- orders/management/commands/__init__.py +0 -0
- orders/management/commands/import_bc_invoice.py +237 -0
- orders/migrations/0001_initial.py +920 -0
- orders/migrations/0002_initial.py +91 -0
- orders/migrations/0003_initial.py +440 -0
- orders/migrations/0004_order_guest_email_alter_order_customer.py +35 -0
- orders/migrations/0005_order_uniq_order_stripe_pi.py +21 -0
- orders/migrations/0006_quote_legacy_pipeline_fields.py +63 -0
- orders/migrations/0007_quote_order_engagement.py +50 -0
- orders/migrations/0008_document_contact.py +92 -0
- orders/migrations/0009_us_english_choice_labels.py +103 -0
- orders/migrations/__init__.py +0 -0
- orders/models.py +1373 -0
- orders/people.py +144 -0
- orders/posting.py +80 -0
- orders/revisions.py +62 -0
- orders/serializers.py +299 -0
- orders/shipping_service.py +406 -0
- orders/signals.py +56 -0
- orders/test_m3_mass_assignment.py +151 -0
- orders/test_m3_xss.py +99 -0
- orders/test_stripe_pi_unique.py +47 -0
- orders/tests/__init__.py +0 -0
- orders/tests/test_company_scoping.py +193 -0
- orders/tests/test_convert.py +113 -0
- orders/tests/test_default_company.py +48 -0
- orders/tests/test_document_people.py +246 -0
- orders/tests/test_double_submit.py +172 -0
- orders/tests/test_duplicate.py +147 -0
- orders/tests/test_full_chain_totals.py +191 -0
- orders/tests/test_line_item_blank_row.py +343 -0
- orders/tests/test_m2d_token_isolation.py +101 -0
- orders/tests/test_order_create_requires_line.py +168 -0
- orders/tests/test_order_idempotency.py +110 -0
- orders/tests/test_quote_document_views.py +230 -0
- orders/tests/test_quote_list_engagement.py +39 -0
- orders/tests/test_quote_revisions.py +127 -0
- orders/tests/test_quote_to_order.py +349 -0
- orders/tests/test_recalculate.py +549 -0
- orders/tests/test_sales_invoice_by_token.py +107 -0
- orders/tests/test_sales_invoice_model.py +75 -0
- orders/tests/test_sales_invoice_reconcile.py +196 -0
- orders/tests/test_serializer_enforcement.py +241 -0
- orders/tests/test_shipment_group_moves.py +670 -0
- orders/tests/test_sibling_quotes.py +86 -0
- orders/tests/test_status_transitions.py +202 -0
- orders/tests/test_stripe_pi_race.py +140 -0
- orders/tests/test_suborder_status_guard.py +89 -0
- orders/urls.py +37 -0
- orders/views.py +666 -0
- parties/__init__.py +5 -0
- parties/_registry.py +52 -0
- parties/admin.py +98 -0
- parties/apps.py +52 -0
- parties/backfill.py +861 -0
- parties/checks.py +61 -0
- parties/classification_registry.py +186 -0
- parties/consent.py +228 -0
- parties/constants.py +16 -0
- parties/dedupe.py +334 -0
- parties/dedupe_legacy.py +275 -0
- parties/dedupe_parties.py +158 -0
- parties/display.py +39 -0
- parties/envelope.py +291 -0
- parties/erasure.py +1460 -0
- parties/erasure_api.py +66 -0
- parties/erasure_urls.py +9 -0
- parties/erp_urls.py +38 -0
- parties/erp_views.py +1109 -0
- parties/forms.py +638 -0
- parties/management/__init__.py +0 -0
- parties/management/commands/__init__.py +0 -0
- parties/management/commands/backfill_parties.py +69 -0
- parties/management/commands/check_erasure.py +55 -0
- parties/management/commands/erase_party.py +57 -0
- parties/management/commands/party_dedupe_propose.py +44 -0
- parties/management/commands/party_dedupe_report.py +278 -0
- parties/management/commands/reconcile_parties.py +67 -0
- parties/management/commands/seed_parties.py +212 -0
- parties/match.py +55 -0
- parties/merge.py +807 -0
- parties/merge_queue.py +279 -0
- parties/merge_urls.py +9 -0
- parties/merge_views.py +507 -0
- parties/migrations/0001_initial.py +797 -0
- parties/migrations/0002_backfill.py +54 -0
- parties/migrations/0003_partymergelog.py +98 -0
- parties/migrations/0004_promoted_columns.py +61 -0
- parties/migrations/0005_stamp_owner_team.py +27 -0
- parties/migrations/0006_party_metadata_gin.py +21 -0
- parties/migrations/0007_export_pii_permission.py +25 -0
- parties/migrations/0008_us_english_choice_labels.py +21 -0
- parties/migrations/__init__.py +0 -0
- parties/mirror.py +178 -0
- parties/models.py +807 -0
- parties/normalize.py +253 -0
- parties/ownership.py +113 -0
- parties/portal.py +411 -0
- parties/receivers.py +19 -0
- parties/reconcile.py +310 -0
- parties/relationship_registry.py +200 -0
- parties/role_registry.py +173 -0
- parties/serializers.py +696 -0
- parties/sync.py +678 -0
- parties/tests/__init__.py +0 -0
- parties/tests/factories.py +51 -0
- parties/tests/test_api.py +589 -0
- parties/tests/test_backfill.py +549 -0
- parties/tests/test_classification.py +208 -0
- parties/tests/test_consent_writebacks.py +94 -0
- parties/tests/test_dedupe.py +350 -0
- parties/tests/test_envelope.py +139 -0
- parties/tests/test_erasure.py +967 -0
- parties/tests/test_erasure_sweep.py +367 -0
- parties/tests/test_erasure_sweep_adapters.py +486 -0
- parties/tests/test_erp_views.py +485 -0
- parties/tests/test_merge.py +544 -0
- parties/tests/test_merge_views.py +208 -0
- parties/tests/test_metadata_merge.py +126 -0
- parties/tests/test_models.py +558 -0
- parties/tests/test_normalize.py +285 -0
- parties/tests/test_reconcile.py +164 -0
- parties/tests/test_registries.py +242 -0
- parties/tests/test_relationship_picker.py +157 -0
- parties/tests/test_signals.py +172 -0
- parties/tests/test_sync.py +317 -0
- parties/urls.py +26 -0
- parties/views.py +389 -0
- parties/widgets.py +75 -0
- payments/__init__.py +0 -0
- payments/admin.py +64 -0
- payments/apps.py +5 -0
- payments/erp_urls.py +23 -0
- payments/erp_views.py +355 -0
- payments/forms.py +86 -0
- payments/gateways/__init__.py +17 -0
- payments/gateways/base.py +111 -0
- payments/gateways/manual.py +55 -0
- payments/gateways/registry.py +43 -0
- payments/gateways/stripe_gateway.py +238 -0
- payments/gateways/usdc.py +100 -0
- payments/migrations/0001_initial.py +240 -0
- payments/migrations/0002_payment_idempotency_key.py +20 -0
- payments/migrations/0003_us_english_choice_labels.py +31 -0
- payments/migrations/__init__.py +0 -0
- payments/models.py +238 -0
- payments/posting.py +83 -0
- payments/serializers.py +19 -0
- payments/services.py +355 -0
- payments/tests/__init__.py +0 -0
- payments/tests/test_closed_period.py +182 -0
- payments/tests/test_gateways.py +97 -0
- payments/tests/test_invoice_fk.py +50 -0
- payments/tests/test_invoice_links.py +68 -0
- payments/tests/test_payment_idempotency.py +65 -0
- payments/tests/test_record_payment.py +243 -0
- payments/tests/test_refund.py +210 -0
- payments/tests/test_trackc.py +204 -0
- payments/urls.py +8 -0
- payments/views.py +65 -0
- portal/__init__.py +0 -0
- portal/admin.py +2 -0
- portal/apps.py +6 -0
- portal/migrations/__init__.py +0 -0
- portal/models.py +2 -0
- portal/serializers.py +385 -0
- portal/test_party.py +312 -0
- portal/tests.py +168 -0
- portal/urls.py +36 -0
- portal/views.py +301 -0
- pricing/__init__.py +1 -0
- pricing/admin.py +38 -0
- pricing/apps.py +5 -0
- pricing/erp_urls.py +15 -0
- pricing/erp_views.py +95 -0
- pricing/forms.py +41 -0
- pricing/migrations/0001_initial.py +156 -0
- pricing/migrations/0002_initial.py +30 -0
- pricing/migrations/__init__.py +0 -0
- pricing/models/__init__.py +13 -0
- pricing/models/price_book.py +89 -0
- pricing/serializers.py +28 -0
- pricing/urls.py +14 -0
- pricing/views.py +47 -0
- products/__init__.py +0 -0
- products/admin.py +172 -0
- products/apps.py +12 -0
- products/data/cw_energy_solar_panel_specs.json +548 -0
- products/data/seo_quality_defaults.json +25 -0
- products/erp_urls.py +37 -0
- products/erp_views.py +670 -0
- products/forms.py +133 -0
- products/management/__init__.py +0 -0
- products/management/commands/__init__.py +0 -0
- products/management/commands/audit_mpn_coverage.py +185 -0
- products/management/commands/backfill_enphase_iq8.py +337 -0
- products/management/commands/create_grid_interactive_inverters.py +84 -0
- products/management/commands/create_kara_firma_products.py +300 -0
- products/management/commands/export_prices.py +109 -0
- products/management/commands/fix_forge_image_ids.py +55 -0
- products/management/commands/import_products.py +246 -0
- products/management/commands/populate_suresine_options.py +191 -0
- products/management/commands/restructure_dc_appliances.py +419 -0
- products/management/commands/set_structured_specs.py +205 -0
- products/management/commands/update_prices.py +160 -0
- products/migrations/0001_initial.py +735 -0
- products/migrations/0002_initial.py +73 -0
- products/migrations/0003_category_body_copy.py +22 -0
- products/migrations/0004_product_safety_warnings.py +22 -0
- products/migrations/0005_variant_seo.py +30 -0
- products/migrations/__init__.py +0 -0
- products/models.py +615 -0
- products/seo_checks.py +121 -0
- products/seo_quality.py +330 -0
- products/serializers.py +488 -0
- products/templatetags/__init__.py +0 -0
- products/templatetags/bunny_images.py +58 -0
- products/test_category_body_copy.py +186 -0
- products/test_m3_xss.py +125 -0
- products/test_product_profile_slots.py +106 -0
- products/test_product_safety_warnings.py +128 -0
- products/test_seo_quality.py +203 -0
- products/test_variant_seo.py +69 -0
- products/tests.py +649 -0
- products/tests_storefront_catalog.py +195 -0
- products/tests_storefront_taxonomy.py +319 -0
- products/urls.py +24 -0
- products/views.py +304 -0
- purchasing/__init__.py +0 -0
- purchasing/admin.py +57 -0
- purchasing/apps.py +8 -0
- purchasing/duplicate.py +86 -0
- purchasing/erp_urls.py +25 -0
- purchasing/erp_views.py +600 -0
- purchasing/forms.py +233 -0
- purchasing/migrations/0001_initial.py +774 -0
- purchasing/migrations/0002_us_english_choice_labels.py +34 -0
- purchasing/migrations/__init__.py +0 -0
- purchasing/models.py +581 -0
- purchasing/posting.py +90 -0
- purchasing/serializers.py +84 -0
- purchasing/services.py +193 -0
- purchasing/signals.py +33 -0
- purchasing/tests/__init__.py +0 -0
- purchasing/tests/test_company_scoping.py +163 -0
- purchasing/tests/test_duplicate.py +86 -0
- purchasing/tests/test_landed_cost.py +165 -0
- purchasing/tests/test_po_editor.py +219 -0
- purchasing/tests/test_po_editor_transitions.py +123 -0
- purchasing/tests/test_po_transitions.py +103 -0
- purchasing/tests/test_recalculate.py +223 -0
- purchasing/tests/test_receiving.py +253 -0
- purchasing/tests/test_serializer_enforcement.py +129 -0
- purchasing/urls.py +16 -0
- purchasing/views.py +157 -0
- reporting/__init__.py +0 -0
- reporting/admin.py +11 -0
- reporting/api.py +439 -0
- reporting/api_urls.py +19 -0
- reporting/apps.py +5 -0
- reporting/crm_reports.py +800 -0
- reporting/erp_urls.py +11 -0
- reporting/erp_views.py +711 -0
- reporting/migrations/0001_initial.py +38 -0
- reporting/migrations/__init__.py +0 -0
- reporting/models.py +19 -0
- reporting/serializers.py +10 -0
- reporting/test_crm_report_api.py +520 -0
- reporting/test_crm_reports.py +610 -0
- reporting/tests.py +317 -0
- reporting/urls.py +8 -0
- reporting/views.py +17 -0
- unify/__init__.py +0 -0
- unify/admin.py +39 -0
- unify/appliers.py +153 -0
- unify/apply.py +226 -0
- unify/apps.py +5 -0
- unify/erp_urls.py +17 -0
- unify/erp_views.py +298 -0
- unify/ingest.py +161 -0
- unify/management/__init__.py +0 -0
- unify/management/commands/__init__.py +0 -0
- unify/management/commands/unify_apply.py +79 -0
- unify/migrations/0001_initial.py +279 -0
- unify/migrations/0002_dedupe_source_kind.py +35 -0
- unify/migrations/0003_crm_source_kind.py +27 -0
- unify/migrations/0004_us_english_choice_labels.py +27 -0
- unify/migrations/__init__.py +0 -0
- unify/models.py +239 -0
- unify/propose.py +409 -0
- unify/tests.py +192 -0
- unify/tests_appliers.py +70 -0
- unify/tests_propose.py +231 -0
- unify/tests_views.py +152 -0
- unify/views.py +2 -0
- webhooks/__init__.py +1 -0
- webhooks/admin.py +32 -0
- webhooks/apps.py +14 -0
- webhooks/erp_urls.py +11 -0
- webhooks/erp_views.py +134 -0
- webhooks/events.py +401 -0
- webhooks/migrations/0001_initial.py +113 -0
- webhooks/migrations/0002_webhookdeliverylog_attempts_and_more.py +31 -0
- webhooks/migrations/0003_webhookdeliverylog_delivery_id.py +18 -0
- webhooks/migrations/__init__.py +0 -0
- webhooks/models.py +104 -0
- webhooks/outbox.py +330 -0
- webhooks/serializers.py +53 -0
- webhooks/services.py +244 -0
- webhooks/tests/__init__.py +1 -0
- webhooks/tests/test_api.py +61 -0
- webhooks/tests/test_company_scoping.py +143 -0
- webhooks/tests/test_crm_events.py +133 -0
- webhooks/tests/test_erp_screens.py +149 -0
- webhooks/tests/test_outbox_delivery.py +283 -0
- webhooks/tests/test_payload_versions.py +317 -0
- webhooks/tests/test_services.py +167 -0
- webhooks/tests/test_trackc.py +160 -0
- webhooks/urls.py +11 -0
- webhooks/views.py +60 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
4
|
+
* This code may only be used under the BSD style license found at
|
|
5
|
+
* http://polymer.github.io/LICENSE.txt
|
|
6
|
+
* The complete set of authors may be found at
|
|
7
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
8
|
+
* The complete set of contributors may be found at
|
|
9
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
10
|
+
* Code distributed by Google as part of the polymer project is also
|
|
11
|
+
* subject to an additional IP rights grant found at
|
|
12
|
+
* http://polymer.github.io/PATENTS.txt
|
|
13
|
+
*/const t="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,e=(t,e,s=null)=>{for(;e!==s;){const s=e.nextSibling;t.removeChild(e),e=s}},s=`{{lit-${String(Math.random()).slice(2)}}}`,i=`\x3c!--${s}--\x3e`,n=new RegExp(`${s}|${i}`);class r{constructor(t,e){this.parts=[],this.element=e;const i=[],r=[],a=document.createTreeWalker(e.content,133,null,!1);let d=0,c=-1,u=0;const{strings:p,values:{length:_}}=t;for(;u<_;){const t=a.nextNode();if(null!==t){if(c++,1===t.nodeType){if(t.hasAttributes()){const e=t.attributes,{length:s}=e;let i=0;for(let t=0;t<s;t++)o(e[t].name,"$lit$")&&i++;for(;i-- >0;){const e=p[u],s=l.exec(e)[2],i=s.toLowerCase()+"$lit$",r=t.getAttribute(i);t.removeAttribute(i);const o=r.split(n);this.parts.push({type:"attribute",index:c,name:s,strings:o}),u+=o.length-1}}"TEMPLATE"===t.tagName&&(r.push(t),a.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(s)>=0){const s=t.parentNode,r=e.split(n),a=r.length-1;for(let e=0;e<a;e++){let i,n=r[e];if(""===n)i=h();else{const t=l.exec(n);null!==t&&o(t[2],"$lit$")&&(n=n.slice(0,t.index)+t[1]+t[2].slice(0,-"$lit$".length)+t[3]),i=document.createTextNode(n)}s.insertBefore(i,t),this.parts.push({type:"node",index:++c})}""===r[a]?(s.insertBefore(h(),t),i.push(t)):t.data=r[a],u+=a}}else if(8===t.nodeType)if(t.data===s){const e=t.parentNode;null!==t.previousSibling&&c!==d||(c++,e.insertBefore(h(),t)),d=c,this.parts.push({type:"node",index:c}),null===t.nextSibling?t.data="":(i.push(t),c--),u++}else{let e=-1;for(;-1!==(e=t.data.indexOf(s,e+1));)this.parts.push({type:"node",index:-1}),u++}}else a.currentNode=r.pop()}for(const t of i)t.parentNode.removeChild(t)}}const o=(t,e)=>{const s=t.length-e.length;return s>=0&&t.slice(s)===e},a=t=>-1!==t.index,h=()=>document.createComment(""),l=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function d(t,e){const{element:{content:s},parts:i}=t,n=document.createTreeWalker(s,133,null,!1);let r=u(i),o=i[r],a=-1,h=0;const l=[];let d=null;for(;n.nextNode();){a++;const t=n.currentNode;for(t.previousSibling===d&&(d=null),e.has(t)&&(l.push(t),null===d&&(d=t)),null!==d&&h++;void 0!==o&&o.index===a;)o.index=null!==d?-1:o.index-h,r=u(i,r),o=i[r]}l.forEach(t=>t.parentNode.removeChild(t))}const c=t=>{let e=11===t.nodeType?0:1;const s=document.createTreeWalker(t,133,null,!1);for(;s.nextNode();)e++;return e},u=(t,e=-1)=>{for(let s=e+1;s<t.length;s++){const e=t[s];if(a(e))return s}return-1};
|
|
14
|
+
/**
|
|
15
|
+
* @license
|
|
16
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
17
|
+
* This code may only be used under the BSD style license found at
|
|
18
|
+
* http://polymer.github.io/LICENSE.txt
|
|
19
|
+
* The complete set of authors may be found at
|
|
20
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
21
|
+
* The complete set of contributors may be found at
|
|
22
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
23
|
+
* Code distributed by Google as part of the polymer project is also
|
|
24
|
+
* subject to an additional IP rights grant found at
|
|
25
|
+
* http://polymer.github.io/PATENTS.txt
|
|
26
|
+
*/
|
|
27
|
+
const p=new WeakMap,_=t=>"function"==typeof t&&p.has(t),g={},mg={};
|
|
28
|
+
/**
|
|
29
|
+
* @license
|
|
30
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
31
|
+
* This code may only be used under the BSD style license found at
|
|
32
|
+
* http://polymer.github.io/LICENSE.txt
|
|
33
|
+
* The complete set of authors may be found at
|
|
34
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
35
|
+
* The complete set of contributors may be found at
|
|
36
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
37
|
+
* Code distributed by Google as part of the polymer project is also
|
|
38
|
+
* subject to an additional IP rights grant found at
|
|
39
|
+
* http://polymer.github.io/PATENTS.txt
|
|
40
|
+
*/
|
|
41
|
+
class y{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this.options=s}update(t){let e=0;for(const s of this.__parts)void 0!==s&&s.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const e=t?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),s=[],i=this.template.parts,n=document.createTreeWalker(e,133,null,!1);let r,o=0,h=0,l=n.nextNode();for(;o<i.length;)if(r=i[o],a(r)){for(;h<r.index;)h++,"TEMPLATE"===l.nodeName&&(s.push(l),n.currentNode=l.content),null===(l=n.nextNode())&&(n.currentNode=s.pop(),l=n.nextNode());if("node"===r.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(l.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(l,r.name,r.strings,this.options));o++}else this.__parts.push(void 0),o++;return t&&(document.adoptNode(e),customElements.upgrade(e)),e}}
|
|
42
|
+
/**
|
|
43
|
+
* @license
|
|
44
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
45
|
+
* This code may only be used under the BSD style license found at
|
|
46
|
+
* http://polymer.github.io/LICENSE.txt
|
|
47
|
+
* The complete set of authors may be found at
|
|
48
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
49
|
+
* The complete set of contributors may be found at
|
|
50
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
51
|
+
* Code distributed by Google as part of the polymer project is also
|
|
52
|
+
* subject to an additional IP rights grant found at
|
|
53
|
+
* http://polymer.github.io/PATENTS.txt
|
|
54
|
+
*/const f=` ${s} `;class v{constructor(t,e,s,i){this.strings=t,this.values=e,this.type=s,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",n=!1;for(let r=0;r<t;r++){const t=this.strings[r],o=t.lastIndexOf("\x3c!--");n=(o>-1||n)&&-1===t.indexOf("--\x3e",o+1);const a=l.exec(t);e+=null===a?t+(n?f:i):t.substr(0,a.index)+a[1]+a[2]+"$lit$"+a[3]+s}return e+=this.strings[t],e}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t}}class w extends v{getHTML(){return`<svg>${super.getHTML()}</svg>`}getTemplateElement(){const t=super.getTemplateElement(),e=t.content,s=e.firstChild;return e.removeChild(s),((t,e,s=null,i=null)=>{for(;e!==s;){const s=e.nextSibling;t.insertBefore(e,i),e=s}})(e,s.firstChild),t}}
|
|
55
|
+
/**
|
|
56
|
+
* @license
|
|
57
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
58
|
+
* This code may only be used under the BSD style license found at
|
|
59
|
+
* http://polymer.github.io/LICENSE.txt
|
|
60
|
+
* The complete set of authors may be found at
|
|
61
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
62
|
+
* The complete set of contributors may be found at
|
|
63
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
64
|
+
* Code distributed by Google as part of the polymer project is also
|
|
65
|
+
* subject to an additional IP rights grant found at
|
|
66
|
+
* http://polymer.github.io/PATENTS.txt
|
|
67
|
+
*/const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class x{constructor(t,e,s){this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(let t=0;t<s.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new P(this)}_getValue(){const t=this.strings,e=t.length-1;let s="";for(let i=0;i<e;i++){s+=t[i];const e=this.parts[i];if(void 0!==e){const t=e.value;if(S(t)||!b(t))s+="string"==typeof t?t:String(t);else for(const e of t)s+="string"==typeof e?e:String(e)}}return s+=t[e],s}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class P{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===g||S(t)&&t===this.value||(this.value=t,_(t)||(this.committer.dirty=!0))}commit(){for(;_(this.value);){const t=this.value;this.value=g,t(this)}this.value!==g&&this.committer.commit()}}class N{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(h()),this.endNode=t.appendChild(h())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=h()),t.__insert(this.endNode=h())}insertAfterPart(t){t.__insert(this.startNode=h()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){if(null===this.startNode.parentNode)return;for(;_(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=g,t(this)}const t=this.__pendingValue;t!==g&&(S(t)?t!==this.value&&this.__commitText(t):t instanceof v?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):b(t)?this.__commitIterable(t):t===m?(this.value=m,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const e=this.startNode.nextSibling,s="string"==typeof(t=null==t?"":t)?t:String(t);e===this.endNode.previousSibling&&3===e.nodeType?e.data=s:this.__commitNode(document.createTextNode(s)),this.value=t}__commitTemplateResult(t){const e=this.options.templateFactory(t);if(this.value instanceof y&&this.value.template===e)this.value.update(t.values);else{const s=new y(e,t.processor,this.options),i=s._clone();s.update(t.values),this.__commitNode(i),this.value=s}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const e=this.value;let s,i=0;for(const n of t)s=e[i],void 0===s&&(s=new N(this.options),e.push(s),0===i?s.appendIntoPart(this):s.insertAfterPart(e[i-1])),s.setValue(n),s.commit(),i++;i<e.length&&(e.length=i,this.clear(s&&s.endNode))}clear(t=this.startNode){e(this.startNode.parentNode,t.nextSibling,this.endNode)}}class C{constructor(t,e,s){if(this.value=void 0,this.__pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}setValue(t){this.__pendingValue=t}commit(){for(;_(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=g,t(this)}if(this.__pendingValue===g)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=g}}class k extends x{constructor(t,e,s){super(t,e,s),this.single=2===s.length&&""===s[0]&&""===s[1]}_createPart(){return new A(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class A extends P{}let E=!1;(()=>{try{const t={get capture(){return E=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class ${constructor(t,e,s){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;_(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=g,t(this)}if(this.__pendingValue===g)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=T(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=g}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const T=t=>t&&(E?{capture:t.capture,passive:t.passive,once:t.once}:t.capture)
|
|
68
|
+
/**
|
|
69
|
+
* @license
|
|
70
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
71
|
+
* This code may only be used under the BSD style license found at
|
|
72
|
+
* http://polymer.github.io/LICENSE.txt
|
|
73
|
+
* The complete set of authors may be found at
|
|
74
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
75
|
+
* The complete set of contributors may be found at
|
|
76
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
77
|
+
* Code distributed by Google as part of the polymer project is also
|
|
78
|
+
* subject to an additional IP rights grant found at
|
|
79
|
+
* http://polymer.github.io/PATENTS.txt
|
|
80
|
+
*/;function M(t){let e=V.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},V.set(t.type,e));let i=e.stringsArray.get(t.strings);if(void 0!==i)return i;const n=t.strings.join(s);return i=e.keyString.get(n),void 0===i&&(i=new r(t,t.getTemplateElement()),e.keyString.set(n,i)),e.stringsArray.set(t.strings,i),i}const V=new Map,R=new WeakMap;
|
|
81
|
+
/**
|
|
82
|
+
* @license
|
|
83
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
84
|
+
* This code may only be used under the BSD style license found at
|
|
85
|
+
* http://polymer.github.io/LICENSE.txt
|
|
86
|
+
* The complete set of authors may be found at
|
|
87
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
88
|
+
* The complete set of contributors may be found at
|
|
89
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
90
|
+
* Code distributed by Google as part of the polymer project is also
|
|
91
|
+
* subject to an additional IP rights grant found at
|
|
92
|
+
* http://polymer.github.io/PATENTS.txt
|
|
93
|
+
*/const L=new
|
|
94
|
+
/**
|
|
95
|
+
* @license
|
|
96
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
97
|
+
* This code may only be used under the BSD style license found at
|
|
98
|
+
* http://polymer.github.io/LICENSE.txt
|
|
99
|
+
* The complete set of authors may be found at
|
|
100
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
101
|
+
* The complete set of contributors may be found at
|
|
102
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
103
|
+
* Code distributed by Google as part of the polymer project is also
|
|
104
|
+
* subject to an additional IP rights grant found at
|
|
105
|
+
* http://polymer.github.io/PATENTS.txt
|
|
106
|
+
*/
|
|
107
|
+
class{handleAttributeExpressions(t,e,s,i){const n=e[0];if("."===n){return new k(t,e.slice(1),s).parts}if("@"===n)return[new $(t,e.slice(1),i.eventContext)];if("?"===n)return[new C(t,e.slice(1),s)];return new x(t,e,s).parts}handleTextExpression(t){return new N(t)}};
|
|
108
|
+
/**
|
|
109
|
+
* @license
|
|
110
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
111
|
+
* This code may only be used under the BSD style license found at
|
|
112
|
+
* http://polymer.github.io/LICENSE.txt
|
|
113
|
+
* The complete set of authors may be found at
|
|
114
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
115
|
+
* The complete set of contributors may be found at
|
|
116
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
117
|
+
* Code distributed by Google as part of the polymer project is also
|
|
118
|
+
* subject to an additional IP rights grant found at
|
|
119
|
+
* http://polymer.github.io/PATENTS.txt
|
|
120
|
+
*/"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.2.1");const U=(t,...e)=>new v(t,e,"html",L),O=(t,...e)=>new w(t,e,"svg",L)
|
|
121
|
+
/**
|
|
122
|
+
* @license
|
|
123
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
124
|
+
* This code may only be used under the BSD style license found at
|
|
125
|
+
* http://polymer.github.io/LICENSE.txt
|
|
126
|
+
* The complete set of authors may be found at
|
|
127
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
128
|
+
* The complete set of contributors may be found at
|
|
129
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
130
|
+
* Code distributed by Google as part of the polymer project is also
|
|
131
|
+
* subject to an additional IP rights grant found at
|
|
132
|
+
* http://polymer.github.io/PATENTS.txt
|
|
133
|
+
*/,q=(t,e)=>`${t}--${e}`;let H=!0;void 0===window.ShadyCSS?H=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),H=!1);const I=t=>e=>{const i=q(e.type,t);let n=V.get(i);void 0===n&&(n={stringsArray:new WeakMap,keyString:new Map},V.set(i,n));let o=n.stringsArray.get(e.strings);if(void 0!==o)return o;const a=e.strings.join(s);if(o=n.keyString.get(a),void 0===o){const s=e.getTemplateElement();H&&window.ShadyCSS.prepareTemplateDom(s,t),o=new r(e,s),n.keyString.set(a,o)}return n.stringsArray.set(e.strings,o),o},z=["html","svg"],B=new Set,j=(t,e,s)=>{B.add(t);const i=s?s.element:document.createElement("template"),n=e.querySelectorAll("style"),{length:r}=n;if(0===r)return void window.ShadyCSS.prepareTemplateStyles(i,t);const o=document.createElement("style");for(let t=0;t<r;t++){const e=n[t];e.parentNode.removeChild(e),o.textContent+=e.textContent}(t=>{z.forEach(e=>{const s=V.get(q(e,t));void 0!==s&&s.keyString.forEach(t=>{const{element:{content:e}}=t,s=new Set;Array.from(e.querySelectorAll("style")).forEach(t=>{s.add(t)}),d(t,s)})})})(t);const a=i.content;s?function(t,e,s=null){const{element:{content:i},parts:n}=t;if(null==s)return void i.appendChild(e);const r=document.createTreeWalker(i,133,null,!1);let o=u(n),a=0,h=-1;for(;r.nextNode();){h++;for(r.currentNode===s&&(a=c(e),s.parentNode.insertBefore(e,s));-1!==o&&n[o].index===h;){if(a>0){for(;-1!==o;)n[o].index+=a,o=u(n,o);return}o=u(n,o)}}}(s,o,a.firstChild):a.insertBefore(o,a.firstChild),window.ShadyCSS.prepareTemplateStyles(i,t);const h=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==h)e.insertBefore(h.cloneNode(!0),e.firstChild);else if(s){a.insertBefore(o,a.firstChild);const t=new Set;t.add(o),d(s,t)}};window.JSCompiler_renameProperty=(t,e)=>t;const F={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},W=(t,e)=>e!==t&&(e==e||t==t),D={attribute:!0,type:String,converter:F,reflect:!1,hasChanged:W};class J extends HTMLElement{constructor(){super(),this._updateState=0,this._instanceProperties=void 0,this._updatePromise=new Promise(t=>this._enableUpdatingResolver=t),this._changedProperties=new Map,this._reflectingProperties=void 0,this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach((e,s)=>{const i=this._attributeNameForProperty(s,e);void 0!==i&&(this._attributeToPropertyMap.set(i,s),t.push(i))}),t}static _ensureClassProperties(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach((t,e)=>this._classProperties.set(e,t))}}static createProperty(t,e=D){if(this._ensureClassProperties(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const s="symbol"==typeof t?Symbol():"__"+t,i=this.getPropertyDescriptor(t,s,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}static getPropertyDescriptor(t,e,s){return{get(){return this[e]},set(s){const i=this[t];this[e]=s,this._requestUpdate(t,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||D}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const s of e)this.createProperty(s,t[s])}}static _attributeNameForProperty(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}static _valueHasChanged(t,e,s=W){return s(t,e)}static _propertyValueFromAttribute(t,e){const s=e.type,i=e.converter||F,n="function"==typeof i?i:i.fromAttribute;return n?n(t,s):t}static _propertyValueToAttribute(t,e){if(void 0===e.reflect)return;const s=e.type,i=e.converter;return(i&&i.toAttribute||F.toAttribute)(t,s)}initialize(){this._saveInstanceProperties(),this._requestUpdate()}_saveInstanceProperties(){this.constructor._classProperties.forEach((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this._instanceProperties||(this._instanceProperties=new Map),this._instanceProperties.set(e,t)}})}_applyInstanceProperties(){this._instanceProperties.forEach((t,e)=>this[e]=t),this._instanceProperties=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this._enableUpdatingResolver&&(this._enableUpdatingResolver(),this._enableUpdatingResolver=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,s){e!==s&&this._attributeToProperty(t,s)}_propertyToAttribute(t,e,s=D){const i=this.constructor,n=i._attributeNameForProperty(t,s);if(void 0!==n){const t=i._propertyValueToAttribute(e,s);if(void 0===t)return;this._updateState=8|this._updateState,null==t?this.removeAttribute(n):this.setAttribute(n,t),this._updateState=-9&this._updateState}}_attributeToProperty(t,e){if(8&this._updateState)return;const s=this.constructor,i=s._attributeToPropertyMap.get(t);if(void 0!==i){const t=s.getPropertyOptions(i);this._updateState=16|this._updateState,this[i]=s._propertyValueFromAttribute(e,t),this._updateState=-17&this._updateState}}_requestUpdate(t,e){let s=!0;if(void 0!==t){const i=this.constructor,n=i.getPropertyOptions(t);i._valueHasChanged(this[t],e,n.hasChanged)?(this._changedProperties.has(t)||this._changedProperties.set(t,e),!0!==n.reflect||16&this._updateState||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(t,n))):s=!1}!this._hasRequestedUpdate&&s&&(this._updatePromise=this._enqueueUpdate())}requestUpdate(t,e){return this._requestUpdate(t,e),this.updateComplete}async _enqueueUpdate(){this._updateState=4|this._updateState;try{await this._updatePromise}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this._hasRequestedUpdate}get _hasRequestedUpdate(){return 4&this._updateState}get hasUpdated(){return 1&this._updateState}performUpdate(){this._instanceProperties&&this._applyInstanceProperties();let t=!1;const e=this._changedProperties;try{t=this.shouldUpdate(e),t?this.update(e):this._markUpdated()}catch(e){throw t=!1,this._markUpdated(),e}t&&(1&this._updateState||(this._updateState=1|this._updateState,this.firstUpdated(e)),this.updated(e))}_markUpdated(){this._changedProperties=new Map,this._updateState=-5&this._updateState}get updateComplete(){return this._getUpdateComplete()}_getUpdateComplete(){return this._updatePromise}shouldUpdate(t){return!0}update(t){void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach((t,e)=>this._propertyToAttribute(e,this[e],t)),this._reflectingProperties=void 0),this._markUpdated()}updated(t){}firstUpdated(t){}}J.finalized=!0;
|
|
134
|
+
/**
|
|
135
|
+
@license
|
|
136
|
+
Copyright (c) 2019 The Polymer Project Authors. All rights reserved.
|
|
137
|
+
This code may only be used under the BSD style license found at
|
|
138
|
+
http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
|
|
139
|
+
http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
|
|
140
|
+
found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
|
|
141
|
+
part of the polymer project is also subject to an additional IP rights grant
|
|
142
|
+
found at http://polymer.github.io/PATENTS.txt
|
|
143
|
+
*/
|
|
144
|
+
const Z="adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,X=Symbol();class Y{constructor(t,e){if(e!==X)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this._styleSheet&&(Z?(this._styleSheet=new CSSStyleSheet,this._styleSheet.replaceSync(this.cssText)):this._styleSheet=null),this._styleSheet}toString(){return this.cssText}}const G=(t,...e)=>{const s=e.reduce((e,s,i)=>e+(t=>{if(t instanceof Y)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(s)+t[i+1],t[0]);return new Y(s,X)};
|
|
145
|
+
/**
|
|
146
|
+
* @license
|
|
147
|
+
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
|
148
|
+
* This code may only be used under the BSD style license found at
|
|
149
|
+
* http://polymer.github.io/LICENSE.txt
|
|
150
|
+
* The complete set of authors may be found at
|
|
151
|
+
* http://polymer.github.io/AUTHORS.txt
|
|
152
|
+
* The complete set of contributors may be found at
|
|
153
|
+
* http://polymer.github.io/CONTRIBUTORS.txt
|
|
154
|
+
* Code distributed by Google as part of the polymer project is also
|
|
155
|
+
* subject to an additional IP rights grant found at
|
|
156
|
+
* http://polymer.github.io/PATENTS.txt
|
|
157
|
+
*/
|
|
158
|
+
(window.litElementVersions||(window.litElementVersions=[])).push("2.3.1");const K={};class Q extends J{static getStyles(){return this.styles}static _getUniqueStyles(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(void 0===t)this._styles=[];else if(Array.isArray(t)){const e=(t,s)=>t.reduceRight((t,s)=>Array.isArray(s)?e(s,t):(t.add(s),t),s),s=e(t,new Set),i=[];s.forEach(t=>i.unshift(t)),this._styles=i}else this._styles=[t]}initialize(){super.initialize(),this.constructor._getUniqueStyles(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?Z?this.renderRoot.adoptedStyleSheets=t.map(t=>t.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map(t=>t.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const e=this.render();super.update(t),e!==K&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)}))}render(){return K}}Q.finalized=!0,Q.render=(t,s,i)=>{if(!i||"object"!=typeof i||!i.scopeName)throw new Error("The `scopeName` option is required.");const n=i.scopeName,r=R.has(s),o=H&&11===s.nodeType&&!!s.host,a=o&&!B.has(n),h=a?document.createDocumentFragment():s;if(((t,s,i)=>{let n=R.get(s);void 0===n&&(e(s,s.firstChild),R.set(s,n=new N(Object.assign({templateFactory:M},i))),n.appendInto(s)),n.setValue(t),n.commit()})(t,h,Object.assign({templateFactory:I(n)},i)),a){const t=R.get(h);R.delete(h);const i=t.value instanceof y?t.value.template:void 0;j(n,h,i),e(s,s.firstChild),s.appendChild(h),R.set(s,t)}!r&&o&&window.ShadyCSS.styleElement(s.host)};customElements.define("round-slider",class extends Q{static get properties(){return{value:{type:Number},high:{type:Number},low:{type:Number},min:{type:Number},max:{type:Number},step:{type:Number},startAngle:{type:Number},arcLength:{type:Number},handleSize:{type:Number},handleZoom:{type:Number},readonly:{type:Boolean},disabled:{type:Boolean},dragging:{type:Boolean,reflect:!0},rtl:{type:Boolean},_scale:{type:Number},valueLabel:{type:String},lowLabel:{type:String},highLabel:{type:String}}}constructor(){super(),this.min=16,this.max=38,this.step=1,this.startAngle=135,this.arcLength=270,this.handleSize=6,this.handleZoom=1.5,this.readonly=!1,this.disabled=!1,this.dragging=!1,this.rtl=!1,this._scale=1,this.attachedListeners=!1}get _start(){return this.startAngle*Math.PI/180}get _len(){return Math.min(this.arcLength*Math.PI/180,2*Math.PI-.01)}get _end(){return this._start+this._len}get _showHandle(){return!this.readonly&&(null!=this.value||null!=this.high&&null!=this.low)}_angleInside(t){let e=(this.startAngle+this.arcLength/2-t+180+360)%360-180;return e<this.arcLength/2&&e>-this.arcLength/2}_angle2xy(t){return this.rtl?{x:-Math.cos(t),y:Math.sin(t)}:{x:Math.cos(t),y:Math.sin(t)}}_xy2angle(t,e){return this.rtl&&(t=-t),(Math.atan2(e,t)-this._start+2*Math.PI)%(2*Math.PI)}_value2angle(t){const e=((t=Math.min(this.max,Math.max(this.min,t)))-this.min)/(this.max-this.min);return this._start+e*this._len}_angle2value(t){return Math.round((t/this._len*(this.max-this.min)+this.min)/this.step)*this.step}get _boundaries(){const t=this._angle2xy(this._start),e=this._angle2xy(this._end);let s=1;this._angleInside(270)||(s=Math.max(-t.y,-e.y));let i=1;this._angleInside(90)||(i=Math.max(t.y,e.y));let n=1;this._angleInside(180)||(n=Math.max(-t.x,-e.x));let r=1;return this._angleInside(0)||(r=Math.max(t.x,e.x)),{up:s,down:i,left:n,right:r,height:s+i,width:n+r}}_mouse2value(t){const e=t.type.startsWith("touch")?t.touches[0].clientX:t.clientX,s=t.type.startsWith("touch")?t.touches[0].clientY:t.clientY,i=this.shadowRoot.querySelector("svg").getBoundingClientRect(),n=this._boundaries,r=e-(i.left+n.left*i.width/n.width),o=s-(i.top+n.up*i.height/n.height),a=this._xy2angle(r,o);return this._angle2value(a)}dragStart(t){if(!this._showHandle||this.disabled)return;let e=t.target,s=void 0;if(this._rotation&&"focus"!==this._rotation.type)return;if(e.classList.contains("shadowpath"))if("touchstart"===t.type&&(s=window.setTimeout(()=>{this._rotation&&(this._rotation.cooldown=void 0)},200)),null==this.low)e=this.shadowRoot.querySelector("#value");else{const s=this._mouse2value(t);e=Math.abs(s-this.low)<Math.abs(s-this.high)?this.shadowRoot.querySelector("#low"):this.shadowRoot.querySelector("#high")}if(e.classList.contains("overflow")&&(e=e.nextElementSibling),!e.classList.contains("handle"))return;e.setAttribute("stroke-width",2*this.handleSize*this.handleZoom*this._scale);const i="high"===e.id?this.low:this.min,n="low"===e.id?this.high:this.max;this._rotation={handle:e,min:i,max:n,start:this[e.id],type:t.type,cooldown:s},this.dragging=!0}_cleanupRotation(){const t=this._rotation.handle;t.setAttribute("stroke-width",2*this.handleSize*this._scale),this._rotation=!1,this.dragging=!1,t.blur()}dragEnd(t){if(!this._showHandle||this.disabled)return;if(!this._rotation)return;const e=this._rotation.handle;this._cleanupRotation();let s=new CustomEvent("value-changed",{detail:{[e.id]:this[e.id]},bubbles:!0,composed:!0});this.dispatchEvent(s),this.low&&this.low>=.99*this.max?this._reverseOrder=!0:this._reverseOrder=!1}drag(t){if(!this._showHandle||this.disabled)return;if(!this._rotation)return;if(this._rotation.cooldown)return window.clearTimeout(this._rotation.coldown),void this._cleanupRotation();if("focus"===this._rotation.type)return;t.preventDefault();const e=this._mouse2value(t);this._dragpos(e)}_dragpos(t){if(t<this._rotation.min||t>this._rotation.max)return;const e=this._rotation.handle;this[e.id]=t;let s=new CustomEvent("value-changing",{detail:{[e.id]:t},bubbles:!0,composed:!0});this.dispatchEvent(s)}_keyStep(t){if(!this._showHandle||this.disabled)return;if(!this._rotation)return;const e=this._rotation.handle;"ArrowLeft"!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),this.rtl?this._dragpos(this[e.id]+this.step):this._dragpos(this[e.id]-this.step)),"ArrowRight"!==t.key&&"ArrowUp"!==t.key||(t.preventDefault(),this.rtl?this._dragpos(this[e.id]-this.step):this._dragpos(this[e.id]+this.step)),"Home"===t.key&&(t.preventDefault(),this._dragpos(this.min)),"End"===t.key&&(t.preventDefault(),this._dragpos(this.max))}firstUpdated(){document.addEventListener("mouseup",this.dragEnd.bind(this)),document.addEventListener("touchend",this.dragEnd.bind(this),{passive:!1}),document.addEventListener("mousemove",this.drag.bind(this)),document.addEventListener("touchmove",this.drag.bind(this),{passive:!1}),document.addEventListener("keydown",this._keyStep.bind(this))}updated(t){if(this.shadowRoot.querySelector(".slider")){const t=window.getComputedStyle(this.shadowRoot.querySelector(".slider"));if(t&&t.strokeWidth){const e=parseFloat(t.strokeWidth);if(e>this.handleSize*this.handleZoom){const t=this._boundaries,s=`\n ${e/2*Math.abs(t.up)}px\n ${e/2*Math.abs(t.right)}px\n ${e/2*Math.abs(t.down)}px\n ${e/2*Math.abs(t.left)}px`;this.shadowRoot.querySelector("svg").style.margin=s}}}if(this.shadowRoot.querySelector("svg")&&void 0===this.shadowRoot.querySelector("svg").style.vectorEffect){t.has("_scale")&&1!=this._scale&&this.shadowRoot.querySelector("svg").querySelectorAll("path").forEach(t=>{if(t.getAttribute("stroke-width"))return;const e=parseFloat(getComputedStyle(t).getPropertyValue("stroke-width"));t.style.strokeWidth=e*this._scale+"px"});const e=this.shadowRoot.querySelector("svg").getBoundingClientRect(),s=Math.max(e.width,e.height);this._scale=2/s}}_renderArc(t,e){const s=e-t;return t=this._angle2xy(t),e=this._angle2xy(e+.001),`\n M ${t.x} ${t.y}\n A 1 1,\n 0,\n ${s>Math.PI?"1":"0"} ${this.rtl?"0":"1"},\n ${e.x} ${e.y}\n `}_renderHandle(t){const e=this._value2angle(this[t]),s=this._angle2xy(e),i={value:this.valueLabel,low:this.lowLabel,high:this.highLabel}[t]||"";return O`
|
|
159
|
+
<g class="${t} handle">
|
|
160
|
+
<path
|
|
161
|
+
id=${t}
|
|
162
|
+
class="overflow"
|
|
163
|
+
d="
|
|
164
|
+
M ${s.x} ${s.y}
|
|
165
|
+
L ${s.x+.001} ${s.y+.001}
|
|
166
|
+
"
|
|
167
|
+
vector-effect="non-scaling-stroke"
|
|
168
|
+
stroke="rgba(0,0,0,0)"
|
|
169
|
+
stroke-width="${4*this.handleSize*this._scale}"
|
|
170
|
+
/>
|
|
171
|
+
<path
|
|
172
|
+
id=${t}
|
|
173
|
+
class="handle"
|
|
174
|
+
d="
|
|
175
|
+
M ${s.x} ${s.y}
|
|
176
|
+
L ${s.x+.001} ${s.y+.001}
|
|
177
|
+
"
|
|
178
|
+
vector-effect="non-scaling-stroke"
|
|
179
|
+
stroke-width="${2*this.handleSize*this._scale}"
|
|
180
|
+
tabindex="0"
|
|
181
|
+
@focus=${this.dragStart}
|
|
182
|
+
@blur=${this.dragEnd}
|
|
183
|
+
role="slider"
|
|
184
|
+
aria-valuemin=${this.min}
|
|
185
|
+
aria-valuemax=${this.max}
|
|
186
|
+
aria-valuenow=${this[t]}
|
|
187
|
+
aria-disabled=${this.disabled}
|
|
188
|
+
aria-label=${i||""}
|
|
189
|
+
/>
|
|
190
|
+
</g>
|
|
191
|
+
`}render(){const t=this._boundaries;return U`
|
|
192
|
+
<svg
|
|
193
|
+
@mousedown=${this.dragStart}
|
|
194
|
+
@touchstart=${this.dragStart}
|
|
195
|
+
xmln="http://www.w3.org/2000/svg"
|
|
196
|
+
viewBox="${-t.left} ${-t.up} ${t.width} ${t.height}"
|
|
197
|
+
style="margin: ${this.handleSize*this.handleZoom}px;"
|
|
198
|
+
?disabled=${this.disabled}
|
|
199
|
+
focusable="false"
|
|
200
|
+
>
|
|
201
|
+
<g class="slider">
|
|
202
|
+
<path
|
|
203
|
+
class="path"
|
|
204
|
+
d=${this._renderArc(this._start,this._end)}
|
|
205
|
+
vector-effect="non-scaling-stroke"
|
|
206
|
+
/>
|
|
207
|
+
<path
|
|
208
|
+
class="bar"
|
|
209
|
+
vector-effect="non-scaling-stroke"
|
|
210
|
+
d=${this._renderArc(this._value2angle(null!=this.low?this.low:this.min),this._value2angle(null!=this.high?this.high:this.value))}
|
|
211
|
+
/>
|
|
212
|
+
<path
|
|
213
|
+
class="shadowpath"
|
|
214
|
+
d=${this._renderArc(this._start,this._end)}
|
|
215
|
+
vector-effect="non-scaling-stroke"
|
|
216
|
+
stroke="rgba(0,0,0,0)"
|
|
217
|
+
stroke-width="${3*this.handleSize*this._scale}"
|
|
218
|
+
stroke-linecap="butt"
|
|
219
|
+
/>
|
|
220
|
+
|
|
221
|
+
</g>
|
|
222
|
+
|
|
223
|
+
<g class="handles">
|
|
224
|
+
${this._showHandle?null!=this.low?this._reverseOrder?U`${this._renderHandle("high")} ${this._renderHandle("low")}`:U`${this._renderHandle("low")} ${this._renderHandle("high")}`:U`${this._renderHandle("value")}`:""}
|
|
225
|
+
</g>
|
|
226
|
+
</svg>
|
|
227
|
+
`}static get styles(){return G`
|
|
228
|
+
:host {
|
|
229
|
+
display: inline-block;
|
|
230
|
+
width: 100%;
|
|
231
|
+
}
|
|
232
|
+
svg {
|
|
233
|
+
overflow: visible;
|
|
234
|
+
display: block;
|
|
235
|
+
}
|
|
236
|
+
path {
|
|
237
|
+
transition: stroke 1s ease-out, stroke-width 200ms ease-out;
|
|
238
|
+
}
|
|
239
|
+
.slider {
|
|
240
|
+
fill: none;
|
|
241
|
+
stroke-width: 5px;
|
|
242
|
+
stroke-linecap: var(--round-slider-linecap, round);
|
|
243
|
+
}
|
|
244
|
+
.path {
|
|
245
|
+
stroke: var(--round-slider-path-color, lightgray);
|
|
246
|
+
}
|
|
247
|
+
.bar {
|
|
248
|
+
stroke: var(--round-slider-bar-color, #cb0c9f);
|
|
249
|
+
}
|
|
250
|
+
svg[disabled] .bar {
|
|
251
|
+
stroke: var(--round-slider-disabled-bar-color, darkgray);
|
|
252
|
+
}
|
|
253
|
+
g.handles {
|
|
254
|
+
stroke: var(--round-slider-handle-color, var(--round-slider-bar-color, #cb0c9f));
|
|
255
|
+
stroke-linecap: round;
|
|
256
|
+
cursor: var(--round-slider-handle-cursor, pointer);
|
|
257
|
+
stroke-width: 18px;
|
|
258
|
+
}
|
|
259
|
+
g.low.handle {
|
|
260
|
+
stroke: var(--round-slider-low-handle-color);
|
|
261
|
+
}
|
|
262
|
+
g.high.handle {
|
|
263
|
+
stroke: var(--round-slider-high-handle-color);
|
|
264
|
+
}
|
|
265
|
+
svg[disabled] g.handles {
|
|
266
|
+
stroke: var(--round-slider-disabled-bar-color, darkgray);
|
|
267
|
+
}
|
|
268
|
+
.handle:focus {
|
|
269
|
+
outline: unset;
|
|
270
|
+
}
|
|
271
|
+
`}});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* sweetalert2 v11.0.11
|
|
3
|
+
* Released under the MIT License. https://sweetalert2.github.io/
|
|
4
|
+
*/
|
|
5
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),O=()=>f(".".concat(h.actions," .").concat(h.cancel)),T=()=>y(h.actions),L=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))<e?1:e<t?-1:0));var t=a(v().querySelectorAll('\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex="0"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n')).filter(e=>"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;e<t.length;e++)-1===n.indexOf(t[e])&&n.push(t[e]);return n})(e.concat(t)).filter(e=>G(e))},M=()=>!q()&&!document.body.classList.contains(h["no-backdrop"]),q=()=>document.body.classList.contains(h["toast-shown"]);const H={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e<n.length;e++)if(!t.classList.contains(n[e]))return!1;return!0},U=(e,t,n)=>{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e<t.childNodes.length;e++)if(N(t.childNodes[e],n))return t.childNodes[e]},Y=(e,t,n)=>{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},$=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},X=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(O()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0<n||0<e},ne=(e,t=!1)=>{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n <div aria-labelledby="'.concat(h.title,'" aria-describedby="').concat(h["html-container"],'" class="').concat(h.popup,'" tabindex="-1">\n <button type="button" class="').concat(h.close,'"></button>\n <ul class="').concat(h["progress-steps"],'"></ul>\n <div class="').concat(h.icon,'"></div>\n <img class="').concat(h.image,'" />\n <h2 class="').concat(h.title,'" id="').concat(h.title,'"></h2>\n <div class="').concat(h["html-container"],'"></div>\n <input class="').concat(h.input,'" />\n <input type="file" class="').concat(h.file,'" />\n <div class="').concat(h.range,'">\n <input type="range" />\n <output></output>\n </div>\n <select class="').concat(h.select,'"></select>\n <div class="').concat(h.radio,'"></div>\n <label for="').concat(h.checkbox,'" class="').concat(h.checkbox,'">\n <input type="checkbox" />\n <span class="').concat(h.label,'"></span>\n </label>\n <textarea class="').concat(h.textarea,'"></textarea>\n <div class="').concat(h["validation-message"],'" id="').concat(h["validation-message"],'"></div>\n <div class="').concat(h.actions,'">\n <div class="').concat(h.loader,'"></div>\n <button type="button" class="').concat(h.confirm,'"></button>\n <button type="button" class="').concat(h.deny,'"></button>\n <button type="button" class="').concat(h.cancel,'"></button>\n </div>\n <div class="').concat(h.footer,'"></div>\n <div class="').concat(h["timer-progress-bar-container"],'">\n <div class="').concat(h["timer-progress-bar"],'"></div>\n </div>\n </div>\n').replace(/(^|\n)\s*/g,""),ae=()=>{cn.isVisible()&&cn.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=T();var o=S(),i=P(),a=E(),s=O();t.showConfirmButton||t.showDenyButton||t.showCancelButton||J(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){X(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),!t.backdrop&&t.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e<t.attributes.length;e++){var n=t.attributes[e].name;["type","value","style"].includes(n)||t.removeAttribute(n)}})(n);for(const o in t)n.setAttribute(o,t[o])}},ye=e=>{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(t,e)=>{t.value=e.inputValue,ve(t,e),we(t,t,e);if("MutationObserver"in window){const n=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=t.offsetWidth+(e=t,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>n?v().style.width="".concat(e,"px"):v().style.width=null}).observe(t,{attributes:!0,attributeFilter:["style"]})}return t};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e<n.length;e++)n[e].style.backgroundColor=t},Pe=(e,t)=>{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n '):"error"===t.icon?V(e,'\n <span class="swal2-x-mark">\n <span class="swal2-x-mark-line-left"></span>\n <span class="swal2-x-mark-line-right"></span>\n </span>\n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])$(e,n,"backgroundColor",t.iconColor);$(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'<div class="'.concat(h["icon-content"],'">').concat(e,"</div>"),Oe=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Te=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Le=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Te(n,e)})(t),me(0,t),Oe(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();X(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),X(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=L(),X(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||cn.fire(),t=v();var n=S();q()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=T();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},qe=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const He=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>O()&&O().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:T,getConfirmButton:P,getDenyButton:E,getCancelButton:O,getLoader:S,getFooter:L,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:He,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?He:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function $e(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),q()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const Xe=()=>{null===H.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(H.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(H.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1<e.touches.length;var ot={swalPromiseResolve:new WeakMap};function it(e,t,n,o){q()?rt(e,o):(qe(n).then(()=>rt(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),t.parentNode&&t.remove(),M()&&(null!==H.previousBodyPadding&&(document.body.style.paddingRight="".concat(H.previousBodyPadding,"px"),H.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),(()=>{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})})()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function at(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=ot.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)st(e,t,o,n.returnFocus,n.didClose);else it(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const st=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=it.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},rt=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function ct(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function lt(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e<o.length;e++)o[e].disabled=t}else e.disabled=t}class ut{constructor(e,t){this.callback=e,this.remaining=t,this.running=!1,this.start()}start(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}stop(){return this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=new Date-this.started),this.remaining}increase(e){var t=this.running;return t&&this.stop(),this.remaining+=e,t&&this.start(),this.remaining}getTimerLeft(){return this.running&&(this.stop(),this.start()),this.remaining}isRunning(){return this.running}}var dt={email:(e,t)=>/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function pt(e){var t,n;(t=e).inputValidator||Object.keys(dt).forEach(e=>{t.input===e&&(t.inputValidator=dt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join("<br />")),se(e)}const mt=["swal-title","swal-html","swal-footer"],ht=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return Ct(e),Object.assign(gt(e),bt(e),ft(e),yt(e),vt(e),wt(e,mt))},gt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{kt(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},bt=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{kt(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},ft=e=>{const t={},n=e.querySelector("swal-image");return n&&(kt(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},yt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(kt(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},vt=e=>{const n={},t=e.querySelector("swal-input");t&&(kt(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{kt(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},wt=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(kt(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},Ct=e=>{const t=mt.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},kt=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},At=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;Et(t,n,e),setTimeout(()=>{xt(t,n)},10),M()&&(Pt(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),q()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},Bt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,Bt),n.style.overflowY="auto"}},xt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,Bt)):e.style.overflowY="auto"},Pt=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1<navigator.maxTouchPoints)&&!N(document.body,h.iosfix)&&(o=document.body.scrollTop,document.body.style.top="".concat(-1*o,"px"),W(document.body,h.iosfix),Qe(),Ge()),t&&"hidden"!==n&&Xe(),setTimeout(()=>{e.scrollTop=0})},Et=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},St=e=>e.checked?1:0,Ot=e=>e.checked?e.value:null,Tt=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,Lt=(t,n)=>{const o=v(),i=e=>Dt[n.input](o,It(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},jt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},Dt={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Mt(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Mt(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},It=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=It(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=It(t)),o.push([e,t])}),o},Mt=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t,n)=>{var o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return St(n);case"radio":return Ot(n);case"file":return Tt(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,t);t.inputValidator?Ht(e,t,o,n):e.getInput().checkValidity()?("deny"===n?Vt:Ut)(e,t,o):(e.enableButtons(),e.showValidationMessage(t.validationMessage))},Ht=(t,n,o,i)=>{t.disableInput();const e=Promise.resolve().then(()=>d(n.inputValidator(o,n.validationMessage)));e.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===i?Vt:Ut)(t,n,o)})},Vt=(t,e,n)=>{if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Nt=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ut=(t,e,n)=>{if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Nt(t,void 0===e?n:e)})}else Nt(t,n)},Ft=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},Rt=["ArrowRight","ArrowDown"],zt=["ArrowLeft","ArrowUp"],Wt=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?_t(e,t,o):"Tab"===t.key?Kt(t,o):[...Rt,...zt].includes(t.key)?Yt(t.key):"Escape"===t.key&&Zt(t,o,n))},_t=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Kt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e<o.length;e++)if(n===o[e]){i=e;break}e.shiftKey?Ft(0,i,-1):Ft(0,i,1),e.stopPropagation(),e.preventDefault()},Yt=e=>{const t=P(),n=E(),o=O();if([t,n,o].includes(document.activeElement)){e=Rt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Zt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Jt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Xt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Gt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},Qt=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const en=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new ut(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},tn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(nn(e,t)||Ft(0,-1,1)):on()},nn=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),on=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const an=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:$e,disableLoading:$e,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:at,closePopup:at,closeModal:at,closeToast:at,enableButtons:function(){ct(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){ct(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return lt(this.getInput(),!1)},disableInput:function(){return lt(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedBy",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedBy"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&Me.currentInstance._destroy(),Me.currentInstance=this,pt(e=((e,t)=>{const n=ht(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:T(),confirmButton:P(),denyButton:E(),cancelButton:O(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Le(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;ot.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>((e,t)=>{e.disableButtons(),t.input?qt(e,t,"confirm"):Ut(e,t,!0)})(s,c),r.denyButton.onclick=()=>((e,t)=>{e.disableButtons(),t.returnInputValueOnDeny?qt(e,t,"deny"):Vt(e,t,!1)})(s,c),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Jt(n,a,e):(Xt(a),Gt(a),Qt(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>Wt(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?Lt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&jt(e,a),At(c),en(Me,c,t),tn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{cn.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Le(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,an(he),an(ot))}});let sn;class rn{constructor(...e){"undefined"!=typeof window&&(sn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(rn.prototype,e),Object.assign(rn,Je),Object.keys(e).forEach(t=>{rn[t]=function(...e){if(sn)return sn[t](...e)}}),rn.DismissReason=l,rn.version="11.0.11";const cn=rn;return cn.default=cn,cn}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
|