wbwriter 1.55.8__py2.py3-none-any.whl → 1.55.10rc0__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 wbwriter might be problematic. Click here for more details.

@@ -39,7 +39,7 @@ from weasyprint import CSS
39
39
 
40
40
  from wbwriter.models.publication_models import Publication
41
41
  from wbwriter.pdf_generator import PdfGenerator
42
- from wbwriter.publication_parser import ParserValidationException
42
+ from wbwriter.publication_parser import ParserValidationError
43
43
  from wbwriter.typings import ArticleDTO
44
44
 
45
45
  from .mixins import PublishableMixin
@@ -167,7 +167,7 @@ class DependantArticle(WBModel):
167
167
  )
168
168
 
169
169
  @classmethod
170
- def get_endpoint_basename(self):
170
+ def get_endpoint_basename(cls):
171
171
  return "wbwriter:dependantarticle"
172
172
 
173
173
  @classmethod
@@ -789,7 +789,7 @@ class Article(CloneMixin, TagModelMixin, PublishableMixin, WBModel):
789
789
  self._build_dto(),
790
790
  date.today(),
791
791
  ).is_valid()
792
- except ParserValidationException as e:
792
+ except ParserValidationError as e:
793
793
  errors["non_field_errors"] = e.errors
794
794
  except ModuleNotFoundError:
795
795
  errors["non_field_errors"] = [gettext_lazy("invalid parser")]
@@ -1175,7 +1175,7 @@ class Article(CloneMixin, TagModelMixin, PublishableMixin, WBModel):
1175
1175
  return mapping
1176
1176
 
1177
1177
  @classmethod
1178
- def get_endpoint_basename(self):
1178
+ def get_endpoint_basename(cls):
1179
1179
  return "wbwriter:article"
1180
1180
 
1181
1181
  @classmethod
@@ -32,7 +32,7 @@ class ArticleType(WBModel):
32
32
  qa_reviewers = models.ManyToManyField("directory.Person", related_name="article_type_qa_reviewers")
33
33
 
34
34
  @classmethod
35
- def get_endpoint_basename(self):
35
+ def get_endpoint_basename(cls):
36
36
  return "wbwriter:articletyperepresentation"
37
37
 
38
38
  @classmethod
@@ -86,7 +86,7 @@ class InEditorTemplate(WBModel):
86
86
  return self.title
87
87
 
88
88
  @classmethod
89
- def get_endpoint_basename(self):
89
+ def get_endpoint_basename(cls):
90
90
  return "wbwriter:in-editor-template"
91
91
 
92
92
  @classmethod
@@ -24,7 +24,7 @@ class MetaInformation(WBModel):
24
24
  verbose_name_plural = "Meta Information"
25
25
 
26
26
  @classmethod
27
- def get_endpoint_basename(self):
27
+ def get_endpoint_basename(cls):
28
28
  return "wbwriter:metainformation"
29
29
 
30
30
  @classmethod
@@ -60,7 +60,7 @@ class MetaInformationInstance(WBModel):
60
60
  ]
61
61
 
62
62
  @classmethod
63
- def get_endpoint_basename(self):
63
+ def get_endpoint_basename(cls):
64
64
  return "wbwriter:metainformationinstance"
65
65
 
66
66
  @classmethod
@@ -77,6 +77,9 @@ class Publication(TagModelMixin, models.Model):
77
77
  object_id = models.PositiveIntegerField()
78
78
  content_object = GenericForeignKey("content_type", "object_id")
79
79
 
80
+ def __str__(self) -> str:
81
+ return self.title
82
+
80
83
  @classmethod
81
84
  def create_or_update_from_parser_and_object(cls, parser, generic_object):
82
85
  if hasattr(generic_object, "_build_dto") and callable(generic_object._build_dto):
@@ -91,7 +94,7 @@ class Publication(TagModelMixin, models.Model):
91
94
  pub.save()
92
95
 
93
96
  @classmethod
94
- def get_endpoint_basename(self):
97
+ def get_endpoint_basename(cls):
95
98
  return "wbwriter:publication"
96
99
 
97
100
  @classmethod
wbwriter/pdf_generator.py CHANGED
@@ -31,7 +31,7 @@ class PdfGenerator:
31
31
  main_html,
32
32
  header_html=None,
33
33
  footer_html=None,
34
- custom_css=[],
34
+ custom_css=None,
35
35
  base_url=None,
36
36
  side_margin=2,
37
37
  extra_vertical_margin=30,
@@ -61,7 +61,7 @@ class PdfGenerator:
61
61
  self.main_html = main_html
