wbportfolio 1.54.22__py2.py3-none-any.whl → 1.55.0__py2.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.

Potentially problematic release.


This version of wbportfolio might be problematic. Click here for more details.

Files changed (79) hide show
  1. wbportfolio/admin/indexes.py +1 -1
  2. wbportfolio/admin/product_groups.py +1 -1
  3. wbportfolio/admin/products.py +2 -1
  4. wbportfolio/admin/rebalancing.py +1 -1
  5. wbportfolio/api_clients/__init__.py +0 -0
  6. wbportfolio/api_clients/ubs.py +150 -0
  7. wbportfolio/factories/orders/order_proposals.py +3 -1
  8. wbportfolio/factories/orders/orders.py +10 -2
  9. wbportfolio/factories/portfolios.py +1 -1
  10. wbportfolio/factories/rebalancing.py +1 -1
  11. wbportfolio/filters/assets.py +10 -2
  12. wbportfolio/filters/orders/__init__.py +1 -0
  13. wbportfolio/filters/orders/order_proposals.py +58 -0
  14. wbportfolio/filters/portfolios.py +20 -0
  15. wbportfolio/import_export/backends/ubs/asset_position.py +6 -7
  16. wbportfolio/import_export/backends/ubs/fees.py +10 -20
  17. wbportfolio/import_export/backends/ubs/instrument_price.py +6 -6
  18. wbportfolio/import_export/backends/utils.py +0 -17
  19. wbportfolio/import_export/handlers/asset_position.py +1 -1
  20. wbportfolio/import_export/handlers/orders.py +1 -1
  21. wbportfolio/import_export/parsers/sg_lux/equity.py +1 -1
  22. wbportfolio/import_export/parsers/societe_generale/strategy.py +2 -2
  23. wbportfolio/import_export/parsers/ubs/equity.py +1 -1
  24. wbportfolio/migrations/0086_orderproposal_total_cash_weight.py +19 -0
  25. wbportfolio/migrations/0087_product_order_routing_custodian_adapter.py +94 -0
  26. wbportfolio/migrations/0088_orderproposal_total_effective_portfolio_contribution.py +19 -0
  27. wbportfolio/models/asset.py +6 -20
  28. wbportfolio/models/builder.py +74 -31
  29. wbportfolio/models/mixins/instruments.py +7 -0
  30. wbportfolio/models/orders/order_proposals.py +549 -167
  31. wbportfolio/models/orders/orders.py +24 -11
  32. wbportfolio/models/orders/routing.py +54 -0
  33. wbportfolio/models/portfolio.py +77 -41
  34. wbportfolio/models/products.py +9 -0
  35. wbportfolio/models/rebalancing.py +6 -6
  36. wbportfolio/models/transactions/transactions.py +10 -6
  37. wbportfolio/order_routing/__init__.py +19 -0
  38. wbportfolio/order_routing/adapters/__init__.py +57 -0
  39. wbportfolio/order_routing/adapters/ubs.py +161 -0
  40. wbportfolio/pms/trading/handler.py +4 -1
  41. wbportfolio/pms/typing.py +62 -8
  42. wbportfolio/rebalancing/models/composite.py +1 -1
  43. wbportfolio/rebalancing/models/equally_weighted.py +3 -3
  44. wbportfolio/rebalancing/models/market_capitalization_weighted.py +1 -1
  45. wbportfolio/rebalancing/models/model_portfolio.py +9 -10
  46. wbportfolio/serializers/orders/order_proposals.py +25 -21
  47. wbportfolio/serializers/orders/orders.py +5 -2
  48. wbportfolio/serializers/positions.py +2 -2
  49. wbportfolio/serializers/rebalancing.py +1 -1
  50. wbportfolio/tests/conftest.py +6 -2
  51. wbportfolio/tests/models/orders/test_order_proposals.py +90 -30
  52. wbportfolio/tests/models/test_imports.py +5 -3
  53. wbportfolio/tests/models/test_portfolios.py +57 -23
  54. wbportfolio/tests/models/test_products.py +11 -0
  55. wbportfolio/tests/models/transactions/test_rebalancing.py +2 -2
  56. wbportfolio/tests/rebalancing/test_models.py +3 -5
  57. wbportfolio/tests/signals.py +0 -10
  58. wbportfolio/tests/tests.py +2 -0
  59. wbportfolio/viewsets/__init__.py +7 -4
  60. wbportfolio/viewsets/assets.py +1 -215
  61. wbportfolio/viewsets/charts/__init__.py +6 -1
  62. wbportfolio/viewsets/charts/assets.py +341 -155
  63. wbportfolio/viewsets/configs/buttons/products.py +32 -2
  64. wbportfolio/viewsets/configs/display/assets.py +6 -19
  65. wbportfolio/viewsets/configs/display/products.py +1 -1
  66. wbportfolio/viewsets/configs/display/rebalancing.py +2 -2
  67. wbportfolio/viewsets/configs/menu/__init__.py +1 -0
  68. wbportfolio/viewsets/configs/menu/orders.py +11 -0
  69. wbportfolio/viewsets/orders/configs/buttons/order_proposals.py +66 -12
  70. wbportfolio/viewsets/orders/configs/displays/order_proposals.py +55 -9
  71. wbportfolio/viewsets/orders/configs/displays/orders.py +13 -0
  72. wbportfolio/viewsets/orders/order_proposals.py +47 -7
  73. wbportfolio/viewsets/orders/orders.py +31 -29
  74. wbportfolio/viewsets/portfolios.py +3 -3
  75. {wbportfolio-1.54.22.dist-info → wbportfolio-1.55.0.dist-info}/METADATA +3 -1
  76. {wbportfolio-1.54.22.dist-info → wbportfolio-1.55.0.dist-info}/RECORD +78 -68
  77. wbportfolio/viewsets/signals.py +0 -43
  78. {wbportfolio-1.54.22.dist-info → wbportfolio-1.55.0.dist-info}/WHEEL +0 -0
  79. {wbportfolio-1.54.22.dist-info → wbportfolio-1.55.0.dist-info}/licenses/LICENSE +0 -0
@@ -10,12 +10,12 @@ wbportfolio/utils.py,sha256=QZ4t0j2NwKYmgWJM77yvXSp-8wVcZmFvNi5_v7YA3ac,750
10
10
  wbportfolio/admin/__init__.py,sha256=oTmHrq_4H4OyEna3R_3tIh7pyCyNYVsMDD8y06IYMfQ,675
11
11
  wbportfolio/admin/asset.py,sha256=Nukw4axCnctQFlAtPkPJyalEga7RtTp7jr138MOdWSM,1254
12
12
  wbportfolio/admin/custodians.py,sha256=rJ9wFdiFM5t3WrmAfNXWzjxDAWrbnlSstfNjQxSmTNE,332
13
- wbportfolio/admin/indexes.py,sha256=Psn6yd8ceBySSKWQlbwBq0Y6Jkxg1e1HcMrpO0Wirl8,406
13
+ wbportfolio/admin/indexes.py,sha256=XPiVGBRDD7SV7YvSDv9pAo513IjIbEOBS_pcvVP_UfQ,440
14
14
  wbportfolio/admin/portfolio.py,sha256=ihAYlvx7vvRbFMIKobo-VokYfvlTowGDzcSmlXHCJDY,3873
15
15
  wbportfolio/admin/portfolio_relationships.py,sha256=mLRQUvezcUQfEls0p6pe0P1qVf335zD5pX4eRVf119M,711
16
- wbportfolio/admin/product_groups.py,sha256=_jks3MF1kMOBQPcjWaSD-bkZU268WRyZADSx32gct6k,1356
17
- wbportfolio/admin/products.py,sha256=NLceny44B0WOZ66I-0D8aBWz8ST7aJM4XVy2NibeRxI,2491
18
- wbportfolio/admin/rebalancing.py,sha256=A0GNm63BWuWmrpfMKbsCteB_9uVuTNigQqWW4up9x0g,611
16
+ wbportfolio/admin/product_groups.py,sha256=0iXpoj-gGwLeF6BmCohX7d5qrVhCgIxNWUQmJcM67q0,1391
17
+ wbportfolio/admin/products.py,sha256=vEtUpSlnCLLCs4SXkI5UFO7iPsXhRUk7PsNvfD7FS40,2550
18
+ wbportfolio/admin/rebalancing.py,sha256=xlaq2qk6rzEqfjinS1XN6e0yZ2ijjD1Hp_XddfQwyjU,609
19
19
  wbportfolio/admin/reconciliations.py,sha256=s7aYxdJE6jX72bnKCrj-YdZBl9bFV_n44Bo28RZMKvg,511
20
20
  wbportfolio/admin/registers.py,sha256=N5zcfFgxR9H37YEJxFIBif7v5uLN2mGNV3lf9c5OYnw,505
21
21
  wbportfolio/admin/roles.py,sha256=h7d0aYBctghj1zFphWkMVHywnCjF8bewVbk8lq1IX8U,446
@@ -29,6 +29,8 @@ wbportfolio/admin/transactions/fees.py,sha256=gpq-_k3ypEGVNuDfFE4OHtn-B9ZtkzA4YY
29
29
  wbportfolio/admin/transactions/trades.py,sha256=LanpSm6iaR9cmNvSJwpRFPkOgN46K_Y9YoMy0MReYuc,1913
