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.
Files changed (143) hide show
  1. DataFactory/__init__.py +2 -0
  2. DataFactory/sqlinterface.cpython-310-x86_64-linux-gnu.so +0 -0
  3. mango_models-1.0.0.dist-info/METADATA +13 -0
  4. mango_models-1.0.0.dist-info/RECORD +143 -0
  5. mango_models-1.0.0.dist-info/WHEEL +5 -0
  6. mango_models-1.0.0.dist-info/top_level.txt +2 -0
  7. models/__init__.py +4 -0
  8. models/alert_providers.cpython-310-x86_64-linux-gnu.so +0 -0
  9. models/api.py +85 -0
  10. models/approval_rate.cpython-310-x86_64-linux-gnu.so +0 -0
  11. models/banks.cpython-310-x86_64-linux-gnu.so +0 -0
  12. models/billing_models.cpython-310-x86_64-linux-gnu.so +0 -0
  13. models/bins.cpython-310-x86_64-linux-gnu.so +0 -0
  14. models/bro_clicks/__init__.py +8 -0
  15. models/bro_clicks/aff_stats.cpython-310-x86_64-linux-gnu.so +0 -0
  16. models/bro_clicks/alerts.cpython-310-x86_64-linux-gnu.so +0 -0
  17. models/bro_clicks/binrouter.cpython-310-x86_64-linux-gnu.so +0 -0
  18. models/bro_clicks/clicks.cpython-310-x86_64-linux-gnu.so +0 -0
  19. models/bro_clicks/conversions.cpython-310-x86_64-linux-gnu.so +0 -0
  20. models/bro_clicks/error_log.cpython-310-x86_64-linux-gnu.so +0 -0
  21. models/bro_clicks/initial_routes.cpython-310-x86_64-linux-gnu.so +0 -0
  22. models/bro_clicks/load_balancer/__init__.py +7 -0
  23. models/bro_clicks/load_balancer/compile.py +17 -0
  24. models/bro_clicks/load_balancer/v1.cpython-310-x86_64-linux-gnu.so +0 -0
  25. models/bro_clicks/load_balancer/v1.py +232 -0
  26. models/bro_clicks/load_balancer/v2.cpython-310-x86_64-linux-gnu.so +0 -0
  27. models/bro_clicks/load_balancer/v2.py +137 -0
  28. models/bro_clicks/load_balancer/v3.cpython-310-x86_64-linux-gnu.so +0 -0
  29. models/bro_clicks/load_balancer/v3.py +405 -0
  30. models/bro_clicks/load_balancer/v4.cpython-310-x86_64-linux-gnu.so +0 -0
  31. models/bro_clicks/load_balancer/v4.py +151 -0
  32. models/bro_clicks/load_balancer/v5.cpython-310-x86_64-linux-gnu.so +0 -0
  33. models/bro_clicks/load_balancer/v5.py +139 -0
  34. models/bro_clicks/load_balancer/v6.cpython-310-x86_64-linux-gnu.so +0 -0
  35. models/bro_clicks/load_balancer/v6.py +195 -0
  36. models/bro_clicks/load_balancer/v7.cpython-310-x86_64-linux-gnu.so +0 -0
  37. models/bro_clicks/load_balancer/v7.py +315 -0
  38. models/bro_clicks/load_balancer/v8.py +8 -0
  39. models/bro_clicks/scrub_settings.cpython-310-x86_64-linux-gnu.so +0 -0
  40. models/bro_clicks/splitter.cpython-310-x86_64-linux-gnu.so +0 -0
  41. models/campaign_balancer.cpython-310-x86_64-linux-gnu.so +0 -0
  42. models/campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
  43. models/capfill.cpython-310-x86_64-linux-gnu.so +0 -0
  44. models/cb911/__init__.py +2 -0
  45. models/cb911/alerts.cpython-310-x86_64-linux-gnu.so +0 -0
  46. models/cb911/cb_struc.cpython-310-x86_64-linux-gnu.so +0 -0
  47. models/cb911/chargebacks.cpython-310-x86_64-linux-gnu.so +0 -0
  48. models/clients.cpython-310-x86_64-linux-gnu.so +0 -0
  49. models/color_index.cpython-310-x86_64-linux-gnu.so +0 -0
  50. models/config.py +1 -0
  51. models/corp_cascade.cpython-310-x86_64-linux-gnu.so +0 -0
  52. models/corps.cpython-310-x86_64-linux-gnu.so +0 -0
  53. models/crm_errors.cpython-310-x86_64-linux-gnu.so +0 -0
  54. models/custom_shipping.cpython-310-x86_64-linux-gnu.so +0 -0
  55. models/db.cpython-310-x86_64-linux-gnu.so +0 -0
  56. models/discount_stats.cpython-310-x86_64-linux-gnu.so +0 -0
  57. models/discounter.cpython-310-x86_64-linux-gnu.so +0 -0
  58. models/email_reconfs.cpython-310-x86_64-linux-gnu.so +0 -0
  59. models/exception_log.cpython-310-x86_64-linux-gnu.so +0 -0
  60. models/filter_index.cpython-310-x86_64-linux-gnu.so +0 -0
  61. models/gateway_providers.cpython-310-x86_64-linux-gnu.so +0 -0
  62. models/gateways.cpython-310-x86_64-linux-gnu.so +0 -0
  63. models/hard_declines.cpython-310-x86_64-linux-gnu.so +0 -0
  64. models/initials.cpython-310-x86_64-linux-gnu.so +0 -0
  65. models/instance_data.cpython-310-x86_64-linux-gnu.so +0 -0
  66. models/invoices.cpython-310-x86_64-linux-gnu.so +0 -0
  67. models/iso.cpython-310-x86_64-linux-gnu.so +0 -0
  68. models/konn/__init__.py +17 -0
  69. models/konn/campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
  70. models/konn/composite.cpython-310-x86_64-linux-gnu.so +0 -0
  71. models/konn/config.cpython-310-x86_64-linux-gnu.so +0 -0
  72. models/konn/customers.cpython-310-x86_64-linux-gnu.so +0 -0
  73. models/konn/fullfillment_items.cpython-310-x86_64-linux-gnu.so +0 -0
  74. models/konn/gateways.cpython-310-x86_64-linux-gnu.so +0 -0
  75. models/konn/hybrid.cpython-310-x86_64-linux-gnu.so +0 -0
  76. models/konn/hybrid_campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
  77. models/konn/hybrid_merchants.cpython-310-x86_64-linux-gnu.so +0 -0
  78. models/konn/hybrid_notes.cpython-310-x86_64-linux-gnu.so +0 -0
  79. models/konn/kk_struc.cpython-310-x86_64-linux-gnu.so +0 -0
  80. models/konn/notes.cpython-310-x86_64-linux-gnu.so +0 -0
  81. models/konn/order_items.cpython-310-x86_64-linux-gnu.so +0 -0
  82. models/konn/orders.cpython-310-x86_64-linux-gnu.so +0 -0
  83. models/konn/paysources.cpython-310-x86_64-linux-gnu.so +0 -0
  84. models/konn/products.cpython-310-x86_64-linux-gnu.so +0 -0
  85. models/konn/purchases.cpython-310-x86_64-linux-gnu.so +0 -0
  86. models/konn/transaction_items.cpython-310-x86_64-linux-gnu.so +0 -0
  87. models/konn/transactions.cpython-310-x86_64-linux-gnu.so +0 -0
  88. models/lime/__init__.py +3 -0
  89. models/lime/compile.py +13 -0
  90. models/lime/hybrid.py +28 -0
  91. models/lime/orders.py +52 -0
  92. models/logga.cpython-310-x86_64-linux-gnu.so +0 -0
  93. models/master_campaigns.cpython-310-x86_64-linux-gnu.so +0 -0
  94. models/mc_promo.cpython-310-x86_64-linux-gnu.so +0 -0
  95. models/mids.cpython-310-x86_64-linux-gnu.so +0 -0
  96. models/offer_globals.cpython-310-x86_64-linux-gnu.so +0 -0
  97. models/offers.cpython-310-x86_64-linux-gnu.so +0 -0
  98. models/order_actions.cpython-310-x86_64-linux-gnu.so +0 -0
  99. models/order_cycles.cpython-310-x86_64-linux-gnu.so +0 -0
  100. models/order_processing.cpython-310-x86_64-linux-gnu.so +0 -0
  101. models/orders.cpython-310-x86_64-linux-gnu.so +0 -0
  102. models/partitioner.cpython-310-x86_64-linux-gnu.so +0 -0
  103. models/pixels.cpython-310-x86_64-linux-gnu.so +0 -0
  104. models/prices.cpython-310-x86_64-linux-gnu.so +0 -0
  105. models/processing_error_log.cpython-310-x86_64-linux-gnu.so +0 -0
  106. models/processor.cpython-310-x86_64-linux-gnu.so +0 -0
  107. models/processor_settings.cpython-310-x86_64-linux-gnu.so +0 -0
  108. models/processors.cpython-310-x86_64-linux-gnu.so +0 -0
  109. models/products.cpython-310-x86_64-linux-gnu.so +0 -0
  110. models/prospects.cpython-310-x86_64-linux-gnu.so +0 -0
  111. models/providers.cpython-310-x86_64-linux-gnu.so +0 -0
  112. models/rb_set.cpython-310-x86_64-linux-gnu.so +0 -0
  113. models/reporting_update/__init__.py +1 -0
  114. models/reporting_update/affid_report_update.cpython-310-x86_64-linux-gnu.so +0 -0
  115. models/reporting_update/alert_provider_patch.cpython-310-x86_64-linux-gnu.so +0 -0
  116. models/reporting_update/assigned_cpa_table_update.cpython-310-x86_64-linux-gnu.so +0 -0
  117. models/reporting_update/continuity_update.cpython-310-x86_64-linux-gnu.so +0 -0
  118. models/reporting_update/delete_duplicate.cpython-310-x86_64-linux-gnu.so +0 -0
  119. models/reporting_update/filter_box_updates.cpython-310-x86_64-linux-gnu.so +0 -0
  120. models/reporting_update/refund_parser.cpython-310-x86_64-linux-gnu.so +0 -0
  121. models/reporting_update/revenue_orders_update.cpython-310-x86_64-linux-gnu.so +0 -0
  122. models/reporting_update/revenue_update.cpython-310-x86_64-linux-gnu.so +0 -0
  123. models/reports/__init__.py +3 -0
  124. models/reports/cap.cpython-310-x86_64-linux-gnu.so +0 -0
  125. models/reports/dependencies.cpython-310-x86_64-linux-gnu.so +0 -0
  126. models/reports/reporting_alerts.cpython-310-x86_64-linux-gnu.so +0 -0
  127. models/reports/table_reports/__init__.py +7 -0
  128. models/reports/table_reports/affid_report.cpython-310-x86_64-linux-gnu.so +0 -0
  129. models/reports/table_reports/approval_report.cpython-310-x86_64-linux-gnu.so +0 -0
  130. models/reports/table_reports/bin_report.cpython-310-x86_64-linux-gnu.so +0 -0
  131. models/reports/table_reports/continuity_report.cpython-310-x86_64-linux-gnu.so +0 -0
  132. models/reports/table_reports/impact_reports.cpython-310-x86_64-linux-gnu.so +0 -0
  133. models/reports/table_reports/inactive_report.cpython-310-x86_64-linux-gnu.so +0 -0
  134. models/reports/table_reports/mtd_report.cpython-310-x86_64-linux-gnu.so +0 -0
  135. models/reports/traffic.cpython-310-x86_64-linux-gnu.so +0 -0
  136. models/reports/traffic_reporting.cpython-310-x86_64-linux-gnu.so +0 -0
  137. models/reports/widgets.cpython-310-x86_64-linux-gnu.so +0 -0
  138. models/revenue.cpython-310-x86_64-linux-gnu.so +0 -0
  139. models/test_customers.cpython-310-x86_64-linux-gnu.so +0 -0
  140. models/transactions.cpython-310-x86_64-linux-gnu.so +0 -0
  141. models/users.cpython-310-x86_64-linux-gnu.so +0 -0
  142. models/vaultx/__init__.py +2 -0
  143. models/vaultx/ssc_cont.cpython-310-x86_64-linux-gnu.so +0 -0
@@ -0,0 +1,2 @@
1
+
2
+
@@ -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,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ DataFactory
2
+ models
models/__init__.py ADDED
@@ -0,0 +1,4 @@
1
+ #from models import konn
2
+ from models import order_processing
3
+ from models import db
4
+
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
+
@@ -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
+
@@ -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
+ )
@@ -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}'")