wbreport 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.

Potentially problematic release.


This version of wbreport might be problematic. Click here for more details.

@@ -34,6 +34,7 @@ from wbcore.utils.figures import (
34
34
  get_piechart,
35
35
  )
36
36
  from wbportfolio.models.products import InvestmentIndex
37
+
37
38
  from wbreport.mixins import ReportMixin
38
39
  from wbreport.models import ReportAsset
39
40
  from wbreport.pdf.charts.pie import (
@@ -4,6 +4,7 @@ from django.db import models
4
4
  from django.template.loader import get_template
5
5
  from rest_framework.reverse import reverse
6
6
  from wbportfolio.models import Instrument
7
+
7
8
  from wbreport.mixins import ReportMixin
8
9
 
9
10
  from .mixins import FactsheetReportMixin
@@ -33,6 +33,7 @@ from wbcore.utils.figures import (
33
33
  get_piechart,
34
34
  )
35
35
  from wbportfolio.models.products import InvestmentIndex
36
+
36
37
  from wbreport.mixins import ReportMixin
37
38
  from wbreport.models import ReportAsset
38
39
  from wbreport.pdf.charts.pie import (
@@ -2,6 +2,7 @@ import datetime as dt
2
2
  from io import BytesIO
3
3
 
4
4
  from django.template import Context, Template
5
+
5
6
  from wbreport.mixins import ReportMixin
6
7
 
7
8
 
@@ -3,6 +3,7 @@ from io import BytesIO
3
3
  import factory
4
4
  from PIL import Image
5
5
  from wbcore.contrib.color.factories import ColorGradientFactory
6
+
6
7
  from wbreport.models import (
7
8
  Report,
8
9
  ReportAsset,
wbreport/filters.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from wbcore import filters as wb_filters
2
+
2
3
  from wbreport.models import Report, ReportVersion
3
4
 
4
5
 
wbreport/mixins.py CHANGED
@@ -4,6 +4,7 @@ from typing import Any, Dict
4
4
 
5
5
  from django.contrib.auth import get_user_model
6
6
  from django.template.loader import get_template
7
+
7
8
  from wbreport.models import Report, ReportVersion
8
9
 
9
10
  User = get_user_model()
wbreport/serializers.py CHANGED
@@ -60,7 +60,7 @@ class ReportVersionModelSerializer(wb_serializers.ModelSerializer):
60
60
  if not instance.report.file_disabled:
61
61
  res["file"] = reverse("report:reportversion-file", args=[instance.id], request=request)
62
62
 
63
- res["html"] = reverse("report:reportversion-html", args=[instance.id], request=request)
63
+ res["html"] = reverse("wbreport:reportversion-rawhtml-list", args=[instance.id], request=request)
64
64
  if instance.report.mailing_list:
65
65
  res["send_email"] = reverse("report:reportversion-sendemail", args=[instance.id], request=request)
66
66
  return res
wbreport/tasks.py CHANGED
@@ -8,6 +8,7 @@ from django.template.loader import get_template
8
8
  from slugify import slugify
9
9
  from wbcore.contrib.authentication.models import User
10
10
  from wbcore.utils.html import convert_html2text
11
+
11
12
  from wbreport.models import Report, ReportVersion
12
13
 
13
14
 
wbreport/urls.py CHANGED
@@ -1,5 +1,6 @@
1
1
  from django.urls import include, path
2
2
  from wbcore.routers import WBCoreRouter
3
+
3
4
  from wbreport.viewsets import viewsets
4
5
 
5
6
  router = WBCoreRouter()
@@ -25,5 +26,11 @@ router.register(r"reportcategory", viewsets.ReportCategoryModelViewSet, basename
25
26
  report_router = WBCoreRouter()
26
27
  report_router.register(r"version", viewsets.ReportVersionReportModelViewSet, basename="report-version")
27
28
 
29
+ report_version_router = WBCoreRouter()
30
+ report_version_router.register(r"rawhtml", viewsets.ReportVersionReportHTMLViewSet, basename="reportversion-rawhtml")
28
31
 
29
- urlpatterns = [path("", include(router.urls)), path("report/<int:report_id>/", include(report_router.urls))]
32
+ urlpatterns = [
33
+ path("", include(router.urls)),
34
+ path("report/<int:report_id>/", include(report_router.urls)),
35
+ path("reportversion/<int:report_version_id>/", include(report_version_router.urls)),
36
+ ]
wbreport/urls_public.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from django.urls import path
2
+
2
3
  from wbreport.viewsets import viewsets
3
4
 
4
5
  urlpatterns = [
@@ -7,4 +7,5 @@ from .viewsets import (
7
7
  ReportVersionRepresentationViewSet,
8
8
  download_report_version_file,
9
9
  report_version,
10
+ ReportVersionReportHTMLViewSet
10
11
  )
@@ -9,6 +9,7 @@ from .endpoints import (
9
9
  ReportEndpointConfig,
10
10
  ReportVersionEndpointConfig,
11
11
  ReportVersionReportEndpointConfig,
12
+ ReportVersionReportHTMEndpointConfig
12
13
  )
13
14
  from .titles import (
14
15
  ReportTitleConfig,
@@ -6,6 +6,7 @@ from wbcore.metadata.configs.buttons.view_config import ButtonViewConfig
6
6
  from wbcore.metadata.configs.display.instance_display.shortcuts import (
7
7
  create_simple_display,
8
8
  )
9
+
9
10
  from wbreport.models import Report
10
11
 
11
12
 
@@ -147,7 +148,7 @@ class ReportButtonConfig(ButtonViewConfig):
147
148
  class ReportVersionButtonConfig(ButtonViewConfig):
148
149
  def get_custom_list_instance_buttons(self):
149
150
  return {
150
- bt.HyperlinkButton(
151
+ bt.WidgetButton(
151
152
  key="html",
152
153
  label="Report (HTML)",
153
154
  icon=WBIcon.LINK.icon,
@@ -21,3 +21,10 @@ class ReportEndpointConfig(EndpointViewConfig):
21
21
  class ReportVersionReportEndpointConfig(EndpointViewConfig):
22
22
  def get_list_endpoint(self, **kwargs):
23
23
  return reverse("wbreport:report-version-list", args=[self.view.kwargs["report_id"]], request=self.request)
24
+
25
+
26
+ class ReportVersionReportHTMEndpointConfig(EndpointViewConfig):
27
+ def get_list_endpoint(self, **kwargs):
28
+ return reverse(
29
+ "wbreport:reportversion-rawhtml-list", args=[self.view.kwargs["report_version_id"]], request=self.request
30
+ )
@@ -1,4 +1,5 @@
1
1
  from wbcore.metadata.configs.titles import TitleViewConfig
2
+
2
3
  from wbreport.models import Report
3
4
 
4
5
 
@@ -21,6 +21,7 @@ from wbcore.contrib.authentication.authentication import (
21
21
  QueryTokenAuthentication,
22
22
  )
23
23
  from wbcore.contrib.guardian.viewsets.mixins import GuardianFilterMixin
24
+
24
25
  from wbreport.filters import ReportFilterSet, ReportVersionFilterSet
25
26
  from wbreport.models import (
26
27
  Report,
@@ -54,6 +55,7 @@ from wbreport.viewsets.configs import (
54
55
  ReportVersionEndpointConfig,
55
56
  ReportVersionReportDisplayConfig,
56
57
  ReportVersionReportEndpointConfig,
58
+ ReportVersionReportHTMEndpointConfig,
57
59
  ReportVersionReportTitleConfig,
58
60
  ReportVersionTitleConfig,
59
61
  )
@@ -328,3 +330,19 @@ class ReportVersionReportModelViewSet(ReportVersionModelViewSet):
328
330
  if report.is_accessible(self.request.user):
329
331
  return super().get_queryset().filter(report=self.kwargs["report_id"])
330
332
  return ReportVersion.objects.none()
333
+
334
+
335
+ class ReportVersionReportHTMLViewSet(viewsets.HTMLViewSet):
336
+ IDENTIFIER = "wbreport:reportversion-rawhtml"
337
+ queryset = ReportVersion.objects.all()
338
+
339
+ endpoint_config_class = ReportVersionReportHTMEndpointConfig
340
+
341
+ def get_queryset(self):
342
+ return super().get_queryset().filter(id=self.kwargs["report_version_id"])
343
+
344
+ def get_html(self, queryset) -> str:
345
+ version = get_object_or_404(ReportVersion, id=self.kwargs["report_version_id"])
346
+ if version.report.is_accessible(self.request.user):
347
+ return version.generate_html()
348
+ return ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbreport
3
- Version: 1.44.4
3
+ Version: 1.45.0
4
4
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
5
5
  License-File: LICENSE
6
6
  Requires-Dist: wbcore
@@ -2,22 +2,22 @@ wbreport/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
2
2
  wbreport/admin.py,sha256=tQPq0BKzXZ7I3aOE0FaGyjuKs37TiT56s7OT0mDfOXo,2364
3
3
  wbreport/apps.py,sha256=4z2N25hswEAlsJsntASC5iOWUwsqMCL99-gvqBlPGFY,148
4
4
  wbreport/dynamic_preferences_registry.py,sha256=nGT-fS5vN-BSVNyGcJ81ORjiXlOngePRN9hipB9olPw,508
5
- wbreport/filters.py,sha256=2j8osC3fx5mLWilV3rKoSjSph9mWL04TMuVcd-yEf4A,1146
6
- wbreport/mixins.py,sha256=Hx_LTPVfmygrnyDTOjNi58N_QNfdBURPmriLNV3pbfU,5520
5
+ wbreport/filters.py,sha256=2onemO-Vpeqi7gXqxZWAmQg-5TT9Vyt3iJX32sLfhwU,1147
6
+ wbreport/mixins.py,sha256=bAfMvfPL4YEGfEM8fsX-B_JDnN1spcefOhZU-g30080,5521
7
7
  wbreport/models.py,sha256=cRKgmdbb2cKRr04jkTtwv6kmRc5fd8CcIUENKlGIegQ,29595
8
- wbreport/serializers.py,sha256=_heMGD75ncR3ygs-OcdpFVPjCZUyEI4F3iVS9yp47Yc,7226
9
- wbreport/tasks.py,sha256=KLSRyw0aRhLsmT5UGdlalpRbNyRFXBRfejg5k9j8wPo,2270
10
- wbreport/urls.py,sha256=6VuxcSKi5aMmH8IIqmXlBcIhdam_pGl2T_xemhZh6FI,1205
11
- wbreport/urls_public.py,sha256=LbzOc79VKmKUntsUb54lm0QoC22ip05ZdyNbSl2j3KQ,369
8
+ wbreport/serializers.py,sha256=k1hrtd8QodqRkM1Ol9MsLjk0n_XZU8qGLRR62EHJCXM,7236
9
+ wbreport/tasks.py,sha256=O1mcYdOlqnj0lA7K52OszA7OBLClMhuzRm6ZiTcXAOY,2271
10
+ wbreport/urls.py,sha256=yoIFuuwPCRRjOM0VzMznyMmMQXbSVfdk1l12xZJ7Ecs,1463
11
+ wbreport/urls_public.py,sha256=oc_gBiKvLqWkSDAm_0yitWgpfEnlh3_hGUugkLrLCLs,370
12
12
  wbreport/defaults/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  wbreport/defaults/factsheets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- wbreport/defaults/factsheets/base.py,sha256=0qmn10S2l6cqcZV_pUS7c-lHlC8ajOmDmUsgJVQ2OJU,41089
15
- wbreport/defaults/factsheets/menu.py,sha256=G2iX6jZhqddoFsc3-t2uI7ZverUaBzF7EjqAbLrIEYU,4579
14
+ wbreport/defaults/factsheets/base.py,sha256=9dIylgXoUSXdHcspCGm3-TJ8Kei38tJ_6ew3gHoM9M4,41090
15
+ wbreport/defaults/factsheets/menu.py,sha256=NTcUuViV4Q-qkffoA7wMSyxnE4mWPysu3KTKWxFmMCM,4580
16
16
  wbreport/defaults/factsheets/mixins.py,sha256=E0RvxmUpvpG7B7YngBPXJ35eD3nwNandJFzLjj1rNRI,1267
17
- wbreport/defaults/factsheets/multitheme.py,sha256=Kje360mRE8XTIOugCOL7-44fjjIrnbmcx5HrzVqtzbI,38487
17
+ wbreport/defaults/factsheets/multitheme.py,sha256=LHM7tceWP9SJ9E8ChtD7eAq21uWMPdLBolnmgYBDTaw,38488
18
18
  wbreport/factories/__init__.py,sha256=jyD1_R-xc2JPZIaSwtE7zYATdL9NIXIDqTwjLw1MolA,170
19
- wbreport/factories/data_classes.py,sha256=BwYqbw75lnZSim8LNY9-mhf79GjGqdQdd8XQiPPNyvA,1486
20
- wbreport/factories/reports.py,sha256=_oJBJp5WmoaZ0BjU8MwqYdBpSJxsQH61b3QQrOmYOOU,2285
19
+ wbreport/factories/data_classes.py,sha256=Ms9bqG370OQTmE3Kxvt9xay-6lfTnqEA3Sx7zCQKWXw,1487
20
+ wbreport/factories/reports.py,sha256=nGWa_fS78XGUbS8E35rGl3IJySHLB81ggq-3JllPOx4,2286
21
21
  wbreport/fixtures/wbreport.yaml,sha256=VKagUKjjW49ZMjKvUdO72AS9rQzWk-6YWzpiUjmHCXk,5467
22
22
  wbreport/migrations/0001_initial_squashed_squashed_0007_report_key.py,sha256=ghAnYJK01-ISld9CUfU18sqdIstuw5UrOgWH2y8gcTs,10061
23
23
  wbreport/migrations/0008_alter_report_file_content_type.py,sha256=qPR9kWiZLDvfw9H3-BsUdmdIEwlhm5iHSoSax8hzjNE,715
@@ -56,15 +56,15 @@ wbreport/tests/test_models.py,sha256=nCBcCLBylZsFMSgkU6mm4iQdoPVRuS42taCI0pb6Gx4
56
56
  wbreport/tests/test_tasks.py,sha256=icRtEyAtKfhxyx_oN6cYtkUA4QMaGwEpdKKhc07OPKc,762
57
57
  wbreport/tests/test_viewsets.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  wbreport/tests/tests.py,sha256=j2A1uu5DtGu2w056j0S4O7u2OxylldMPCmr7bbSOvfk,282
59
- wbreport/viewsets/__init__.py,sha256=EzsLpS7Y7HxrcLXUJ0DPAmtgewOqkKjoLwHmgijT7Hk,287
60
- wbreport/viewsets/viewsets.py,sha256=MuglJiKtfKWX3uq81ghChEGJVzvXDqJEef9dSEZJ2Ao,13120
61
- wbreport/viewsets/configs/__init__.py,sha256=Tsw7Ffe_iy63CPRZgtsIXkZjUMvKdsMxSz5xzmyqF5A,494
62
- wbreport/viewsets/configs/buttons.py,sha256=Hbofe9TtZ5JdoLOb_rlGzC-_Z_lnJpIseXnFoJd9i-g,8914
59
+ wbreport/viewsets/__init__.py,sha256=iEgYvZsLxQ3Hhf1hwHVdSD7Dm1OZK1Z6qhvTADqs-oc,322
60
+ wbreport/viewsets/viewsets.py,sha256=IDHm-38_i-hcwODz9v6zUXQBUQq2rYqHLXICEUqsx-8,13746
61
+ wbreport/viewsets/configs/__init__.py,sha256=WDvXbmGKD6_DP3nongBzL6lOHYwz5JC0gWtS1C2N4FY,535
62
+ wbreport/viewsets/configs/buttons.py,sha256=jJYCTpE9mT1VF6zdrGipenw2fZPE2P5_wbitz4R-XAw,8912
63
63
  wbreport/viewsets/configs/displays.py,sha256=py3Wcut9uKmer7LV-ftIi0xU97PFctJT-yKZmdgc8qk,4897
64
- wbreport/viewsets/configs/endpoints.py,sha256=wPbB0JnnKSF8hSX07W67rdGkP0VKqLBhTnjBKjZzaL0,799
64
+ wbreport/viewsets/configs/endpoints.py,sha256=LdGFUYMNUHt6qBORnu4IR8Vn2qIIv2Q2TLOs0-cGH0g,1060
65
65
  wbreport/viewsets/configs/menus.py,sha256=trDZsdjXip8KQ4SY1uIudZWFqwb3rQHIRSU36dzRzy0,269
66
- wbreport/viewsets/configs/titles.py,sha256=AYY1ekJp9V8iihcuR8Ygl-7_1AYpXoAp8WthpWWD5GE,782
67
- wbreport-1.44.4.dist-info/METADATA,sha256=R2PoRa-2lwbdk_x5SRDigqOg0uE-VWWRhAU5IVw0AkI,186
68
- wbreport-1.44.4.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
69
- wbreport-1.44.4.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
70
- wbreport-1.44.4.dist-info/RECORD,,
66
+ wbreport/viewsets/configs/titles.py,sha256=bAfruj40yHrSUPzuJ7WGlfJDl7NXXKSaTqITPNn4eJA,783
67
+ wbreport-1.45.0.dist-info/METADATA,sha256=lOOlx1Ruw3FK4RvYFENTcpctHyCW-FzBaLToXQ2Ijg0,186
68
+ wbreport-1.45.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
69
+ wbreport-1.45.0.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
70
+ wbreport-1.45.0.dist-info/RECORD,,