30
30
  wbportfolio/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  wbportfolio/analysis/claims.py,sha256=islJVmHg6jKr6Q1b84Vt5Au2bzy9aDjWGEVGNtPFQd4,10688
32
+ wbportfolio/api_clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ wbportfolio/api_clients/ubs.py,sha256=pB_urTr8x8YCW28c_hK7DeCzAx07VeLZ27TamrZln2k,6598
32
34
  wbportfolio/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
35
  wbportfolio/contrib/company_portfolio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
36
  wbportfolio/contrib/company_portfolio/admin.py,sha256=roUsuOjYDWX0OGWVBjCcW3MAcwJHJYHnqZ_pLpwakmQ,549
@@ -67,30 +69,31 @@ wbportfolio/factories/indexes.py,sha256=sInyNARyfUNbScxr_ng1HhxtJXIsK3awFf9BF1gr
67
69
  wbportfolio/factories/portfolio_cash_flow.py,sha256=e8LWkk5Gy0FU4HoCL9xPseCtLlVIkMrvAmey5swqcfc,727
68
70
  wbportfolio/factories/portfolio_cash_targets.py,sha256=6bYaKjV56yRbjRaQzime218Dho652pcpkAqwhq63D3g,678
69
71
  wbportfolio/factories/portfolio_swing_pricings.py,sha256=CLT9AgZKPwChfPDATl-r2r8IVsM5U6S5gDJ8BzsweyI,828
70
- wbportfolio/factories/portfolios.py,sha256=zjjbb81ZokA7vJ7SXFDOmiNqP3Aq6-ZEh2gPiaYKfkY,1550
72
+ wbportfolio/factories/portfolios.py,sha256=kZDuBXnGiMrliQ67UfXHQElv5y1nVLXN_7Au3RnZr-8,1553
71
73
  wbportfolio/factories/product_groups.py,sha256=JMtG301j5XehB3qmNSbXt6af56Y9uvG3fgbCMf9FCSc,1987
72
74
  wbportfolio/factories/products.py,sha256=N0V6sM_98sC6l8qN78wgfmtpYq7O2c5rW5hT5ZM5gsA,2880
73
- wbportfolio/factories/rebalancing.py,sha256=cU4oskGJKFtsgSNEaKAICtV5yIjCSAntNHhCBrLpBQU,721
75
+ wbportfolio/factories/rebalancing.py,sha256=I6_c_gDuhBYsmDPOU_b8e9W-Aa8I95gWXS_K8N5-xiQ,719
74
76
  wbportfolio/factories/reconciliations.py,sha256=Ne3rBZ_yvjlAtWW7qDLprHrLhNCtLL_RXU3yDHc3s3c,916
75
77
  wbportfolio/factories/roles.py,sha256=tot54YX70sNqZrAg5zGJTHd7_PFjZed_mny4lGlnwEA,857
76
78
  wbportfolio/factories/trades.py,sha256=ZHfj20KjeTu57sNaZzfSw2JqCoI9q4BjfPp5qRMVsro,1387
77
79
  wbportfolio/factories/orders/__init__.py,sha256=QG7on_F9GiuJgvGbM0BNDVdfGwwBz_WGbmCFNbKPZzc,83
78
- wbportfolio/factories/orders/order_proposals.py,sha256=JR7oABGv6uGQgNRNCWcgmTHOlyaugsKDnEZo-yfk-P0,549
79
- wbportfolio/factories/orders/orders.py,sha256=NvpkehJAke6mRM8tK8aPupROxaKxgVgChs9J0jg8hXw,619
80
+ wbportfolio/factories/orders/order_proposals.py,sha256=3QGG6eI2sWYGJenn17gz37A2PJgjZLlPqAsqci1lFXI,702
81
+ wbportfolio/factories/orders/orders.py,sha256=tTw2U-xvUsFpG4zad3KCHZPQx1FVg-zPjwEN73XEOjg,907
80
82
  wbportfolio/fdm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
83
  wbportfolio/fdm/tasks.py,sha256=59hXt3TOJaM8KpUaKdBNAGsO7NFMHaAlNA0T3FTUau0,533
82
84
  wbportfolio/filters/__init__.py,sha256=m44CdyYMtku8rMGyiX8KSmMdvyqaElKW4UMkEqOC1VM,1374
83
- wbportfolio/filters/assets.py,sha256=Tbci0xXuFzs2wCSMauhc-LsnB5LdmxcPVFk3AavM5z8,18158
85
+ wbportfolio/filters/assets.py,sha256=jQoWmK2teQPBpEUNLC3NWl6fhrndl1Tt0sPdQxiPPM4,18538
84
86
  wbportfolio/filters/assets_and_net_new_money_progression.py,sha256=IYl_qMFO9QKhXhCTtz2JrOjlAKdEkykNlu4DO_H7HkQ,1403
85
87
  wbportfolio/filters/custodians.py,sha256=pStQgPQPhPpnt57_V7BuXbFXmRiZBEAiEeMFuQmt2NE,287
86
88
  wbportfolio/filters/esg.py,sha256=ZEUQh3IQxLSshVrgtPqHC_ToirrllkCXR_KzUlCUtkA,688
87
89
  wbportfolio/filters/performances.py,sha256=xJC7fe8XNPz159cewMD8Es8u89vzgpZT4D2Gm1YToM8,7340
88
- wbportfolio/filters/portfolios.py,sha256=o5S5FaUnHTmtgpBPzEom7odypdyM_I2O6Lbhj7Oy4nU,1469
90
+ wbportfolio/filters/portfolios.py,sha256=rQL77Cs1YVR8I_kSZwYppJ9yPj8ebWrDQHs_sOI_Ndk,2247
89
91
  wbportfolio/filters/positions.py,sha256=7eMqwqnNd_owi2Mg-1Uf9K9K9SHSgdZ8CcYgWw49qgI,8548
90
92
  wbportfolio/filters/products.py,sha256=jOoRKDm_2n2a-Y1dHWl1zjdrwy4Cek57Qa3Q10p_zzY,6492
91
93
  wbportfolio/filters/roles.py,sha256=jb8WLzZ_e03x8XkAWuYAdPgMyre3h-rtgYXKJ3dqkhw,920
92
94
  wbportfolio/filters/signals.py,sha256=XZ1d50yas47Xy57ZfmvCVjMSKojaoqrc5FHJBcVadtk,3144
93
- wbportfolio/filters/orders/__init__.py,sha256=zsC0VukFwPd_8CrXcQJjaonjmZLZPMUnf4S2gIFI3AU,35
95
+ wbportfolio/filters/orders/__init__.py,sha256=Bfr7ZrKJYIiQoji7S7YZWMiYXjsq9B_AoBF98aNZvZ4,87
96
+ wbportfolio/filters/orders/order_proposals.py,sha256=V_lICJBEG1aOVaYiaIi1KcIn8uEJvtXrEzrP9tz4Xuw,2315
94
97
  wbportfolio/filters/orders/orders.py,sha256=eRVb9w7zHq6bPnHOd3gC1k6OJYSpQ6PeXxu2dxJe1A0,289
95
98
  wbportfolio/filters/transactions/__init__.py,sha256=TXiHB7_ItZPVcXCCGejpLBRD4R7rtt3Qrq59z8D5ChA,582
96
99
  wbportfolio/filters/transactions/claim.py,sha256=eSykgNzcytMWWTmlGlaqBuh98vfOKoTLvA3cglc_jZ0,17951
@@ -104,12 +107,12 @@ wbportfolio/fixtures/wbrisk_management.yaml.gz,sha256=alFDRu8S9R6IsaIkpJe_v36B2G
104
107
  wbportfolio/import_export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
108
  wbportfolio/import_export/utils.py,sha256=mzybnwU2y-NOk43QDNDlOCaSPO-0BFlSX_X8uxplNiY,1083
106
109
  wbportfolio/import_export/backends/__init__.py,sha256=Ki5jE95usAbxfV3zeZMkAmjh7G8TodBkKTDBPa_HJX0,40
107
- wbportfolio/import_export/backends/utils.py,sha256=joFlyCrstrXSFb0RmQ4T7lfRVT7lxb7qe8TePis8wFU,2116
110
+ wbportfolio/import_export/backends/utils.py,sha256=nM0i5rhQ66Vgm7WH3jIiNvNGuC-Cy_vtXkSzrUiGc0Q,1355
108
111
  wbportfolio/import_export/backends/refinitiv/adjustment.py,sha256=ahVjWMHY1FuuDnMeascAlVUa3Mys6rvROG1uKDq6QeA,1554
109
112
  wbportfolio/import_export/backends/ubs/__init__.py,sha256=jHm6zfyZPfvdzyMfJGngGbwROxtYWyJdpQorpleVKMA,82
