wbfdm 1.44.4__py2.py3-none-any.whl → 1.45.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.
- wbfdm/admin/classifications.py +1 -0
- wbfdm/admin/esg.py +1 -0
- wbfdm/admin/exchanges.py +1 -0
- wbfdm/admin/instrument_lists.py +1 -0
- wbfdm/admin/instrument_prices.py +1 -0
- wbfdm/admin/instrument_requests.py +1 -0
- wbfdm/admin/instruments.py +1 -0
- wbfdm/admin/instruments_relationships.py +1 -0
- wbfdm/admin/options.py +1 -0
- wbfdm/analysis/esg/enums.py +2 -3
- wbfdm/analysis/esg/esg_analysis.py +1 -0
- wbfdm/analysis/esg/utils.py +1 -0
- wbfdm/analysis/financial_analysis/financial_metric_analysis.py +1 -0
- wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +1 -0
- wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +4 -1
- wbfdm/analysis/financial_analysis/statement_with_estimates.py +3 -4
- wbfdm/analysis/financial_analysis/utils.py +1 -0
- wbfdm/analysis/technical_analysis/technical_analysis.py +1 -0
- wbfdm/contrib/dsws/client.py +17 -2
- wbfdm/contrib/internal/dataloaders/market_data.py +1 -0
- wbfdm/contrib/metric/admin/instruments.py +1 -0
- wbfdm/contrib/metric/backends/base.py +5 -4
- wbfdm/contrib/metric/backends/performances.py +4 -3
- wbfdm/contrib/metric/backends/statistics.py +1 -0
- wbfdm/contrib/metric/factories.py +1 -0
- wbfdm/contrib/metric/filters.py +1 -0
- wbfdm/contrib/metric/serializers.py +1 -0
- wbfdm/contrib/metric/tasks.py +2 -1
- wbfdm/contrib/metric/tests/backends/test_performances.py +1 -0
- wbfdm/contrib/metric/tests/backends/test_statistics.py +1 -0
- wbfdm/contrib/metric/tests/test_models.py +1 -0
- wbfdm/contrib/metric/tests/test_viewsets.py +1 -0
- wbfdm/contrib/metric/viewsets/configs/display.py +1 -0
- wbfdm/contrib/metric/viewsets/mixins.py +1 -0
- wbfdm/contrib/metric/viewsets/viewsets.py +1 -0
- wbfdm/contrib/msci/dataloaders/esg.py +1 -0
- wbfdm/contrib/msci/dataloaders/esg_controversies.py +1 -0
- wbfdm/contrib/msci/sync.py +1 -0
- wbfdm/contrib/qa/dataloaders/adjustments.py +5 -5
- wbfdm/contrib/qa/dataloaders/corporate_actions.py +5 -5
- wbfdm/contrib/qa/dataloaders/financials.py +1 -0
- wbfdm/contrib/qa/dataloaders/market_data.py +9 -7
- wbfdm/contrib/qa/dataloaders/officers.py +8 -10
- wbfdm/contrib/qa/dataloaders/reporting_dates.py +1 -0
- wbfdm/contrib/qa/dataloaders/statements.py +1 -0
- wbfdm/contrib/qa/dataloaders/utils.py +2 -2
- wbfdm/dataloaders/proxies.py +1 -0
- wbfdm/factories/classifications.py +1 -0
- wbfdm/factories/controversies.py +1 -0
- wbfdm/factories/exchanges.py +1 -0
- wbfdm/factories/instrument_list.py +1 -0
- wbfdm/factories/instrument_prices.py +1 -0
- wbfdm/factories/instruments.py +1 -0
- wbfdm/factories/instruments_relationships.py +1 -0
- wbfdm/factories/options.py +1 -0
- wbfdm/figures/financials/financial_analysis_charts.py +1 -0
- wbfdm/figures/financials/financials_charts.py +1 -0
- wbfdm/filters/classifications.py +1 -0
- wbfdm/filters/exchanges.py +1 -0
- wbfdm/filters/financials.py +1 -0
- wbfdm/filters/financials_analysis.py +1 -0
- wbfdm/filters/instrument_prices.py +1 -0
- wbfdm/filters/instruments.py +1 -0
- wbfdm/filters/utils.py +1 -0
- wbfdm/import_export/backends/cbinsights/mixin.py +1 -0
- wbfdm/import_export/backends/refinitiv/mixin.py +1 -0
- wbfdm/import_export/backends/refinitiv/utils/controller.py +1 -0
- wbfdm/import_export/handlers/instrument.py +1 -0
- wbfdm/import_export/handlers/instrument_price.py +5 -0
- wbfdm/import_export/parsers/cbinsights/deals.py +1 -0
- wbfdm/import_export/parsers/cbinsights/equities.py +1 -0
- wbfdm/import_export/parsers/cbinsights/fundamentals.py +1 -0
- wbfdm/import_export/parsers/refinitiv/instrument.py +1 -0
- wbfdm/import_export/parsers/refinitiv/instrument_price.py +1 -0
- wbfdm/import_export/resources/classification.py +1 -0
- wbfdm/import_export/resources/instrument_prices.py +1 -0
- wbfdm/import_export/resources/instruments.py +1 -0
- wbfdm/models/esg/controversies.py +1 -0
- wbfdm/models/instruments/instrument_lists.py +1 -0
- wbfdm/models/instruments/instrument_prices.py +1 -0
- wbfdm/models/instruments/instrument_requests.py +1 -0
- wbfdm/models/instruments/instruments.py +12 -7
- wbfdm/models/instruments/llm/create_instrument_news_relationships.py +2 -2
- wbfdm/models/instruments/mixin/instruments.py +24 -19
- wbfdm/models/instruments/options.py +1 -0
- wbfdm/models/instruments/private_equities.py +1 -0
- wbfdm/models/instruments/utils.py +1 -0
- wbfdm/serializers/esg.py +1 -0
- wbfdm/serializers/exchanges.py +1 -0
- wbfdm/serializers/instruments/classifications.py +1 -0
- wbfdm/serializers/instruments/instrument_lists.py +1 -0
- wbfdm/serializers/instruments/instrument_prices.py +1 -0
- wbfdm/serializers/instruments/instrument_relationships.py +1 -0
- wbfdm/serializers/instruments/instrument_requests.py +1 -0
- wbfdm/serializers/instruments/instruments.py +1 -0
- wbfdm/signals.py +3 -0
- wbfdm/tasks.py +45 -5
- wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +1 -0
- wbfdm/tests/analysis/financial_analysis/test_utils.py +1 -0
- wbfdm/tests/analysis/test_esg.py +1 -0
- wbfdm/tests/dataloaders/test_cache.py +1 -0
- wbfdm/tests/models/test_classifications.py +1 -0
- wbfdm/tests/models/test_instrument_list.py +1 -0
- wbfdm/tests/models/test_instrument_prices.py +1 -0
- wbfdm/tests/models/test_instruments.py +2 -1
- wbfdm/tests/models/test_merge.py +14 -9
- wbfdm/tests/models/test_options.py +1 -0
- wbfdm/urls.py +1 -0
- wbfdm/viewsets/configs/buttons/instruments.py +1 -0
- wbfdm/viewsets/configs/display/esg.py +1 -0
- wbfdm/viewsets/configs/display/instrument_lists.py +1 -0
- wbfdm/viewsets/configs/display/instrument_prices.py +1 -0
- wbfdm/viewsets/configs/display/instrument_requests.py +1 -0
- wbfdm/viewsets/configs/display/instruments.py +31 -4
- wbfdm/viewsets/configs/endpoints/instrument_requests.py +1 -0
- wbfdm/viewsets/configs/titles/classifications.py +1 -0
- wbfdm/viewsets/configs/titles/financials_analysis.py +1 -0
- wbfdm/viewsets/configs/titles/instrument_prices.py +1 -0
- wbfdm/viewsets/configs/titles/market_data.py +1 -0
- wbfdm/viewsets/esg.py +1 -0
- wbfdm/viewsets/exchanges.py +1 -0
- wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +1 -0
- wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +2 -1
- wbfdm/viewsets/financial_analysis/financial_summary.py +4 -4
- wbfdm/viewsets/financial_analysis/statement_with_estimates.py +1 -0
- wbfdm/viewsets/instruments/classifications.py +1 -0
- wbfdm/viewsets/instruments/financials_analysis.py +1 -0
- wbfdm/viewsets/instruments/instrument_lists.py +1 -0
- wbfdm/viewsets/instruments/instrument_prices.py +1 -0
- wbfdm/viewsets/instruments/instrument_requests.py +1 -0
- wbfdm/viewsets/instruments/instruments.py +1 -0
- wbfdm/viewsets/instruments/instruments_relationships.py +1 -0
- wbfdm/viewsets/market_data.py +3 -2
- wbfdm/viewsets/mixins.py +1 -0
- wbfdm/viewsets/officers.py +1 -0
- wbfdm/viewsets/prices.py +1 -0
- wbfdm/viewsets/statements/statements.py +1 -0
- wbfdm/viewsets/technical_analysis/monthly_performances.py +1 -0
- {wbfdm-1.44.4.dist-info → wbfdm-1.45.0.dist-info}/METADATA +1 -1
- {wbfdm-1.44.4.dist-info → wbfdm-1.45.0.dist-info}/RECORD +141 -141
- {wbfdm-1.44.4.dist-info → wbfdm-1.45.0.dist-info}/WHEEL +0 -0
|
@@ -8,6 +8,7 @@ import pandas as pd
|
|
|
8
8
|
import pytest
|
|
9
9
|
from faker import Faker
|
|
10
10
|
from pandas.tseries.offsets import BDay
|
|
11
|
+
|
|
11
12
|
from wbfdm.dataloaders.proxies import InstrumentDataloaderProxy
|
|
12
13
|
from wbfdm.factories.instrument_prices import InstrumentPrice
|
|
13
14
|
from wbfdm.models import Instrument, RelatedInstrumentThroughModel
|
|
@@ -164,7 +165,7 @@ class TestInstrumentModel:
|
|
|
164
165
|
"market_capitalization": 2,
|
|
165
166
|
},
|
|
166
167
|
]
|
|
167
|
-
instrument.
|
|
168
|
+
instrument.import_prices(from_date, to_date + timedelta(days=1))
|
|
168
169
|
assert InstrumentPrice.objects.get(
|
|
169
170
|
instrument=instrument, date=from_date, calculated=False
|
|
170
171
|
).net_value == Decimal(1)
|
wbfdm/tests/models/test_merge.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
from faker import Faker
|
|
3
|
+
|
|
3
4
|
from wbfdm.factories.instruments import InstrumentFactory
|
|
4
5
|
from wbfdm.models import (
|
|
5
6
|
Instrument,
|
|
@@ -68,12 +69,14 @@ class TestMergeInstrument:
|
|
|
68
69
|
] # Check that the favorite group with the merged instrument removed it and included the main instrument
|
|
69
70
|
|
|
70
71
|
# Check related instruments
|
|
71
|
-
assert
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
assert (
|
|
73
|
+
RelatedInstrumentThroughModel.objects.filter(
|
|
74
|
+
instrument=main_instrument,
|
|
75
|
+
related_instrument=merged_related_instrument_rel.related_instrument,
|
|
76
|
+
is_primary=merged_related_instrument_rel.is_primary,
|
|
77
|
+
related_type=merged_related_instrument_rel.related_type,
|
|
78
|
+
).exists()
|
|
79
|
+
) # Check that the related instrument with the merged instrument removed it and included the main instrument
|
|
77
80
|
assert main_instrument.related_instruments.filter(
|
|
78
81
|
id=main_related_instrument_rel.related_instrument.id
|
|
79
82
|
).exists() # Check that the main instrument related instrument is still there
|
|
@@ -94,6 +97,8 @@ class TestMergeInstrument:
|
|
|
94
97
|
assert main_instrument.classifications.filter(
|
|
95
98
|
id=main_classification_rel.classification.id
|
|
96
99
|
).exists() # Check that the main instrument classification relationship is still there
|
|
97
|
-
assert
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
assert (
|
|
101
|
+
InstrumentClassificationThroughModel.objects.filter(
|
|
102
|
+
related_instruments=main_instrument, classification=reversed_classification_rel.classification
|
|
103
|
+
).exists()
|
|
104
|
+
) # Check that the reverse classificaiton instrument relationship has been forward to the main instrument
|
wbfdm/urls.py
CHANGED
|
@@ -3,6 +3,7 @@ from typing import Optional
|
|
|
3
3
|
from wbcore.contrib.color.enums import WBColor
|
|
4
4
|
from wbcore.metadata.configs import display as dp
|
|
5
5
|
from wbcore.metadata.configs.display.view_config import DisplayViewConfig
|
|
6
|
+
|
|
6
7
|
from wbfdm.models import Instrument, InstrumentType
|
|
7
8
|
|
|
8
9
|
perf_formatting_rules = [
|
|
@@ -10,6 +10,7 @@ from wbcore.metadata.configs.display.instance_display.shortcuts import (
|
|
|
10
10
|
)
|
|
11
11
|
from wbcore.metadata.configs.display.instance_display.utils import repeat_field
|
|
12
12
|
from wbcore.metadata.configs.display.view_config import DisplayViewConfig
|
|
13
|
+
|
|
13
14
|
from wbfdm.models import InstrumentRequest
|
|
14
15
|
|
|
15
16
|
|
|
@@ -18,6 +18,7 @@ from wbcore.metadata.configs.display.instance_display.shortcuts import (
|
|
|
18
18
|
)
|
|
19
19
|
from wbcore.metadata.configs.display.instance_display.styles import Style
|
|
20
20
|
from wbcore.metadata.configs.display.instance_display.utils import repeat, repeat_field
|
|
21
|
+
|
|
21
22
|
from wbfdm.contrib.metric.viewsets.configs.utils import (
|
|
22
23
|
get_performance_fields,
|
|
23
24
|
get_statistic_field,
|
|
@@ -124,9 +125,30 @@ class InstrumentDisplayConfig(DisplayViewConfig):
|
|
|
124
125
|
default(): Layout(
|
|
125
126
|
grid_template_areas=[
|
|
126
127
|
["name", "ticker", "isin", "exchange", "market_data_chart", "valuation_ratios-new"],
|
|
127
|
-
[
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
[
|
|
129
|
+
"name_repr",
|
|
130
|
+
"instrument_type",
|
|
131
|
+
"currency",
|
|
132
|
+
"country",
|
|
133
|
+
"market_data_chart",
|
|
134
|
+
"valuation_ratios-new",
|
|
135
|
+
],
|
|
136
|
+
[
|
|
137
|
+
"inception_date",
|
|
138
|
+
"delisted_date",
|
|
139
|
+
".",
|
|
140
|
+
".",
|
|
141
|
+
"market_data_chart",
|
|
142
|
+
"valuation_ratios-new",
|
|
143
|
+
],
|
|
144
|
+
[
|
|
145
|
+
"description",
|
|
146
|
+
"description",
|
|
147
|
+
"description",
|
|
148
|
+
"description",
|
|
149
|
+
"market_data_chart",
|
|
150
|
+
"valuation_ratios-new",
|
|
151
|
+
],
|
|
130
152
|
[repeat_field(4, "fin-summary"), repeat_field(2, ".")],
|
|
131
153
|
],
|
|
132
154
|
grid_template_rows=["min-content"] * 3 + ["1fr", "446px"],
|
|
@@ -134,7 +156,12 @@ class InstrumentDisplayConfig(DisplayViewConfig):
|
|
|
134
156
|
inlines=[
|
|
135
157
|
Inline(key="market_data_chart", endpoint="market_data", title="Prices"),
|
|
136
158
|
Inline(key="valuation_ratios-new", endpoint="valuation_ratios-new", title="Ratios"),
|
|
137
|
-
Inline(
|
|
159
|
+
Inline(
|
|
160
|
+
key="fin-summary",
|
|
161
|
+
endpoint="fin-summary",
|
|
162
|
+
title="Financial Summary",
|
|
163
|
+
hide_controls=True,
|
|
164
|
+
),
|
|
138
165
|
],
|
|
139
166
|
),
|
|
140
167
|
},
|
wbfdm/viewsets/esg.py
CHANGED
|
@@ -3,6 +3,7 @@ from rest_framework.response import Response
|
|
|
3
3
|
from wbcore import viewsets
|
|
4
4
|
from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
|
|
5
5
|
from wbcore.pandas import fields as pf
|
|
6
|
+
|
|
6
7
|
from wbfdm.enums import ESG
|
|
7
8
|
from wbfdm.models.instruments import Instrument
|
|
8
9
|
from wbfdm.serializers import InstrumentControversySerializer
|
wbfdm/viewsets/exchanges.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from wbcore import viewsets
|
|
2
2
|
from wbcore.permissions.permissions import InternalUserPermissionMixin
|
|
3
|
+
|
|
3
4
|
from wbfdm.filters import ExchangeFilterSet
|
|
4
5
|
from wbfdm.models import Exchange
|
|
5
6
|
from wbfdm.serializers import ExchangeModelSerializer, ExchangeRepresentationSerializer
|
|
@@ -5,6 +5,7 @@ from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
|
|
|
5
5
|
from wbcore.pandas import fields as pf
|
|
6
6
|
from wbcore.pandas.utils import override_number_to_percent
|
|
7
7
|
from wbcore.serializers.fields.types import DisplayMode
|
|
8
|
+
|
|
8
9
|
from wbfdm.analysis.financial_analysis.financial_metric_analysis import (
|
|
9
10
|
financial_metric_estimate_analysis,
|
|
10
11
|
financial_metric_growths,
|
|
@@ -6,6 +6,7 @@ import plotly.express as px
|
|
|
6
6
|
import plotly.graph_objects as go
|
|
7
7
|
from wbcore import viewsets
|
|
8
8
|
from wbcore.utils.date import get_date_interval_from_request
|
|
9
|
+
|
|
9
10
|
from wbfdm.analysis.financial_analysis.financial_ratio_analysis import (
|
|
10
11
|
FinancialRatio,
|
|
11
12
|
get_financial_ratios,
|
|
@@ -17,7 +18,7 @@ from ..configs import ValuationRatioChartTitleConfig
|
|
|
17
18
|
from ..mixins import InstrumentMixin
|
|
18
19
|
|
|
19
20
|
|
|
20
|
-
class ValuationRatioChartViewSet(InstrumentMixin, viewsets.
|
|
21
|
+
class ValuationRatioChartViewSet(InstrumentMixin, viewsets.TimeSeriesChartViewSet):
|
|
21
22
|
queryset = Instrument.objects.all()
|
|
22
23
|
filterset_class = FinancialRatioFilterSet
|
|
23
24
|
title_config_class = ValuationRatioChartTitleConfig
|
|
@@ -4,21 +4,21 @@ from django.utils.functional import cached_property
|
|
|
4
4
|
from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
|
|
5
5
|
from wbcore.metadata.configs.endpoints import NoEndpointViewConfig
|
|
6
6
|
from wbcore.pandas import fields as pf
|
|
7
|
-
from wbcore.pandas.utils import sanitize_fields, pct_change_with_negative_values
|
|
8
7
|
from wbcore.pandas.utils import (
|
|
9
8
|
override_number_to_decimal,
|
|
9
|
+
override_number_to_integer_without_decorations,
|
|
10
10
|
override_number_to_percent,
|
|
11
11
|
override_number_to_x,
|
|
12
|
-
|
|
12
|
+
pct_change_with_negative_values,
|
|
13
|
+
sanitize_fields,
|
|
13
14
|
)
|
|
15
|
+
|
|
14
16
|
from wbfdm.enums import Financial
|
|
15
17
|
from wbfdm.models.instruments import Instrument
|
|
16
|
-
|
|
17
18
|
from wbfdm.viewsets.configs.display import (
|
|
18
19
|
FinancialSummaryDisplayViewConfig,
|
|
19
20
|
)
|
|
20
21
|
|
|
21
|
-
|
|
22
22
|
from ..mixins import InstrumentMixin
|
|
23
23
|
|
|
24
24
|
|
|
@@ -9,6 +9,7 @@ from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
|
|
|
9
9
|
from wbcore.pandas import fields as pf
|
|
10
10
|
from wbcore.serializers.fields.types import DisplayMode
|
|
11
11
|
from wbcore.utils.date import get_next_day_timedelta
|
|
12
|
+
|
|
12
13
|
from wbfdm.analysis.financial_analysis.statement_with_estimates import (
|
|
13
14
|
StatementWithEstimates,
|
|
14
15
|
)
|
|
@@ -12,6 +12,7 @@ from wbcore.cache.decorators import cache_table
|
|
|
12
12
|
from wbcore.filters import DjangoFilterBackend
|
|
13
13
|
from wbcore.permissions.permissions import InternalUserPermissionMixin
|
|
14
14
|
from wbcore.utils.date import get_next_day_timedelta
|
|
15
|
+
|
|
15
16
|
from wbfdm.filters import (
|
|
16
17
|
ClassificationFilter,
|
|
17
18
|
ClassificationTreeChartFilter,
|
|
@@ -7,6 +7,7 @@ import plotly.graph_objects as go
|
|
|
7
7
|
from plotly.subplots import make_subplots
|
|
8
8
|
from wbcore import viewsets
|
|
9
9
|
from wbcore.utils.date import get_date_interval_from_request
|
|
10
|
+
|
|
10
11
|
from wbfdm.figures.financials import FinancialsChartGenerator
|
|
11
12
|
from wbfdm.figures.financials.financial_analysis_charts import (
|
|
12
13
|
FinancialAnalysisGenerator,
|
|
@@ -3,6 +3,7 @@ from rest_framework.filters import OrderingFilter
|
|
|
3
3
|
from wbcore import viewsets
|
|
4
4
|
from wbcore.contrib.guardian.filters import ObjectPermissionsFilter
|
|
5
5
|
from wbcore.viewsets.mixins import DjangoFilterBackend
|
|
6
|
+
|
|
6
7
|
from wbfdm.contrib.metric.backends.performances import PERFORMANCE_METRIC
|
|
7
8
|
from wbfdm.contrib.metric.backends.statistics import STATISTICS_METRIC
|
|
8
9
|
from wbfdm.contrib.metric.viewsets.mixins import InstrumentMetricMixin
|
|
@@ -8,6 +8,7 @@ from wbcore import serializers as wb_serializers
|
|
|
8
8
|
from wbcore import viewsets
|
|
9
9
|
from wbcore.contrib.tags.serializers import TagSerializerMixin
|
|
10
10
|
from wbcore.permissions.permissions import InternalUserPermissionMixin
|
|
11
|
+
|
|
11
12
|
from wbfdm.filters.instruments import BaseClassifiedInstrumentFilterSet
|
|
12
13
|
from wbfdm.models import (
|
|
13
14
|
Classification,
|
wbfdm/viewsets/market_data.py
CHANGED
|
@@ -8,6 +8,7 @@ from plotly import graph_objects as go
|
|
|
8
8
|
from plotly.subplots import make_subplots
|
|
9
9
|
from wbcore import viewsets
|
|
10
10
|
from wbcore.utils.date import get_date_interval_from_request
|
|
11
|
+
|
|
11
12
|
from wbfdm.enums import Indicator, MarketDataChartType
|
|
12
13
|
from wbfdm.filters import MarketDataChartFilterSet
|
|
13
14
|
from wbfdm.models.instruments import Instrument
|
|
@@ -16,7 +17,7 @@ from .configs import MarketDataChartTitleConfig, PerformanceSummaryChartTitleCon
|
|
|
16
17
|
from .mixins import InstrumentMixin
|
|
17
18
|
|
|
18
19
|
|
|
19
|
-
class PerformanceSummaryChartViewSet(InstrumentMixin, viewsets.
|
|
20
|
+
class PerformanceSummaryChartViewSet(InstrumentMixin, viewsets.TimeSeriesChartViewSet):
|
|
20
21
|
queryset = Instrument.objects.all()
|
|
21
22
|
title_config_class = PerformanceSummaryChartTitleConfig
|
|
22
23
|
|
|
@@ -39,7 +40,7 @@ class PerformanceSummaryChartViewSet(InstrumentMixin, viewsets.ChartViewSet):
|
|
|
39
40
|
return fig
|
|
40
41
|
|
|
41
42
|
|
|
42
|
-
class MarketDataChartViewSet(InstrumentMixin, viewsets.
|
|
43
|
+
class MarketDataChartViewSet(InstrumentMixin, viewsets.TimeSeriesChartViewSet):
|
|
43
44
|
queryset = Instrument.objects.all()
|
|
44
45
|
filterset_class = MarketDataChartFilterSet
|
|
45
46
|
title_config_class = MarketDataChartTitleConfig
|
wbfdm/viewsets/mixins.py
CHANGED
wbfdm/viewsets/officers.py
CHANGED
wbfdm/viewsets/prices.py
CHANGED
|
@@ -5,6 +5,7 @@ from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
|
|
|
5
5
|
from wbcore.pandas import fields as pf
|
|
6
6
|
from wbcore.serializers.fields.types import DisplayMode
|
|
7
7
|
from wbcore.utils.date import get_date_interval_from_request
|
|
8
|
+
|
|
8
9
|
from wbfdm.filters.instrument_prices import FakeDateRange
|
|
9
10
|
from wbfdm.models.instruments import Instrument
|
|
10
11
|
from wbfdm.viewsets.configs.display.prices import InstrumentPriceDisplayConfig
|
|
@@ -5,6 +5,7 @@ from wbcore.contrib.io.viewsets import ExportPandasAPIViewSet
|
|
|
5
5
|
from wbcore.pandas import fields as pf
|
|
6
6
|
from wbcore.serializers.fields.types import DisplayMode
|
|
7
7
|
from wbcore.utils.date import get_next_day_timedelta
|
|
8
|
+
|
|
8
9
|
from wbfdm.enums import DataType, PeriodType, StatementType
|
|
9
10
|
from wbfdm.filters import StatementFilter
|
|
10
11
|
from wbfdm.models.instruments import Instrument
|
|
@@ -6,6 +6,7 @@ from wbcore.pandas import fields as pf
|
|
|
6
6
|
from wbcore.permissions.permissions import InternalUserPermissionMixin
|
|
7
7
|
from wbcore.utils.date import get_date_interval_from_request
|
|
8
8
|
from wbcore.utils.strings import format_number
|
|
9
|
+
|
|
9
10
|
from wbfdm.filters import MonthlyPerformancesInstrumentFilterSet
|
|
10
11
|
from wbfdm.models.instruments import Instrument
|
|
11
12
|
from wbfdm.viewsets.configs import (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wbfdm
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.45.0
|
|
4
4
|
Summary: The workbench module ensures rapid access to diverse financial data (market, fundamental, forecasts, ESG), with features for storing instruments, classifying them, and conducting financial analysis.
|
|
5
5
|
Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
|
|
6
6
|
Requires-Dist: roman==4.*
|