wbportfolio 1.50.5__py2.py3-none-any.whl → 1.50.7__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.

@@ -18,3 +18,4 @@ from .portfolio_swing_pricings import PortfolioSwingPricing
18
18
  from .registers import Register
19
19
  from .transactions import *
20
20
  from .reconciliations import AccountReconciliation, AccountReconciliationLine
21
+ from .signals import *
@@ -17,6 +17,3 @@ class Index(PMSInstrumentAbstractModel):
17
17
  class Meta:
18
18
  verbose_name = "Index"
19
19
  verbose_name_plural = "Indexes"
20
-
21
- def compute_str(self):
22
- return f"{self.name} ({self.ticker} - {self.isin})"
@@ -74,12 +74,6 @@ class InstrumentPortfolioThroughModel(models.Model):
74
74
  return portfolio
75
75
 
76
76
 
77
- @receiver(models.signals.class_prepared)
78
- def add_to_instrument(sender, **kwargs):
79
- Instrument.add_to_class("portfolio", property(InstrumentPortfolioThroughModel.get_portfolio))
80
- Instrument.add_to_class("primary_portfolio", property(InstrumentPortfolioThroughModel.get_primary_portfolio))
81
-
82
-
83
77
  class PortfolioInstrumentPreferredClassificationThroughModel(models.Model):