110
- wbportfolio/import_export/backends/ubs/asset_position.py,sha256=xN9VBsl8wdXDbfQOKS_tOlmlwuNqv-yGGg20QUBbavI,1901
111
- wbportfolio/import_export/backends/ubs/fees.py,sha256=wKGWyzmtvXloUYeMN6mkfoAwtn4qVqyw0OX3e8qGtrw,2863
112
- wbportfolio/import_export/backends/ubs/instrument_price.py,sha256=urIvmZlETWD8oftv5zAqyg83K0x4D5O5iau-GHxUeos,1932
113
+ wbportfolio/import_export/backends/ubs/asset_position.py,sha256=Nqe_M3T2CHFs-vxmzyTcdaEdlmfbAjtJJL5U0Bc_MXI,1942
114
+ wbportfolio/import_export/backends/ubs/fees.py,sha256=rwZIHfJbvB1xdHruz0INDNWlt40Dj9kw2zDOto8rkq0,2532
115
+ wbportfolio/import_export/backends/ubs/instrument_price.py,sha256=Bj00tfwUK5t2Q7C2bc2djhvlIkZ8ozZ9hqQP9W1sVRI,1974
113
116
  wbportfolio/import_export/backends/ubs/mixin.py,sha256=Y0od5nmGwwUN7Bh7UYYbebLNrfpx0PaM1KhCRymNu10,483
114
117
  wbportfolio/import_export/backends/wbfdm/__init__.py,sha256=k02E8ynHxTo65JV_TJ1ng6mpLuWomFpLFkyaRxr9SE4,50
115
118
  wbportfolio/import_export/backends/wbfdm/adjustment.py,sha256=CpkVNNlDSVui00Aihq-1i_Vc_kqi2gjODxWb7K0vsWM,1822
@@ -117,10 +120,10 @@ wbportfolio/import_export/backends/wbfdm/dividend.py,sha256=iAQXnYPXmtG_Jrc8THAJ
117
120
  wbportfolio/import_export/backends/wbfdm/mixin.py,sha256=JNtjgqGLson1nu_Chqb8MWyuiF3Ws8ox2vapxIRBYKE,400
118
121
  wbportfolio/import_export/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
122
  wbportfolio/import_export/handlers/adjustment.py,sha256=6bdTIYFmc8_HFxcdwtnYwglMyCfAD8XrTIrEb2zWY0g,1757
120
- wbportfolio/import_export/handlers/asset_position.py,sha256=UZBDlEK5mxtGu9cZvwiQS6J8GNkMJqDZb7KZ3uwex0g,8698
123
+ wbportfolio/import_export/handlers/asset_position.py,sha256=trI_I4IxZ6fqV9_BpRAvPNkYf07-loQB7f4ipkGkJbE,8695
121
124
  wbportfolio/import_export/handlers/dividend.py,sha256=F0oLfNt2B_QQAjHBCRpxa5HSkfkAYdal_NjLJGtVckY,4408
122
125
  wbportfolio/import_export/handlers/fees.py,sha256=BOFHAvSTlvVLaxnm6KD_fcza1TlPc02HOR9J0_jjswI,2495
123
- wbportfolio/import_export/handlers/orders.py,sha256=5EWm2ocqzc2PBzZRawGIMybkHH7ySjQyHDuGsGBqjIQ,3132
126
+ wbportfolio/import_export/handlers/orders.py,sha256=GU3_tIy-tAw9aU-ifsnmMZPBB9sqfkFC_S1d9VziTwg,3136
124
127
  wbportfolio/import_export/handlers/portfolio_cash_flow.py,sha256=W7QPNqEvvsq0RS016EAFBp1ezvc6G9Rk-hviRZh8o6Y,2737
125
128
  wbportfolio/import_export/handlers/register.py,sha256=sYyXkE8b1DPZ5monxylZn0kjxLVdNYYZR-p61dwEoDM,2271
126
129
  wbportfolio/import_export/handlers/trade.py,sha256=g2jAYYeuhZv_DuvM6zlROcq6rUlSbGaQ3tO4u6wkSRU,11140
@@ -158,7 +161,7 @@ wbportfolio/import_export/parsers/sg_lux/customer_trade.py,sha256=gTEUIaxlZvXXCg
158
161
  wbportfolio/import_export/parsers/sg_lux/customer_trade_pending_slk.py,sha256=WyRpKXkNhpK4H9aNjW7_ggcCGlN_-9ETlR1QsE9xl_k,5068
159
162
  wbportfolio/import_export/parsers/sg_lux/customer_trade_slk.py,sha256=D_1c0v6lTXkopjZzr9pQb575HxrMFe91tKk8xT1X3Ns,3604
160
163
  wbportfolio/import_export/parsers/sg_lux/customer_trade_without_pw.py,sha256=nMYV9-OwY_TagU36Ab0dOweZYzVriFWHXPYjauBg2Yk,2034
161
- wbportfolio/import_export/parsers/sg_lux/equity.py,sha256=w13LAMNWReZzqmdFyXdazVnpGr1UUNLG-pJgn5c16gI,6116
164
+ wbportfolio/import_export/parsers/sg_lux/equity.py,sha256=SXupaP9W299oFfnucV7FogY_yqusLkbqQFR3nGt-4m0,6117
162
165
  wbportfolio/import_export/parsers/sg_lux/fees.py,sha256=AK2TGOjI3JrOjtACEQd-4ffuedtIus-_gWug6wN6RQs,1846
163
166
  wbportfolio/import_export/parsers/sg_lux/perf_fees.py,sha256=6HAV3Pu2aaYARjMQvN24Op2rru_YdjeI9J9ADDQVH8s,1513
164
167
  wbportfolio/import_export/parsers/sg_lux/portfolio_cash_flow.py,sha256=ftLKWukUl9AcGWHQmJZnShVZpkO4rOl04PGlLcalDdQ,889
@@ -169,7 +172,7 @@ wbportfolio/import_export/parsers/sg_lux/utils.py,sha256=xrtEkdz_ypGFRTWn3-Kz6Gz
169
172
  wbportfolio/import_export/parsers/sg_lux/valuation.py,sha256=tmc-KHcRUHjTZVck8vzUIoN4Fcb-_zevmET4ZkkRlak,1788
170
173
  wbportfolio/import_export/parsers/societe_generale/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
174
  wbportfolio/import_export/parsers/societe_generale/customer_trade.py,sha256=eUgd_ZwK8WZh8-oXTLH4t_F9fXE6SCSOreIqXwVwT0w,2110
172
- wbportfolio/import_export/parsers/societe_generale/strategy.py,sha256=xYocT0zDOI2k0UmB6VbZu6t2rwXFuXUV_cJG8f47uEQ,4502
175
+ wbportfolio/import_export/parsers/societe_generale/strategy.py,sha256=b0U3ZU1pyi5dbE678lD2M636v8mw6KjVBFUwJbP6yqk,4503
173
176
  wbportfolio/import_export/parsers/societe_generale/valuation.py,sha256=mxaV2cL5WKg2omrwLxcYkeLnb95S-NpG15FTGAJRy58,1225
174
177
  wbportfolio/import_export/parsers/tellco/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
178
  wbportfolio/import_export/parsers/tellco/customer_trade.py,sha256=U04YVJHxQLWxpN8z4DkcK4p0lK1YpA8iDnRsjgNoprY,2126
@@ -177,7 +180,7 @@ wbportfolio/import_export/parsers/tellco/equity.py,sha256=3mPqh-kridsNCy5K4sa43S
177
180
  wbportfolio/import_export/parsers/tellco/valuation.py,sha256=QM8fYYOESGocACSbJnqD-1TtSYxOXOkkT7oLY6XY10Y,1642
178
181
  wbportfolio/import_export/parsers/ubs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
182
  wbportfolio/import_export/parsers/ubs/customer_trade.py,sha256=ZLWYLGO8BveXb5mTFfg53LgXXLGvztDgUaqIDa-qkJ0,2010
180
- wbportfolio/import_export/parsers/ubs/equity.py,sha256=yhB4upE9ps9zvBkKhwJuxUvQpaohth0tcKf7tsW2tlw,3470
183
+ wbportfolio/import_export/parsers/ubs/equity.py,sha256=a3Hv6kjE__VUSdkE2TJ4NBCyVvnt34bPO-uZPR7pcEM,3471
181
184
  wbportfolio/import_export/parsers/ubs/historical_customer_trade.py,sha256=1IggU7Ogg8-gdwLqBtz-FZ6l-UKsjbtM-KomM8u6QpA,1746
182
185
  wbportfolio/import_export/parsers/ubs/valuation.py,sha256=6P71APM4xGoAadCywO6DBz42xL1bClacf242pb25w_s,1597
183
186
  wbportfolio/import_export/parsers/ubs/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -265,22 +268,25 @@ wbportfolio/migrations/0082_remove_tradeproposal_creator_and_more.py,sha256=DZBK
265
268
  wbportfolio/migrations/0083_order_alter_trade_options_and_more.py,sha256=oFYG2cVf2CFKFJX84eUSmGJdK1BHY_QcVm_hmAIbVNg,9952
266
269
  wbportfolio/migrations/0084_orderproposal_min_order_value.py,sha256=bJPpPX7PQmlWAIyLzZ6ca6K0paGTRbzS8AkyOHDoGMc,925
267
270
  wbportfolio/migrations/0085_order_desired_target_weight.py,sha256=L8p5t4PqjWIwqwiqt-ofdfGkBhm-7dtbg52cIkxNnDs,803
