wbportfolio 1.54.22__py2.py3-none-any.whl → 1.54.23__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 (31) hide show
  1. wbportfolio/factories/orders/orders.py +10 -2
  2. wbportfolio/filters/assets.py +10 -2
  3. wbportfolio/import_export/handlers/orders.py +1 -1
  4. wbportfolio/migrations/0086_orderproposal_total_cash_weight.py +19 -0
  5. wbportfolio/models/asset.py +6 -20
  6. wbportfolio/models/builder.py +4 -6
  7. wbportfolio/models/orders/order_proposals.py +53 -20
  8. wbportfolio/models/orders/orders.py +4 -1
  9. wbportfolio/models/portfolio.py +1 -0
  10. wbportfolio/models/products.py +9 -0
  11. wbportfolio/pms/trading/handler.py +0 -1
  12. wbportfolio/serializers/orders/order_proposals.py +2 -18
  13. wbportfolio/tests/conftest.py +6 -2
  14. wbportfolio/tests/models/orders/test_order_proposals.py +61 -15
  15. wbportfolio/tests/models/test_products.py +11 -0
  16. wbportfolio/tests/signals.py +0 -10
  17. wbportfolio/tests/tests.py +2 -0
  18. wbportfolio/viewsets/__init__.py +7 -4
  19. wbportfolio/viewsets/assets.py +1 -215
  20. wbportfolio/viewsets/charts/__init__.py +6 -1
  21. wbportfolio/viewsets/charts/assets.py +338 -155
  22. wbportfolio/viewsets/configs/buttons/products.py +32 -2
  23. wbportfolio/viewsets/configs/display/assets.py +6 -19
  24. wbportfolio/viewsets/configs/display/products.py +1 -1
  25. wbportfolio/viewsets/orders/configs/buttons/order_proposals.py +12 -2
  26. wbportfolio/viewsets/orders/order_proposals.py +2 -1
  27. {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/METADATA +3 -1
  28. {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/RECORD +30 -30
  29. wbportfolio/viewsets/signals.py +0 -43
  30. {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/WHEEL +0 -0
  31. {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/licenses/LICENSE +0 -0
@@ -10,6 +10,14 @@ class NormalizeSerializer(wb_serializers.Serializer):
10
10
  total_cash_weight = wb_serializers.FloatField(default=0, precision=4, percent=True)
11
11
 
12
12
 
13
+ class ResetSerializer(wb_serializers.Serializer):
14
+ use_desired_target_weight = wb_serializers.BooleanField(
15
+ default=False,
16
+ label="Use initial target weight",
17
+ help_text="If True, the target weight used will be the value at the time the order proposal was submitted (as it may have changed due to previous modifications). If False, the delta weight will be set to 0 instead.",
18
+ )
19
+
20
+
13
21
  class OrderProposalButtonConfig(ButtonViewConfig):
14
22
  def get_custom_list_instance_buttons(self):
15
23
  return {
@@ -35,11 +43,13 @@ class OrderProposalButtonConfig(ButtonViewConfig):
35
43
  icon=WBIcon.REGENERATE.icon,
36
44
  label="Reset Orders",
37
45
  description_fields="""
38
- <p><strong>Warning:</strong> This action will delete all current orders and recreate initial orders based on your last effective portfolio.</p>
39
- <p><strong>Note:</strong> All delta weights will be permanently removed. This operation cannot be undone.</p>
46
+ <p><strong>Warning:</strong>This action will reset the order delta weight to either 0 or the difference between the previous weight and the locked target weight, depending on the user’s choice.</p>
47
+ <p><strong>Note:</strong>This operation will change the current delta weights and cannot be undone</p>
40
48
  """,
41
49
  action_label="Reset Orders",
42
50
  title="Reset Orders",
51
+ serializer=ResetSerializer,
52
+ instance_display=create_simple_display([["use_desired_target_weight"]]),
43
53
  ),
44
54
  bt.ActionButton(
45
55
  method=RequestType.PATCH,
@@ -98,9 +98,10 @@ class OrderProposalModelViewSet(CloneMixin, RiskCheckViewSetMixin, InternalUserP
98
98
  @action(detail=True, methods=["PATCH"])
99
99
  def reset(self, request, pk=None):
100
100
  order_proposal = get_object_or_404(OrderProposal, pk=pk)
101
+ use_desired_target_weight = request.GET.get("use_desired_target_weight") == "true"
101
102
  if order_proposal.status == OrderProposal.Status.DRAFT:
102
103
  order_proposal.orders.all().update(weighting=0)
103
- order_proposal.reset_orders()
104
+ order_proposal.reset_orders(use_desired_target_weight=use_desired_target_weight)
104
105
  return Response({"send": True})
105
106
  return Response({"status": "Order Proposal is not Draft"}, status=status.HTTP_400_BAD_REQUEST)
106
107
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbportfolio
3
- Version: 1.54.22
3
+ Version: 1.54.23
4
4
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
5
5
  License-File: LICENSE
6
6
  Requires-Dist: cryptography==3.4.*
@@ -19,6 +19,8 @@ Requires-Dist: wbcompliance
19
19
  Requires-Dist: wbcore
20
20
  Requires-Dist: wbcrm
21
21
  Requires-Dist: wbfdm
22
+ Requires-Dist: wbmailing
22
23
  Requires-Dist: wbnews
24
+ Requires-Dist: wbreport
23
25
  Requires-Dist: xlrd==2.*
24
26
  Requires-Dist: xlsxwriter==3.*
@@ -76,11 +76,11 @@ wbportfolio/factories/roles.py,sha256=tot54YX70sNqZrAg5zGJTHd7_PFjZed_mny4lGlnwE
76
76
  wbportfolio/factories/trades.py,sha256=ZHfj20KjeTu57sNaZzfSw2JqCoI9q4BjfPp5qRMVsro,1387
77
77
  wbportfolio/factories/orders/__init__.py,sha256=QG7on_F9GiuJgvGbM0BNDVdfGwwBz_WGbmCFNbKPZzc,83
78
78
  wbportfolio/factories/orders/order_proposals.py,sha256=JR7oABGv6uGQgNRNCWcgmTHOlyaugsKDnEZo-yfk-P0,549
79
- wbportfolio/factories/orders/orders.py,sha256=NvpkehJAke6mRM8tK8aPupROxaKxgVgChs9J0jg8hXw,619
79
+ wbportfolio/factories/orders/orders.py,sha256=tTw2U-xvUsFpG4zad3KCHZPQx1FVg-zPjwEN73XEOjg,907
80
80
  wbportfolio/fdm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  wbportfolio/fdm/tasks.py,sha256=59hXt3TOJaM8KpUaKdBNAGsO7NFMHaAlNA0T3FTUau0,533
82
82
  wbportfolio/filters/__init__.py,sha256=m44CdyYMtku8rMGyiX8KSmMdvyqaElKW4UMkEqOC1VM,1374
83
- wbportfolio/filters/assets.py,sha256=Tbci0xXuFzs2wCSMauhc-LsnB5LdmxcPVFk3AavM5z8,18158
83
+ wbportfolio/filters/assets.py,sha256=jQoWmK2teQPBpEUNLC3NWl6fhrndl1Tt0sPdQxiPPM4,18538
84
84
  wbportfolio/filters/assets_and_net_new_money_progression.py,sha256=IYl_qMFO9QKhXhCTtz2JrOjlAKdEkykNlu4DO_H7HkQ,1403
85
85
  wbportfolio/filters/custodians.py,sha256=pStQgPQPhPpnt57_V7BuXbFXmRiZBEAiEeMFuQmt2NE,287
86
86
  wbportfolio/filters/esg.py,sha256=ZEUQh3IQxLSshVrgtPqHC_ToirrllkCXR_KzUlCUtkA,688
@@ -120,7 +120,7 @@ wbportfolio/import_export/handlers/adjustment.py,sha256=6bdTIYFmc8_HFxcdwtnYwglM
120
120
  wbportfolio/import_export/handlers/asset_position.py,sha256=UZBDlEK5mxtGu9cZvwiQS6J8GNkMJqDZb7KZ3uwex0g,8698
121
121
  wbportfolio/import_export/handlers/dividend.py,sha256=F0oLfNt2B_QQAjHBCRpxa5HSkfkAYdal_NjLJGtVckY,4408
122
122
  wbportfolio/import_export/handlers/fees.py,sha256=BOFHAvSTlvVLaxnm6KD_fcza1TlPc02HOR9J0_jjswI,2495
123
- wbportfolio/import_export/handlers/orders.py,sha256=5EWm2ocqzc2PBzZRawGIMybkHH7ySjQyHDuGsGBqjIQ,3132
123
+ wbportfolio/import_export/handlers/orders.py,sha256=GU3_tIy-tAw9aU-ifsnmMZPBB9sqfkFC_S1d9VziTwg,3136
124
124
  wbportfolio/import_export/handlers/portfolio_cash_flow.py,sha256=W7QPNqEvvsq0RS016EAFBp1ezvc6G9Rk-hviRZh8o6Y,2737
125
125
  wbportfolio/import_export/handlers/register.py,sha256=sYyXkE8b1DPZ5monxylZn0kjxLVdNYYZR-p61dwEoDM,2271
126
126
  wbportfolio/import_export/handlers/trade.py,sha256=g2jAYYeuhZv_DuvM6zlROcq6rUlSbGaQ3tO4u6wkSRU,11140
@@ -265,21 +265,22 @@ wbportfolio/migrations/0082_remove_tradeproposal_creator_and_more.py,sha256=DZBK
265
265
  wbportfolio/migrations/0083_order_alter_trade_options_and_more.py,sha256=oFYG2cVf2CFKFJX84eUSmGJdK1BHY_QcVm_hmAIbVNg,9952
266
266
  wbportfolio/migrations/0084_orderproposal_min_order_value.py,sha256=bJPpPX7PQmlWAIyLzZ6ca6K0paGTRbzS8AkyOHDoGMc,925
267
267
  wbportfolio/migrations/0085_order_desired_target_weight.py,sha256=L8p5t4PqjWIwqwiqt-ofdfGkBhm-7dtbg52cIkxNnDs,803
268
+ wbportfolio/migrations/0086_orderproposal_total_cash_weight.py,sha256=IE65OYYBOSQjj6znl9jmsMalxDmKdnHV1DbVz_ZX_M4,689
268
269
  wbportfolio/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
269
270
  wbportfolio/models/__init__.py,sha256=qU4e7HKyh8NL_0Mg92PcbHTewCv7Ya2gei1DMGe1LWE,980
270
271
  wbportfolio/models/adjustments.py,sha256=osXWkJZOiansPWYPyHtl7Z121zDWi7u1YMtrBQtbHVo,10272
271
- wbportfolio/models/asset.py,sha256=PwL16w2Rw_rJL73e0vCWMlRqsCxKW4zA9bf1EgTzD60,39574
272
- wbportfolio/models/builder.py,sha256=gGBlU0s5kvMxUas2lil0n98BxVjVocUDfU9oHKgkkJY,11622
272
+ wbportfolio/models/asset.py,sha256=K0cvK-g1dUmQLjVAboUm3zDb4YGW_Wu9eRMdhfEMSck,39123
273
+ wbportfolio/models/builder.py,sha256=SoyJ7Ri3g5rGhZVq5rqJynW34Q8GYfUJg7QcbBTnOa8,11522
273
274
  wbportfolio/models/custodians.py,sha256=owTiS2Vm5CRKzh9M_P9GOVg-s-ndQ9UvRmw3yZP7cw0,3815
274
275
  wbportfolio/models/exceptions.py,sha256=3ix0tWUO-O6jpz8f07XIwycw2x3JFRoWzjwil8FVA2Q,52
275
276
  wbportfolio/models/indexes.py,sha256=gvW4K9U9Bj8BmVCqFYdWiXvDWhjHINRON8XhNsZUiQY,639
276
- wbportfolio/models/portfolio.py,sha256=7PRPI8sNe4Ehe39-VJ14uPyG4gXqc3uMvwqS7pCy9yg,53266
277
+ wbportfolio/models/portfolio.py,sha256=gBgukGpEPkBt_eQv8FvGwku0yyvleRqVV6moTk5sSLY,53317
277
278
  wbportfolio/models/portfolio_cash_flow.py,sha256=uElG7IJUBY8qvtrXftOoskX6EA-dKgEG1JJdvHeWV7g,7336
278
279
  wbportfolio/models/portfolio_cash_targets.py,sha256=WmgG-etPisZsh2yaFQpz7EkpvAudKBEzqPsO715w52U,1498
279
280
  wbportfolio/models/portfolio_relationship.py,sha256=ZGECiPZiLdlk4uSamOrEfuzO0hduK6OMKJLUSnh5_kc,5190
280
281
  wbportfolio/models/portfolio_swing_pricings.py,sha256=_LqYC1VRjnnFFmVqFPRdnbgYsVxocMVpClTk2dnooig,1778
281
282
  wbportfolio/models/product_groups.py,sha256=qoT8qv6tRdD6zmNDxsHO6dtnWw1-TRnyS5NqOq_gwhI,7901
282
- wbportfolio/models/products.py,sha256=CkI7SBKWXgMkIcaGijZ-ghc_pPq075YjNgH-LWk1XCc,22845
283
+ wbportfolio/models/products.py,sha256=8XXx6sN3cUCls_TlwAc8-vL1bNn0JQRAxeCeyLJlmG8,23177
283
284
  wbportfolio/models/rebalancing.py,sha256=6KURFl0j121ccd4ksuXJqKQF1aPaA7W0DkHFIlBFGow,7690
284
285
  wbportfolio/models/registers.py,sha256=qA6T33t4gxFYnabQFBMd90WGIr6wxxirDLKDFqjOfok,4667
285
286
  wbportfolio/models/roles.py,sha256=wF5Atp0xsJxDrYjmFw9XHgEOe_4C-lm4pppeYdymOrA,7343
@@ -293,8 +294,8 @@ wbportfolio/models/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
293
294
  wbportfolio/models/mixins/instruments.py,sha256=SgBreTpa_X3uyCWo7t8B0VaTtl49IjmBMe4Pab6TjAM,6796
294
295
  wbportfolio/models/mixins/liquidity_stress_test.py,sha256=iQVzT3QM7VtHnqfj9gT6KUIe4wC4MJXery-AXJHUYns,58820
295
296
  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
297
+ wbportfolio/models/orders/order_proposals.py,sha256=6aKeBYax3aGsDLmPYI94Pa8nnANUP7SGWAJudSmZjxA,41820
298
+ wbportfolio/models/orders/orders.py,sha256=-L-cKATF8gdgSReQL_SobfD207kzQoKy24pF1nPLVEM,9713
298
299
  wbportfolio/models/reconciliations/__init__.py,sha256=MXH5fZIPGDRBgJkO6wVu_NLRs8fkP1im7G6d-h36lQY,127
299
300
  wbportfolio/models/reconciliations/account_reconciliation_lines.py,sha256=QP6M7hMcyFbuXBa55Y-azui6Dl_WgbzMntEqWzQkbfM,7394
300
301
  wbportfolio/models/reconciliations/account_reconciliations.py,sha256=rofSxetFfEJov6mPyoTvGxELA16HILyJZtQvm_kwYU0,4405
@@ -312,7 +313,7 @@ wbportfolio/pms/analytics/portfolio.py,sha256=u_S-e6HUQwAyq90gweDmxyTHWrIc5nd84s
312
313
  wbportfolio/pms/analytics/utils.py,sha256=EfhKdo9B2ABaUPppb8DgZSqpNkSze8Rjej1xDjv-XcQ,282
313
314
  wbportfolio/pms/statistics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
315
  wbportfolio/pms/trading/__init__.py,sha256=R_yLKc54sCak8A1cW0O1Aszrcv5KV8mC_3h17Hr20e4,36
315
- wbportfolio/pms/trading/handler.py,sha256=o31jtevfnSSv0aSzAsnthz2luM7F-D5d061LaqfOHUw,8542
316
+ wbportfolio/pms/trading/handler.py,sha256=D903Hn0PpI1_9lFGPX847aaKp1nlKeWulxH_prCdWzw,8492
316
317
  wbportfolio/rebalancing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
317
318
  wbportfolio/rebalancing/base.py,sha256=wpeoxdkLz5osxm5mRjkOoML7YkYvwuAlqSLLtHBbWp8,984
318
319
  wbportfolio/rebalancing/decorators.py,sha256=162ZmXV2YQGI830LWvEnJ95RexMzHvaCGfcVOnXTOXM,502
@@ -365,7 +366,7 @@ wbportfolio/serializers/registers.py,sha256=zhdKH_mHEBE0VOhm6xpY54bTMtcSaY5BskEa
365
366
  wbportfolio/serializers/roles.py,sha256=T-9NqTldpvaEMFy-Bib5MB6MeboygEOqcMP61mzzD3Q,2146
366
367
  wbportfolio/serializers/signals.py,sha256=hD6R4oFtwhvnsJPteytPKy2JwEelmxrapdfoLSnluaE,7053
367
368
  wbportfolio/serializers/orders/__init__.py,sha256=PKJRksA1pWsh8nVfGASoB0m3LyUzVRnq1m9VPp90J7k,271
368
- wbportfolio/serializers/orders/order_proposals.py,sha256=MmL8noS2qqyKKXiYLLPRS4_Cz1RhlfdFwkCKZiqRyxQ,4461
369
+ wbportfolio/serializers/orders/order_proposals.py,sha256=6w1XKiAdQLDd_d2DMniv_zx--8uom-yT6OLya2uDA2Y,3878
369
370
  wbportfolio/serializers/orders/orders.py,sha256=pAKjJLRANOo1iMlcv18twuQ0aAVDVKYt-pPx6avnWRQ,7464
370
371
  wbportfolio/serializers/transactions/__init__.py,sha256=-7Pan4n7YI3iDvGXff6okzk4ycEURRxp5n_SHCY_g_I,493
371
372
  wbportfolio/serializers/transactions/claim.py,sha256=kC4E2RZRrpd9i8tGfoiV-gpWDk3ikR5F1Wf0v_IGIvw,11599
@@ -386,9 +387,9 @@ wbportfolio/templates/portfolio/email/email_base_template.html,sha256=n6DN3QV92t
386
387
  wbportfolio/templates/portfolio/email/rebalancing_report.html,sha256=Go7joPYXwF_1Q72mblOtJSw4-TbH3NqW7ww_xGBP95k,1206
387
388
  wbportfolio/templates/portfolio/macro/macro_review.html,sha256=OxliFeX9pVNKeTVTaPnfNPHmM5YxVMr77PeKC-6y0jY,2273
388
389
  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
390
+ wbportfolio/tests/conftest.py,sha256=007ydJK59J1guakXWYrZ-waDZNgXAXwMYSJ-BTDFVhA,4614
391
+ wbportfolio/tests/signals.py,sha256=aUu4nDWmVAAWyokcWJDj2RsajeIa070qXsZeNq6ynqY,5545
392
+ wbportfolio/tests/tests.py,sha256=3NdpJQlksLclF-7lVP07WJXaEzquhneoDX1lIA_tyXU,1121
392
393
  wbportfolio/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
394
  wbportfolio/tests/models/test_account_reconciliation.py,sha256=7IDZh6qbG7-3czbNf5aDRaEDnMBw2Qiqk_h425dFu9w,8569
394
395
  wbportfolio/tests/models/test_assets.py,sha256=N8OP2ZTPdq0lGonFRB0q_ruwF8QYpOGLkPWoucr8u_E,10428
@@ -403,12 +404,12 @@ wbportfolio/tests/models/test_portfolio_cash_targets.py,sha256=q8QWAwt-kKRkLC0E0
403
404
  wbportfolio/tests/models/test_portfolio_swing_pricings.py,sha256=kr2AOcQkyg2pX3ULjU-o9ye-NVpjMrrfoe-DVbYCbjs,1656
404
405
  wbportfolio/tests/models/test_portfolios.py,sha256=VdfkblwSow1w-HLFto8wssuBTjSqaCBpE1_Tf6wb0R0,51878
405
406
  wbportfolio/tests/models/test_product_groups.py,sha256=AcdxhurV-n_bBuUsfD1GqVtwLFcs7VI2CRrwzsIUWbU,3337
406
- wbportfolio/tests/models/test_products.py,sha256=IcBzw9hrGiWFMRwPBTMukCMWrhqnjOVA2hhb90xYOW8,9580
407
+ wbportfolio/tests/models/test_products.py,sha256=zB3xDGk7k7omI61hU9cnU96oBc3ICiMaYtFC9pidars,9965
407
408
  wbportfolio/tests/models/test_roles.py,sha256=4Cn7WyrA2ztJNeWLk5cy9kYo5XLWMbFSvo1O-9JYxeA,3323
408
409
  wbportfolio/tests/models/test_splits.py,sha256=ytKcHsI_90kj1L4s8It-KEcc24rkDcElxwQ8q0QxEvk,9689
409
410
  wbportfolio/tests/models/utils.py,sha256=ORNJq6NMo1Za22jGZXfTfKeNEnTRlfEt_8SJ6xLaQWg,325
410
411
  wbportfolio/tests/models/orders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- wbportfolio/tests/models/orders/test_order_proposals.py,sha256=T0vo7D65E0Cyqhwq3QK_Fd6RlCzCJRZSbA0PSZft0k4,31316
412
+ wbportfolio/tests/models/orders/test_order_proposals.py,sha256=Cdv-tESJSyHyXzA6ABHMNGSG51NDIagH1LGw8wYo7lo,33309
412
413
  wbportfolio/tests/models/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
413
414
  wbportfolio/tests/models/transactions/test_claim.py,sha256=NG3BKB-FVcIDgHSJHCjImxgMM3ISVUMl24xUPmEcPec,5570
414
415
  wbportfolio/tests/models/transactions/test_fees.py,sha256=tAp18x2wCNQr11LUnLtHNbBDbbX0v1DZnmW7i-cEi5Q,2423
@@ -426,9 +427,9 @@ wbportfolio/tests/viewsets/test_performances.py,sha256=Cx5FqPO4K8G7F6-rqiiSDmFNY
426
427
  wbportfolio/tests/viewsets/test_products.py,sha256=VsLW5iazAGch8yxH0jTgcc2fn4L7iZ2gPw7PmqQL60g,4270
427
428
  wbportfolio/tests/viewsets/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
428
429
  wbportfolio/tests/viewsets/transactions/test_claims.py,sha256=QEZfMAW07dyoZ63t2umSwGOqvaTULfYfbN_F4ZoSAcw,6368
429
- wbportfolio/viewsets/__init__.py,sha256=1U1r0TNTUBsDyrZ8k9GbdG0SF0_O1RyORN9AaHJT71o,2436
430
+ wbportfolio/viewsets/__init__.py,sha256=nmWLARDxraY09h4-dpfbOWlx1OylZz3_DpGk_gvJv-o,2475
430
431
  wbportfolio/viewsets/adjustments.py,sha256=ugbX4aFRCaD4Yj1hxL-VIPaNI7GF_wt0FrkN6mq1YjU,1524
431
- wbportfolio/viewsets/assets.py,sha256=Pk565r7FOuJw7YsGg9L5SAWJqlg1lQpcjWQjnMYeH4Q,25259
432
+ wbportfolio/viewsets/assets.py,sha256=v0GvRb3Hoj26H4NmLB_d3iqdG1c1e9SsZrvzkzg9Jvg,16404
432
433
  wbportfolio/viewsets/assets_and_net_new_money_progression.py,sha256=Jl4vEQP4N2OFL5IGBXoKcj-0qaPviU0I8npvQLw4Io0,4464
433
434
  wbportfolio/viewsets/custodians.py,sha256=CTFqkqVP1R3AV7lhdvcdICxB5DfwDYCyikNSI5kbYEo,2322
434
435
  wbportfolio/viewsets/esg.py,sha256=27MxxdXQH3Cq_1UEYmcrF7htUOg6i81fUpbVQXAAKJI,6985
@@ -446,9 +447,8 @@ wbportfolio/viewsets/rebalancing.py,sha256=ACmlRJGeSO7eUq5ckaXbHEINH6TA5nQYWHLbI
446
447
  wbportfolio/viewsets/reconciliations.py,sha256=tRS7UBDtMn-07uA9QqYvnCtp_mZGVeULF2OJMfHJPZk,7357
447
448
  wbportfolio/viewsets/registers.py,sha256=eOuEhW2McHsOapCKue7M4eazrJnVpCBVxImpFccq0z0,2401
448
449
  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
450
+ wbportfolio/viewsets/charts/__init__.py,sha256=zE3bxS0V-nM_yZ610M7qsaToNOJXvTjwFLhH1it3h4M,169
451
+ wbportfolio/viewsets/charts/assets.py,sha256=2ZyEFz9g9ZZzUcZVOVs0jBefrQkOxy-O1fFrvnwo5oY,17813
452
452
  wbportfolio/viewsets/configs/__init__.py,sha256=K5opfVQvgGwSyw3XwDGkv3lo5i9jBxOJXYhLqyCdfeQ,137
453
453
  wbportfolio/viewsets/configs/buttons/__init__.py,sha256=hyvpxwh9ss8Q0xcE006qsTLuSsJeWt9saHRcU4g96tA,791
454
454
  wbportfolio/viewsets/configs/buttons/adjustments.py,sha256=sUY_3vxqP0kuqs8i5hklfboZI6QiAOrmu30eb29Xupo,492
@@ -458,14 +458,14 @@ wbportfolio/viewsets/configs/buttons/custodians.py,sha256=AE-VFahGreSlg5nejqQVvO
458
458
  wbportfolio/viewsets/configs/buttons/fees.py,sha256=8z-qo5krw4x_9ujp0s8iR8iY8_5m-wusPNaQkjMxFSA,443
459
459
  wbportfolio/viewsets/configs/buttons/mixins.py,sha256=d2W3IOgmi3icTMeoO_ckec2oCXA_kiG6nOriMG7YHTI,3169
460
460
  wbportfolio/viewsets/configs/buttons/portfolios.py,sha256=y1sqYJwhQG9M0AgUEY8yEE3VTdhhVxoup3YBc2IRm-U,5267
461
- wbportfolio/viewsets/configs/buttons/products.py,sha256=bHOs2ftfaLbIbJ7E8yFqQqSuXCIYD6w3f3peireAUyk,1839
461
+ wbportfolio/viewsets/configs/buttons/products.py,sha256=4xH19uYTDL55hKrV24eeeOFrmO1vV5MAwPw5IxNKosQ,3301
462
462
  wbportfolio/viewsets/configs/buttons/reconciliations.py,sha256=lw4r22GHpqKPUF1MrB6P9dOkL-FHe5iiBJ0--f8D74E,3145
463
463
  wbportfolio/viewsets/configs/buttons/registers.py,sha256=aS89TsYHql83k-NHojOrLDqtBpnpsUUO8x63PiMfrXM,445
464
464
  wbportfolio/viewsets/configs/buttons/signals.py,sha256=6sKBQI_eDvZuZR5bUUwvur5R67A3oChAGxPfayWUelE,2739
465
465
  wbportfolio/viewsets/configs/buttons/trades.py,sha256=X2B1l0iEIdHb3ZMf9rLVoiX_H8lSyLD12wopgumOIX4,2318
466
466
  wbportfolio/viewsets/configs/display/__init__.py,sha256=JoroVU97TvjTC1qtrduw5iD1ON1qXtH9j-Suzs-Psco,1993
467
467
  wbportfolio/viewsets/configs/display/adjustments.py,sha256=jIOEc23OCYBguLaZRlZxC916kocYT35ZV9Jsiocs9nk,3334
468
- wbportfolio/viewsets/configs/display/assets.py,sha256=SkWwzvrn4gOVbCThGJMV63V-iJh517qfUs4f4Wt3dBA,10573
468
+ wbportfolio/viewsets/configs/display/assets.py,sha256=TU5QP-6mucMkO8FUWJ-ATbWmiBK5x3o8N8pRufT4X-0,10063
469
469
  wbportfolio/viewsets/configs/display/claim.py,sha256=MRtEdxWjsDjt1k6O-ltM-SpPmHWBk85sCycsRgzd9jI,12041
470
470
  wbportfolio/viewsets/configs/display/custodians.py,sha256=R-tnktfY48K-8Zz-Fg_M6IXKHv42J1ZeSpom7lvYVS8,801
471
471
  wbportfolio/viewsets/configs/display/esg.py,sha256=W8uetCPN2TjHtU2kvQjKOmkq7uoaYvzX2iLN6Nz78Pk,3111
@@ -476,7 +476,7 @@ wbportfolio/viewsets/configs/display/portfolios.py,sha256=DuhnFIlBFvmDrxrd0IBbvX
476
476
  wbportfolio/viewsets/configs/display/positions.py,sha256=yolWLxzGPIpSQSiVhVQChURqbomPt5kSjkYrmXT1Mik,3123
477
477
  wbportfolio/viewsets/configs/display/product_groups.py,sha256=PwI-A0_ofShT2pub9-C1HqreiqpHxKMHd51JYwEzvbM,2500
478
478
  wbportfolio/viewsets/configs/display/product_performance.py,sha256=6Mme48JBn_okwClR44dBK2OK26ejvdasDvBa5DI33_0,10070
479
- wbportfolio/viewsets/configs/display/products.py,sha256=WraPeMIS87Vd3wstA4Vt3zi41vgLUxK5eoqCIQLyr8k,10679
479
+ wbportfolio/viewsets/configs/display/products.py,sha256=8Ssmb4IjqXwTX81aKmLVbmWZcD_8uHa08vieO6cgjoM,10686
480
480
  wbportfolio/viewsets/configs/display/rebalancing.py,sha256=8B4OG9SYQGc_sVL0BjxfHGVM7QS7-hNHcnYxYvTq5TI,1112
481
481
  wbportfolio/viewsets/configs/display/reconciliations.py,sha256=YvMAuwmpX0HExvGsuf5UvcRQxe4eMo1iyNJX68GGC_k,6021
482
482
  wbportfolio/viewsets/configs/display/registers.py,sha256=1np75exIk5rfct6UkVN_RnfJ9ozvIkcWJgFV4_4rJns,3182
@@ -536,11 +536,11 @@ wbportfolio/viewsets/configs/titles/registers.py,sha256=-C-YeGBhGva48oER6EIQ8CxW
536
536
  wbportfolio/viewsets/configs/titles/roles.py,sha256=9LoJa3jgenXJ5UWRlIErTzdbjpSWMKsyJZtv-eDRTK4,739
537
537
  wbportfolio/viewsets/configs/titles/trades.py,sha256=29XCLxvY0Xe3a2tjCno3tN2rRXCr9RWpbWnzurJfnYI,1986
538
538
  wbportfolio/viewsets/orders/__init__.py,sha256=N8v9jdEXryOzrLlc7ML3iBCO2lmNXph9_TWoQ7PTvi4,195
539
- wbportfolio/viewsets/orders/order_proposals.py,sha256=mw385zzU52nCq8p6xgionh43xLmOn5aX-2BPlCHnqlE,6214
539
+ wbportfolio/viewsets/orders/order_proposals.py,sha256=RTxOT9gH8_5Dcm4DGrnrk86ExqNoEHHo8tgh38OtIoo,6356
540
540
  wbportfolio/viewsets/orders/orders.py,sha256=u3tRqio-oCnmqhC5jmn_EDKoNrF1xXMgOu2c2BfqNS8,10851
541
541
  wbportfolio/viewsets/orders/configs/__init__.py,sha256=5MU57JXiKi32_PicHtiNr7YHmMN020FrlF5NFJf_Wds,94
542
542
  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
543
+ wbportfolio/viewsets/orders/configs/buttons/order_proposals.py,sha256=loDbYz5_7FACheiooghIAQLSqascLxdF2bTVxPvRVmE,4192
544
544
  wbportfolio/viewsets/orders/configs/buttons/orders.py,sha256=GDO4Y33wkjhDxzpf7B1d_rKzAixegLv5rHam1DV3WkM,290
545
545
  wbportfolio/viewsets/orders/configs/displays/__init__.py,sha256=__YJBbz_ZnKpE8WMMDR2PC9Nng-EVlRpGTEQucdrhRA,108
546
546
  wbportfolio/viewsets/orders/configs/displays/order_proposals.py,sha256=Iy195FwD2KGxxNWYspAj7CKQ0assL_wtQx0hN7KMz9o,4985
@@ -555,7 +555,7 @@ wbportfolio/viewsets/transactions/claim.py,sha256=Pb1WftoO-w-ZSTbLRhmQubhy7hgd68
555
555
  wbportfolio/viewsets/transactions/fees.py,sha256=WT2bWWfgozz4_rpyTKX7dgBBTXD-gu0nlsd2Nk2Zh1Q,7028
556
556
  wbportfolio/viewsets/transactions/mixins.py,sha256=WipvJoi5hylkpD0y9VATe30WAcwIHUIroVkK10FYw7k,636
557
557
  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,,
558
+ wbportfolio-1.54.23.dist-info/METADATA,sha256=T5JCRTfsyGdh4UnE0qS0YtJHigKneYf8D7-5mT_ixLw,752
559
+ wbportfolio-1.54.23.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
560
+ wbportfolio-1.54.23.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
561
+ wbportfolio-1.54.23.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)