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.
- wbportfolio/factories/orders/orders.py +10 -2
- wbportfolio/filters/assets.py +10 -2
- wbportfolio/import_export/handlers/orders.py +1 -1
- wbportfolio/migrations/0086_orderproposal_total_cash_weight.py +19 -0
- wbportfolio/models/asset.py +6 -20
- wbportfolio/models/builder.py +4 -6
- wbportfolio/models/orders/order_proposals.py +53 -20
- wbportfolio/models/orders/orders.py +4 -1
- wbportfolio/models/portfolio.py +1 -0
- wbportfolio/models/products.py +9 -0
- wbportfolio/pms/trading/handler.py +0 -1
- wbportfolio/serializers/orders/order_proposals.py +2 -18
- wbportfolio/tests/conftest.py +6 -2
- wbportfolio/tests/models/orders/test_order_proposals.py +61 -15
- wbportfolio/tests/models/test_products.py +11 -0
- wbportfolio/tests/signals.py +0 -10
- wbportfolio/tests/tests.py +2 -0
- wbportfolio/viewsets/__init__.py +7 -4
- wbportfolio/viewsets/assets.py +1 -215
- wbportfolio/viewsets/charts/__init__.py +6 -1
- wbportfolio/viewsets/charts/assets.py +338 -155
- wbportfolio/viewsets/configs/buttons/products.py +32 -2
- wbportfolio/viewsets/configs/display/assets.py +6 -19
- wbportfolio/viewsets/configs/display/products.py +1 -1
- wbportfolio/viewsets/orders/configs/buttons/order_proposals.py +12 -2
- wbportfolio/viewsets/orders/order_proposals.py +2 -1
- {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/METADATA +3 -1
- {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/RECORD +30 -30
- wbportfolio/viewsets/signals.py +0 -43
- {wbportfolio-1.54.22.dist-info → wbportfolio-1.54.23.dist-info}/WHEEL +0 -0
- {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>
|
|
39
|
-
<p><strong>Note:</strong>
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
272
|
-
wbportfolio/models/builder.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
297
|
-
wbportfolio/models/orders/orders.py,sha256
|
|
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=
|
|
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=
|
|
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=
|
|
390
|
-
wbportfolio/tests/signals.py,sha256=
|
|
391
|
-
wbportfolio/tests/tests.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
450
|
-
wbportfolio/viewsets/charts/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
559
|
-
wbportfolio-1.54.
|
|
560
|
-
wbportfolio-1.54.
|
|
561
|
-
wbportfolio-1.54.
|
|
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,,
|
wbportfolio/viewsets/signals.py
DELETED
|
@@ -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)
|
|
File without changes
|
|
File without changes
|