271
+ wbportfolio/migrations/0086_orderproposal_total_cash_weight.py,sha256=IE65OYYBOSQjj6znl9jmsMalxDmKdnHV1DbVz_ZX_M4,689
272
+ wbportfolio/migrations/0087_product_order_routing_custodian_adapter.py,sha256=4OHTjdXNwJ-My8EgUGYWM_vRBccjYgghjN4fLV0n1yQ,4564
273
+ wbportfolio/migrations/0088_orderproposal_total_effective_portfolio_contribution.py,sha256=6Q41GSbWg_L8r6FUcQ9MrdpRazOdUlc7tD8_bmg8a3Y,521
268
274
  wbportfolio/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
269
275
  wbportfolio/models/__init__.py,sha256=qU4e7HKyh8NL_0Mg92PcbHTewCv7Ya2gei1DMGe1LWE,980
270
276
  wbportfolio/models/adjustments.py,sha256=osXWkJZOiansPWYPyHtl7Z121zDWi7u1YMtrBQtbHVo,10272
271
- wbportfolio/models/asset.py,sha256=PwL16w2Rw_rJL73e0vCWMlRqsCxKW4zA9bf1EgTzD60,39574
272
- wbportfolio/models/builder.py,sha256=gGBlU0s5kvMxUas2lil0n98BxVjVocUDfU9oHKgkkJY,11622
277
+ wbportfolio/models/asset.py,sha256=K0cvK-g1dUmQLjVAboUm3zDb4YGW_Wu9eRMdhfEMSck,39123
278
+ wbportfolio/models/builder.py,sha256=txZE_gEDgkPgSxSF0AlvZiRyhRQixD4Ame0wEF6Fjoo,14028
273
279
  wbportfolio/models/custodians.py,sha256=owTiS2Vm5CRKzh9M_P9GOVg-s-ndQ9UvRmw3yZP7cw0,3815
274
280
  wbportfolio/models/exceptions.py,sha256=3ix0tWUO-O6jpz8f07XIwycw2x3JFRoWzjwil8FVA2Q,52
275
281
  wbportfolio/models/indexes.py,sha256=gvW4K9U9Bj8BmVCqFYdWiXvDWhjHINRON8XhNsZUiQY,639
276
- wbportfolio/models/portfolio.py,sha256=7PRPI8sNe4Ehe39-VJ14uPyG4gXqc3uMvwqS7pCy9yg,53266
282
+ wbportfolio/models/portfolio.py,sha256=Lrtxa-jItT9HCBQxfUClnXdaLPTf4CKZEXwAEmkhNtE,54618
277
283
  wbportfolio/models/portfolio_cash_flow.py,sha256=uElG7IJUBY8qvtrXftOoskX6EA-dKgEG1JJdvHeWV7g,7336
278
284
  wbportfolio/models/portfolio_cash_targets.py,sha256=WmgG-etPisZsh2yaFQpz7EkpvAudKBEzqPsO715w52U,1498
279
285
  wbportfolio/models/portfolio_relationship.py,sha256=ZGECiPZiLdlk4uSamOrEfuzO0hduK6OMKJLUSnh5_kc,5190
280
286
  wbportfolio/models/portfolio_swing_pricings.py,sha256=_LqYC1VRjnnFFmVqFPRdnbgYsVxocMVpClTk2dnooig,1778
281
287
  wbportfolio/models/product_groups.py,sha256=qoT8qv6tRdD6zmNDxsHO6dtnWw1-TRnyS5NqOq_gwhI,7901
282
- wbportfolio/models/products.py,sha256=CkI7SBKWXgMkIcaGijZ-ghc_pPq075YjNgH-LWk1XCc,22845
283
- wbportfolio/models/rebalancing.py,sha256=6KURFl0j121ccd4ksuXJqKQF1aPaA7W0DkHFIlBFGow,7690
288
+ wbportfolio/models/products.py,sha256=8XXx6sN3cUCls_TlwAc8-vL1bNn0JQRAxeCeyLJlmG8,23177
289
+ wbportfolio/models/rebalancing.py,sha256=Mw24JO4C8jRA6U7dgsNR8usgIO1VqMgsVs94HdC07cE,7729
284
290
  wbportfolio/models/registers.py,sha256=qA6T33t4gxFYnabQFBMd90WGIr6wxxirDLKDFqjOfok,4667
285
291
  wbportfolio/models/roles.py,sha256=wF5Atp0xsJxDrYjmFw9XHgEOe_4C-lm4pppeYdymOrA,7343
286
292
  wbportfolio/models/signals.py,sha256=jZKC43nIqVdLapwo3getIMSqPUwbK5M36MmvA50jY24,1041
@@ -290,11 +296,12 @@ wbportfolio/models/graphs/portfolio.py,sha256=NwkehWvTcyTYrKO5ku3eNNaYLuBwuLdSbT
290
296
  wbportfolio/models/graphs/utils.py,sha256=1AMpEE9mDuUZ82XgN2irxjCW1-LmziROhKevEBo0mJE,2347
291
297
  wbportfolio/models/llm/wbcrm/analyze_relationship.py,sha256=etKdmt9m6Ra5u7EA9t98RVSqFKpbFd4iwBVaH9T26M8,2320
292
298
  wbportfolio/models/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
293
- wbportfolio/models/mixins/instruments.py,sha256=SgBreTpa_X3uyCWo7t8B0VaTtl49IjmBMe4Pab6TjAM,6796
299
+ wbportfolio/models/mixins/instruments.py,sha256=SuMPquQ93D4pZMK-4hQbJtV58_NOyf3wVOctQq7LNXQ,7054
294
300
  wbportfolio/models/mixins/liquidity_stress_test.py,sha256=iQVzT3QM7VtHnqfj9gT6KUIe4wC4MJXery-AXJHUYns,58820
295
301
  wbportfolio/models/orders/__init__.py,sha256=EH9UacGR3npBMje5FGTeLOh1xqFBh9kc24WbGmBIA3g,69
296
- wbportfolio/models/orders/order_proposals.py,sha256=nKzeHPcSQav4KkaUXUBWJVxd8ku3GmG5KQKyQ3cvIUM,40467
297
- wbportfolio/models/orders/orders.py,sha256=8vYyAV1S2ATVD3Ve_Cjtms_mj564yu5pvfK6wtqQx3A,9664
302
+ wbportfolio/models/orders/order_proposals.py,sha256=RYiQRo93RoXRy-QKl9shIGb4OfueiUT6we9uoQXokQk,57039
303
+ wbportfolio/models/orders/orders.py,sha256=kiVmVeW2D1bAuT983nSeIug6uoZ78IZovuAgls-CO8w,10150
304
+ wbportfolio/models/orders/routing.py,sha256=OpeP-rfMm1UN7a3vbNxBEQxqtGfE57AeGWnbTZa1fRQ,2223
298
305
  wbportfolio/models/reconciliations/__init__.py,sha256=MXH5fZIPGDRBgJkO6wVu_NLRs8fkP1im7G6d-h36lQY,127
299
306
  wbportfolio/models/reconciliations/account_reconciliation_lines.py,sha256=QP6M7hMcyFbuXBa55Y-azui6Dl_WgbzMntEqWzQkbfM,7394
300
307
  wbportfolio/models/reconciliations/account_reconciliations.py,sha256=rofSxetFfEJov6mPyoTvGxELA16HILyJZtQvm_kwYU0,4405
@@ -304,23 +311,26 @@ wbportfolio/models/transactions/claim.py,sha256=SF2FlwG6SRVmA_hT0NbXah5-fYejccWK
304
311
  wbportfolio/models/transactions/dividends.py,sha256=mmOdGWR35yndUMoCuG24Y6BdtxDhSk2gMQ-8LVguqzg,1890
305
312
  wbportfolio/models/transactions/fees.py,sha256=wJtlzbBCAq1UHvv0wqWTE2BEjCF5RMtoaSDS3kODFRo,7112
306
313
  wbportfolio/models/transactions/trades.py,sha256=2cDNjf1hJwFwrDT1SLacUU-Nkt5kU62zjI3WIj_Q0vQ,16340
307
- wbportfolio/models/transactions/transactions.py,sha256=XTcUeMUfkf5XTSZaR2UAyGqCVkOhQYk03_vzHLIgf8Q,3807
314
+ wbportfolio/models/transactions/transactions.py,sha256=6resBETl_3an6TFLdnSYLXt6QKg5m4JpC9XAGvEK2Ts,3817
315
+ wbportfolio/order_routing/__init__.py,sha256=kYloUGytPBNB8KVy5ysm9PlEEU_sGPk5c3ch46dXeJo,604
316
+ wbportfolio/order_routing/adapters/__init__.py,sha256=YiM5FFvLucDTBgIn3mCBjKNSRU7K2pokHdbWBoaZA94,1549
317
+ wbportfolio/order_routing/adapters/ubs.py,sha256=_Z9-j1a6_F08VlNIjLLn5XmhoKSZQTTH14lGeTgbu9A,6328
308
318
  wbportfolio/pms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