62
62
  self.header_html = header_html
63
63
  self.footer_html = footer_html
64
- self.custom_css = custom_css
64
+ self.custom_css = custom_css if custom_css else []
65
65
  self.base_url = base_url
66
66
  self.side_margin = side_margin
67
67
  self.extra_vertical_margin = extra_vertical_margin
@@ -1,6 +1,5 @@
1
1
  import json
2
2
  import os
3
- from abc import ABC
4
3
  from datetime import date
5
4
  from io import BytesIO
6
5
  from typing import Iterable
@@ -17,12 +16,12 @@ from wbwriter.pdf_generator import PdfGenerator
17
16
  from .typings import ArticleDTO
18
17
 
19
18
 
20
- class ParserValidationException(Exception):
19
+ class ParserValidationError(Exception):
21
20
  def __init__(self, *args, errors=None, **kwargs): # real signature unknown
22
21
  self.errors = errors
23
22
 
24
23
 
25
- class PublicationParser(ABC): # pragma: no cover
24
+ class PublicationParser: # pragma: no cover
26
25
  def __init__(self, article: ArticleDTO, published_date: date):
27
26
  self.article = article
28
27
  self.published_date = published_date
@@ -64,7 +63,7 @@ class PublicationParser(ABC): # pragma: no cover
64
63
  self._errors = []
65
64
  is_valid = self._is_valid()
66
65
  if self.errors and raise_exception:
67
- raise ParserValidationException(errors=self.errors)
66
+ raise ParserValidationError(errors=self.errors)
68
67
  return is_valid
69
68
 
70
69
  def _get_additional_information(self) -> dict[str, any]:
@@ -7,6 +7,7 @@ from wbcore.contrib.directory.serializers import (
7
7
  InternalUserProfileRepresentationSerializer,
8
8
  )
9
9
  from wbcore.contrib.documents.models import Document
10
+ from wbcore.contrib.i18n.serializers.mixins import ModelTranslateSerializerMixin
10
11
  from wbcore.contrib.tags.serializers import TagSerializerMixin
11
12
  from wbcore.serializers import (
12
13
  HyperlinkField,
@@ -58,9 +59,6 @@ class DependantArticleModelSerializer(ModelSerializer):
58
59
  )
59
60
 
60
61
 
61
- from wbcore.contrib.i18n.serializers.mixins import ModelTranslateSerializerMixin
62
-
63
-
64
62
  class ArticleModelSerializer(ModelTranslateSerializerMixin, TagSerializerMixin, ModelSerializer):
