wbportfolio 1.54.13__py2.py3-none-any.whl → 1.54.14__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/models/portfolio.py +1 -1
- wbportfolio/models/transactions/trade_proposals.py +3 -3
- wbportfolio/viewsets/configs/buttons/trade_proposals.py +2 -1
- wbportfolio/viewsets/transactions/trade_proposals.py +1 -0
- {wbportfolio-1.54.13.dist-info → wbportfolio-1.54.14.dist-info}/METADATA +1 -1
- {wbportfolio-1.54.13.dist-info → wbportfolio-1.54.14.dist-info}/RECORD +8 -8
- {wbportfolio-1.54.13.dist-info → wbportfolio-1.54.14.dist-info}/WHEEL +0 -0
- {wbportfolio-1.54.13.dist-info → wbportfolio-1.54.14.dist-info}/licenses/LICENSE +0 -0
wbportfolio/models/portfolio.py
CHANGED
|
@@ -97,7 +97,7 @@ def get_returns(
|
|
|
97
97
|
if df.empty:
|
|
98
98
|
raise InvalidAnalyticPortfolio()
|
|
99
99
|
df = (
|
|
100
|
-
df.pivot_table(index="valuation_date", columns="instrument_id", values=["fx_rate", "close"])
|
|
100
|
+
df.pivot_table(index="valuation_date", columns="instrument_id", values=["fx_rate", "close"], dropna=False)
|
|
101
101
|
.astype(float)
|
|
102
102
|
.sort_index()
|
|
103
103
|
)
|
|
@@ -695,7 +695,7 @@ class TradeProposal(CloneMixin, RiskCheckMixin, WBModel):
|
|
|
695
695
|
**kwargs,
|
|
696
696
|
)
|
|
697
697
|
if replay and self.portfolio.is_manageable:
|
|
698
|
-
replay_as_task.delay(self.id, user_id=by.id if by else None)
|
|
698
|
+
replay_as_task.delay(self.id, user_id=by.id if by else None, broadcast_changes_at_date=False)
|
|
699
699
|
return warnings
|
|
700
700
|
|
|
701
701
|
def can_approve(self):
|
|
@@ -845,9 +845,9 @@ def post_fail_trade_proposal(sender, instance: TradeProposal, created, raw, **kw
|
|
|
845
845
|
|
|
846
846
|
|
|
847
847
|
@shared_task(queue="portfolio")
|
|
848
|
-
def replay_as_task(trade_proposal_id, user_id: int | None = None):
|
|
848
|
+
def replay_as_task(trade_proposal_id, user_id: int | None = None, **kwargs):
|
|
849
849
|
trade_proposal = TradeProposal.objects.get(id=trade_proposal_id)
|
|
850
|
-
trade_proposal.replay()
|
|
850
|
+
trade_proposal.replay(**kwargs)
|
|
851
851
|
if user_id:
|
|
852
852
|
user = User.objects.get(id=user_id)
|
|
853
853
|
send_notification(
|
|
@@ -35,7 +35,8 @@ class TradeProposalButtonConfig(ButtonViewConfig):
|
|
|
35
35
|
icon=WBIcon.REGENERATE.icon,
|
|
36
36
|
label="Reset Trades",
|
|
37
37
|
description_fields="""
|
|
38
|
-
<p>
|
|
38
|
+
<p><strong>Warning:</strong> This action will delete all current trades and recreate initial trades 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>
|
|
39
40
|
""",
|
|
40
41
|
action_label="Reset Trades",
|
|
41
42
|
title="Reset Trades",
|
|
@@ -99,6 +99,7 @@ class TradeProposalModelViewSet(CloneMixin, RiskCheckViewSetMixin, InternalUserP
|
|
|
99
99
|
def reset(self, request, pk=None):
|
|
100
100
|
trade_proposal = get_object_or_404(TradeProposal, pk=pk)
|
|
101
101
|
if trade_proposal.status == TradeProposal.Status.DRAFT:
|
|
102
|
+
trade_proposal.trades.all().update(weighting=0)
|
|
102
103
|
trade_proposal.reset_trades()
|
|
103
104
|
return Response({"send": True})
|
|
104
105
|
return Response({"status": "Trade proposal is not Draft"}, status=status.HTTP_400_BAD_REQUEST)
|
|
@@ -258,7 +258,7 @@ wbportfolio/models/asset.py,sha256=b0vPt4LwNrxcMiK7UmBKViYnbNNlZzPTagvU5vFuyrc,4
|
|
|
258
258
|
wbportfolio/models/custodians.py,sha256=owTiS2Vm5CRKzh9M_P9GOVg-s-ndQ9UvRmw3yZP7cw0,3815
|
|
259
259
|
wbportfolio/models/exceptions.py,sha256=3ix0tWUO-O6jpz8f07XIwycw2x3JFRoWzjwil8FVA2Q,52
|
|
260
260
|
wbportfolio/models/indexes.py,sha256=gvW4K9U9Bj8BmVCqFYdWiXvDWhjHINRON8XhNsZUiQY,639
|
|
261
|
-
wbportfolio/models/portfolio.py,sha256=
|
|
261
|
+
wbportfolio/models/portfolio.py,sha256=7obqQAd2_COwTABtkp43muMlDA77NX16bq4J0oib1AI,58592
|
|
262
262
|
wbportfolio/models/portfolio_cash_flow.py,sha256=uElG7IJUBY8qvtrXftOoskX6EA-dKgEG1JJdvHeWV7g,7336
|
|
263
263
|
wbportfolio/models/portfolio_cash_targets.py,sha256=WmgG-etPisZsh2yaFQpz7EkpvAudKBEzqPsO715w52U,1498
|
|
264
264
|
wbportfolio/models/portfolio_relationship.py,sha256=ZGECiPZiLdlk4uSamOrEfuzO0hduK6OMKJLUSnh5_kc,5190
|
|
@@ -285,7 +285,7 @@ wbportfolio/models/transactions/claim.py,sha256=SF2FlwG6SRVmA_hT0NbXah5-fYejccWK
|
|
|
285
285
|
wbportfolio/models/transactions/dividends.py,sha256=mmOdGWR35yndUMoCuG24Y6BdtxDhSk2gMQ-8LVguqzg,1890
|
|
286
286
|
wbportfolio/models/transactions/fees.py,sha256=wJtlzbBCAq1UHvv0wqWTE2BEjCF5RMtoaSDS3kODFRo,7112
|
|
287
287
|
wbportfolio/models/transactions/rebalancing.py,sha256=rwePcmTZOYgfSWnBQcBrZ3DQHRJ3w17hdO_hgrRbbhI,7696
|
|
288
|
-
wbportfolio/models/transactions/trade_proposals.py,sha256=
|
|
288
|
+
wbportfolio/models/transactions/trade_proposals.py,sha256=SniW7jU74FUuZQLsA6i6MGu6vM1qj4IPZvWFDpFOQc0,38391
|
|
289
289
|
wbportfolio/models/transactions/trades.py,sha256=1gmAdavuWu1Iko90s9prMxsK_NuDKIUBIKMDuHiKzow,34176
|
|
290
290
|
wbportfolio/models/transactions/transactions.py,sha256=XTcUeMUfkf5XTSZaR2UAyGqCVkOhQYk03_vzHLIgf8Q,3807
|
|
291
291
|
wbportfolio/pms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -440,7 +440,7 @@ wbportfolio/viewsets/configs/buttons/products.py,sha256=bHOs2ftfaLbIbJ7E8yFqQqSu
|
|
|
440
440
|
wbportfolio/viewsets/configs/buttons/reconciliations.py,sha256=lw4r22GHpqKPUF1MrB6P9dOkL-FHe5iiBJ0--f8D74E,3145
|
|
441
441
|
wbportfolio/viewsets/configs/buttons/registers.py,sha256=aS89TsYHql83k-NHojOrLDqtBpnpsUUO8x63PiMfrXM,445
|
|
442
442
|
wbportfolio/viewsets/configs/buttons/signals.py,sha256=6sKBQI_eDvZuZR5bUUwvur5R67A3oChAGxPfayWUelE,2739
|
|
443
|
-
wbportfolio/viewsets/configs/buttons/trade_proposals.py,sha256=
|
|
443
|
+
wbportfolio/viewsets/configs/buttons/trade_proposals.py,sha256=K9anDc6am0YOyr1zQo2DxVMbddFOjEJXUS6g8-aPZrc,3584
|
|
444
444
|
wbportfolio/viewsets/configs/buttons/trades.py,sha256=bPOqqwdgadSUbU9l5aSirqr5UAMFe2AiFNsXLRsKwn8,2535
|
|
445
445
|
wbportfolio/viewsets/configs/display/__init__.py,sha256=jJqSCCAfw_vjbcsIkzKr39LdAZA810LUBfSH1EA7MAI,2086
|
|
446
446
|
wbportfolio/viewsets/configs/display/adjustments.py,sha256=jIOEc23OCYBguLaZRlZxC916kocYT35ZV9Jsiocs9nk,3334
|
|
@@ -521,9 +521,9 @@ wbportfolio/viewsets/transactions/claim.py,sha256=Pb1WftoO-w-ZSTbLRhmQubhy7hgd68
|
|
|
521
521
|
wbportfolio/viewsets/transactions/fees.py,sha256=WT2bWWfgozz4_rpyTKX7dgBBTXD-gu0nlsd2Nk2Zh1Q,7028
|
|
522
522
|
wbportfolio/viewsets/transactions/mixins.py,sha256=WipvJoi5hylkpD0y9VATe30WAcwIHUIroVkK10FYw7k,636
|
|
523
523
|
wbportfolio/viewsets/transactions/rebalancing.py,sha256=6rIrdK0rtKL1afJ-tYfAGdQVTN2MH1kG_yCeVkmyK8k,1263
|
|
524
|
-
wbportfolio/viewsets/transactions/trade_proposals.py,sha256=
|
|
524
|
+
wbportfolio/viewsets/transactions/trade_proposals.py,sha256=7A_4JpwSYLj341_bv5TPBpIDri9sAfqhB7mVmJa9V7Q,6221
|
|
525
525
|
wbportfolio/viewsets/transactions/trades.py,sha256=Y8v2cM0vpspHysaAvu8qqhzt86dNtb2Q3puo4HCJsTI,22629
|
|
526
|
-
wbportfolio-1.54.
|
|
527
|
-
wbportfolio-1.54.
|
|
528
|
-
wbportfolio-1.54.
|
|
529
|
-
wbportfolio-1.54.
|
|
526
|
+
wbportfolio-1.54.14.dist-info/METADATA,sha256=LioS7E1a2gSkTPYpGaxcjiRZVbaAnX1S8uvq-Gr4RFE,703
|
|
527
|
+
wbportfolio-1.54.14.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
528
|
+
wbportfolio-1.54.14.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
|
|
529
|
+
wbportfolio-1.54.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|