309
- wbportfolio/pms/typing.py,sha256=Yqo_QDZEVT4yHvgOqFf2vpYG3UYMPw5qNVR6M9KcPv0,8950
319
+ wbportfolio/pms/typing.py,sha256=kNesj7e-SA9lKgmdInJ94R60-pXNKm6guSj_cD3CQUE,10638
310
320
  wbportfolio/pms/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
311
321
  wbportfolio/pms/analytics/portfolio.py,sha256=u_S-e6HUQwAyq90gweDmxyTHWrIc5nd84sLuUF2iJzA,2031
312
322
  wbportfolio/pms/analytics/utils.py,sha256=EfhKdo9B2ABaUPppb8DgZSqpNkSze8Rjej1xDjv-XcQ,282
313
323
  wbportfolio/pms/statistics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
324
  wbportfolio/pms/trading/__init__.py,sha256=R_yLKc54sCak8A1cW0O1Aszrcv5KV8mC_3h17Hr20e4,36
315
- wbportfolio/pms/trading/handler.py,sha256=o31jtevfnSSv0aSzAsnthz2luM7F-D5d061LaqfOHUw,8542
325
+ wbportfolio/pms/trading/handler.py,sha256=sGwtwerozgiCVOTeQgJ0Q9g1zzQCPuydkf0aWn6NnGs,8646
316
326
  wbportfolio/rebalancing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
317
327
  wbportfolio/rebalancing/base.py,sha256=wpeoxdkLz5osxm5mRjkOoML7YkYvwuAlqSLLtHBbWp8,984
318
328
  wbportfolio/rebalancing/decorators.py,sha256=162ZmXV2YQGI830LWvEnJ95RexMzHvaCGfcVOnXTOXM,502
319
329
  wbportfolio/rebalancing/models/__init__.py,sha256=AQjG7Tu5vlmhqncVoYOjpBKU2UIvgo9FuP2_jD2w-UI,232
320
- wbportfolio/rebalancing/models/composite.py,sha256=N2IC3ZjqNzfHTvLeUj8aSsn2jx7gFN3pzAh5bOK6pIk,1672
321
- wbportfolio/rebalancing/models/equally_weighted.py,sha256=JF6VoAcsHUUJvTBeUtIn2ojWtrn4pVH1PMTyJ2Y69qg,1301
322
- wbportfolio/rebalancing/models/market_capitalization_weighted.py,sha256=JPVT1UmDOU21S_jdYhOXHQHRnH0BbqVYGxRG4hOolI0,5643
323
- wbportfolio/rebalancing/models/model_portfolio.py,sha256=Dk3tw9u3WG1jCP3V2-R05GS4-DmDBBtxH4h6p7pRe4g,1393
330
+ wbportfolio/rebalancing/models/composite.py,sha256=kDa4-Q3aMOrBGrrfIwTyjik14vF8cjfD-ArIm8FCR9A,1671
331
+ wbportfolio/rebalancing/models/equally_weighted.py,sha256=iv6FiICGQX1mPnkK2L4oDeCH_-4yF8SL8YUBzjXBZsI,1306
332
+ wbportfolio/rebalancing/models/market_capitalization_weighted.py,sha256=3Lm3A4yBj_QEBw0EjTvn39f1vFzjLz_ITDUQCAXuxJg,5642
333
+ wbportfolio/rebalancing/models/model_portfolio.py,sha256=_j892V6YCrXLzNZdpxuKmaNu_VYfamStwb6Z-4sECPA,1326
324
334
  wbportfolio/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
335
  wbportfolio/reports/monthly_position_report.py,sha256=e7BzjDd6eseUOwLwQJXKvWErQ58YnCsznHU2VtR6izM,2981
326
336
  wbportfolio/risk_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -356,17 +366,17 @@ wbportfolio/serializers/portfolio_cash_targets.py,sha256=_GdsFXoBda1JHJnfZbaVlNF
356
366
  wbportfolio/serializers/portfolio_relationship.py,sha256=UR_GIF2LHw82a8mv6L8OXYvoCp5-QWtubt33Y4mqFow,1933
357
367
  wbportfolio/serializers/portfolio_swing_pricing.py,sha256=a21st7MmcugbAO_xc90QWSeXwU1ivk-y2PWlMGKySJY,655
358
368
  wbportfolio/serializers/portfolios.py,sha256=bEHyIlkw_zNzuurf-57RrQPOSQwxN_qJsT889cuLahs,7684
359
- wbportfolio/serializers/positions.py,sha256=UK9dvE1wiILw2E209InrsUhme52vfUYDDERBeKCcn_k,2415
369
+ wbportfolio/serializers/positions.py,sha256=ZjRsvdsKRFR5z98_iJyQ20ykGmPJqKesNPwA-vw_yPU,2415
360
370
  wbportfolio/serializers/product_group.py,sha256=klPGmAb1MvJpyiKKMRb8uYFIMm6SCZkMFQDu5EH-mkY,3680
361
371
  wbportfolio/serializers/products.py,sha256=B1udmx6PibxpesFndl7nb7x86P8WPcksDssmqNdZ3Uo,12694
362
- wbportfolio/serializers/rebalancing.py,sha256=TX8Efann1oDhxZqoHiobJPMzXq7UxlcHMj54IdHXwP4,1840
372
+ wbportfolio/serializers/rebalancing.py,sha256=NL4BG_e9qOZqrl4Yag_sgLxOheHJklAOHaCtX7rctMc,1838
363
373
  wbportfolio/serializers/reconciliations.py,sha256=oFvGCAGioAOBK3xXjfwjMVYOXv3AbSyMg6YK6Olp6ow,7373
364
374
  wbportfolio/serializers/registers.py,sha256=zhdKH_mHEBE0VOhm6xpY54bTMtcSaY5BskEaJxtFd5Q,2737
365
375
  wbportfolio/serializers/roles.py,sha256=T-9NqTldpvaEMFy-Bib5MB6MeboygEOqcMP61mzzD3Q,2146
366
376
  wbportfolio/serializers/signals.py,sha256=hD6R4oFtwhvnsJPteytPKy2JwEelmxrapdfoLSnluaE,7053
367
377
  wbportfolio/serializers/orders/__init__.py,sha256=PKJRksA1pWsh8nVfGASoB0m3LyUzVRnq1m9VPp90J7k,271
368
- wbportfolio/serializers/orders/order_proposals.py,sha256=MmL8noS2qqyKKXiYLLPRS4_Cz1RhlfdFwkCKZiqRyxQ,4461
369
- wbportfolio/serializers/orders/orders.py,sha256=pAKjJLRANOo1iMlcv18twuQ0aAVDVKYt-pPx6avnWRQ,7464
378
+ wbportfolio/serializers/orders/order_proposals.py,sha256=wIxnTY35dn7gH1kj9wGHnl2lOrR6ikRdqxXrSf85tT0,4762
379
+ wbportfolio/serializers/orders/orders.py,sha256=7zIl5lwt7RatSVcrmNmLpWX2r2VkND33HQOUkryGjYo,7582
370
380
  wbportfolio/serializers/transactions/__init__.py,sha256=-7Pan4n7YI3iDvGXff6okzk4ycEURRxp5n_SHCY_g_I,493
371
381
  wbportfolio/serializers/transactions/claim.py,sha256=kC4E2RZRrpd9i8tGfoiV-gpWDk3ikR5F1Wf0v_IGIvw,11599
372
382
  wbportfolio/serializers/transactions/dividends.py,sha256=ADXf9cXe8rq55lC_a8vIzViGLmQ-yDXkgR54k2m-N0w,1814
@@ -386,38 +396,38 @@ wbportfolio/templates/portfolio/email/email_base_template.html,sha256=n6DN3QV92t
386
396
  wbportfolio/templates/portfolio/email/rebalancing_report.html,sha256=Go7joPYXwF_1Q72mblOtJSw4-TbH3NqW7ww_xGBP95k,1206
387
397
  wbportfolio/templates/portfolio/macro/macro_review.html,sha256=OxliFeX9pVNKeTVTaPnfNPHmM5YxVMr77PeKC-6y0jY,2273
388
398
  wbportfolio/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
389
- wbportfolio/tests/conftest.py,sha256=oHv7tM89iMgLOvv5VDNwz73RklhhKSqCVzhDw-zPL28,4341
390
- wbportfolio/tests/signals.py,sha256=Ewsjwisy2lP1zDzYVGv2pAUl4WSuDbK3y5kPOtjktPI,5941
391
- wbportfolio/tests/tests.py,sha256=LSitKCl87mPmHUtW75dVuttGeD_umLwyN_OP_GNqvUU,1033
399
+ wbportfolio/tests/conftest.py,sha256=007ydJK59J1guakXWYrZ-waDZNgXAXwMYSJ-BTDFVhA,4614
400
+ wbportfolio/tests/signals.py,sha256=aUu4nDWmVAAWyokcWJDj2RsajeIa070qXsZeNq6ynqY,5545
401
+ wbportfolio/tests/tests.py,sha256=3NdpJQlksLclF-7lVP07WJXaEzquhneoDX1lIA_tyXU,1121
392
402
  wbportfolio/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
403
  wbportfolio/tests/models/test_account_reconciliation.py,sha256=7IDZh6qbG7-3czbNf5aDRaEDnMBw2Qiqk_h425dFu9w,8569