65
63
  """Serializes a subset of the fields of of the Article model to minimize
66
64
  workload on serializing lists of instances.
wbwriter/tests/signals.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from django.dispatch import receiver
2
2
  from dynamic_preferences.registries import global_preferences_registry
3
3
  from wbcore.test.signals import custom_update_kwargs
4
+
4
5
  from wbwriter.models import Article
5
6
  from wbwriter.viewsets import ArticleModelViewSet, ReviewerArticleModelViewSet
6
7
 
@@ -1,6 +1,7 @@
1
1
  import pytest
2
2
  from rest_framework.test import APIRequestFactory
3
3
  from wbcore.contrib.authentication.factories import InternalUserFactory
4
+
4
5
  from wbwriter.factories import ArticleFactory, MetaInformationInstanceFactory
5
6
  from wbwriter.filters import MetaInformationInstanceFilter
6
7
  from wbwriter.models import MetaInformationInstance
@@ -5,6 +5,7 @@ from django.forms.models import model_to_dict
5
5
  from django_fsm import has_transition_perm
6
6
  from wbcore.contrib.authentication.factories import UserFactory
7
7
  from wbcore.contrib.authentication.models import Permission, User
8
+
8
9
  from wbwriter.factories import (
9
10
  ArticleFactory,
10
11
  ArticleTypeFactory,
@@ -1,4 +1,5 @@
1
1
  import pytest
2
+
2
3
  from wbwriter.templatetags.writer import cite_article, table_of_contents
3
4
 
4
5
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbwriter
3
- Version: 1.55.8
3
+ Version: 1.55.10rc0
4
4
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
5
5
  Requires-Dist: reportlab==3.*
6
6
  Requires-Dist: wbcore
@@ -2,8 +2,8 @@ wbwriter/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
2
2
  wbwriter/admin.py,sha256=rnIiwWBB5I8QUYGSsLMrPn9weBqLt10eXhIYEFoPP9w,3626
3
3
  wbwriter/apps.py,sha256=UdEgUQGJaw3f6fkHlbL4kNC4CyksLOBL7ZpDBJmqD_U,91
4
4
  wbwriter/dynamic_preferences_registry.py,sha256=yt3PJCuTv5TpHM2hQsTR-aNllRY20_pyo-wcS38DruU,594
5
- wbwriter/pdf_generator.py,sha256=AYjcVaCnrV2D4lmCSOJUGCPq4wqH9fPFJoCDkNUV0j4,6640
6
- wbwriter/publication_parser.py,sha256=rGFX7_wwZt8NDXQYH1GYUChdQ05AAuT8f6Ct5Y5ndCw,9358
5
+ wbwriter/pdf_generator.py,sha256=ji1R5zjmrANIDMQ1bIosmfXwndlr5zkzejXDCbSFGHo,6664
6
+ wbwriter/publication_parser.py,sha256=aDZ5bO0a3LFxYbDRg59siZHuSvYrlYDPwq38vjSoLa4,9325
7
7
  wbwriter/typings.py,sha256=-SsobxnS4-hCOL_44n-QcXXv1FuhZsQAwLj9BybtEVU,501
8
8
  wbwriter/urls.py,sha256=gUVYDOuPjX15apIC-N1caJnL6DfOYHwjCnZkIpNI3W4,2631
9
9
  wbwriter/factories/__init__.py,sha256=NrHTM4vUVdLASCeSAYkklmBbtP2B5kQ5gwlZey5lp0o,364
@@ -25,18 +25,18 @@ wbwriter/migrations/0011_auto_20240103_0953.py,sha256=UnaHFJM7DVOSEfS0wm8rWEh9H2
25
25
  wbwriter/migrations/0012_i18n.py,sha256=24cClx1sWYh-VEo-IApTiSr5nNvV1CtINiaWRHFztMA,724
26
26
  wbwriter/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  wbwriter/models/__init__.py,sha256=opUUL36nRzxJypQNupPM8NxUj-u4uuB11IDn5XSkjVE,248
28
- wbwriter/models/article.py,sha256=l5iSkD6uHTlYP94DyMlKnMABjZQZSNoR7-KelC6GH4c,45487
29
- wbwriter/models/article_type.py,sha256=hofB200Y11LFanpICNgWYDa5-Qg-K4X2fXv6qccBP_0,1999
28
+ wbwriter/models/article.py,sha256=NqZWr8UNB4KrMX8_Ilj4TQMA9qfueqXDUw50Xb1W2IE,45477
29
+ wbwriter/models/article_type.py,sha256=ZkbQKauwMB6z9qM5AR_3vwsT_9_2NbLzTpFRlIh3Vqs,1998
30
30
  wbwriter/models/block.py,sha256=tn2sklo7s401Y0Ww5M09Y9Wv-yivEvAR1eM5raG7gtc,835
31
31
  wbwriter/models/block_parameter.py,sha256=bHBp9bo5EEiZKTzhYfBwkidcS6kZVy81vtcAlx7xzck,524
32
- wbwriter/models/in_editor_template.py,sha256=1LqnxkAw9Iyh8EmjWnf3O3TUmneng0Zp4OTFpGgSphg,3411
33
- wbwriter/models/meta_information.py,sha256=8Ipozrv8ndsBUZKIAc-Qcg57xr5IMpjfoSG-DbL_0qQ,3020
32
+ wbwriter/models/in_editor_template.py,sha256=Z8UAzhkBWCyQDwwUDCbwlGfWBqs-vqKTWdJjvHYNq4c,3410
33
+ wbwriter/models/meta_information.py,sha256=yRhocySE1pH5vaaEcyHF0uAeAxUvGpjzE1_-PCVRnk8,3018
34
34
  wbwriter/models/mixins.py,sha256=-1P0bQCS76H2D8Mj1Bwhzv3KsNwnkts9f75lGUrcxFU,249
35
- wbwriter/models/publication_models.py,sha256=k6lmyEux7GegtSmBn-X7xXfrFZRASkahXxYt9S1EFuA,5293
35
+ wbwriter/models/publication_models.py,sha256=4VhN01k8HhGJkHToN8DBhpf2PQNDtbLJtH9dKk9kLrs,5349
36
36
  wbwriter/models/style.py,sha256=b-CnU9K5D6adePdz4LpCdwXjK2750V3QnFv39wK-JLA,262
37
37
  wbwriter/models/template.py,sha256=i6b_qmkUJIbrFqNaeld3gSjR7GLeU-EfKJiPsfjFA_Y,928
38
38
  wbwriter/serializers/__init__.py,sha256=zPzGMOsxp8yEZ5m2sATEeqlZaktNWbXCx8oZefeiCa4,828
39
- wbwriter/serializers/article.py,sha256=bBtRghL3zZIE0i9gratSk2Yj9vy9fkLfsxd43kyWUIA,13752
39
+ wbwriter/serializers/article.py,sha256=PNTfiKCAavmDZ8mZIwN7olhA3OaiIny3wRAWJMZzouU,13750
40
40
  wbwriter/serializers/article_type.py,sha256=VmMVI0dreuX83GtwtzD0n3-tvmNMnbtc2KIqjAB7beI,426
41
41
  wbwriter/serializers/in_editor_template.py,sha256=hZ0icXVJtiipFSzY3cF0p6X4_0XaKdeMYwjUhgPoDLI,1032
42
42
  wbwriter/serializers/meta_information.py,sha256=zMNU6WYXJVO5L29Depm6FB-FnFMrnAttRI32PmNpt3w,2046
@@ -49,10 +49,10 @@ wbwriter/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
49
49
  wbwriter/templatetags/writer.py,sha256=8bhOxG0U23A30KcAWcXJa3lOon_2acPZp49ZJMWAiBM,3051
50
50
  wbwriter/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  wbwriter/tests/conftest.py,sha256=1vehReFFD4YZHYbOeCEFIuufIeC1QmbUV0mS4VmAXKU,982
52
- wbwriter/tests/signals.py,sha256=ay1kQIaHT7a_kymGimdq1MWj_8UjNqlYW-oyN13WK6c,989
53
- wbwriter/tests/test_filter.py,sha256=dhXiMsjSkwsTdsHMZt2cUt3QzCECvKgN3te5DLee5qM,2663
54
- wbwriter/tests/test_model.py,sha256=kTz68WYfR65x8G9UCXbRRswwQVIPNCQFHRLso-XEd_k,29408
55
- wbwriter/tests/test_writer.py,sha256=XRmfaH-o4ItekFjw1dnIyMzw7veTCw6KH_PouQgFRRQ,1584
52
+ wbwriter/tests/signals.py,sha256=0EwprXt1WaEWbUQxYNamubWv-7t4HIcAD9f-hKgQUss,990
53
+ wbwriter/tests/test_filter.py,sha256=mbMV2nl5pMX4flXgSUMYdQkbi8Gp1Uo_5WkXbJlFCC0,2664
54
+ wbwriter/tests/test_model.py,sha256=N02cproDGv3bdhCpm1OlbmSaKWl3Hk_-p6UzbdnGsCM,29409
55
+ wbwriter/tests/test_writer.py,sha256=KGGvXKUCbMoJTLUHedFzPp1Wd02iRUu_kWqmRwO6Ko0,1585
56
56
  wbwriter/tests/tests.py,sha256=9quRn44Xi1XIKKIXKCBRmtSpARJowjm7_Edw40Mutdw,332
57
57
  wbwriter/viewsets/__init__.py,sha256=FSoHcwxYukis44flBOwKaoa6fABkNI66lzaTXaYEZxk,722
58
58
  wbwriter/viewsets/article.py,sha256=w5hig6Z3DulGbVp3RtPax0GHEEDLqw0n4LpS0BzYq60,9960
@@ -77,6 +77,6 @@ wbwriter/viewsets/endpoints/meta_information.py,sha256=m7rVbfTNjsQNibmqtAG4DvXSJ
77
77
  wbwriter/viewsets/titles/__init__.py,sha256=INLTvGeBi5Xro7i3FlJ2fesh-TjKbxRBlfsAyeg3h7k,131
78
78
  wbwriter/viewsets/titles/publication_title_config.py,sha256=-39C_Enz8J1o-DWgRz89VFMV0r4MReKx-r-Tpf9MlVM,807
79
79
  wbwriter/viewsets/titles/reviewer_article_title_config.py,sha256=YzRjuUwbe6vBwWhYLrCe6woGCpQ9c7AwkujKqPh5mLw,183
80
- wbwriter-1.55.8.dist-info/METADATA,sha256=W6iPefwZzOaIVR5_a2dOPUUKM_EdJu3dwUACT2lqu-k,169
81
- wbwriter-1.55.8.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
82
- wbwriter-1.55.8.dist-info/RECORD,,
80
+ wbwriter-1.55.10rc0.dist-info/METADATA,sha256=FyqOXEizZ7BUhBwMq0TgemhWWX5ETJHtQIVzcKbb3xY,173
81
+ wbwriter-1.55.10rc0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
82
+ wbwriter-1.55.10rc0.dist-info/RECORD,,