fx-shared-models 0.2.87__tar.gz → 0.2.99__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fx_shared_models-0.2.87/fx_shared_models.egg-info → fx_shared_models-0.2.99}/PKG-INFO +1 -1
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99/fx_shared_models.egg-info}/PKG-INFO +1 -1
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/fx_shared_models.egg-info/SOURCES.txt +163 -1
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/setup.py +1 -1
- fx_shared_models-0.2.99/shared_models/accounts/migrations/0008_accountrisksettings.py +33 -0
- fx_shared_models-0.2.99/shared_models/accounts/migrations/0009_account_archived_at.py +47 -0
- fx_shared_models-0.2.99/shared_models/accounts/models.py +188 -0
- fx_shared_models-0.2.99/shared_models/balances/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/balances/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/balances/migrations/0001_initial.py +43 -0
- fx_shared_models-0.2.99/shared_models/balances/migrations/0002_add_balance_history_and_unique_account.py +54 -0
- fx_shared_models-0.2.99/shared_models/balances/models.py +99 -0
- fx_shared_models-0.2.99/shared_models/common/customer_settings.py +51 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/common/mixins.py +111 -17
- fx_shared_models-0.2.99/shared_models/company_ba/migrations/0003_companyba.py +24 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/constants.py +33 -1
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/enums.py +5 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0015_customer_is_fund_manager.py +18 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0016_customer_risk_factors_customer_risk_level_and_more.py +38 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0017_stagetransition.py +39 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0018_backfill_stage_origins.py +85 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0019_sales_stages.py +52 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0020_seed_sales_stages.py +70 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0021_sales_activity.py +55 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0022_seed_sales_settings.py +33 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0023_assignment_settings.py +28 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0024_lead_score.py +28 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0025_lead_score_shape.py +33 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0026_assignment_team.py +18 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0027_measure_definition.py +35 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0028_sales_targets.py +87 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0029_measure_evaluation_settings.py +33 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0030_sales_control_surface.py +111 -0
- fx_shared_models-0.2.99/shared_models/customers/migrations/0031_customersettings_viewing_currency.py +15 -0
- fx_shared_models-0.2.99/shared_models/customers/models.py +1276 -0
- fx_shared_models-0.2.99/shared_models/customers/stage_history.py +86 -0
- fx_shared_models-0.2.99/shared_models/customers/stage_policy.py +113 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/__init__.py +8 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/migrations/0001_initial.py +69 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/migrations/0002_wt3b_settings.py +77 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/migrations/0003_wt5_profit_classifier.py +119 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/migrations/0004_wt9_money_trail.py +46 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/migrations/0005_allow_untracked_withdrawal.py +16 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/migrations/0006_wt6_refusal_rules.py +51 -0
- fx_shared_models-0.2.99/shared_models/fund_tracking/models.py +330 -0
- fx_shared_models-0.2.99/shared_models/ib_commission/migrations/0014_clientibmapping_idx_client_mapping_path_c_and_more.py +22 -0
- fx_shared_models-0.2.99/shared_models/ib_commission/migrations/0015_wt7_rebate_destination.py +21 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/models.py +38 -1
- fx_shared_models-0.2.99/shared_models/onboarding/apps.py +12 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0001_initial.py +336 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0002_onboardingkycrule.py +51 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0003_alter_clientonboardingsubmission_options.py +17 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0004_alter_onboardingkycrule_options_and_more.py +139 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0005_remove_onboardingkycrule_uniq_onboarding_kyc_rule_gate_product_and_more.py +81 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0006_onboardingkycrule_payment_gateway_and_more.py +23 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0007_onboardingkycrule_unlock_on.py +18 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0008_onboardingkycrule_audiences.py +69 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0009_wt7_wallet_rail_choices.py +63 -0
- fx_shared_models-0.2.99/shared_models/onboarding/migrations/0010_r7_review_enforcement.py +18 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/__init__.py +29 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/acceptance.py +42 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/block.py +72 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/condition.py +77 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/declaration.py +49 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/document_requirement.py +58 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/draft.py +51 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/flow.py +65 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/kyc_rule.py +337 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/resolver.py +72 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/submission.py +89 -0
- fx_shared_models-0.2.99/shared_models/onboarding/model/version.py +54 -0
- fx_shared_models-0.2.99/shared_models/onboarding/models.py +34 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/orders/enums.py +15 -15
- fx_shared_models-0.2.99/shared_models/orders/migrations/0002_order_checkout_mode_order_sdk_url_and_more.py +28 -0
- fx_shared_models-0.2.99/shared_models/orders/migrations/0003_rename_order_to_paymentorder.py +25 -0
- fx_shared_models-0.2.99/shared_models/orders/migrations/0004_wt7_wallet_rails.py +53 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/orders/models.py +50 -11
- fx_shared_models-0.2.99/shared_models/positions/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/positions/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/positions/migrations/0001_initial.py +49 -0
- fx_shared_models-0.2.99/shared_models/positions/models.py +47 -0
- fx_shared_models-0.2.99/shared_models/promotions/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0001_initial.py +156 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0002_seed_settings.py +41 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0003_banners.py +59 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0004_banner_ip_cap.py +18 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0005_global_controls.py +30 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0006_scoped_settings.py +55 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0007_cp_offers.py +133 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0008_promo_code_redemptions.py +24 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0009_promotion_currency.py +17 -0
- fx_shared_models-0.2.99/shared_models/promotions/migrations/0010_promotion_settings_clawback_send_lease.py +16 -0
- fx_shared_models-0.2.99/shared_models/promotions/models.py +586 -0
- fx_shared_models-0.2.99/shared_models/promotions/tests/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/promotions/tests/test_promotion_models.py +85 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/apps.py +0 -3
- fx_shared_models-0.2.99/shared_models/referrals/migrations/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/scoping/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/scoping/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/scoping/migrations/0001_initial.py +207 -0
- fx_shared_models-0.2.99/shared_models/scoping/migrations/0002_drop_scope_tables.py +21 -0
- fx_shared_models-0.2.99/shared_models/scoping/migrations/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/scoping/models.py +1 -0
- fx_shared_models-0.2.99/shared_models/settings_core/__init__.py +8 -0
- fx_shared_models-0.2.99/shared_models/settings_core/apps.py +11 -0
- fx_shared_models-0.2.99/shared_models/settings_core/migrations/0001_initial.py +109 -0
- fx_shared_models-0.2.99/shared_models/settings_core/migrations/0002_drop_approval_queue.py +123 -0
- fx_shared_models-0.2.99/shared_models/settings_core/migrations/0003_compliance_operate_permission.py +32 -0
- fx_shared_models-0.2.99/shared_models/settings_core/migrations/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/settings_core/models.py +46 -0
- fx_shared_models-0.2.99/shared_models/settings_core/signals.py +49 -0
- fx_shared_models-0.2.99/shared_models/symbols/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/symbols/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/symbols/migrations/0001_initial.py +41 -0
- fx_shared_models-0.2.99/shared_models/symbols/migrations/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/symbols/models.py +38 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0020_accounttype_pamm_choices.py +18 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0021_pammconfiguration.py +53 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0022_pammconfiguration_pamm_subscription_approval_mode.py +18 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0023_pammconfiguration_allow_force_unlock_and_more.py +49 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0024_remove_pammconfiguration_pamm_enabled.py +17 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0025_mt5_server_logins.py +87 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0026_drop_tradingplatformserver_username.py +47 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0027_brokerconfiguration_dashboard_default_mode_and_more.py +23 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0028_brokerconfiguration_onboarding_engine_default_and_more.py +23 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0029_brokerconfiguration_onboarding_email_verification_mode.py +18 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0030_brokerconfiguration_compliance_gate_enabled.py +18 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0031_brokerconfiguration_login_background_dark_url_and_more.py +23 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0032_brokerconfiguration_background_color_and_more.py +59 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0033_remove_brokerconfiguration_login_background_dark_url_and_more.py +41 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0034_remove_brokerconfiguration_background_color_and_more.py +257 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0035_brokerconfiguration_cp_risk_guardian_enabled_and_more.py +58 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0036_mt5processorconfiguration.py +33 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0037_mt5operationjournal.py +38 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0038_wt3b_fund_tracking_columns.py +28 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/0039_wt7_allowed_destinations.py +75 -0
- fx_shared_models-0.2.99/shared_models/system_settings/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/__init__.py +18 -1
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/account_types.py +1 -1
- fx_shared_models-0.2.99/shared_models/system_settings/models/broker_config.py +399 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/email.py +9 -1
- fx_shared_models-0.2.99/shared_models/system_settings/models/mt5_login.py +127 -0
- fx_shared_models-0.2.99/shared_models/system_settings/models/mt5_operation_journal.py +38 -0
- fx_shared_models-0.2.99/shared_models/system_settings/models/mt5_processor_config.py +51 -0
- fx_shared_models-0.2.99/shared_models/system_settings/models/pamm_config.py +185 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/payment_methods.py +25 -0
- fx_shared_models-0.2.99/shared_models/system_settings/models/risk_guardian_config.py +83 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/trading_platform.py +10 -12
- fx_shared_models-0.2.99/shared_models/system_settings/tests/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/system_settings/tests/test_mt5_login.py +118 -0
- fx_shared_models-0.2.99/shared_models/system_settings/tests/test_mt5_operation_journal.py +35 -0
- fx_shared_models-0.2.99/shared_models/trading/migrations/0006_wt5_deal_mirror_watermark.py +29 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/models.py +15 -1
- fx_shared_models-0.2.99/shared_models/transactions/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/enums.py +2 -0
- fx_shared_models-0.2.99/shared_models/transactions/migrations/0014_wt7_wallet_rails.py +86 -0
- fx_shared_models-0.2.99/shared_models/transactions/migrations/0015_fx_rates.py +94 -0
- fx_shared_models-0.2.99/shared_models/transactions/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/models.py +101 -2
- fx_shared_models-0.2.99/shared_models/ui_elements/migrations/__init__.py +0 -0
- fx_shared_models-0.2.99/shared_models/users/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/apps.py +0 -3
- fx_shared_models-0.2.99/shared_models/users/managers.py +37 -0
- fx_shared_models-0.2.99/shared_models/users/migrations/0016_usersettings_dashboard_mode.py +18 -0
- fx_shared_models-0.2.99/shared_models/users/migrations/0017_usersettings_viewing_currency.py +15 -0
- fx_shared_models-0.2.99/shared_models/users/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/models.py +9 -1
- fx_shared_models-0.2.99/shared_models/wallets/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/wallets/apps.py +8 -0
- fx_shared_models-0.2.99/shared_models/wallets/countries.py +4 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0001_initial.py +202 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0002_wallettransfer.py +45 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0003_wt3b_control_surface.py +396 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0004_wt7_rails.py +90 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0005_wt12_sweep_transaction.py +24 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0006_wt17_transfer_decisions.py +112 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0007_wt14_balance_history.py +133 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0008_wt10_admin.py +217 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0009_wt18_discrepancy_runs.py +202 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0010_internal_transfer_auto_refund.py +16 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0011_wallettransfer_approval_note.py +16 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/0012_scope_on_rules.py +177 -0
- fx_shared_models-0.2.99/shared_models/wallets/migrations/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/wallets/models.py +831 -0
- fx_shared_models-0.2.99/shared_models/wallets/tests/__init__.py +1 -0
- fx_shared_models-0.2.99/shared_models/wallets/tests/test_wallet_models.py +156 -0
- fx_shared_models-0.2.87/shared_models/accounts/models.py +0 -80
- fx_shared_models-0.2.87/shared_models/customers/models.py +0 -441
- fx_shared_models-0.2.87/shared_models/system_settings/models/broker_config.py +0 -167
- fx_shared_models-0.2.87/shared_models/users/managers.py +0 -14
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/LICENSE +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/MANIFEST.in +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/README.md +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/fx_shared_models.egg-info/dependency_links.txt +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/fx_shared_models.egg-info/requires.txt +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/fx_shared_models.egg-info/top_level.txt +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/setup.cfg +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0002_remove_account_group_type_account_has_bonus_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0003_account_is_archived_account_is_trading_enabled.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0004_alter_account_created_at_alter_account_created_by_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0005_account_currency.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0006_alter_account_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/0007_alter_account_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/accounts/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/company_ba → fx_shared_models-0.2.99/shared_models/balances/migrations}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/common/base.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/common/utils.py +0 -0
- {fx_shared_models-0.2.87/shared_models/company_ba/migrations → fx_shared_models-0.2.99/shared_models/company_ba}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/company_ba/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/company_ba/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/company_ba/migrations/0002_alter_companybankaccount_options.py +0 -0
- {fx_shared_models-0.2.87/shared_models/customer_crypto_wallet → fx_shared_models-0.2.99/shared_models/company_ba}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/company_ba/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/crypto_wallet/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/crypto_wallet/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/crypto_wallet/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/crypto_wallet/migrations/0002_alter_companycryptowallet_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/crypto_wallet/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/crypto_wallet/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_crypto_wallet/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_crypto_wallet/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_crypto_wallet/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_crypto_wallet/migrations/0002_alter_customercryptowallet_options.py +0 -0
- {fx_shared_models-0.2.87/shared_models/customer_upi → fx_shared_models-0.2.99/shared_models/customer_crypto_wallet}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_crypto_wallet/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_upi/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_upi/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_upi/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_upi/migrations/0002_alter_customerupi_options.py +0 -0
- {fx_shared_models-0.2.87/shared_models/customers → fx_shared_models-0.2.99/shared_models/customer_upi}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customer_upi/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0002_alter_customer_email_alter_customer_first_name_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0004_customerauth_two_factor_backup_codes_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0005_customerauth_temp_webauthn_challenge.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0006_customerauth_webauthn_challenge.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0007_customerauth_blocked_customerauth_blocked_at_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0008_customer_email_hash.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0009_remove_customerauth_blocked_by_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0010_customerauth_blocked_by_customerauth_unblocked_by.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0011_customerauth_reset_token_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0012_alter_customer_email_alter_customer_first_name_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0013_alter_customerauth_blocked_by_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/customers/migrations/0014_alter_customer_options.py +0 -0
- {fx_shared_models-0.2.87/shared_models/email_campaigns → fx_shared_models-0.2.99/shared_models/customers/migrations}/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/email_campaigns/migrations → fx_shared_models-0.2.99/shared_models/email_campaigns}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_campaigns/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_campaigns/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_campaigns/migrations/0002_alter_emailcampaign_options_and_more.py +0 -0
- {fx_shared_models-0.2.87/shared_models/email_log → fx_shared_models-0.2.99/shared_models/email_campaigns/migrations}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_campaigns/models.py +0 -0
- {fx_shared_models-0.2.87/shared_models/email_log/migrations → fx_shared_models-0.2.99/shared_models/email_log}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_log/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_log/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87/shared_models/ib_commission → fx_shared_models-0.2.99/shared_models/email_log/migrations}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/email_log/models.py +0 -0
- {fx_shared_models-0.2.87/shared_models/ib_commission → fx_shared_models-0.2.99/shared_models/fund_tracking}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/orders/migrations → fx_shared_models-0.2.99/shared_models/ib_commission}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0002_alter_commissiondistribution_processed_time.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0003_clientibmapping_idx_client_mapping_lookup_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0004_ibonboardingstatus.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0005_ibonboardingstatus_ib_journey_form_submitted_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0006_ibonboardingstatus_creation_source.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0007_ibquestionnaire.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0008_ibcommissionrule_lot_size.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0009_ibcommissionrule_min_volume.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0010_alter_commissiondistribution_rule_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0011_alter_clientibmapping_agreement_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0012_clientibmapping_agreement_path_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/migrations/0013_populate_agreement_path_for_existing_ibs.py +0 -0
- {fx_shared_models-0.2.87/shared_models/referrals → fx_shared_models-0.2.99/shared_models/ib_commission}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/model/ib_onboarding.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/model/ib_questionnaire.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/services/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/services/commission_cache_service.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ib_commission/services/commission_calculator_service.py +0 -0
- {fx_shared_models-0.2.87/shared_models/system_settings/migrations → fx_shared_models-0.2.99/shared_models/onboarding}/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/transactions → fx_shared_models-0.2.99/shared_models/onboarding/migrations}/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/orders/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/orders/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/orders/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87/shared_models/transactions → fx_shared_models-0.2.99/shared_models/orders}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/ui_elements → fx_shared_models-0.2.99/shared_models/positions}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/users → fx_shared_models-0.2.99/shared_models/promotions}/__init__.py +0 -0
- {fx_shared_models-0.2.87/shared_models/users → fx_shared_models-0.2.99/shared_models/promotions}/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/migrations/0002_alter_referralreward_payment_gateway_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/migrations/0003_referralsource_agreement_path_referralsource_ib_path.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/migrations/0004_populate_ib_paths_for_referral_sources.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/referrals/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/services/group_resolver.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0002_rename_is_enabled_systemsetting_is_active.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0003_tradingplatformserver.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0004_tradingplatformserver_connection_timeout_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0005_accountsequence_accounttype.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0006_alter_accounttype_sequence.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0007_remove_accounttype_default_group_type_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0008_paymentgatewayconfig_paymentmethodconfig_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0009_alter_accountsequence_created_at_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0010_alter_paymentgatewayconfig_gateway_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0011_tradingplatformserverlog.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0012_alter_emailcontent_content_sections.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0013_kycrequirementrule.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0014_alter_paymentgatewayconfig_payment_method_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0015_alter_paymentgatewayconfig_payment_method_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0016_alter_emailconfiguration_options_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0017_brokerconfiguration.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0018_accounttype_demo_auto_deposit_amount.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/migrations/0019_paymentgatewayconfig_adapter_type_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/account_sequence.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/base.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/group_configurations.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/models/transaction_configs.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/system_settings/serializers.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/migrations/0002_alter_deal_id.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/migrations/0003_alter_deal_id.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/migrations/0004_alter_deal_id.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/migrations/0005_deal_idx_deal_position_lookup_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/trading/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/constants.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0002_transaction_mt5_ticket.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0003_alter_transaction_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0004_alter_transaction_created_by.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0005_alter_transaction_status.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0006_transaction_approved_at.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0007_transaction_assigned_user_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0008_alter_transaction_payment_method.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0009_alter_transaction_approved_by_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0010_alter_transaction_payment_method.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0011_alter_transaction_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0012_transaction_transaction_custome_fb8ec8_idx.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/transactions/migrations/0013_transaction_order.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ui_elements/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ui_elements/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ui_elements/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/ui_elements/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/upi_id/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/upi_id/apps.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/upi_id/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/upi_id/migrations/0002_alter_companyupiid_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/upi_id/migrations/__init__.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/upi_id/models.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0001_initial.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0002_alter_crmuser_managers.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0003_alter_crmuser_options_alter_crmuser_managers.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0004_alter_crmuser_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0005_remove_crmuser_is_2fa_enabled_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0006_rename_preferred_2fa_method_usersettings_default_2fa_method_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0007_alter_usersettings_options_alter_usersettings_table.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0008_usersettings_temp_webauthn_challenge.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0009_alter_userprofile_profile_picture.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0010_alter_crmuser_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0011_alter_crmuser_options.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0012_alter_crmuser_managers_usersettings_is_2fa_enabled_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0013_usersettings_is_2fa_enabled_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0014_alter_crmuser_groups_alter_crmuser_user_permissions_and_more.py +0 -0
- {fx_shared_models-0.2.87 → fx_shared_models-0.2.99}/shared_models/users/migrations/0015_alter_crmuser_options.py +0 -0
|
@@ -19,8 +19,17 @@ shared_models/accounts/migrations/0004_alter_account_created_at_alter_account_cr
|
|
|
19
19
|
shared_models/accounts/migrations/0005_account_currency.py
|
|
20
20
|
shared_models/accounts/migrations/0006_alter_account_options.py
|
|
21
21
|
shared_models/accounts/migrations/0007_alter_account_options.py
|
|
22
|
+
shared_models/accounts/migrations/0008_accountrisksettings.py
|
|
23
|
+
shared_models/accounts/migrations/0009_account_archived_at.py
|
|
22
24
|
shared_models/accounts/migrations/__init__.py
|
|
25
|
+
shared_models/balances/__init__.py
|
|
26
|
+
shared_models/balances/apps.py
|
|
27
|
+
shared_models/balances/models.py
|
|
28
|
+
shared_models/balances/migrations/0001_initial.py
|
|
29
|
+
shared_models/balances/migrations/0002_add_balance_history_and_unique_account.py
|
|
30
|
+
shared_models/balances/migrations/__init__.py
|
|
23
31
|
shared_models/common/base.py
|
|
32
|
+
shared_models/common/customer_settings.py
|
|
24
33
|
shared_models/common/mixins.py
|
|
25
34
|
shared_models/common/utils.py
|
|
26
35
|
shared_models/company_ba/__init__.py
|
|
@@ -28,6 +37,7 @@ shared_models/company_ba/apps.py
|
|
|
28
37
|
shared_models/company_ba/models.py
|
|
29
38
|
shared_models/company_ba/migrations/0001_initial.py
|
|
30
39
|
shared_models/company_ba/migrations/0002_alter_companybankaccount_options.py
|
|
40
|
+
shared_models/company_ba/migrations/0003_companyba.py
|
|
31
41
|
shared_models/company_ba/migrations/__init__.py
|
|
32
42
|
shared_models/crypto_wallet/__init__.py
|
|
33
43
|
shared_models/crypto_wallet/apps.py
|
|
@@ -51,6 +61,8 @@ shared_models/customers/__init__.py
|
|
|
51
61
|
shared_models/customers/apps.py
|
|
52
62
|
shared_models/customers/enums.py
|
|
53
63
|
shared_models/customers/models.py
|
|
64
|
+
shared_models/customers/stage_history.py
|
|
65
|
+
shared_models/customers/stage_policy.py
|
|
54
66
|
shared_models/customers/migrations/0001_initial.py
|
|
55
67
|
shared_models/customers/migrations/0002_alter_customer_email_alter_customer_first_name_and_more.py
|
|
56
68
|
shared_models/customers/migrations/0004_customerauth_two_factor_backup_codes_and_more.py
|
|
@@ -64,6 +76,23 @@ shared_models/customers/migrations/0011_customerauth_reset_token_and_more.py
|
|
|
64
76
|
shared_models/customers/migrations/0012_alter_customer_email_alter_customer_first_name_and_more.py
|
|
65
77
|
shared_models/customers/migrations/0013_alter_customerauth_blocked_by_and_more.py
|
|
66
78
|
shared_models/customers/migrations/0014_alter_customer_options.py
|
|
79
|
+
shared_models/customers/migrations/0015_customer_is_fund_manager.py
|
|
80
|
+
shared_models/customers/migrations/0016_customer_risk_factors_customer_risk_level_and_more.py
|
|
81
|
+
shared_models/customers/migrations/0017_stagetransition.py
|
|
82
|
+
shared_models/customers/migrations/0018_backfill_stage_origins.py
|
|
83
|
+
shared_models/customers/migrations/0019_sales_stages.py
|
|
84
|
+
shared_models/customers/migrations/0020_seed_sales_stages.py
|
|
85
|
+
shared_models/customers/migrations/0021_sales_activity.py
|
|
86
|
+
shared_models/customers/migrations/0022_seed_sales_settings.py
|
|
87
|
+
shared_models/customers/migrations/0023_assignment_settings.py
|
|
88
|
+
shared_models/customers/migrations/0024_lead_score.py
|
|
89
|
+
shared_models/customers/migrations/0025_lead_score_shape.py
|
|
90
|
+
shared_models/customers/migrations/0026_assignment_team.py
|
|
91
|
+
shared_models/customers/migrations/0027_measure_definition.py
|
|
92
|
+
shared_models/customers/migrations/0028_sales_targets.py
|
|
93
|
+
shared_models/customers/migrations/0029_measure_evaluation_settings.py
|
|
94
|
+
shared_models/customers/migrations/0030_sales_control_surface.py
|
|
95
|
+
shared_models/customers/migrations/0031_customersettings_viewing_currency.py
|
|
67
96
|
shared_models/customers/migrations/__init__.py
|
|
68
97
|
shared_models/email_campaigns/__init__.py
|
|
69
98
|
shared_models/email_campaigns/apps.py
|
|
@@ -76,6 +105,16 @@ shared_models/email_log/apps.py
|
|
|
76
105
|
shared_models/email_log/models.py
|
|
77
106
|
shared_models/email_log/migrations/0001_initial.py
|
|
78
107
|
shared_models/email_log/migrations/__init__.py
|
|
108
|
+
shared_models/fund_tracking/__init__.py
|
|
109
|
+
shared_models/fund_tracking/apps.py
|
|
110
|
+
shared_models/fund_tracking/models.py
|
|
111
|
+
shared_models/fund_tracking/migrations/0001_initial.py
|
|
112
|
+
shared_models/fund_tracking/migrations/0002_wt3b_settings.py
|
|
113
|
+
shared_models/fund_tracking/migrations/0003_wt5_profit_classifier.py
|
|
114
|
+
shared_models/fund_tracking/migrations/0004_wt9_money_trail.py
|
|
115
|
+
shared_models/fund_tracking/migrations/0005_allow_untracked_withdrawal.py
|
|
116
|
+
shared_models/fund_tracking/migrations/0006_wt6_refusal_rules.py
|
|
117
|
+
shared_models/fund_tracking/migrations/__init__.py
|
|
79
118
|
shared_models/ib_commission/__init__.py
|
|
80
119
|
shared_models/ib_commission/apps.py
|
|
81
120
|
shared_models/ib_commission/models.py
|
|
@@ -92,18 +131,70 @@ shared_models/ib_commission/migrations/0010_alter_commissiondistribution_rule_an
|
|
|
92
131
|
shared_models/ib_commission/migrations/0011_alter_clientibmapping_agreement_and_more.py
|
|
93
132
|
shared_models/ib_commission/migrations/0012_clientibmapping_agreement_path_and_more.py
|
|
94
133
|
shared_models/ib_commission/migrations/0013_populate_agreement_path_for_existing_ibs.py
|
|
134
|
+
shared_models/ib_commission/migrations/0014_clientibmapping_idx_client_mapping_path_c_and_more.py
|
|
135
|
+
shared_models/ib_commission/migrations/0015_wt7_rebate_destination.py
|
|
95
136
|
shared_models/ib_commission/migrations/__init__.py
|
|
96
137
|
shared_models/ib_commission/model/ib_onboarding.py
|
|
97
138
|
shared_models/ib_commission/model/ib_questionnaire.py
|
|
98
139
|
shared_models/ib_commission/services/__init__.py
|
|
99
140
|
shared_models/ib_commission/services/commission_cache_service.py
|
|
100
141
|
shared_models/ib_commission/services/commission_calculator_service.py
|
|
142
|
+
shared_models/onboarding/__init__.py
|
|
143
|
+
shared_models/onboarding/apps.py
|
|
144
|
+
shared_models/onboarding/models.py
|
|
145
|
+
shared_models/onboarding/migrations/0001_initial.py
|
|
146
|
+
shared_models/onboarding/migrations/0002_onboardingkycrule.py
|
|
147
|
+
shared_models/onboarding/migrations/0003_alter_clientonboardingsubmission_options.py
|
|
148
|
+
shared_models/onboarding/migrations/0004_alter_onboardingkycrule_options_and_more.py
|
|
149
|
+
shared_models/onboarding/migrations/0005_remove_onboardingkycrule_uniq_onboarding_kyc_rule_gate_product_and_more.py
|
|
150
|
+
shared_models/onboarding/migrations/0006_onboardingkycrule_payment_gateway_and_more.py
|
|
151
|
+
shared_models/onboarding/migrations/0007_onboardingkycrule_unlock_on.py
|
|
152
|
+
shared_models/onboarding/migrations/0008_onboardingkycrule_audiences.py
|
|
153
|
+
shared_models/onboarding/migrations/0009_wt7_wallet_rail_choices.py
|
|
154
|
+
shared_models/onboarding/migrations/0010_r7_review_enforcement.py
|
|
155
|
+
shared_models/onboarding/migrations/__init__.py
|
|
156
|
+
shared_models/onboarding/model/__init__.py
|
|
157
|
+
shared_models/onboarding/model/acceptance.py
|
|
158
|
+
shared_models/onboarding/model/block.py
|
|
159
|
+
shared_models/onboarding/model/condition.py
|
|
160
|
+
shared_models/onboarding/model/declaration.py
|
|
161
|
+
shared_models/onboarding/model/document_requirement.py
|
|
162
|
+
shared_models/onboarding/model/draft.py
|
|
163
|
+
shared_models/onboarding/model/flow.py
|
|
164
|
+
shared_models/onboarding/model/kyc_rule.py
|
|
165
|
+
shared_models/onboarding/model/resolver.py
|
|
166
|
+
shared_models/onboarding/model/submission.py
|
|
167
|
+
shared_models/onboarding/model/version.py
|
|
101
168
|
shared_models/orders/__init__.py
|
|
102
169
|
shared_models/orders/apps.py
|
|
103
170
|
shared_models/orders/enums.py
|
|
104
171
|
shared_models/orders/models.py
|
|
105
172
|
shared_models/orders/migrations/0001_initial.py
|
|
173
|
+
shared_models/orders/migrations/0002_order_checkout_mode_order_sdk_url_and_more.py
|
|
174
|
+
shared_models/orders/migrations/0003_rename_order_to_paymentorder.py
|
|
175
|
+
shared_models/orders/migrations/0004_wt7_wallet_rails.py
|
|
106
176
|
shared_models/orders/migrations/__init__.py
|
|
177
|
+
shared_models/positions/__init__.py
|
|
178
|
+
shared_models/positions/apps.py
|
|
179
|
+
shared_models/positions/models.py
|
|
180
|
+
shared_models/positions/migrations/0001_initial.py
|
|
181
|
+
shared_models/positions/migrations/__init__.py
|
|
182
|
+
shared_models/promotions/__init__.py
|
|
183
|
+
shared_models/promotions/apps.py
|
|
184
|
+
shared_models/promotions/models.py
|
|
185
|
+
shared_models/promotions/migrations/0001_initial.py
|
|
186
|
+
shared_models/promotions/migrations/0002_seed_settings.py
|
|
187
|
+
shared_models/promotions/migrations/0003_banners.py
|
|
188
|
+
shared_models/promotions/migrations/0004_banner_ip_cap.py
|
|
189
|
+
shared_models/promotions/migrations/0005_global_controls.py
|
|
190
|
+
shared_models/promotions/migrations/0006_scoped_settings.py
|
|
191
|
+
shared_models/promotions/migrations/0007_cp_offers.py
|
|
192
|
+
shared_models/promotions/migrations/0008_promo_code_redemptions.py
|
|
193
|
+
shared_models/promotions/migrations/0009_promotion_currency.py
|
|
194
|
+
shared_models/promotions/migrations/0010_promotion_settings_clawback_send_lease.py
|
|
195
|
+
shared_models/promotions/migrations/__init__.py
|
|
196
|
+
shared_models/promotions/tests/__init__.py
|
|
197
|
+
shared_models/promotions/tests/test_promotion_models.py
|
|
107
198
|
shared_models/referrals/__init__.py
|
|
108
199
|
shared_models/referrals/apps.py
|
|
109
200
|
shared_models/referrals/models.py
|
|
@@ -112,7 +203,26 @@ shared_models/referrals/migrations/0002_alter_referralreward_payment_gateway_and
|
|
|
112
203
|
shared_models/referrals/migrations/0003_referralsource_agreement_path_referralsource_ib_path.py
|
|
113
204
|
shared_models/referrals/migrations/0004_populate_ib_paths_for_referral_sources.py
|
|
114
205
|
shared_models/referrals/migrations/__init__.py
|
|
206
|
+
shared_models/scoping/__init__.py
|
|
207
|
+
shared_models/scoping/apps.py
|
|
208
|
+
shared_models/scoping/models.py
|
|
209
|
+
shared_models/scoping/migrations/0001_initial.py
|
|
210
|
+
shared_models/scoping/migrations/0002_drop_scope_tables.py
|
|
211
|
+
shared_models/scoping/migrations/__init__.py
|
|
115
212
|
shared_models/services/group_resolver.py
|
|
213
|
+
shared_models/settings_core/__init__.py
|
|
214
|
+
shared_models/settings_core/apps.py
|
|
215
|
+
shared_models/settings_core/models.py
|
|
216
|
+
shared_models/settings_core/signals.py
|
|
217
|
+
shared_models/settings_core/migrations/0001_initial.py
|
|
218
|
+
shared_models/settings_core/migrations/0002_drop_approval_queue.py
|
|
219
|
+
shared_models/settings_core/migrations/0003_compliance_operate_permission.py
|
|
220
|
+
shared_models/settings_core/migrations/__init__.py
|
|
221
|
+
shared_models/symbols/__init__.py
|
|
222
|
+
shared_models/symbols/apps.py
|
|
223
|
+
shared_models/symbols/models.py
|
|
224
|
+
shared_models/symbols/migrations/0001_initial.py
|
|
225
|
+
shared_models/symbols/migrations/__init__.py
|
|
116
226
|
shared_models/system_settings/apps.py
|
|
117
227
|
shared_models/system_settings/serializers.py
|
|
118
228
|
shared_models/system_settings/migrations/0001_initial.py
|
|
@@ -134,6 +244,26 @@ shared_models/system_settings/migrations/0016_alter_emailconfiguration_options_a
|
|
|
134
244
|
shared_models/system_settings/migrations/0017_brokerconfiguration.py
|
|
135
245
|
shared_models/system_settings/migrations/0018_accounttype_demo_auto_deposit_amount.py
|
|
136
246
|
shared_models/system_settings/migrations/0019_paymentgatewayconfig_adapter_type_and_more.py
|
|
247
|
+
shared_models/system_settings/migrations/0020_accounttype_pamm_choices.py
|
|
248
|
+
shared_models/system_settings/migrations/0021_pammconfiguration.py
|
|
249
|
+
shared_models/system_settings/migrations/0022_pammconfiguration_pamm_subscription_approval_mode.py
|
|
250
|
+
shared_models/system_settings/migrations/0023_pammconfiguration_allow_force_unlock_and_more.py
|
|
251
|
+
shared_models/system_settings/migrations/0024_remove_pammconfiguration_pamm_enabled.py
|
|
252
|
+
shared_models/system_settings/migrations/0025_mt5_server_logins.py
|
|
253
|
+
shared_models/system_settings/migrations/0026_drop_tradingplatformserver_username.py
|
|
254
|
+
shared_models/system_settings/migrations/0027_brokerconfiguration_dashboard_default_mode_and_more.py
|
|
255
|
+
shared_models/system_settings/migrations/0028_brokerconfiguration_onboarding_engine_default_and_more.py
|
|
256
|
+
shared_models/system_settings/migrations/0029_brokerconfiguration_onboarding_email_verification_mode.py
|
|
257
|
+
shared_models/system_settings/migrations/0030_brokerconfiguration_compliance_gate_enabled.py
|
|
258
|
+
shared_models/system_settings/migrations/0031_brokerconfiguration_login_background_dark_url_and_more.py
|
|
259
|
+
shared_models/system_settings/migrations/0032_brokerconfiguration_background_color_and_more.py
|
|
260
|
+
shared_models/system_settings/migrations/0033_remove_brokerconfiguration_login_background_dark_url_and_more.py
|
|
261
|
+
shared_models/system_settings/migrations/0034_remove_brokerconfiguration_background_color_and_more.py
|
|
262
|
+
shared_models/system_settings/migrations/0035_brokerconfiguration_cp_risk_guardian_enabled_and_more.py
|
|
263
|
+
shared_models/system_settings/migrations/0036_mt5processorconfiguration.py
|
|
264
|
+
shared_models/system_settings/migrations/0037_mt5operationjournal.py
|
|
265
|
+
shared_models/system_settings/migrations/0038_wt3b_fund_tracking_columns.py
|
|
266
|
+
shared_models/system_settings/migrations/0039_wt7_allowed_destinations.py
|
|
137
267
|
shared_models/system_settings/migrations/__init__.py
|
|
138
268
|
shared_models/system_settings/models/__init__.py
|
|
139
269
|
shared_models/system_settings/models/account_sequence.py
|
|
@@ -142,9 +272,17 @@ shared_models/system_settings/models/base.py
|
|
|
142
272
|
shared_models/system_settings/models/broker_config.py
|
|
143
273
|
shared_models/system_settings/models/email.py
|
|
144
274
|
shared_models/system_settings/models/group_configurations.py
|
|
275
|
+
shared_models/system_settings/models/mt5_login.py
|
|
276
|
+
shared_models/system_settings/models/mt5_operation_journal.py
|
|
277
|
+
shared_models/system_settings/models/mt5_processor_config.py
|
|
278
|
+
shared_models/system_settings/models/pamm_config.py
|
|
145
279
|
shared_models/system_settings/models/payment_methods.py
|
|
280
|
+
shared_models/system_settings/models/risk_guardian_config.py
|
|
146
281
|
shared_models/system_settings/models/trading_platform.py
|
|
147
282
|
shared_models/system_settings/models/transaction_configs.py
|
|
283
|
+
shared_models/system_settings/tests/__init__.py
|
|
284
|
+
shared_models/system_settings/tests/test_mt5_login.py
|
|
285
|
+
shared_models/system_settings/tests/test_mt5_operation_journal.py
|
|
148
286
|
shared_models/trading/__init__.py
|
|
149
287
|
shared_models/trading/apps.py
|
|
150
288
|
shared_models/trading/models.py
|
|
@@ -153,6 +291,7 @@ shared_models/trading/migrations/0002_alter_deal_id.py
|
|
|
153
291
|
shared_models/trading/migrations/0003_alter_deal_id.py
|
|
154
292
|
shared_models/trading/migrations/0004_alter_deal_id.py
|
|
155
293
|
shared_models/trading/migrations/0005_deal_idx_deal_position_lookup_and_more.py
|
|
294
|
+
shared_models/trading/migrations/0006_wt5_deal_mirror_watermark.py
|
|
156
295
|
shared_models/trading/migrations/__init__.py
|
|
157
296
|
shared_models/transactions/__init__.py
|
|
158
297
|
shared_models/transactions/apps.py
|
|
@@ -172,6 +311,8 @@ shared_models/transactions/migrations/0010_alter_transaction_payment_method.py
|
|
|
172
311
|
shared_models/transactions/migrations/0011_alter_transaction_options.py
|
|
173
312
|
shared_models/transactions/migrations/0012_transaction_transaction_custome_fb8ec8_idx.py
|
|
174
313
|
shared_models/transactions/migrations/0013_transaction_order.py
|
|
314
|
+
shared_models/transactions/migrations/0014_wt7_wallet_rails.py
|
|
315
|
+
shared_models/transactions/migrations/0015_fx_rates.py
|
|
175
316
|
shared_models/transactions/migrations/__init__.py
|
|
176
317
|
shared_models/ui_elements/__init__.py
|
|
177
318
|
shared_models/ui_elements/apps.py
|
|
@@ -203,4 +344,25 @@ shared_models/users/migrations/0012_alter_crmuser_managers_usersettings_is_2fa_e
|
|
|
203
344
|
shared_models/users/migrations/0013_usersettings_is_2fa_enabled_and_more.py
|
|
204
345
|
shared_models/users/migrations/0014_alter_crmuser_groups_alter_crmuser_user_permissions_and_more.py
|
|
205
346
|
shared_models/users/migrations/0015_alter_crmuser_options.py
|
|
206
|
-
shared_models/users/migrations/
|
|
347
|
+
shared_models/users/migrations/0016_usersettings_dashboard_mode.py
|
|
348
|
+
shared_models/users/migrations/0017_usersettings_viewing_currency.py
|
|
349
|
+
shared_models/users/migrations/__init__.py
|
|
350
|
+
shared_models/wallets/__init__.py
|
|
351
|
+
shared_models/wallets/apps.py
|
|
352
|
+
shared_models/wallets/countries.py
|
|
353
|
+
shared_models/wallets/models.py
|
|
354
|
+
shared_models/wallets/migrations/0001_initial.py
|
|
355
|
+
shared_models/wallets/migrations/0002_wallettransfer.py
|
|
356
|
+
shared_models/wallets/migrations/0003_wt3b_control_surface.py
|
|
357
|
+
shared_models/wallets/migrations/0004_wt7_rails.py
|
|
358
|
+
shared_models/wallets/migrations/0005_wt12_sweep_transaction.py
|
|
359
|
+
shared_models/wallets/migrations/0006_wt17_transfer_decisions.py
|
|
360
|
+
shared_models/wallets/migrations/0007_wt14_balance_history.py
|
|
361
|
+
shared_models/wallets/migrations/0008_wt10_admin.py
|
|
362
|
+
shared_models/wallets/migrations/0009_wt18_discrepancy_runs.py
|
|
363
|
+
shared_models/wallets/migrations/0010_internal_transfer_auto_refund.py
|
|
364
|
+
shared_models/wallets/migrations/0011_wallettransfer_approval_note.py
|
|
365
|
+
shared_models/wallets/migrations/0012_scope_on_rules.py
|
|
366
|
+
shared_models/wallets/migrations/__init__.py
|
|
367
|
+
shared_models/wallets/tests/__init__.py
|
|
368
|
+
shared_models/wallets/tests/test_wallet_models.py
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages # Import find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name='fx-shared-models',
|
|
5
|
-
version='0.2.
|
|
5
|
+
version='0.2.99', # FX slice 3 — Promotion.currency; PromotionSettings.clawback_send_lease_seconds
|
|
6
6
|
packages=find_packages(include=['shared_models', 'shared_models.*']), # Find packages under the shared_models directory
|
|
7
7
|
install_requires=[
|
|
8
8
|
'Django>=4.2', # Match the version from requirements.txt if possible
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generated by Django 4.2.20 on 2026-07-21 10:00
|
|
2
|
+
|
|
3
|
+
import django.core.validators
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
import django.db.models.deletion
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
('accounts', '0007_alter_account_options'),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.CreateModel(
|
|
16
|
+
name='AccountRiskSettings',
|
|
17
|
+
fields=[
|
|
18
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
19
|
+
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
20
|
+
('updated_at', models.DateTimeField(auto_now=True)),
|
|
21
|
+
('created_by', models.CharField(blank=True, max_length=255, null=True)),
|
|
22
|
+
('updated_by', models.CharField(blank=True, max_length=255, null=True)),
|
|
23
|
+
('daily_loss_limit', models.DecimalField(blank=True, decimal_places=2, default=None, help_text='Account currency; null = not set.', max_digits=20, null=True, validators=[django.core.validators.MinValueValidator(0)])),
|
|
24
|
+
('max_trades_per_day', models.IntegerField(blank=True, default=None, help_text='null = not set.', null=True, validators=[django.core.validators.MinValueValidator(1)])),
|
|
25
|
+
('account', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='risk_settings', to='accounts.account')),
|
|
26
|
+
],
|
|
27
|
+
options={
|
|
28
|
+
'verbose_name': 'Account Risk Settings',
|
|
29
|
+
'verbose_name_plural': 'Account Risk Settings',
|
|
30
|
+
'db_table': 'account_risk_settings',
|
|
31
|
+
},
|
|
32
|
+
),
|
|
33
|
+
]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from django.db import migrations, models
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Migration(migrations.Migration):
|
|
5
|
+
"""Add Account.archived_at.
|
|
6
|
+
|
|
7
|
+
Deliberately NOT backfilled. The only candidate source is updated_at, which
|
|
8
|
+
auto_now bumps on every later edit — an MT5 cache refresh, a trading-status
|
|
9
|
+
flip, a leverage change — so it is not the archive date and backfilling from
|
|
10
|
+
it would write an unfalsifiable wrong date into every historic row. An
|
|
11
|
+
AuditLog-derived backfill was rejected too: the customer deletion service
|
|
12
|
+
archives accounts in bulk without a per-account audit row, so it would fill
|
|
13
|
+
some rows and silently miss others, which is worse than a uniform NULL.
|
|
14
|
+
|
|
15
|
+
NULL therefore reads as "archived before this column existed", and reports
|
|
16
|
+
say so rather than pretending to know.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
dependencies = [
|
|
20
|
+
('accounts', '0008_accountrisksettings'),
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
operations = [
|
|
24
|
+
migrations.AddField(
|
|
25
|
+
model_name='account',
|
|
26
|
+
name='archived_at',
|
|
27
|
+
field=models.DateTimeField(
|
|
28
|
+
blank=True,
|
|
29
|
+
null=True,
|
|
30
|
+
help_text=(
|
|
31
|
+
'When this account was archived. NULL means either that '
|
|
32
|
+
'the account is not archived, or that it was archived '
|
|
33
|
+
'before this column existed. It is deliberately not '
|
|
34
|
+
'backfilled: updated_at moves on every later edit, so '
|
|
35
|
+
'backfilling from it would bake an unfalsifiable wrong '
|
|
36
|
+
'date into the record.'
|
|
37
|
+
),
|
|
38
|
+
),
|
|
39
|
+
),
|
|
40
|
+
migrations.AddIndex(
|
|
41
|
+
model_name='account',
|
|
42
|
+
index=models.Index(
|
|
43
|
+
fields=['archived_at'],
|
|
44
|
+
name='accounts_archived_at_idx',
|
|
45
|
+
),
|
|
46
|
+
),
|
|
47
|
+
]
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
from django.core.validators import MinValueValidator
|
|
2
|
+
from django.db import models
|
|
3
|
+
from django.utils import timezone
|
|
4
|
+
from ..common.base import BaseModel
|
|
5
|
+
from ..services.group_resolver import MT5GroupResolverService
|
|
6
|
+
|
|
7
|
+
class Account(BaseModel):
|
|
8
|
+
"""
|
|
9
|
+
Trading account model
|
|
10
|
+
"""
|
|
11
|
+
id = models.AutoField(primary_key=True, editable=False)
|
|
12
|
+
|
|
13
|
+
# Relations
|
|
14
|
+
server = models.ForeignKey('system_settings.TradingPlatformServer',
|
|
15
|
+
on_delete=models.PROTECT,
|
|
16
|
+
related_name='accounts')
|
|
17
|
+
account_type = models.ForeignKey('system_settings.AccountType',
|
|
18
|
+
on_delete=models.PROTECT,
|
|
19
|
+
related_name='accounts')
|
|
20
|
+
customer = models.ForeignKey('customers.Customer',
|
|
21
|
+
on_delete=models.CASCADE,
|
|
22
|
+
related_name='accounts')
|
|
23
|
+
|
|
24
|
+
# Account Details
|
|
25
|
+
login = models.IntegerField()
|
|
26
|
+
is_active = models.BooleanField(default=True)
|
|
27
|
+
is_archived = models.BooleanField(default=False)
|
|
28
|
+
archived_at = models.DateTimeField(
|
|
29
|
+
null=True,
|
|
30
|
+
blank=True,
|
|
31
|
+
help_text=(
|
|
32
|
+
"When this account was archived. NULL means either that the "
|
|
33
|
+
"account is not archived, or that it was archived before this "
|
|
34
|
+
"column existed. It is deliberately not backfilled: updated_at "
|
|
35
|
+
"moves on every later edit, so backfilling from it would bake an "
|
|
36
|
+
"unfalsifiable wrong date into the record."
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
is_trading_enabled = models.BooleanField(default=True)
|
|
40
|
+
|
|
41
|
+
# Group Configuration
|
|
42
|
+
is_swap_free = models.BooleanField(
|
|
43
|
+
default=False,
|
|
44
|
+
help_text="Whether this account uses Islamic (swap-free) groups"
|
|
45
|
+
)
|
|
46
|
+
has_bonus = models.BooleanField(
|
|
47
|
+
default=False,
|
|
48
|
+
help_text="Whether this account has bonus applied"
|
|
49
|
+
)
|
|
50
|
+
has_markup = models.BooleanField(
|
|
51
|
+
default=False,
|
|
52
|
+
help_text="Whether this account has markup applied"
|
|
53
|
+
)
|
|
54
|
+
currency = models.CharField(
|
|
55
|
+
max_length=3,
|
|
56
|
+
default='USD',
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
class Meta:
|
|
60
|
+
app_label = 'accounts'
|
|
61
|
+
db_table = 'accounts'
|
|
62
|
+
verbose_name = 'Account'
|
|
63
|
+
verbose_name_plural = 'Accounts'
|
|
64
|
+
unique_together = [['login', 'server']]
|
|
65
|
+
indexes = [
|
|
66
|
+
models.Index(fields=['login', 'server']),
|
|
67
|
+
models.Index(fields=['customer']),
|
|
68
|
+
models.Index(fields=['account_type']),
|
|
69
|
+
# The archived-accounts report windows on this column.
|
|
70
|
+
models.Index(fields=['archived_at'], name='accounts_archived_at_idx'),
|
|
71
|
+
]
|
|
72
|
+
permissions = [
|
|
73
|
+
# Base CRUD permissions (auto-generated by Django)
|
|
74
|
+
# view_account, add_account, change_account, delete_account
|
|
75
|
+
|
|
76
|
+
# Account-specific action permissions
|
|
77
|
+
("enable_account_trading", "Can enable/disable account trading"),
|
|
78
|
+
("archive_account", "Can archive account"),
|
|
79
|
+
("reset_account_password", "Can reset account password"),
|
|
80
|
+
("change_account_leverage", "Can change account leverage"),
|
|
81
|
+
("change_account_group", "Can change account group"),
|
|
82
|
+
("manage_account_bonus", "Can manage account bonus settings"),
|
|
83
|
+
("manage_account_markup", "Can manage account markup settings"),
|
|
84
|
+
("change_account_swap_status", "Can change swap-free status"),
|
|
85
|
+
("view_account_trading_activity", "Can view account trading activity (positions, orders, deals)"),
|
|
86
|
+
("view_account_analytics", "Can view account analytics and charts"),
|
|
87
|
+
]
|
|
88
|
+
|
|
89
|
+
@classmethod
|
|
90
|
+
def from_db(cls, db, field_names, values):
|
|
91
|
+
instance = super().from_db(db, field_names, values)
|
|
92
|
+
instance._snapshot_archive_state(field_names)
|
|
93
|
+
return instance
|
|
94
|
+
|
|
95
|
+
def refresh_from_db(self, using=None, fields=None, **kwargs):
|
|
96
|
+
super().refresh_from_db(using=using, fields=fields, **kwargs)
|
|
97
|
+
self._snapshot_archive_state(fields)
|
|
98
|
+
|
|
99
|
+
def _snapshot_archive_state(self, field_names=None):
|
|
100
|
+
"""Remember the stored is_archived so save() can spot a transition.
|
|
101
|
+
|
|
102
|
+
A partial load that did not fetch the column leaves the snapshot alone
|
|
103
|
+
rather than recording an in-memory value as if it came from the row.
|
|
104
|
+
"""
|
|
105
|
+
if field_names is None or 'is_archived' in field_names:
|
|
106
|
+
self._archived_snapshot = self.is_archived
|
|
107
|
+
|
|
108
|
+
def save(self, *args, **kwargs):
|
|
109
|
+
"""Keep archived_at in step with is_archived.
|
|
110
|
+
|
|
111
|
+
The stamp lives here rather than at each call site because is_archived
|
|
112
|
+
has more writers than the archive action: it is also a writable field
|
|
113
|
+
on the CRM account serializer, so a plain PATCH flips it. A call-site
|
|
114
|
+
guard would police only the call sites it knew about, and the column
|
|
115
|
+
would silently go NULL for every other path.
|
|
116
|
+
|
|
117
|
+
It fires on the TRANSITION, not on the state. Stamping whenever the
|
|
118
|
+
flag is set and the date is missing would quietly backfill every row
|
|
119
|
+
archived before this column existed, giving it the date of whatever
|
|
120
|
+
unrelated edit happened to touch it next — the exact invented date the
|
|
121
|
+
migration refused to write. A row whose archive date is unknown stays
|
|
122
|
+
NULL until something actually re-archives it.
|
|
123
|
+
|
|
124
|
+
Queryset .update() bypasses save() entirely, so the one bulk writer
|
|
125
|
+
(the customer deletion service) still has to stamp explicitly.
|
|
126
|
+
|
|
127
|
+
An explicitly supplied archived_at is respected, so a backfill or a
|
|
128
|
+
test can set a past date without save() overwriting it.
|
|
129
|
+
"""
|
|
130
|
+
was_archived = (
|
|
131
|
+
False if self._state.adding
|
|
132
|
+
else getattr(self, '_archived_snapshot', None)
|
|
133
|
+
)
|
|
134
|
+
if self.is_archived and was_archived is False:
|
|
135
|
+
if self.archived_at is None:
|
|
136
|
+
self.archived_at = timezone.now()
|
|
137
|
+
self._add_update_field(kwargs, 'archived_at')
|
|
138
|
+
elif not self.is_archived and was_archived is True:
|
|
139
|
+
if self.archived_at is not None:
|
|
140
|
+
self.archived_at = None
|
|
141
|
+
self._add_update_field(kwargs, 'archived_at')
|
|
142
|
+
super().save(*args, **kwargs)
|
|
143
|
+
self._archived_snapshot = self.is_archived
|
|
144
|
+
|
|
145
|
+
@staticmethod
|
|
146
|
+
def _add_update_field(kwargs, name):
|
|
147
|
+
"""Include a field we just changed in an explicit update_fields list.
|
|
148
|
+
|
|
149
|
+
Without this, save(update_fields=['is_archived']) would flip the flag
|
|
150
|
+
and drop the timestamp on the floor.
|
|
151
|
+
"""
|
|
152
|
+
update_fields = kwargs.get('update_fields')
|
|
153
|
+
if update_fields is not None and name not in update_fields:
|
|
154
|
+
kwargs['update_fields'] = list(update_fields) + [name]
|
|
155
|
+
|
|
156
|
+
def __str__(self):
|
|
157
|
+
return f"Account {self.login} ({self.customer.email})"
|
|
158
|
+
|
|
159
|
+
@property
|
|
160
|
+
def current_group(self):
|
|
161
|
+
"""Get the current MT5 group path for this account"""
|
|
162
|
+
return MT5GroupResolverService.resolve_group(self)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class AccountRiskSettings(BaseModel):
|
|
166
|
+
"""CP self-service per-account risk guardrails. One row per account; null = not set."""
|
|
167
|
+
|
|
168
|
+
account = models.OneToOneField(
|
|
169
|
+
Account,
|
|
170
|
+
on_delete=models.CASCADE,
|
|
171
|
+
related_name='risk_settings',
|
|
172
|
+
)
|
|
173
|
+
daily_loss_limit = models.DecimalField(
|
|
174
|
+
max_digits=20, decimal_places=2, null=True, blank=True, default=None,
|
|
175
|
+
validators=[MinValueValidator(0)],
|
|
176
|
+
help_text='Account currency; null = not set.',
|
|
177
|
+
)
|
|
178
|
+
max_trades_per_day = models.IntegerField(
|
|
179
|
+
null=True, blank=True, default=None,
|
|
180
|
+
validators=[MinValueValidator(1)],
|
|
181
|
+
help_text='null = not set.',
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
class Meta:
|
|
185
|
+
app_label = 'accounts'
|
|
186
|
+
db_table = 'account_risk_settings'
|
|
187
|
+
verbose_name = 'Account Risk Settings'
|
|
188
|
+
verbose_name_plural = 'Account Risk Settings'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
default_app_config = 'shared_models.balances.apps.BalancesConfig'
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from decimal import Decimal
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
initial = True
|
|
10
|
+
|
|
11
|
+
dependencies = [
|
|
12
|
+
('accounts', '0001_initial'),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.CreateModel(
|
|
17
|
+
name='Balance',
|
|
18
|
+
fields=[
|
|
19
|
+
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
|
20
|
+
('balance', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
21
|
+
('credit', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
22
|
+
('equity', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
23
|
+
('margin', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
24
|
+
('margin_free', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
25
|
+
('margin_level', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
26
|
+
('profit', models.DecimalField(decimal_places=10, default=Decimal('0'), max_digits=20)),
|
|
27
|
+
('timestamp', models.DateTimeField()),
|
|
28
|
+
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
29
|
+
('updated_at', models.DateTimeField(auto_now=True)),
|
|
30
|
+
('account', models.ForeignKey(
|
|
31
|
+
db_column='account_id',
|
|
32
|
+
on_delete=django.db.models.deletion.PROTECT,
|
|
33
|
+
related_name='balances',
|
|
34
|
+
to='accounts.account',
|
|
35
|
+
)),
|
|
36
|
+
],
|
|
37
|
+
options={
|
|
38
|
+
'verbose_name': 'Balance',
|
|
39
|
+
'verbose_name_plural': 'Balances',
|
|
40
|
+
'db_table': 'balances',
|
|
41
|
+
},
|
|
42
|
+
),
|
|
43
|
+
]
|