394
404
  wbportfolio/tests/models/test_assets.py,sha256=N8OP2ZTPdq0lGonFRB0q_ruwF8QYpOGLkPWoucr8u_E,10428
395
405
  wbportfolio/tests/models/test_custodians.py,sha256=WnFA4R-deVL7DSKufGE0mcFUdU05otNfGvmG4psiIh4,340
396
406
  wbportfolio/tests/models/test_customer_trades.py,sha256=50By281j-nJ43jwRWK_KxNQGv6SuimT9e_ejgu6b19o,4942
397
407
  wbportfolio/tests/models/test_dividends.py,sha256=SVkIW3OqN4-9tq1HIvJm8_8rOyNTHbJKFiN075DeGGc,162
398
- wbportfolio/tests/models/test_imports.py,sha256=-8qWpShRxbjnUj2l7OQagMmI61xVReO3JdlaGxtuXM4,7736
408
+ wbportfolio/tests/models/test_imports.py,sha256=byqRJlnWqkkLdb8CkaX0cPGqfICOkuZ2_6tBk2YR3D0,7857
399
409
  wbportfolio/tests/models/test_instrument_mixins.py,sha256=avX7a7Ovdzm_2v8JpSmrzqPo52qmIEa33c074D5KFCU,2206
400
410
  wbportfolio/tests/models/test_merge.py,sha256=sdsjiZsmR6vsUKwTa5kkvL6QTeAZqtd_EPWPI11FKGY,6497
401
411
  wbportfolio/tests/models/test_portfolio_cash_flow.py,sha256=X8dsXexsb1b0lBiuGzu40ps_Az_1UmmKT0eo1vbXH94,5792
402
412
  wbportfolio/tests/models/test_portfolio_cash_targets.py,sha256=q8QWAwt-kKRkLC0E05GyRhF_TTQXIi8bdHjXVU0fCV0,965
403
413
  wbportfolio/tests/models/test_portfolio_swing_pricings.py,sha256=kr2AOcQkyg2pX3ULjU-o9ye-NVpjMrrfoe-DVbYCbjs,1656
404
- wbportfolio/tests/models/test_portfolios.py,sha256=VdfkblwSow1w-HLFto8wssuBTjSqaCBpE1_Tf6wb0R0,51878
414
+ wbportfolio/tests/models/test_portfolios.py,sha256=qaNTgvtxSROpjPtzSffLMrnsOJYjftN8gNhqmAm8fLE,53819
405
415
  wbportfolio/tests/models/test_product_groups.py,sha256=AcdxhurV-n_bBuUsfD1GqVtwLFcs7VI2CRrwzsIUWbU,3337
406
- wbportfolio/tests/models/test_products.py,sha256=IcBzw9hrGiWFMRwPBTMukCMWrhqnjOVA2hhb90xYOW8,9580
416
+ wbportfolio/tests/models/test_products.py,sha256=zB3xDGk7k7omI61hU9cnU96oBc3ICiMaYtFC9pidars,9965
407
417
  wbportfolio/tests/models/test_roles.py,sha256=4Cn7WyrA2ztJNeWLk5cy9kYo5XLWMbFSvo1O-9JYxeA,3323
408
418
  wbportfolio/tests/models/test_splits.py,sha256=ytKcHsI_90kj1L4s8It-KEcc24rkDcElxwQ8q0QxEvk,9689
409
419
  wbportfolio/tests/models/utils.py,sha256=ORNJq6NMo1Za22jGZXfTfKeNEnTRlfEt_8SJ6xLaQWg,325
410
420
  wbportfolio/tests/models/orders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- wbportfolio/tests/models/orders/test_order_proposals.py,sha256=T0vo7D65E0Cyqhwq3QK_Fd6RlCzCJRZSbA0PSZft0k4,31316
421
+ wbportfolio/tests/models/orders/test_order_proposals.py,sha256=WxZgoN0J7rF5TVa_hmXZdYnUXtrU0eH-U9CW1NWNBIM,34123
412
422
  wbportfolio/tests/models/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
413
423
  wbportfolio/tests/models/transactions/test_claim.py,sha256=NG3BKB-FVcIDgHSJHCjImxgMM3ISVUMl24xUPmEcPec,5570
414
424
  wbportfolio/tests/models/transactions/test_fees.py,sha256=tAp18x2wCNQr11LUnLtHNbBDbbX0v1DZnmW7i-cEi5Q,2423
415
- wbportfolio/tests/models/transactions/test_rebalancing.py,sha256=jmnv8pg_hyCsRjDmfCq1lCdEYzGpgvkBHYVrWhUJR2M,4061
425
+ wbportfolio/tests/models/transactions/test_rebalancing.py,sha256=JgBKrBFBU3lz1CiGU_Hk3ak6bnekWyK5kVZ1HxaoiCU,4058
416
426
  wbportfolio/tests/models/transactions/test_trades.py,sha256=q54umbOG1GUAxE4ruYadaS6IqZAFoxQ5Ux_g94CcmWQ,8867
417
427
  wbportfolio/tests/pms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
418
428
  wbportfolio/tests/pms/test_analytics.py,sha256=KzgZqZ9yYB1gsokw6IU-uKYWr1eFHWyFte8RSpMVRg8,1897
419
429
  wbportfolio/tests/rebalancing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
420
- wbportfolio/tests/rebalancing/test_models.py,sha256=XhDdWBpVu0a_CmBtUSrLoPLUB8CZQMkSLtu26Q7DdL8,7883
430
+ wbportfolio/tests/rebalancing/test_models.py,sha256=sJnVWM1kWUKeK3et2HiJb8RjL1DmU8JDHNHqFPhVhDw,7747
421
431
  wbportfolio/tests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
422
432
  wbportfolio/tests/serializers/test_claims.py,sha256=vQrg73xQXRFEgvx3KI9ivFre_wpBFzdO0p0J13PkvdY,582
423
433
  wbportfolio/tests/viewsets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -426,9 +436,9 @@ wbportfolio/tests/viewsets/test_performances.py,sha256=Cx5FqPO4K8G7F6-rqiiSDmFNY
426
436
  wbportfolio/tests/viewsets/test_products.py,sha256=VsLW5iazAGch8yxH0jTgcc2fn4L7iZ2gPw7PmqQL60g,4270
427
437
  wbportfolio/tests/viewsets/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
428
438
  wbportfolio/tests/viewsets/transactions/test_claims.py,sha256=QEZfMAW07dyoZ63t2umSwGOqvaTULfYfbN_F4ZoSAcw,6368
429
- wbportfolio/viewsets/__init__.py,sha256=1U1r0TNTUBsDyrZ8k9GbdG0SF0_O1RyORN9AaHJT71o,2436
439
+ wbportfolio/viewsets/__init__.py,sha256=nmWLARDxraY09h4-dpfbOWlx1OylZz3_DpGk_gvJv-o,2475
430
440
  wbportfolio/viewsets/adjustments.py,sha256=ugbX4aFRCaD4Yj1hxL-VIPaNI7GF_wt0FrkN6mq1YjU,1524
431
- wbportfolio/viewsets/assets.py,sha256=Pk565r7FOuJw7YsGg9L5SAWJqlg1lQpcjWQjnMYeH4Q,25259
441
+ wbportfolio/viewsets/assets.py,sha256=v0GvRb3Hoj26H4NmLB_d3iqdG1c1e9SsZrvzkzg9Jvg,16404
432
442
  wbportfolio/viewsets/assets_and_net_new_money_progression.py,sha256=Jl4vEQP4N2OFL5IGBXoKcj-0qaPviU0I8npvQLw4Io0,4464
433
443
  wbportfolio/viewsets/custodians.py,sha256=CTFqkqVP1R3AV7lhdvcdICxB5DfwDYCyikNSI5kbYEo,2322
434
444
  wbportfolio/viewsets/esg.py,sha256=27MxxdXQH3Cq_1UEYmcrF7htUOg6i81fUpbVQXAAKJI,6985
@@ -437,7 +447,7 @@ wbportfolio/viewsets/portfolio_cash_flow.py,sha256=jkBfdZRQ3KsxGMJpltRjmdrZ2qEFJ
437
447
  wbportfolio/viewsets/portfolio_cash_targets.py,sha256=CvHlrDE8qnnnfRpTYnFu-Uu15MDbF5d5gTmEKth2S24,322
438
448
  wbportfolio/viewsets/portfolio_relationship.py,sha256=RGyvxd8NfFEs8YdqEvVD3VbrISvAO5UtCTlocSIuWQw,2109
439
449
  wbportfolio/viewsets/portfolio_swing_pricing.py,sha256=-57l3WLQZRslIV67OT0ucHE5JXTtTtLvd3t7MppdVn8,357
440
- wbportfolio/viewsets/portfolios.py,sha256=6aF2Uh0EAdHdX1mMTQrFBlXZ5kmlaCPz49iDvT2CnYM,14438
450
+ wbportfolio/viewsets/portfolios.py,sha256=cF1XnSM6oQFgwYMo6wMF0u7WCwyPGdTTa3FUJI91mB0,14430
441
451
  wbportfolio/viewsets/positions.py,sha256=fYmkcYwNybeEZejMZVvel8yFdr7ob_jG8t6ar7snD58,13236
