mango-models 1.0.0__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.
- DataFactory/__init__.py +2 -0
- DataFactory/sqlinterface.cpython-310-x86_64-linux-gnu.so +0 -0
- mango_models-1.0.0.dist-info/METADATA +13 -0
- mango_models-1.0.0.dist-info/RECORD +143 -0
- mango_models-1.0.0.dist-info/WHEEL +5 -0
- mango_models-1.0.0.dist-info/top_level.txt +2 -0
- models/__init__.py +4 -0
- models/alert_providers.cpython-310-x86_64-linux-gnu.so +0 -0
- models/api.py +85 -0
- models/approval_rate.cpython-310-x86_64-linux-gnu.so +0 -0
- models/banks.cpython-310-x86_64-linux-gnu.so +0 -0
- models/billing_models.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bins.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/__init__.py +8 -0
- models/bro_clicks/aff_stats.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/alerts.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/binrouter.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/clicks.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/conversions.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/error_log.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/initial_routes.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/__init__.py +7 -0
- models/bro_clicks/load_balancer/compile.py +17 -0
- models/bro_clicks/load_balancer/v1.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v1.py +232 -0
- models/bro_clicks/load_balancer/v2.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v2.py +137 -0
- models/bro_clicks/load_balancer/v3.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v3.py +405 -0
- models/bro_clicks/load_balancer/v4.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v4.py +151 -0
- models/bro_clicks/load_balancer/v5.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v5.py +139 -0
- models/bro_clicks/load_balancer/v6.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v6.py +195 -0
- models/bro_clicks/load_balancer/v7.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/load_balancer/v7.py +315 -0
- models/bro_clicks/load_balancer/v8.py +8 -0
- models/bro_clicks/scrub_settings.cpython-310-x86_64-linux-gnu.so +0 -0
- models/bro_clicks/splitter.cpython-310-x86_64-linux-gnu.so +0 -0
- models/campaign_balancer.cpython-310-x86_64-linux-gnu.so +0 -0
- models/campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
- models/capfill.cpython-310-x86_64-linux-gnu.so +0 -0
- models/cb911/__init__.py +2 -0
- models/cb911/alerts.cpython-310-x86_64-linux-gnu.so +0 -0
- models/cb911/cb_struc.cpython-310-x86_64-linux-gnu.so +0 -0
- models/cb911/chargebacks.cpython-310-x86_64-linux-gnu.so +0 -0
- models/clients.cpython-310-x86_64-linux-gnu.so +0 -0
- models/color_index.cpython-310-x86_64-linux-gnu.so +0 -0
- models/config.py +1 -0
- models/corp_cascade.cpython-310-x86_64-linux-gnu.so +0 -0
- models/corps.cpython-310-x86_64-linux-gnu.so +0 -0
- models/crm_errors.cpython-310-x86_64-linux-gnu.so +0 -0
- models/custom_shipping.cpython-310-x86_64-linux-gnu.so +0 -0
- models/db.cpython-310-x86_64-linux-gnu.so +0 -0
- models/discount_stats.cpython-310-x86_64-linux-gnu.so +0 -0
- models/discounter.cpython-310-x86_64-linux-gnu.so +0 -0
- models/email_reconfs.cpython-310-x86_64-linux-gnu.so +0 -0
- models/exception_log.cpython-310-x86_64-linux-gnu.so +0 -0
- models/filter_index.cpython-310-x86_64-linux-gnu.so +0 -0
- models/gateway_providers.cpython-310-x86_64-linux-gnu.so +0 -0
- models/gateways.cpython-310-x86_64-linux-gnu.so +0 -0
- models/hard_declines.cpython-310-x86_64-linux-gnu.so +0 -0
- models/initials.cpython-310-x86_64-linux-gnu.so +0 -0
- models/instance_data.cpython-310-x86_64-linux-gnu.so +0 -0
- models/invoices.cpython-310-x86_64-linux-gnu.so +0 -0
- models/iso.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/__init__.py +17 -0
- models/konn/campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/composite.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/config.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/customers.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/fullfillment_items.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/gateways.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/hybrid.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/hybrid_campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/hybrid_merchants.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/hybrid_notes.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/kk_struc.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/notes.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/order_items.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/orders.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/paysources.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/products.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/purchases.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/transaction_items.cpython-310-x86_64-linux-gnu.so +0 -0
- models/konn/transactions.cpython-310-x86_64-linux-gnu.so +0 -0
- models/lime/__init__.py +3 -0
- models/lime/compile.py +13 -0
- models/lime/hybrid.py +28 -0
- models/lime/orders.py +52 -0
- models/logga.cpython-310-x86_64-linux-gnu.so +0 -0
- models/master_campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
- models/mc_promo.cpython-310-x86_64-linux-gnu.so +0 -0
- models/mids.cpython-310-x86_64-linux-gnu.so +0 -0
- models/offer_globals.cpython-310-x86_64-linux-gnu.so +0 -0
- models/offers.cpython-310-x86_64-linux-gnu.so +0 -0
- models/order_actions.cpython-310-x86_64-linux-gnu.so +0 -0
- models/order_cycles.cpython-310-x86_64-linux-gnu.so +0 -0
- models/order_processing.cpython-310-x86_64-linux-gnu.so +0 -0
- models/orders.cpython-310-x86_64-linux-gnu.so +0 -0
- models/partitioner.cpython-310-x86_64-linux-gnu.so +0 -0
- models/pixels.cpython-310-x86_64-linux-gnu.so +0 -0
- models/prices.cpython-310-x86_64-linux-gnu.so +0 -0
- models/processing_error_log.cpython-310-x86_64-linux-gnu.so +0 -0
- models/processor.cpython-310-x86_64-linux-gnu.so +0 -0
- models/processor_settings.cpython-310-x86_64-linux-gnu.so +0 -0
- models/processors.cpython-310-x86_64-linux-gnu.so +0 -0
- models/products.cpython-310-x86_64-linux-gnu.so +0 -0
- models/prospects.cpython-310-x86_64-linux-gnu.so +0 -0
- models/providers.cpython-310-x86_64-linux-gnu.so +0 -0
- models/rb_set.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/__init__.py +1 -0
- models/reporting_update/affid_report_update.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/alert_provider_patch.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/assigned_cpa_table_update.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/continuity_update.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/delete_duplicate.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/filter_box_updates.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/refund_parser.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/revenue_orders_update.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reporting_update/revenue_update.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/__init__.py +3 -0
- models/reports/cap.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/dependencies.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/reporting_alerts.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/__init__.py +7 -0
- models/reports/table_reports/affid_report.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/approval_report.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/bin_report.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/continuity_report.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/impact_reports.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/inactive_report.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/table_reports/mtd_report.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/traffic.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/traffic_reporting.cpython-310-x86_64-linux-gnu.so +0 -0
- models/reports/widgets.cpython-310-x86_64-linux-gnu.so +0 -0
- models/revenue.cpython-310-x86_64-linux-gnu.so +0 -0
- models/test_customers.cpython-310-x86_64-linux-gnu.so +0 -0
- models/transactions.cpython-310-x86_64-linux-gnu.so +0 -0
- models/users.cpython-310-x86_64-linux-gnu.so +0 -0
- models/vaultx/__init__.py +2 -0
- models/vaultx/ssc_cont.cpython-310-x86_64-linux-gnu.so +0 -0
DataFactory/__init__.py
ADDED
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mango-models
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Author: Kelly Kapowski
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Requires-Dist: psycopg2
|
|
7
|
+
Requires-Dist: pandas==1.5.3
|
|
8
|
+
Requires-Dist: SQLAlchemy==1.*
|
|
9
|
+
Requires-Dist: Cython
|
|
10
|
+
Requires-Dist: cryptography<=42.0.8
|
|
11
|
+
Requires-Dist: requests
|
|
12
|
+
Requires-Dist: sshtunnel
|
|
13
|
+
Requires-Dist: keyrings.google.artifactregistry-auth
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
DataFactory/__init__.py,sha256=26UWatnbm6ZIwQMuu9NNzQ0IW1ACO4Oe9caModuTpWM,4
|
|
2
|
+
DataFactory/sqlinterface.cpython-310-x86_64-linux-gnu.so,sha256=iMnQK1bL6_kLsC-6v3WYHfB8-36ayrTvJ1Yp-zZJm_Y,132304
|
|
3
|
+
models/__init__.py,sha256=RWIDbgmQbD5RfRRrKWNYPuC4SL7xCuuo61CSBSuVBLA,84
|
|
4
|
+
models/alert_providers.cpython-310-x86_64-linux-gnu.so,sha256=8cbqTisWoDq3kt5Yksh95UVxjheb30mgDYtfRwSNmvY,53584
|
|
5
|
+
models/api.py,sha256=axaAtUwq1G7RL1ptXGtkuo0MHdp7LUWNlbKBOO5_ty8,2186
|
|
6
|
+
models/approval_rate.cpython-310-x86_64-linux-gnu.so,sha256=cuk3MxuBz6YcnVDwvoYAbNY16887BO3OE37nsHGJXrE,82576
|
|
7
|
+
models/banks.cpython-310-x86_64-linux-gnu.so,sha256=1R2QCsz5mBhmSbchQMkrkhxS7V-7GHsaAdsqJaSj13I,49456
|
|
8
|
+
models/billing_models.cpython-310-x86_64-linux-gnu.so,sha256=ARG6CcfpN5xOKhOOx5_exxxLnI-csdes3-9t7YnVIoQ,57744
|
|
9
|
+
models/bins.cpython-310-x86_64-linux-gnu.so,sha256=Z9kxQQONegHHugsP4Zxq5R-5Tv8bqX3ovKAWNaKC4m0,140272
|
|
10
|
+
models/campaign_balancer.cpython-310-x86_64-linux-gnu.so,sha256=WcpiccN2MBJRcFt4St6HI36xXkGLgpJPO07bMvgYUVo,49456
|
|
11
|
+
models/campaigns.cpython-310-x86_64-linux-gnu.so,sha256=GxsfVPksEK9KBAUPJzeXNdU-C6xMAE0WHRtvhQ05AEA,131760
|
|
12
|
+
models/capfill.cpython-310-x86_64-linux-gnu.so,sha256=nJRPqA0lyXzKFUnXEdGhv5oTPJJEK4QTy122ytLvc1A,53584
|
|
13
|
+
models/clients.cpython-310-x86_64-linux-gnu.so,sha256=-WATaOaNdHfkS8Wd2cVYFXT0njXFB2gjmC5saM6eJXA,70096
|
|
14
|
+
models/color_index.cpython-310-x86_64-linux-gnu.so,sha256=LiJtlIXu_uCBsUeIRRuTD6CEHE3fmiaH2o1qWCN03M8,61904
|
|
15
|
+
models/config.py,sha256=nn7CuzxFmJO_0A8qq5Qr3_iU9ioBaIZw9cDmAPi0ii4,15
|
|
16
|
+
models/corp_cascade.cpython-310-x86_64-linux-gnu.so,sha256=cHythFUN4SbH6jrbmhi_xmVkeCeiUfPRw-7ToDLEVFw,234992
|
|
17
|
+
models/corps.cpython-310-x86_64-linux-gnu.so,sha256=YoxVk7kCQ88rhxAjhdmEUabdb3cDFn6z9zG_exwiUvI,65968
|
|
18
|
+
models/crm_errors.cpython-310-x86_64-linux-gnu.so,sha256=WGfy2H7O8_mnIZFZgiPf9cMOCp0ZI1bjZzq5sBIA6C8,70064
|
|
19
|
+
models/custom_shipping.cpython-310-x86_64-linux-gnu.so,sha256=IOae0wwuTTYrLvwF-GtsugmoTHPIJDYXZtsy6u1Vnck,53584
|
|
20
|
+
models/db.cpython-310-x86_64-linux-gnu.so,sha256=NqYKBd2UImyDqI8HSJsvrWqMQmyP5m6CVGdU2T7VKw8,466032
|
|
21
|
+
models/discount_stats.cpython-310-x86_64-linux-gnu.so,sha256=Ltl7QBLELaXPtaiT646OzVDQx635C1fuU2zg1vc2RGo,65904
|
|
22
|
+
models/discounter.cpython-310-x86_64-linux-gnu.so,sha256=heFsl-5p6Aj3_c61SLV8rGMJHaHuZHw4vGjYvcWA9sM,563088
|
|
23
|
+
models/email_reconfs.cpython-310-x86_64-linux-gnu.so,sha256=94zdayBhSsKpat0NjV3zCvaaN5qESHzdXHC8ieRnlXo,49456
|
|
24
|
+
models/exception_log.cpython-310-x86_64-linux-gnu.so,sha256=jMpsp4PHeXeIQJqXfzl5o7gnxC2cPR2BFTRf4ISRWMY,53584
|
|
25
|
+
models/filter_index.cpython-310-x86_64-linux-gnu.so,sha256=gCG8iXXmGAeG6Lc3ef7gKkNYnZwYXLKd7_7kLeiEOlc,61904
|
|
26
|
+
models/gateway_providers.cpython-310-x86_64-linux-gnu.so,sha256=SuulKQ6M1gg-FmayxAgStYUVgiZSALUripqka9-pPsY,49456
|
|
27
|
+
models/gateways.cpython-310-x86_64-linux-gnu.so,sha256=USKi5KmV9_1J2TATnD3Ru4YzZ79TKwnMrthLhY99YSE,177424
|
|
28
|
+
models/hard_declines.cpython-310-x86_64-linux-gnu.so,sha256=0miuF8rPJk2U2FyN9y4edlAQbdPrt7_AHDM574ZXi-A,53616
|
|
29
|
+
models/initials.cpython-310-x86_64-linux-gnu.so,sha256=0qaOMn5OmYl-TvjsTOx3BcsDjF0YKg2nkbXsoHH6SB0,82416
|
|
30
|
+
models/instance_data.cpython-310-x86_64-linux-gnu.so,sha256=_ZErBHp7SyYGEWvcgaJ_oIyH-dMPlpqz1_8gcScnEU0,82928
|
|
31
|
+
models/invoices.cpython-310-x86_64-linux-gnu.so,sha256=s-v-rMlGY4nwmo0H8iAUV1Tph5-pnOpBGcSfj3aq4So,49456
|
|
32
|
+
models/iso.cpython-310-x86_64-linux-gnu.so,sha256=W71a3moHGGCIsmIYrciMnAMHfAWd8v8lNY0KkvtHpY8,49456
|
|
33
|
+
models/logga.cpython-310-x86_64-linux-gnu.so,sha256=OJ2M_WqJc4gkL9YRejxsCSKy_wOdRHL3PbWmkJmlH1c,98832
|
|
34
|
+
models/master_campaigns.cpython-310-x86_64-linux-gnu.so,sha256=uLrRmCKv47C5s7VxhM6o_rvSZgpv2kIQQwDxn4fsqiw,57712
|
|
35
|
+
models/mc_promo.cpython-310-x86_64-linux-gnu.so,sha256=onwqx2vq8z20Hrz9BPXELyRjpOVmkxHtARIFULQjaeE,90768
|
|
36
|
+
models/mids.cpython-310-x86_64-linux-gnu.so,sha256=7A0epLETC2c0u9DO1-EefMzMyI20MU6jq3suXPIE1p0,74224
|
|
37
|
+
models/offer_globals.cpython-310-x86_64-linux-gnu.so,sha256=-EAMl6UNaEGtJ1s7x1LGjuAAJwwjCBp4JBIN02A5Xlc,119952
|
|
38
|
+
models/offers.cpython-310-x86_64-linux-gnu.so,sha256=_oMzqOW-_cZRyg74YgLjqjs0VgKOvcSfl5p1ZOPLlEg,57712
|
|
39
|
+
models/order_actions.cpython-310-x86_64-linux-gnu.so,sha256=zqu1B9Bx_98lzplrHP1EccpwOH34jkXMxjgZ_iQbtK4,111472
|
|
40
|
+
models/order_cycles.cpython-310-x86_64-linux-gnu.so,sha256=GeR7umK7rtiunsA8_PUouTvCZHk0CeedsnMUK36YkO4,523376
|
|
41
|
+
models/order_processing.cpython-310-x86_64-linux-gnu.so,sha256=ft_oRIcw8Qi-uBPzpZCvD_W4o1pC4hdUumLk2AZ43kw,210320
|
|
42
|
+
models/orders.cpython-310-x86_64-linux-gnu.so,sha256=ypY2XkzA-mpNqp44mVjFjsjdbItc5IeQhGPUjfNbFgU,198320
|
|
43
|
+
models/partitioner.cpython-310-x86_64-linux-gnu.so,sha256=wkq9JJVJq7lenMaHXRLETUGZxVstLSMKYTWMcyMsE7M,111248
|
|
44
|
+
models/pixels.cpython-310-x86_64-linux-gnu.so,sha256=in-4aiLYdIEyOq06wn4Ka4-PEDFqZcTtq6-q-fMxN1g,57712
|
|
45
|
+
models/prices.cpython-310-x86_64-linux-gnu.so,sha256=t11kYu-Zn29kwWSuy3jCKT2_lC8QePoTfQhTWvp0IN0,82480
|
|
46
|
+
models/processing_error_log.cpython-310-x86_64-linux-gnu.so,sha256=yfOtbg3AsQYHuaXhrMYxEF2PNYl_xwJSgTkrrfzWZSA,70064
|
|
47
|
+
models/processor.cpython-310-x86_64-linux-gnu.so,sha256=yQOS4gtnQbHv7G7cCJ60am53UnzLdKxJLQvkhJTn0kQ,123888
|
|
48
|
+
models/processor_settings.cpython-310-x86_64-linux-gnu.so,sha256=-1kXhaCDGr1_K6UQ3zh_4PdCwtEHEhNPbZeEB6ULM_8,94928
|
|
49
|
+
models/processors.cpython-310-x86_64-linux-gnu.so,sha256=lZV0HcheZGq4ku_k2ZfXhbCQAo5fgJgS6Ys8KkGugqQ,49456
|
|
50
|
+
models/products.cpython-310-x86_64-linux-gnu.so,sha256=vEAUCTjVxcOJ_6YAS9I18QCTDQlfAJ4H6iZbvP0FUEc,78352
|
|
51
|
+
models/prospects.cpython-310-x86_64-linux-gnu.so,sha256=EPappPadKC1wxZoTwn59PDQe44buIOAgwz_p0UOO9as,53584
|
|
52
|
+
models/providers.cpython-310-x86_64-linux-gnu.so,sha256=nOtbq6YGayEL0e_cty399o1fn1IncxLvuu7yYxG-FjU,49456
|
|
53
|
+
models/rb_set.cpython-310-x86_64-linux-gnu.so,sha256=58Ka8qg29aUuFbOMpiMSbDh_mSw0HyJHhiNMpU7D2uQ,53616
|
|
54
|
+
models/revenue.cpython-310-x86_64-linux-gnu.so,sha256=jjqV1VVepP76E8XA3e_vYX_X7_Qybmbj1x3w1ZYqUY4,49424
|
|
55
|
+
models/test_customers.cpython-310-x86_64-linux-gnu.so,sha256=4ZW2UdMMe0_T7CbVpIUwFYu2UVXQAbMN4kdYG9fHN-U,70160
|
|
56
|
+
models/transactions.cpython-310-x86_64-linux-gnu.so,sha256=gi6_rMSKeDQhnHZcWYqR3788JOXdKlv1GbcBhe_KWQ0,49456
|
|
57
|
+
models/users.cpython-310-x86_64-linux-gnu.so,sha256=MMz7SZX8tM8cZddh1WCvO2oz-0MxTW2Vo8Fo2Gw2MnI,82416
|
|
58
|
+
models/bro_clicks/__init__.py,sha256=0YxAmJgxnsrunFF8LSJGV_V6MuccSFsJQ6EoX_SpoEc,299
|
|
59
|
+
models/bro_clicks/aff_stats.cpython-310-x86_64-linux-gnu.so,sha256=rQuZtd2h--Mh-jujoYVAolfev6S0TgwaSpSE0vNSkko,61776
|
|
60
|
+
models/bro_clicks/alerts.cpython-310-x86_64-linux-gnu.so,sha256=xuSVYva7U6lNaoiq88BMhDNXhiKOPZOBX8kp5amyZOI,104048
|
|
61
|
+
models/bro_clicks/binrouter.cpython-310-x86_64-linux-gnu.so,sha256=MV69KPLK9gQqO907nwTqYe569owaROVeHoANVWWSbFo,78384
|
|
62
|
+
models/bro_clicks/clicks.cpython-310-x86_64-linux-gnu.so,sha256=7oDZkSROef7acvbgqw37TzE223_if6gFUDmrvkp0IQk,107184
|
|
63
|
+
models/bro_clicks/conversions.cpython-310-x86_64-linux-gnu.so,sha256=XRX2R1XwItZG25u3M-S1jjv_77ao7RKH3gckXyncmLM,98896
|
|
64
|
+
models/bro_clicks/error_log.cpython-310-x86_64-linux-gnu.so,sha256=YYS5_fRxmiIArlDlmP9sJjwgrQBDaN1YdLwSpgqguC8,65936
|
|
65
|
+
models/bro_clicks/initial_routes.cpython-310-x86_64-linux-gnu.so,sha256=MxbdSUg8DKssUi8tKf1I02cStRWdCR-iv7u4RoOfe04,140368
|
|
66
|
+
models/bro_clicks/scrub_settings.cpython-310-x86_64-linux-gnu.so,sha256=MrX24MqMz8myoiyFjcZbO87yeSvaJtyrE0lBhyPOZe8,160592
|
|
67
|
+
models/bro_clicks/splitter.cpython-310-x86_64-linux-gnu.so,sha256=kzvPGtAEVxsYZhkRAErM8gF5qPOjz00BuWXMNk7JK48,57712
|
|
68
|
+
models/bro_clicks/load_balancer/__init__.py,sha256=TMIh-RpmoCaEMTLU7geYtcDpygX5KFM8B4RRsHcKutA,432
|
|
69
|
+
models/bro_clicks/load_balancer/compile.py,sha256=0mD0LCkkR2aasWk8AdxVA6ylHN28l4bV6vwkA2TUQF4,661
|
|
70
|
+
models/bro_clicks/load_balancer/v1.cpython-310-x86_64-linux-gnu.so,sha256=M6gW9Z9QjNS8N_lWb14N5BxWJq8tSeh8q9NsPL6g7eM,177072
|
|
71
|
+
models/bro_clicks/load_balancer/v1.py,sha256=lLxqVcsH99_XS1tv_r-5jUP6C1gq462cuitg3trW1VE,11123
|
|
72
|
+
models/bro_clicks/load_balancer/v2.cpython-310-x86_64-linux-gnu.so,sha256=UgoeHjoRbPcakHy3yfNaXzkoz5r1r8ez41b8mmTSLXw,144464
|
|
73
|
+
models/bro_clicks/load_balancer/v2.py,sha256=wPRwkeyXUF62feDEtwB_yjkqnxel71nKiRJEZAw7Ec4,7661
|
|
74
|
+
models/bro_clicks/load_balancer/v3.cpython-310-x86_64-linux-gnu.so,sha256=UCY8kjfELblJ8VKuq2sXUr2qW-o6hIvH6s7L2ATqPnk,268784
|
|
75
|
+
models/bro_clicks/load_balancer/v3.py,sha256=SXRtkA5vm3TCM_x1MducXcbK-uzXiTr9QJ7j0SZYOzY,18047
|
|
76
|
+
models/bro_clicks/load_balancer/v4.cpython-310-x86_64-linux-gnu.so,sha256=nOqJhhQVqm5OrSv_4VoFUJacl4P-bNanFyIK7fJj5Rk,136208
|
|
77
|
+
models/bro_clicks/load_balancer/v4.py,sha256=wGe66SzYIa4qiPnA4ZZQ5tisvXv_j7XZZCVrsCG23Eg,7732
|
|
78
|
+
models/bro_clicks/load_balancer/v5.cpython-310-x86_64-linux-gnu.so,sha256=ypP3Att6XXhELvNYHbo9Thfgu430feS-u2KGmSIqLMU,127568
|
|
79
|
+
models/bro_clicks/load_balancer/v5.py,sha256=jA1KPoJLcm8szMGhaGuMSH-dZ6d0dwNv1PgGm0UHsJ0,8036
|
|
80
|
+
models/bro_clicks/load_balancer/v6.cpython-310-x86_64-linux-gnu.so,sha256=n24rkztvvvJbPcKTPvE-mSEqk0kn_MhQacm64NwdxgM,165360
|
|
81
|
+
models/bro_clicks/load_balancer/v6.py,sha256=JfYNDu0ZYzxbyy4VZ18AqgZdBuNpG2mkMJM5QhwBGjM,9609
|
|
82
|
+
models/bro_clicks/load_balancer/v7.cpython-310-x86_64-linux-gnu.so,sha256=W9Yv8ORObVk84OOI-OR2b0uz_WLt31Cf4Qk-9I7ORzU,210064
|
|
83
|
+
models/bro_clicks/load_balancer/v7.py,sha256=-MepJzM-LdjEvJ2o4JFk0nMzN7F_vvbOU49wc-9hYE0,18595
|
|
84
|
+
models/bro_clicks/load_balancer/v8.py,sha256=tkk6FpLgQvKCaFf2kmKsHhW_Pj4gJq4PcSe-DKcIUC4,264
|
|
85
|
+
models/cb911/__init__.py,sha256=Y3tX5WQYFUswdMMUpWqa9U_fNObUAhXcVrix3eXYP4k,64
|
|
86
|
+
models/cb911/alerts.cpython-310-x86_64-linux-gnu.so,sha256=XwE_qlwmHTjGLAJGUuuTP4Wf4sK2m9bQAhLX2LwSin4,61808
|
|
87
|
+
models/cb911/cb_struc.cpython-310-x86_64-linux-gnu.so,sha256=jGouS9FTVwIMul1Cwlc388zfxAiD3fkxN_HXso7oolY,57744
|
|
88
|
+
models/cb911/chargebacks.cpython-310-x86_64-linux-gnu.so,sha256=CNNabEzpfQw5zCs9j105aZ449wooSAoqA5M6KIxfRe8,53584
|
|
89
|
+
models/konn/__init__.py,sha256=3_gMBzjkY-m0eRtRwztk4vReA-9M61SMOXlhP-OWdQY,772
|
|
90
|
+
models/konn/campaigns.cpython-310-x86_64-linux-gnu.so,sha256=ntNDm8yFiPARrpXIB_3CJWSgep4QdMb_xEoAfA01SWM,53584
|
|
91
|
+
models/konn/composite.cpython-310-x86_64-linux-gnu.so,sha256=xfb33b3RU_jOD3Xxe40tnSd2I-3NhsN3ccLNqfy6AVI,70128
|
|
92
|
+
models/konn/config.cpython-310-x86_64-linux-gnu.so,sha256=wNLkc8ES649WZUhR8626ZKb0hDBcPn-Ik_q0kHbOQi4,23168
|
|
93
|
+
models/konn/customers.cpython-310-x86_64-linux-gnu.so,sha256=n02ul85rGzKh7erB-2Lbdd5iDoB55ivBJob5_KSd1rI,82448
|
|
94
|
+
models/konn/fullfillment_items.cpython-310-x86_64-linux-gnu.so,sha256=gb1KdzYS70nMaYtFW1mgvVxwIrLSx3eUmFPA5uTErZA,53584
|
|
95
|
+
models/konn/gateways.cpython-310-x86_64-linux-gnu.so,sha256=dLOiEWLZjaZUtQhHby3Zf9umKu8h6h1MlvfILPYlNUg,57744
|
|
96
|
+
models/konn/hybrid.cpython-310-x86_64-linux-gnu.so,sha256=spv024jFa7xoJptgEHiFGm62CrjShNwUV66USP-Itu8,494608
|
|
97
|
+
models/konn/hybrid_campaigns.cpython-310-x86_64-linux-gnu.so,sha256=tm4uXbst8R3mP_9U1NEocvZDfKKzLVyfYaxtYQIbdCk,53616
|
|
98
|
+
models/konn/hybrid_merchants.cpython-310-x86_64-linux-gnu.so,sha256=jMB1K4oWlgVp8MIR_x5oojHt7jYVIgGF-Wugi3RNUGc,61872
|
|
99
|
+
models/konn/hybrid_notes.cpython-310-x86_64-linux-gnu.so,sha256=bjIZT2VFY6dvpNL7ZWOPl4azjNUlrZCHOkgpkUEHBRM,152464
|
|
100
|
+
models/konn/kk_struc.cpython-310-x86_64-linux-gnu.so,sha256=uE8JBUZun0crVMpRj2WQixNcRrJxcT9m5ppfu6jfv5U,107248
|
|
101
|
+
models/konn/notes.cpython-310-x86_64-linux-gnu.so,sha256=y_zFbDFZ3QqyUQgaoBNoWSyZs6ck65Cz8nSJbAY4B58,107024
|
|
102
|
+
models/konn/order_items.cpython-310-x86_64-linux-gnu.so,sha256=3lIjDGENYOW2WNrzA-1_qSgNS_v298EPGHH4xRDCyqs,61808
|
|
103
|
+
models/konn/orders.cpython-310-x86_64-linux-gnu.so,sha256=-MHLTmD9cO8uzDwy0zvb8brUJD1k6JuWMcsEp3RaQ_o,74160
|
|
104
|
+
models/konn/paysources.cpython-310-x86_64-linux-gnu.so,sha256=qg4xXatUyPt6Q2dPs_Ik1N-K0TB5c5zlHXmlmntsfvM,53584
|
|
105
|
+
models/konn/products.cpython-310-x86_64-linux-gnu.so,sha256=EOt_k37PdVT6AnCu73ylvkWpQFygEnKrYmOqOrcirPE,53584
|
|
106
|
+
models/konn/purchases.cpython-310-x86_64-linux-gnu.so,sha256=cM-sbAM_wNmXPrhCEFxK4iLo5HTj-A_afSV-ylsWZh8,65936
|
|
107
|
+
models/konn/transaction_items.cpython-310-x86_64-linux-gnu.so,sha256=rmQfrpBgDdeAzJHxcT_r5R_5QHHKmap92cThxEoiqKo,74160
|
|
108
|
+
models/konn/transactions.cpython-310-x86_64-linux-gnu.so,sha256=lusbdOVCCBcx9NA2pfeQWosarMWgafrrBxWSKIq7tS0,65936
|
|
109
|
+
models/lime/__init__.py,sha256=_-jtIphtjwKp8cwy2lfOx59XGCTqXxBY5VpE1Tv0wvw,69
|
|
110
|
+
models/lime/compile.py,sha256=E5IrQkMNzPnWQwv7qGTi9AT7c80Mg62zAeC6k0u7TTI,372
|
|
111
|
+
models/lime/hybrid.py,sha256=QPqSvtdHIGopcfujtXd-pJVkTcciSyE71FSgJbCf-B0,1043
|
|
112
|
+
models/lime/orders.py,sha256=b3G9broZi5v7GJFNnJ2lReBJ4fpjXRGcIZVmkGj-v4c,2437
|
|
113
|
+
models/reporting_update/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
114
|
+
models/reporting_update/affid_report_update.cpython-310-x86_64-linux-gnu.so,sha256=5cpN2hTrp63Go0C2oHJoh6kmSmKgxLjUjPRAVbuBh-E,114960
|
|
115
|
+
models/reporting_update/alert_provider_patch.cpython-310-x86_64-linux-gnu.so,sha256=iUYpzo7EA4VYhBIw-vHJwtwQpZsohxY4RbKL3wXDjjg,53520
|
|
116
|
+
models/reporting_update/assigned_cpa_table_update.cpython-310-x86_64-linux-gnu.so,sha256=EN_DwNaQo3M7Ru6F0S1MM7n1vBR-38J_avgho3BcZ9A,65840
|
|
117
|
+
models/reporting_update/continuity_update.cpython-310-x86_64-linux-gnu.so,sha256=hNF-cHbE-9qa9qd9H0YuoiUtTj-cZy9nAJok35WD_K4,94512
|
|
118
|
+
models/reporting_update/delete_duplicate.cpython-310-x86_64-linux-gnu.so,sha256=yjZBCXDMEfrnhov5f4BTs9N-4flXwRppWeqIjIt6sJE,53520
|
|
119
|
+
models/reporting_update/filter_box_updates.cpython-310-x86_64-linux-gnu.so,sha256=kQmsEg_15XytKUMWUWXsj3AmQQ9DNn_OIzwCFwSEnQs,65840
|
|
120
|
+
models/reporting_update/refund_parser.cpython-310-x86_64-linux-gnu.so,sha256=fmRc4vyWLVxwi3fNR9U-Q7d7rCwUCfy3v5C30uG8r2w,69904
|
|
121
|
+
models/reporting_update/revenue_orders_update.cpython-310-x86_64-linux-gnu.so,sha256=UKDu8PQwHwAz7xUXcLI6q0qHsYWIPkyBRGDSDuvhAS8,61712
|
|
122
|
+
models/reporting_update/revenue_update.cpython-310-x86_64-linux-gnu.so,sha256=KU4PdOvT-nfKjobEmzt1taLHFoTEcojt-5DV4uNjbCU,127248
|
|
123
|
+
models/reports/__init__.py,sha256=d84tFBrhfwrOXqo-77stfWZgOs79BNhYtqjvwg8Cvos,119
|
|
124
|
+
models/reports/cap.cpython-310-x86_64-linux-gnu.so,sha256=M2vPHq46I6BdheKFthVSsW2OaiNyuhy3oIp-Gmtd1wk,53552
|
|
125
|
+
models/reports/dependencies.cpython-310-x86_64-linux-gnu.so,sha256=X1gUlAXiONSCutoMM-zb7bEVT-epCIt7vwj3scNi5ps,86704
|
|
126
|
+
models/reports/reporting_alerts.cpython-310-x86_64-linux-gnu.so,sha256=YpMvhoqC0BvDykfdgNz8mqnFJkb0bZjfzIdTFArF1Ek,61808
|
|
127
|
+
models/reports/traffic.cpython-310-x86_64-linux-gnu.so,sha256=D5-Cd67no4IrtLaskVHQ1lDbev7W5ESEKdfhqlQFVEQ,69968
|
|
128
|
+
models/reports/traffic_reporting.cpython-310-x86_64-linux-gnu.so,sha256=86Pegaq437l35G_Xa6XShmhwo5xuMuxjduaoOzeeBWw,131888
|
|
129
|
+
models/reports/widgets.cpython-310-x86_64-linux-gnu.so,sha256=uRaV5sjOtrX-jANON6FePmZi1nrBV_LaqKKmqrigdFw,74160
|
|
130
|
+
models/reports/table_reports/__init__.py,sha256=Sq04S7iWiWBDI9Bmxk4am4Rul9CaJvAyjPH-22X5GCw,541
|
|
131
|
+
models/reports/table_reports/affid_report.cpython-310-x86_64-linux-gnu.so,sha256=0Vv6jIiXVKAwhT_2wXhS8ylvsZutYcMAaeNz0pcIK2Y,74032
|
|
132
|
+
models/reports/table_reports/approval_report.cpython-310-x86_64-linux-gnu.so,sha256=rw018vfFJ2-n2C15nuiKu4oPpQVILBsE0u9HGgPqXok,82352
|
|
133
|
+
models/reports/table_reports/bin_report.cpython-310-x86_64-linux-gnu.so,sha256=hpvl6NVTaHxQRWYiIaAWylvhuBueBdV7-sEPzqnpgHE,65840
|
|
134
|
+
models/reports/table_reports/continuity_report.cpython-310-x86_64-linux-gnu.so,sha256=J9C0ReO73_kHSM7lKCs0srtVONnmYdEyQOKBzmhJtco,61744
|
|
135
|
+
models/reports/table_reports/impact_reports.cpython-310-x86_64-linux-gnu.so,sha256=X4k8UDQUvhKAKCas3_eH-COj2EzIGad05Y7SMCV1dF0,86480
|
|
136
|
+
models/reports/table_reports/inactive_report.cpython-310-x86_64-linux-gnu.so,sha256=872szAnA3sX-3YZ-xYzUJ4sf0o2u-ogSgopK9sm7Po4,57648
|
|
137
|
+
models/reports/table_reports/mtd_report.cpython-310-x86_64-linux-gnu.so,sha256=ZKTNrw1rwW5mYcZbyQHmxfl6qCM7MPtyRZyIRb_RGNQ,74096
|
|
138
|
+
models/vaultx/__init__.py,sha256=PwYMmWXQMojeyFnQuQW3wNlv9dLUmX_uiDfCOHJN7XI,46
|
|
139
|
+
models/vaultx/ssc_cont.cpython-310-x86_64-linux-gnu.so,sha256=8f2xKbjmVL_SD8zterQBo8aIpJNz4brzydaJithFmrI,94992
|
|
140
|
+
mango_models-1.0.0.dist-info/METADATA,sha256=3UxH-JGlcD8FQm0z88VIg6oc-Ux0Wq0cUeBRtfKinsk,347
|
|
141
|
+
mango_models-1.0.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
142
|
+
mango_models-1.0.0.dist-info/top_level.txt,sha256=fOgLNy4xnMfp0ihe_kFhY_yH71kNkdEQG68z8FoLR4g,19
|
|
143
|
+
mango_models-1.0.0.dist-info/RECORD,,
|
models/__init__.py
ADDED
|
Binary file
|
models/api.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
|
|
2
|
+
codes = {
|
|
3
|
+
200: 'success',
|
|
4
|
+
201: 'Auth failed',
|
|
5
|
+
202: 'Missing Manditory Params',
|
|
6
|
+
203: 'Controller disabled',
|
|
7
|
+
204: 'Scheduling failed',
|
|
8
|
+
205: 'Password Mismatch',
|
|
9
|
+
206: 'Oops Something Went Wrong. Try a new user name.',
|
|
10
|
+
207: 'Username does not exist.',
|
|
11
|
+
208: 'Invalid Param Type Cast',
|
|
12
|
+
209: 'Values in submission must be unique',
|
|
13
|
+
290: 'Api Error'
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Response:
|
|
19
|
+
def __init__(self, res=None):
|
|
20
|
+
self.res = dict({'success': True, 'data': {}, 'response_code': 200, 'msg': 'success'})
|
|
21
|
+
|
|
22
|
+
if isinstance(res, Response):
|
|
23
|
+
self.data(Response.msg['data'])
|
|
24
|
+
tmp = Response
|
|
25
|
+
tmp.pop('data')
|
|
26
|
+
elif isinstance(res, dict):
|
|
27
|
+
self.res = res
|
|
28
|
+
|
|
29
|
+
def method(self, m=False):
|
|
30
|
+
if m:
|
|
31
|
+
self.res['method'] = m
|
|
32
|
+
return self
|
|
33
|
+
|
|
34
|
+
def fail(self, err_code):
|
|
35
|
+
self.res['success'] = False
|
|
36
|
+
self.res['response_code'] = err_code
|
|
37
|
+
self.res['msg'] = codes[err_code]
|
|
38
|
+
return self
|
|
39
|
+
|
|
40
|
+
def success(self):
|
|
41
|
+
return self.res['success']
|
|
42
|
+
|
|
43
|
+
def data(self, data):
|
|
44
|
+
if isinstance(data,list):
|
|
45
|
+
self.res['data'] = dict(**self.res['data'], **{'records': data})
|
|
46
|
+
return self
|
|
47
|
+
|
|
48
|
+
if not isinstance(data, dict):
|
|
49
|
+
raise TypeError('data object must be of type dict or list')
|
|
50
|
+
return
|
|
51
|
+
|
|
52
|
+
self.res['data'] = dict(**self.res['data'], **data)
|
|
53
|
+
return self
|
|
54
|
+
|
|
55
|
+
def msg(self):
|
|
56
|
+
return self.res
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class PubResponse(Response):
|
|
60
|
+
def __init__(self, channel, method, res=None):
|
|
61
|
+
Response.__init__(self, res)
|
|
62
|
+
self._channel = channel
|
|
63
|
+
self.all = all
|
|
64
|
+
|
|
65
|
+
if isinstance(res, PubResponse):
|
|
66
|
+
self.data(PubResponse.msg['data'])
|
|
67
|
+
tmp = PubResponse
|
|
68
|
+
tmp.pop('data')
|
|
69
|
+
self.res['channel'] = channel
|
|
70
|
+
self.res['method'] = method
|
|
71
|
+
|
|
72
|
+
def channel(self):
|
|
73
|
+
return self._channel
|
|
74
|
+
|
|
75
|
+
def method(self, method=None):
|
|
76
|
+
if method is None:
|
|
77
|
+
return self._res['method']
|
|
78
|
+
self.res['method'] = method
|
|
79
|
+
return self
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from models.bro_clicks.clicks import *
|
|
2
|
+
from models.bro_clicks.conversions import *
|
|
3
|
+
from models.bro_clicks.load_balancer import *
|
|
4
|
+
from models.bro_clicks.scrub_settings import *
|
|
5
|
+
from models.bro_clicks.splitter import *
|
|
6
|
+
from models.bro_clicks.aff_stats import *
|
|
7
|
+
from models.bro_clicks.alerts import *
|
|
8
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from models.bro_clicks.load_balancer.v1 import LoadBalancer
|
|
2
|
+
from models.bro_clicks.load_balancer.v2 import LoadBalancerV2
|
|
3
|
+
from models.bro_clicks.load_balancer.v3 import LoadBalancerV3
|
|
4
|
+
from models.bro_clicks.load_balancer.v4 import LoadBalancerV4
|
|
5
|
+
from models.bro_clicks.load_balancer.v5 import LoadBalancerV5
|
|
6
|
+
from models.bro_clicks.load_balancer.v6 import LoadBalancerV6
|
|
7
|
+
from models.bro_clicks.load_balancer.v7 import LoadBalancerV7
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from distutils.core import setup
|
|
2
|
+
from distutils.extension import Extension
|
|
3
|
+
from Cython.Distutils import build_ext
|
|
4
|
+
ext_modules = [
|
|
5
|
+
Extension("v1", ["v1.py"], extra_compile_args=["-g0"]),
|
|
6
|
+
Extension("v2", ["v2.py"], extra_compile_args=["-g0"]),
|
|
7
|
+
Extension("v3", ["v3.py"], extra_compile_args=["-g0"]),
|
|
8
|
+
Extension("v4", ["v4.py"], extra_compile_args=["-g0"]),
|
|
9
|
+
Extension("v5", ["v5.py"], extra_compile_args=["-g0"]),
|
|
10
|
+
Extension("v6", ["v6.py"], extra_compile_args=["-g0"]),
|
|
11
|
+
Extension("v7", ["v7.py"], extra_compile_args=["-g0"]),
|
|
12
|
+
]
|
|
13
|
+
setup(
|
|
14
|
+
name='load_balancer',
|
|
15
|
+
cmdclass={'build_ext': build_ext},
|
|
16
|
+
ext_modules=ext_modules
|
|
17
|
+
)
|
|
Binary file
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import random
|
|
2
|
+
from models.db import Db, pd
|
|
3
|
+
from calendar import monthrange
|
|
4
|
+
import datetime as dt
|
|
5
|
+
from models import config
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class LoadBalancer(Db):
|
|
9
|
+
_max_decline_attempts = 5
|
|
10
|
+
def __init__(self, db, db_p, account_id='54407332', **kw):
|
|
11
|
+
Db.__init__(self, db, f"bro_clicks", 'load_balancer_2')
|
|
12
|
+
self.set_constraint('load_balancer_2_pk', ['date', 'crm_id', 'gateway_id', 'router_id'])
|
|
13
|
+
self.db_p = db_p
|
|
14
|
+
self._account_id = account_id
|
|
15
|
+
self.is_cc_type_cap_split = False
|
|
16
|
+
|
|
17
|
+
@staticmethod
|
|
18
|
+
def set_max_decline_attempts(attempts):
|
|
19
|
+
LoadBalancer._max_decline_attempts = int(attempts)
|
|
20
|
+
print(f'max decline attempts set to {attempts}', flush=True)
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def now():
|
|
24
|
+
return dt.datetime.now() - dt.timedelta(hours=config.timeOffset)
|
|
25
|
+
|
|
26
|
+
@staticmethod
|
|
27
|
+
def today():
|
|
28
|
+
return LoadBalancer.now().date()
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def get_first_om():
|
|
32
|
+
now = LoadBalancer.now()
|
|
33
|
+
return dt.datetime(year=now.year, month=now.month, day=1)
|
|
34
|
+
|
|
35
|
+
@staticmethod
|
|
36
|
+
def get_last_dom(now=False):
|
|
37
|
+
now = now if now else LoadBalancer.now()
|
|
38
|
+
weekday_of, last_day = monthrange(now.year, now.month)
|
|
39
|
+
return last_day
|
|
40
|
+
|
|
41
|
+
@staticmethod
|
|
42
|
+
def get_drim():
|
|
43
|
+
now = LoadBalancer.now()
|
|
44
|
+
return LoadBalancer.get_last_dom() - now.day + 1
|
|
45
|
+
|
|
46
|
+
def get_processing_for_month(self, crm_id):
|
|
47
|
+
qry = f"""
|
|
48
|
+
select b.gateway_id,
|
|
49
|
+
count(a.order_id)::int initial_count_mtd
|
|
50
|
+
from augmented_data.order_cycles a
|
|
51
|
+
inner join crm_global.orders b on a.order_id = b.order_id and a.crm_id = b.crm_id and a.crm_id = '{crm_id}'
|
|
52
|
+
where a.time_stamp > '{self.get_first_om()}' and a.time_stamp < '{self.today()}'::timestamp
|
|
53
|
+
and a.bc_inferred = 0
|
|
54
|
+
and a.decline_reason is null
|
|
55
|
+
and b.is_test_cc::int <> '1'
|
|
56
|
+
group by b.gateway_id
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
# print(qry)
|
|
60
|
+
return pd.read_sql(qry, self.db_p.engine).fillna(0)
|
|
61
|
+
|
|
62
|
+
def get_processing_for_month_cc_type(self, crm_id):
|
|
63
|
+
qry = f"""
|
|
64
|
+
select
|
|
65
|
+
gateway_id,
|
|
66
|
+
(initial_count_mtd - visa_count_mtd)::int as initial_count_mtd,
|
|
67
|
+
visa_count_mtd
|
|
68
|
+
from
|
|
69
|
+
(select b.gateway_id,
|
|
70
|
+
count(a.order_id)::int initial_count_mtd,
|
|
71
|
+
(count(a.order_id) filter(where lower(cc_type) = 'visa'))::int visa_count_mtd
|
|
72
|
+
from augmented_data.order_cycles a
|
|
73
|
+
inner join crm_global.orders b on a.order_id = b.order_id and a.crm_id = b.crm_id and a.crm_id = '{crm_id}'
|
|
74
|
+
where a.time_stamp > '{self.get_first_om()}' and a.time_stamp < '{self.today()}'::timestamp
|
|
75
|
+
and a.bc_inferred = 0
|
|
76
|
+
and a.decline_reason is null
|
|
77
|
+
and b.is_test_cc::int <> '1'
|
|
78
|
+
group by b.gateway_id) a
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
# print(qry)
|
|
82
|
+
return pd.read_sql(qry, self.db_p.engine).fillna(0)
|
|
83
|
+
|
|
84
|
+
def init_date(self, date, crm_id, reset_cap_count=True):
|
|
85
|
+
sk = f'ui_{self._account_id}_clients'
|
|
86
|
+
real_cap_space = self.get_processing_for_month(crm_id) if reset_cap_count else None
|
|
87
|
+
|
|
88
|
+
qry = f"""
|
|
89
|
+
SELECT '{date}'::date as date, b.crm_id, a.mid_id, b.gateway_id, b.step, a.processor,
|
|
90
|
+
coalesce(e.approved, 0) approved,
|
|
91
|
+
coalesce(e.approved,0) initial_count,
|
|
92
|
+
c.dly_initial_cap, b.minimum_price,
|
|
93
|
+
coalesce(e.declined, 0) declined,
|
|
94
|
+
d.approval_rate,
|
|
95
|
+
c.dly_min_approval_rate,
|
|
96
|
+
array_to_string(c.pr_exclude_cc_types, ',') exclude_cc_types ,
|
|
97
|
+
c.date_added,
|
|
98
|
+
c.enable_tds,
|
|
99
|
+
array_to_string(c.tds_exclude_cc_types, ',') tds_exclude_cc_types,
|
|
100
|
+
c.enabled,
|
|
101
|
+
c.enable_initials,
|
|
102
|
+
c.monthly_initial_cap,
|
|
103
|
+
c.priority,
|
|
104
|
+
c.router_id,
|
|
105
|
+
d.router_id as cur_router_id,
|
|
106
|
+
d.soft_cap_alerted,
|
|
107
|
+
d.initial_count_mtd as prev_mtd
|
|
108
|
+
|
|
109
|
+
FROM {sk}.mids a
|
|
110
|
+
LEFT JOIN {sk}.steps b on b.mid_id = a.mid_id
|
|
111
|
+
LEFT JOIN {sk}.gateway_settings c on c.gateway_id = b.gateway_id and c.crm_id = b.crm_id
|
|
112
|
+
LEFT JOIN {self.schema}.{self.table} d on c.gateway_id =d.gateway_id and c.crm_id = d.crm_id and b.step = d.step and '{date}'::date =d.date
|
|
113
|
+
LEFT JOIN (select crm_id, gateway_id, coalesce(sum(declined), 0) declined, coalesce(sum(approved), 0) approved
|
|
114
|
+
from {self.schema}.conversions where coalesce(test, 0) <> 1 and time_stamp::date = '{date}'::date group by crm_id, gateway_id
|
|
115
|
+
) e on e.gateway_id =c.gateway_id and e.crm_id=c.crm_id
|
|
116
|
+
where (b.close_date is null or b.close_date >'{self.today()}')
|
|
117
|
+
and b.crm_id = '{crm_id}'
|
|
118
|
+
and b.gateway_id is not null
|
|
119
|
+
and a.processor not ilike '%%virtual%%'
|
|
120
|
+
and b.gateway_id::int <> 1
|
|
121
|
+
and a.processor != 'FlexCharge'
|
|
122
|
+
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
try:
|
|
126
|
+
|
|
127
|
+
# if crm_id != 'crm_ll_2':
|
|
128
|
+
#
|
|
129
|
+
|
|
130
|
+
# print(qry)
|
|
131
|
+
# print('break')
|
|
132
|
+
up = pd.read_sql(qry, self.engine)
|
|
133
|
+
|
|
134
|
+
up = up.sort_values('step').drop_duplicates(['gateway_id', 'cur_router_id'], keep='first')
|
|
135
|
+
up = up.loc[~up.router_id.isna()]
|
|
136
|
+
up = up.explode('router_id')
|
|
137
|
+
|
|
138
|
+
# delete changes to routers
|
|
139
|
+
del_gt_msk = (up.router_id != up.cur_router_id) & (
|
|
140
|
+
up.gateway_id.isin(up.loc[~up.cur_router_id.isna()].gateway_id.unique()))
|
|
141
|
+
del_gtys = up.loc[del_gt_msk].gateway_id.tolist()
|
|
142
|
+
|
|
143
|
+
up = up.loc[(~up.gateway_id.isin(del_gtys)) | (~up.cur_router_id.isna())]
|
|
144
|
+
|
|
145
|
+
# delete changes to routers
|
|
146
|
+
del_gt_msk = (up.router_id != up.cur_router_id)
|
|
147
|
+
del_gtys = up.loc[del_gt_msk].gateway_id.tolist()
|
|
148
|
+
self.engine.execute(
|
|
149
|
+
f"delete from {self.schema}.{self.table} where gateway_id::int = ANY(ARRAY{del_gtys}::int[]) and crm_id='{crm_id}'")
|
|
150
|
+
up = up.drop(columns='cur_router_id')
|
|
151
|
+
except Exception as e:
|
|
152
|
+
raise e
|
|
153
|
+
if reset_cap_count:
|
|
154
|
+
try:
|
|
155
|
+
up = up.merge(real_cap_space, on=['gateway_id'], how='left')
|
|
156
|
+
up.initial_count_mtd = up.initial_count_mtd.fillna(0)
|
|
157
|
+
up.initial_count_mtd += up.initial_count
|
|
158
|
+
|
|
159
|
+
except:
|
|
160
|
+
up['initial_count_mtd'] = up.prev_mtd.fillna(0)
|
|
161
|
+
up.initial_count_mtd = up.initial_count_mtd.fillna(0)
|
|
162
|
+
|
|
163
|
+
drim = float(self.get_drim())
|
|
164
|
+
up.dly_initial_cap = pd.np.floor((up.monthly_initial_cap - up.initial_count_mtd) / drim)
|
|
165
|
+
up.loc[up.dly_initial_cap < 0, 'dly_initial_cap'] = 0
|
|
166
|
+
|
|
167
|
+
up.dly_initial_cap = up.dly_initial_cap.fillna(11)
|
|
168
|
+
up.dly_min_approval_rate = up.dly_min_approval_rate.fillna(30)
|
|
169
|
+
up.declined = up.declined.fillna(0)
|
|
170
|
+
up.approval_rate = up.approval_rate.fillna(0)
|
|
171
|
+
up.soft_cap_alerted = up.soft_cap_alerted.fillna(False)
|
|
172
|
+
up.drop('prev_mtd', axis=1, errors='ignore', inplace=True)
|
|
173
|
+
up = up.drop_duplicates(['gateway_id', 'router_id'])
|
|
174
|
+
# self.engine.execute(f'truncate {self.schema}.{self.table}')
|
|
175
|
+
self.upsert(up.dropna())
|
|
176
|
+
|
|
177
|
+
def _increment_conversion(self, date, gateway_id, crm_id, approved, recurs_attempt=0, cc_type=None, **kwargs):
|
|
178
|
+
if cc_type.lower() == 'visa':
|
|
179
|
+
inc_p = '(visa_count +1)'
|
|
180
|
+
m_inc_p = '(visa_count_mtd +1)'
|
|
181
|
+
inc = 'visa_count'
|
|
182
|
+
m_inc = 'visa_count_mtd'
|
|
183
|
+
|
|
184
|
+
else:
|
|
185
|
+
inc_p = '(initial_count +1)'
|
|
186
|
+
m_inc_p = '(initial_count_mtd +1)'
|
|
187
|
+
inc = 'initial_count'
|
|
188
|
+
m_inc = 'initial_count_mtd'
|
|
189
|
+
dnc = 'declined'
|
|
190
|
+
dnc_p = '(declined + 1)'
|
|
191
|
+
try:
|
|
192
|
+
qry = f"""
|
|
193
|
+
UPDATE {self.schema}.{self.table}
|
|
194
|
+
set {f"{inc} ={inc_p}, approval_rate = ((initial_count+visa_count+1)::numeric / ({dnc}+(initial_count+visa_count+1)::numeric))*100, {m_inc} = {m_inc_p}" if approved
|
|
195
|
+
else f"{dnc} ={dnc_p}, approval_rate = case when visa_count+initial_count>0 then ((visa_count+initial_count)::numeric / ({dnc_p}+visa_count+initial_count)::numeric * 100) else 0 end "
|
|
196
|
+
}
|
|
197
|
+
where crm_id = '{crm_id}' and date = '{date}'::date and gateway_id='{gateway_id}'
|
|
198
|
+
returning gateway_id
|
|
199
|
+
"""
|
|
200
|
+
|
|
201
|
+
if self.engine.execute(qry).scalar() is None and not recurs_attempt:
|
|
202
|
+
self.init_date(date, crm_id)
|
|
203
|
+
if not recurs_attempt:
|
|
204
|
+
return self._increment_conversion(date, gateway_id, crm_id, approved, recurs_attempt + 1)
|
|
205
|
+
|
|
206
|
+
except Exception as e:
|
|
207
|
+
print(e)
|
|
208
|
+
return False
|
|
209
|
+
return True
|
|
210
|
+
|
|
211
|
+
def increment_conversion(self, date, gateway_id, crm_id, approved, **kwargs):
|
|
212
|
+
return self._increment_conversion(date, gateway_id, crm_id, approved, recurs_attempt=0, **kwargs)
|
|
213
|
+
|
|
214
|
+
def set_soft_cap_alerted(self, crm_id, cc_type=None, **kw):
|
|
215
|
+
self.engine.execute(
|
|
216
|
+
f"""Update {self.schema}.{self.table}
|
|
217
|
+
{"set visa_soft_cap_alerted=true" if cc_type.lower()=='visa' else "set soft_cap_alerted=true"}
|
|
218
|
+
where crm_id= '{crm_id}'""")
|
|
219
|
+
|
|
220
|
+
def disable(self, crm_id, gateway_id, cc_type=None, **kw):
|
|
221
|
+
set_clause = 'set enable_initials=false'
|
|
222
|
+
if cc_type:
|
|
223
|
+
if cc_type.lower() == 'visa':
|
|
224
|
+
set_clause = ' set visa_enabled=false '
|
|
225
|
+
elif cc_type:
|
|
226
|
+
set_clause = ' set mc_enabled=false '
|
|
227
|
+
|
|
228
|
+
self.engine.execute(
|
|
229
|
+
f"""Update {self.schema}.{self.table} {set_clause} where crm_id= '{crm_id}' and gateway_id = '{int(gateway_id)}'""")
|
|
230
|
+
if not cc_type:
|
|
231
|
+
self.db_p.engine.execute(
|
|
232
|
+
f"update ui_54407332_clients.gateway_settings set enable_initials=false where crm_id='{crm_id}' and gateway_id='{gateway_id}'")
|
|
Binary file
|