84
78
  portfolio = models.ForeignKey(
85
79
  "wbportfolio.Portfolio", on_delete=models.CASCADE, related_name="preferred_classification_instruments"
@@ -0,0 +1,20 @@
1
+ from django.db import models
2
+ from django.dispatch import receiver
3
+ from wbfdm.models import Instrument, InstrumentType
4
+
5
+ from wbportfolio.models import InstrumentPortfolioThroughModel, Product, ProductGroup
6
+
7
+
8
+ def _compute_str(instrument):
9
+ if instrument.instrument_type == InstrumentType.PRODUCT_GROUP:
10
+ return ProductGroup.objects.get(id=instrument.id).compute_str()
11
+ elif instrument.instrument_type == InstrumentType.PRODUCT:
12
+ return Product.objects.get(id=instrument.id).compute_str()
13
+ return instrument.get_compute_str()
14
+
15
+
16
+ @receiver(models.signals.class_prepared)
17
+ def add_to_instrument(sender, **kwargs):
18
+ Instrument.add_to_class("portfolio", property(InstrumentPortfolioThroughModel.get_portfolio))
19
+ Instrument.add_to_class("primary_portfolio", property(InstrumentPortfolioThroughModel.get_primary_portfolio))
20
+ Instrument.add_to_class("compute_str", _compute_str)
@@ -117,6 +117,12 @@ class TestProductModel(PortfolioTestMixin):
117
117
  def test_compute_str(self, product, user):
118
118
  assert product.compute_str()
119
119
 
120
+ # test if we save the parent instrument, the computed str is the one from the product class
121
+ instrument = product.instrument_ptr
122
+ instrument.save()
123
+ product.refresh_from_db()
124
+ assert product.computed_str == product.compute_str()
125
+
120
126
  def test_urlify_title(self, product):
121
127
  assert product.name.lower() in product.urlify_title
122
128
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbportfolio
3
- Version: 1.50.5
3
+ Version: 1.50.7
4
4
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
5
5
  License-File: LICENSE
6
6
  Requires-Dist: cryptography==3.4.*
@@ -243,21 +243,22 @@ wbportfolio/migrations/0074_alter_rebalancer_frequency_and_more.py,sha256=o01rBj
243
243
  wbportfolio/migrations/0075_portfolio_initial_position_date_and_more.py,sha256=rXRpsraVlmueAlO2UpBZV4qMf7dtPuptrhfLblZcJDo,1099
244
244
  wbportfolio/migrations/0076_alter_dividendtransaction_price_and_more.py,sha256=4g3ok79nw8mTAxHFAqBAdpGKetaPAjv06YSywywt4aU,6106
245
245
  wbportfolio/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
246
- wbportfolio/models/__init__.py,sha256=IIS_PNRxyX2Dcvyk1bcQOUzFt0B9SPC0WlM88CXqj04,881
246
+ wbportfolio/models/__init__.py,sha256=HSpa5xwh_MHQaBpNrq9E0CbdEE5Iq-pDLIsPzZ-TRTg,904
247
247
  wbportfolio/models/adjustments.py,sha256=osXWkJZOiansPWYPyHtl7Z121zDWi7u1YMtrBQtbHVo,10272
248
248
  wbportfolio/models/asset.py,sha256=wxV8rHogMAKzWE3qEtu9EiFmK_DKHd5cVAUSsGpUKbA,45353
249
249
  wbportfolio/models/custodians.py,sha256=owTiS2Vm5CRKzh9M_P9GOVg-s-ndQ9UvRmw3yZP7cw0,3815
250
250
  wbportfolio/models/exceptions.py,sha256=3ix0tWUO-O6jpz8f07XIwycw2x3JFRoWzjwil8FVA2Q,52
251
- wbportfolio/models/indexes.py,sha256=iLYF2gzNzX4GLj_Nh3fybUcAQ1TslnT0wgQ6mN164QI,728
251
+ wbportfolio/models/indexes.py,sha256=gvW4K9U9Bj8BmVCqFYdWiXvDWhjHINRON8XhNsZUiQY,639
252
252
  wbportfolio/models/portfolio.py,sha256=253Z9K4929UVNaoXmOdcLqWM8xutYwJHdiy0GAHheUM,55967
253
253
  wbportfolio/models/portfolio_cash_flow.py,sha256=uElG7IJUBY8qvtrXftOoskX6EA-dKgEG1JJdvHeWV7g,7336
254
254
  wbportfolio/models/portfolio_cash_targets.py,sha256=WmgG-etPisZsh2yaFQpz7EkpvAudKBEzqPsO715w52U,1498
255
- wbportfolio/models/portfolio_relationship.py,sha256=mMb18UMRWg9kx_9uIPkMktwORuXXLjKdgRPQQvB6fVE,5486
255
+ wbportfolio/models/portfolio_relationship.py,sha256=ZGECiPZiLdlk4uSamOrEfuzO0hduK6OMKJLUSnh5_kc,5190
256
256
  wbportfolio/models/portfolio_swing_pricings.py,sha256=_LqYC1VRjnnFFmVqFPRdnbgYsVxocMVpClTk2dnooig,1778
257
257
  wbportfolio/models/product_groups.py,sha256=qoT8qv6tRdD6zmNDxsHO6dtnWw1-TRnyS5NqOq_gwhI,7901
258
258
  wbportfolio/models/products.py,sha256=5z9OMLVS0ps6aOJbG3JE7gKTf3PlbC4rXIPpv55dD1A,22863
259
259
  wbportfolio/models/registers.py,sha256=qA6T33t4gxFYnabQFBMd90WGIr6wxxirDLKDFqjOfok,4667
260
260
  wbportfolio/models/roles.py,sha256=wF5Atp0xsJxDrYjmFw9XHgEOe_4C-lm4pppeYdymOrA,7343
261
+ wbportfolio/models/signals.py,sha256=yDKg2ingDBFQY1oOFpDrMU2C2c0f2aIgRul5UEBqhIs,899
261
262
  wbportfolio/models/utils.py,sha256=iBdMjRCvr6aOL0nLgfSCWUKe0h39h3IGmUbYo6l9t6w,394
262
263
  wbportfolio/models/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
264
  wbportfolio/models/graphs/portfolio.py,sha256=NwkehWvTcyTYrKO5ku3eNNaYLuBwuLdSbTEuugGuSIU,6541
@@ -376,7 +377,7 @@ wbportfolio/tests/models/test_portfolio_cash_targets.py,sha256=q8QWAwt-kKRkLC0E0
376
377
  wbportfolio/tests/models/test_portfolio_swing_pricings.py,sha256=kr2AOcQkyg2pX3ULjU-o9ye-NVpjMrrfoe-DVbYCbjs,1656
377
378
  wbportfolio/tests/models/test_portfolios.py,sha256=ECUAxE07KwmlHN1udMHVCmNDQrRcCbMfRQe8L3cHOX0,53111
378
379
  wbportfolio/tests/models/test_product_groups.py,sha256=AcdxhurV-n_bBuUsfD1GqVtwLFcs7VI2CRrwzsIUWbU,3337
379
- wbportfolio/tests/models/test_products.py,sha256=FkQLms3kXzyg6mNEEJcHUVKu8YbATY9l6lZyaRUnpjw,9314
380
+ wbportfolio/tests/models/test_products.py,sha256=IcBzw9hrGiWFMRwPBTMukCMWrhqnjOVA2hhb90xYOW8,9580
380
381
  wbportfolio/tests/models/test_roles.py,sha256=4Cn7WyrA2ztJNeWLk5cy9kYo5XLWMbFSvo1O-9JYxeA,3323
381
382
  wbportfolio/tests/models/test_splits.py,sha256=ytKcHsI_90kj1L4s8It-KEcc24rkDcElxwQ8q0QxEvk,9689
382
383
  wbportfolio/tests/models/utils.py,sha256=ORNJq6NMo1Za22jGZXfTfKeNEnTRlfEt_8SJ6xLaQWg,325
@@ -521,7 +522,7 @@ wbportfolio/viewsets/transactions/rebalancing.py,sha256=6rIrdK0rtKL1afJ-tYfAGdQV
521
522
  wbportfolio/viewsets/transactions/trade_proposals.py,sha256=iQpC_Thbj56SmM05vPRsF1JZguGBDaTUH3I-_iCHCV0,5958
522
523
  wbportfolio/viewsets/transactions/trades.py,sha256=-yJ4j8NJTu2VWyhCq5BXGNND_925Ietoxx9k07SLVh0,21634
523
524
  wbportfolio/viewsets/transactions/transactions.py,sha256=ixDp-nsNA8t_A06rBCT19hOMJHy0iRmdz1XKdV1OwAs,4450
524
- wbportfolio-1.50.5.dist-info/METADATA,sha256=YSKxspCHBavsYHEEz8Qv_6W4F6B6AcdB_KrG1Xy6e8Q,702
525
- wbportfolio-1.50.5.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
526
- wbportfolio-1.50.5.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
527
- wbportfolio-1.50.5.dist-info/RECORD,,
525
+ wbportfolio-1.50.7.dist-info/METADATA,sha256=_3QdVIySIlzglfZnVOyVWrGDA7tv9HcUPA6Sy-iT4XY,702
526
+ wbportfolio-1.50.7.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
527
+ wbportfolio-1.50.7.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
528
+ wbportfolio-1.50.7.dist-info/RECORD,,