442
452
  wbportfolio/viewsets/product_groups.py,sha256=YvmuXPPy98K1J_rz6YPsx9gNK-tCS2P-wc1uRYgfyo0,2399
443
453
  wbportfolio/viewsets/product_performance.py,sha256=dRfRgifjGS1RgZSu9uJRM0SmB7eLnNUkPuqARMO4gyo,28371
@@ -446,9 +456,8 @@ wbportfolio/viewsets/rebalancing.py,sha256=ACmlRJGeSO7eUq5ckaXbHEINH6TA5nQYWHLbI
446
456
  wbportfolio/viewsets/reconciliations.py,sha256=tRS7UBDtMn-07uA9QqYvnCtp_mZGVeULF2OJMfHJPZk,7357
447
457
  wbportfolio/viewsets/registers.py,sha256=eOuEhW2McHsOapCKue7M4eazrJnVpCBVxImpFccq0z0,2401
448
458
  wbportfolio/viewsets/roles.py,sha256=vnzS1mlJMZS3GObrss6SfXOr3KRb-OHB1s4Msvtn7xQ,1556
449
- wbportfolio/viewsets/signals.py,sha256=URxNz-7tKNBgvaFIE3FItfao3Md0dKQN_eVFwxxiErk,2125
450
- wbportfolio/viewsets/charts/__init__.py,sha256=mNSpDrsqK-afRxGBfEsfgupUc20xU-JW08FpxIyudok,71
451
- wbportfolio/viewsets/charts/assets.py,sha256=d8y_9N3D3a41S-XUg7AV5GjLHoW44kRJOHTkzpeuemU,10573
459
+ wbportfolio/viewsets/charts/__init__.py,sha256=zE3bxS0V-nM_yZ610M7qsaToNOJXvTjwFLhH1it3h4M,169
460
+ wbportfolio/viewsets/charts/assets.py,sha256=P5ZQ7Kihw3Eab7n7CKxMLdkdWGyiF-qpntw_x9iRJuc,17906
452
461
  wbportfolio/viewsets/configs/__init__.py,sha256=K5opfVQvgGwSyw3XwDGkv3lo5i9jBxOJXYhLqyCdfeQ,137
453
462
  wbportfolio/viewsets/configs/buttons/__init__.py,sha256=hyvpxwh9ss8Q0xcE006qsTLuSsJeWt9saHRcU4g96tA,791
454
463
  wbportfolio/viewsets/configs/buttons/adjustments.py,sha256=sUY_3vxqP0kuqs8i5hklfboZI6QiAOrmu30eb29Xupo,492
@@ -458,14 +467,14 @@ wbportfolio/viewsets/configs/buttons/custodians.py,sha256=AE-VFahGreSlg5nejqQVvO
458
467
  wbportfolio/viewsets/configs/buttons/fees.py,sha256=8z-qo5krw4x_9ujp0s8iR8iY8_5m-wusPNaQkjMxFSA,443
459
468
  wbportfolio/viewsets/configs/buttons/mixins.py,sha256=d2W3IOgmi3icTMeoO_ckec2oCXA_kiG6nOriMG7YHTI,3169
460
469
  wbportfolio/viewsets/configs/buttons/portfolios.py,sha256=y1sqYJwhQG9M0AgUEY8yEE3VTdhhVxoup3YBc2IRm-U,5267
461
- wbportfolio/viewsets/configs/buttons/products.py,sha256=bHOs2ftfaLbIbJ7E8yFqQqSuXCIYD6w3f3peireAUyk,1839
470
+ wbportfolio/viewsets/configs/buttons/products.py,sha256=4xH19uYTDL55hKrV24eeeOFrmO1vV5MAwPw5IxNKosQ,3301
462
471
  wbportfolio/viewsets/configs/buttons/reconciliations.py,sha256=lw4r22GHpqKPUF1MrB6P9dOkL-FHe5iiBJ0--f8D74E,3145
463
472
  wbportfolio/viewsets/configs/buttons/registers.py,sha256=aS89TsYHql83k-NHojOrLDqtBpnpsUUO8x63PiMfrXM,445
464
473
  wbportfolio/viewsets/configs/buttons/signals.py,sha256=6sKBQI_eDvZuZR5bUUwvur5R67A3oChAGxPfayWUelE,2739
465
474
  wbportfolio/viewsets/configs/buttons/trades.py,sha256=X2B1l0iEIdHb3ZMf9rLVoiX_H8lSyLD12wopgumOIX4,2318
466
475
  wbportfolio/viewsets/configs/display/__init__.py,sha256=JoroVU97TvjTC1qtrduw5iD1ON1qXtH9j-Suzs-Psco,1993
467
476
  wbportfolio/viewsets/configs/display/adjustments.py,sha256=jIOEc23OCYBguLaZRlZxC916kocYT35ZV9Jsiocs9nk,3334
468
- wbportfolio/viewsets/configs/display/assets.py,sha256=SkWwzvrn4gOVbCThGJMV63V-iJh517qfUs4f4Wt3dBA,10573
477
+ wbportfolio/viewsets/configs/display/assets.py,sha256=TU5QP-6mucMkO8FUWJ-ATbWmiBK5x3o8N8pRufT4X-0,10063
469
478
  wbportfolio/viewsets/configs/display/claim.py,sha256=MRtEdxWjsDjt1k6O-ltM-SpPmHWBk85sCycsRgzd9jI,12041
470
479
  wbportfolio/viewsets/configs/display/custodians.py,sha256=R-tnktfY48K-8Zz-Fg_M6IXKHv42J1ZeSpom7lvYVS8,801
471
480
  wbportfolio/viewsets/configs/display/esg.py,sha256=W8uetCPN2TjHtU2kvQjKOmkq7uoaYvzX2iLN6Nz78Pk,3111
@@ -476,8 +485,8 @@ wbportfolio/viewsets/configs/display/portfolios.py,sha256=DuhnFIlBFvmDrxrd0IBbvX
476
485
  wbportfolio/viewsets/configs/display/positions.py,sha256=yolWLxzGPIpSQSiVhVQChURqbomPt5kSjkYrmXT1Mik,3123
477
486
  wbportfolio/viewsets/configs/display/product_groups.py,sha256=PwI-A0_ofShT2pub9-C1HqreiqpHxKMHd51JYwEzvbM,2500
478
487
  wbportfolio/viewsets/configs/display/product_performance.py,sha256=6Mme48JBn_okwClR44dBK2OK26ejvdasDvBa5DI33_0,10070
479
- wbportfolio/viewsets/configs/display/products.py,sha256=WraPeMIS87Vd3wstA4Vt3zi41vgLUxK5eoqCIQLyr8k,10679
480
- wbportfolio/viewsets/configs/display/rebalancing.py,sha256=8B4OG9SYQGc_sVL0BjxfHGVM7QS7-hNHcnYxYvTq5TI,1112
488
+ wbportfolio/viewsets/configs/display/products.py,sha256=8Ssmb4IjqXwTX81aKmLVbmWZcD_8uHa08vieO6cgjoM,10686
489
+ wbportfolio/viewsets/configs/display/rebalancing.py,sha256=3A5JFy6-lMcsyoUCW5qPBpwfKqVQRXUA2qDrDz4Yjlc,1108
481
490
  wbportfolio/viewsets/configs/display/reconciliations.py,sha256=YvMAuwmpX0HExvGsuf5UvcRQxe4eMo1iyNJX68GGC_k,6021
482
491
  wbportfolio/viewsets/configs/display/registers.py,sha256=1np75exIk5rfct6UkVN_RnfJ9ozvIkcWJgFV4_4rJns,3182
483
492
  wbportfolio/viewsets/configs/display/roles.py,sha256=SFUyCdxSlHZ3NsMrJmpVBSlg-XKGaEFteV89nyLMMAQ,1815
@@ -499,13 +508,14 @@ wbportfolio/viewsets/configs/endpoints/rebalancing.py,sha256=D0VqMkWUeC-4mSN-GbZ
499
508
  wbportfolio/viewsets/configs/endpoints/reconciliations.py,sha256=xriq1KSctxQa6AE9SgkupMPVa9807OyYSIYhWk9WBpM,1059
500
509
  wbportfolio/viewsets/configs/endpoints/roles.py,sha256=5Nwi2sdUYc85YL0wJ7SUtt87ZBTOVdFnEexUgVrmcX4,367
501
510
  wbportfolio/viewsets/configs/endpoints/trades.py,sha256=x6GwKkjZjBrRSZPorlIQdL3VPBUJVXjgn4v3HSLI2G8,1808
502
- wbportfolio/viewsets/configs/menu/__init__.py,sha256=3rcUt24ye5Rdzt7bpbvkUqQS6F4uy6iiHjIixPbm16I,1137
511
+ wbportfolio/viewsets/configs/menu/__init__.py,sha256=36o0jtf8dAKNnRA84QWQoihu9YG5QnKACFhAXU6M3CY,1179
503
512
  wbportfolio/viewsets/configs/menu/adjustments.py,sha256=sQ25Jp2N8nsLSUOEJTJUBE0Y7bIPHK4Y6LE0e1OzX38,316
504
513
  wbportfolio/viewsets/configs/menu/assets.py,sha256=FkddF1_mu01e1mnkJkXPQcE0izI0Q3wU7VBFIkeT-Qw,340
505
514
  wbportfolio/viewsets/configs/menu/claim.py,sha256=Q9Gf2spOB_S41ItzAJ7D9ARowxtVrLLBTeA757nXn38,1414
506
515
  wbportfolio/viewsets/configs/menu/custodians.py,sha256=W01URxeqDzcu--5R51QCBzbhSZ38Ruix5_ES5zI6Gp8,360
507
516
  wbportfolio/viewsets/configs/menu/fees.py,sha256=iYAMzavfTKSYo6CBzVrSggxl7kKwE1h_jHGCgV4pYm8,499
508
517
  wbportfolio/viewsets/configs/menu/instrument_prices.py,sha256=9bYMHq7AoPnaqdZ_6w3sEpk4X8Ptr_RnTlwxoE8lVow,358
518
+ wbportfolio/viewsets/configs/menu/orders.py,sha256=zyTvKDfRwoWjPP3IYLpufudtrRxrPTkoVBsnHvml6TY,426
509
519
  wbportfolio/viewsets/configs/menu/portfolio_cash_flow.py,sha256=JqTtceY6cH0fldMMT4AbEtrG855LWSJn4SG45-2-xec,343
510
520
  wbportfolio/viewsets/configs/menu/portfolios.py,sha256=ezR5a1gwAbjsdNV9YsfZ-c1f_oRFHpFhRQlU2x-VPV8,467
511
521
  wbportfolio/viewsets/configs/menu/positions.py,sha256=ejq6ZMcaYptogh8UMX-jwRdxXi8I2MsCcanYJanxesI,608
@@ -536,15 +546,15 @@ wbportfolio/viewsets/configs/titles/registers.py,sha256=-C-YeGBhGva48oER6EIQ8CxW
536
546
  wbportfolio/viewsets/configs/titles/roles.py,sha256=9LoJa3jgenXJ5UWRlIErTzdbjpSWMKsyJZtv-eDRTK4,739
537
547
  wbportfolio/viewsets/configs/titles/trades.py,sha256=29XCLxvY0Xe3a2tjCno3tN2rRXCr9RWpbWnzurJfnYI,1986
538
548
  wbportfolio/viewsets/orders/__init__.py,sha256=N8v9jdEXryOzrLlc7ML3iBCO2lmNXph9_TWoQ7PTvi4,195
539
- wbportfolio/viewsets/orders/order_proposals.py,sha256=mw385zzU52nCq8p6xgionh43xLmOn5aX-2BPlCHnqlE,6214
540
- wbportfolio/viewsets/orders/orders.py,sha256=u3tRqio-oCnmqhC5jmn_EDKoNrF1xXMgOu2c2BfqNS8,10851
549
+ wbportfolio/viewsets/orders/order_proposals.py,sha256=-VmvLEtL6-lhqT3WuyZlwnH1XFHpzuT9JBQclhRlNkY,8289
550
+ wbportfolio/viewsets/orders/orders.py,sha256=ENFcW4feaazV1FupeI5UiE4W9wv0k8b57ypDB7gr1KA,10928
541
551
  wbportfolio/viewsets/orders/configs/__init__.py,sha256=5MU57JXiKi32_PicHtiNr7YHmMN020FrlF5NFJf_Wds,94
542
552
  wbportfolio/viewsets/orders/configs/buttons/__init__.py,sha256=EHzNmAfa0UQFITEF-wxj_s4wn3Y5DE3DCbEUmmvCTIs,106
543
- wbportfolio/viewsets/orders/configs/buttons/order_proposals.py,sha256=Q_7LrsuLzjSXCIoscFQXMMHl8cuCporDNM5k735W7d8,3584
553
+ wbportfolio/viewsets/orders/configs/buttons/order_proposals.py,sha256=1BPkIYv0-K2DDGa4Gua2_Pxsx7fNurTZ2tYNdL66On0,6495
544
554
  wbportfolio/viewsets/orders/configs/buttons/orders.py,sha256=GDO4Y33wkjhDxzpf7B1d_rKzAixegLv5rHam1DV3WkM,290
545
555
  wbportfolio/viewsets/orders/configs/displays/__init__.py,sha256=__YJBbz_ZnKpE8WMMDR2PC9Nng-EVlRpGTEQucdrhRA,108
546
- wbportfolio/viewsets/orders/configs/displays/order_proposals.py,sha256=Iy195FwD2KGxxNWYspAj7CKQ0assL_wtQx0hN7KMz9o,4985
547
- wbportfolio/viewsets/orders/configs/displays/orders.py,sha256=8YW5Sncmowl5eLbnuUkD5xQXnP4P3vM6aBXNvolFG1s,7007
556
+ wbportfolio/viewsets/orders/configs/displays/order_proposals.py,sha256=1HnQGR8WFSWHfugEhbTrCaxZ5pabzH8iaLKVBb_Fowc,7282
557
+ wbportfolio/viewsets/orders/configs/displays/orders.py,sha256=R1oaDTGosL430xnYZpJz7ihnCOCO6eAFhDQz-wGYT24,7611
548
558
  wbportfolio/viewsets/orders/configs/endpoints/__init__.py,sha256=IB8GEadiEtBDclhkgpcJGXWfCF6qRK_42hxJ4pcdZDU,148
549
559
  wbportfolio/viewsets/orders/configs/endpoints/order_proposals.py,sha256=fY3y2YWR9nY-KE8k078NszDsnwOgqOIjHUgLvQjDivU,822
550
560
  wbportfolio/viewsets/orders/configs/endpoints/orders.py,sha256=Iic9RWLHiP2zxq6xve99lwVYCSMLX4T2euS7cJh-uOQ,1088
@@ -555,7 +565,7 @@ wbportfolio/viewsets/transactions/claim.py,sha256=Pb1WftoO-w-ZSTbLRhmQubhy7hgd68
555
565
  wbportfolio/viewsets/transactions/fees.py,sha256=WT2bWWfgozz4_rpyTKX7dgBBTXD-gu0nlsd2Nk2Zh1Q,7028
556
566
  wbportfolio/viewsets/transactions/mixins.py,sha256=WipvJoi5hylkpD0y9VATe30WAcwIHUIroVkK10FYw7k,636
557
567
  wbportfolio/viewsets/transactions/trades.py,sha256=xBgOGaJ8aEg-2RxEJ4FDaBs4SGwuLasun3nhpis0WQY,12363
558
- wbportfolio-1.54.22.dist-info/METADATA,sha256=dHZzJlBfD3drPh9scLSxGZPJNFdLDG_zEIqSzdyiMbo,703
559
- wbportfolio-1.54.22.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
560
- wbportfolio-1.54.22.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
561
- wbportfolio-1.54.22.dist-info/RECORD,,
568
+ wbportfolio-1.55.0.dist-info/METADATA,sha256=s1b7Uq_ApxcCUFeHjg2DpMT-MGVZjDLzo_8TRrGPTao,751
569
+ wbportfolio-1.55.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
570
+ wbportfolio-1.55.0.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
571
+ wbportfolio-1.55.0.dist-info/RECORD,,
@@ -1,43 +0,0 @@
1
- from django.apps import apps
2
- from django.contrib.contenttypes.models import ContentType
3
- from django.db.models import Q
4
- from django.dispatch import receiver
5
- from rest_framework.reverse import reverse
6
- from wbcore.contrib.icons import WBIcon
7
- from wbcore.metadata.configs import buttons as bt
8
- from wbcore.signals.instance_buttons import add_instance_button
9
-
10
- from wbportfolio.viewsets.products import ProductModelViewSet
11
-
12
-
13
- @receiver(add_instance_button, sender=ProductModelViewSet)
14
- def add_report_buttons(sender, many, *args, request=None, **kwargs):
15
- report_buttons = []
16
- try:
17
- if instrument_id := kwargs.get("pk", None):
18
- content_type_product = ContentType.objects.get(app_label="wbportfolio", model="product")
19
- content_type_instrument = ContentType.objects.get(app_label="wbfdm", model="instrument")
20
- Report = apps.get_model("wbreport", "Report")
21
- for report in Report.objects.filter(object_id=instrument_id, is_active=True).filter(
22
- Q(content_type=content_type_product) | Q(content_type=content_type_instrument)
23
- ):
24
- if primary_version := report.primary_version:
25
- report_buttons.append(
26
- bt.HyperlinkButton(
27
- label=f"{report.title} Report",
28
- endpoint=reverse(
29
- "public_report:report_version", args=[primary_version.lookup], request=request
30
- ),
31
- ),
32
- )
33
- if request.user.profile.is_internal or request.user.is_superuser:
34
- report_buttons.append(
35
- bt.HyperlinkButton(
36
- label=f"{report.title} Widget",
37
- endpoint=reverse("wbreport:report-detail", args=[report.id], request=request),
38
- ),
39
- )
40
- except LookupError:
41
- pass
42
- if report_buttons:
43
- return bt.DropDownButton(label="Reports", buttons=tuple(report_buttons), icon=WBIcon.NOTEBOOK.icon)