wbwriter 2.2.1__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.
- wbwriter/__init__.py +1 -0
- wbwriter/admin.py +142 -0
- wbwriter/apps.py +5 -0
- wbwriter/dynamic_preferences_registry.py +15 -0
- wbwriter/factories/__init__.py +13 -0
- wbwriter/factories/article.py +181 -0
- wbwriter/factories/meta_information.py +29 -0
- wbwriter/filters/__init__.py +2 -0
- wbwriter/filters/article.py +47 -0
- wbwriter/filters/metainformationinstance.py +24 -0
- wbwriter/migrations/0001_initial_squashed_squashed_0008_alter_article_author_alter_article_feedback_contact_and_more.py +653 -0
- wbwriter/migrations/0009_dependantarticle.py +41 -0
- wbwriter/migrations/0010_alter_article_options.py +20 -0
- wbwriter/migrations/0011_auto_20240103_0953.py +39 -0
- wbwriter/migrations/__init__.py +0 -0
- wbwriter/models/__init__.py +9 -0
- wbwriter/models/article.py +1179 -0
- wbwriter/models/article_type.py +59 -0
- wbwriter/models/block.py +24 -0
- wbwriter/models/block_parameter.py +19 -0
- wbwriter/models/in_editor_template.py +102 -0
- wbwriter/models/meta_information.py +87 -0
- wbwriter/models/mixins.py +9 -0
- wbwriter/models/publication_models.py +170 -0
- wbwriter/models/style.py +13 -0
- wbwriter/models/template.py +34 -0
- wbwriter/pdf_generator.py +172 -0
- wbwriter/publication_parser.py +258 -0
- wbwriter/serializers/__init__.py +28 -0
- wbwriter/serializers/article.py +359 -0
- wbwriter/serializers/article_type.py +14 -0
- wbwriter/serializers/in_editor_template.py +37 -0
- wbwriter/serializers/meta_information.py +67 -0
- wbwriter/serializers/publication.py +82 -0
- wbwriter/templatetags/__init__.py +0 -0
- wbwriter/templatetags/writer.py +72 -0
- wbwriter/tests/__init__.py +0 -0
- wbwriter/tests/conftest.py +32 -0
- wbwriter/tests/signals.py +23 -0
- wbwriter/tests/test_filter.py +58 -0
- wbwriter/tests/test_model.py +591 -0
- wbwriter/tests/test_writer.py +38 -0
- wbwriter/tests/tests.py +18 -0
- wbwriter/typings.py +23 -0
- wbwriter/urls.py +83 -0
- wbwriter/viewsets/__init__.py +22 -0
- wbwriter/viewsets/article.py +270 -0
- wbwriter/viewsets/article_type.py +49 -0
- wbwriter/viewsets/buttons.py +61 -0
- wbwriter/viewsets/display/__init__.py +6 -0
- wbwriter/viewsets/display/article.py +404 -0
- wbwriter/viewsets/display/article_type.py +27 -0
- wbwriter/viewsets/display/in_editor_template.py +39 -0
- wbwriter/viewsets/display/meta_information.py +37 -0
- wbwriter/viewsets/display/meta_information_instance.py +28 -0
- wbwriter/viewsets/display/publication.py +55 -0
- wbwriter/viewsets/endpoints/__init__.py +2 -0
- wbwriter/viewsets/endpoints/article.py +12 -0
- wbwriter/viewsets/endpoints/meta_information.py +14 -0
- wbwriter/viewsets/in_editor_template.py +68 -0
- wbwriter/viewsets/menu.py +42 -0
- wbwriter/viewsets/meta_information.py +51 -0
- wbwriter/viewsets/meta_information_instance.py +48 -0
- wbwriter/viewsets/publication.py +117 -0
- wbwriter/viewsets/titles/__init__.py +2 -0
- wbwriter/viewsets/titles/publication_title_config.py +18 -0
- wbwriter/viewsets/titles/reviewer_article_title_config.py +6 -0
- wbwriter-2.2.1.dist-info/METADATA +8 -0
- wbwriter-2.2.1.dist-info/RECORD +70 -0
- wbwriter-2.2.1.dist-info/WHEEL +5 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from wbcore.viewsets import ModelViewSet, RepresentationViewSet
|
|
2
|
+
from wbwriter.models import InEditorTemplate
|
|
3
|
+
from wbwriter.serializers import (
|
|
4
|
+
InEditorTemplateModelSerializer,
|
|
5
|
+
InEditorTemplateRepresentationSerializer,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from .display import InEditorTemplateDisplayConfig
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class InEditorTemplateModelViewSet(ModelViewSet):
|
|
12
|
+
ENDPOINT = "wbwriter:in-editor-template-list"
|
|
13
|
+
IDENTIFIER = "wbwriter:in-editor-template"
|
|
14
|
+
|
|
15
|
+
serializer_class = InEditorTemplateModelSerializer
|
|
16
|
+
queryset = InEditorTemplate.objects.all()
|
|
17
|
+
|
|
18
|
+
display_config_class = InEditorTemplateDisplayConfig
|
|
19
|
+
|
|
20
|
+
search_fields = (
|
|
21
|
+
"uuid",
|
|
22
|
+
"title",
|
|
23
|
+
"description",
|
|
24
|
+
)
|
|
25
|
+
filter_fields = {
|
|
26
|
+
"uuid": ["icontains", "exact"],
|
|
27
|
+
"title": ["icontains", "exact"],
|
|
28
|
+
"description": [
|
|
29
|
+
"icontains",
|
|
30
|
+
],
|
|
31
|
+
"is_stand_alone_template": [
|
|
32
|
+
"exact",
|
|
33
|
+
],
|
|
34
|
+
}
|
|
35
|
+
ordering_fields = (
|
|
36
|
+
"uuid",
|
|
37
|
+
"title",
|
|
38
|
+
"is_stand_alone_template",
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class InEditorTemplateRepresentationViewSet(RepresentationViewSet):
|
|
43
|
+
ENDPOINT = "wbwriter:in-editor-template-list"
|
|
44
|
+
IDENTIFIER = "wbwriter:in-editor-template"
|
|
45
|
+
|
|
46
|
+
serializer_class = InEditorTemplateRepresentationSerializer
|
|
47
|
+
queryset = InEditorTemplate.objects.all()
|
|
48
|
+
|
|
49
|
+
search_fields = (
|
|
50
|
+
"uuid",
|
|
51
|
+
"title",
|
|
52
|
+
"description",
|
|
53
|
+
)
|
|
54
|
+
filter_fields = {
|
|
55
|
+
"uuid": ["icontains", "exact"],
|
|
56
|
+
"title": ["icontains", "exact"],
|
|
57
|
+
"description": [
|
|
58
|
+
"icontains",
|
|
59
|
+
],
|
|
60
|
+
"is_stand_alone_template": [
|
|
61
|
+
"exact",
|
|
62
|
+
],
|
|
63
|
+
}
|
|
64
|
+
ordering_fields = (
|
|
65
|
+
"uuid",
|
|
66
|
+
"title",
|
|
67
|
+
"is_stand_alone_template",
|
|
68
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from wbcore.menus import ItemPermission, Menu, MenuItem
|
|
2
|
+
from wbcore.permissions.shortcuts import is_internal_user
|
|
3
|
+
|
|
4
|
+
WRITER_MENU = Menu(
|
|
5
|
+
label="Writer",
|
|
6
|
+
items=[
|
|
7
|
+
MenuItem(
|
|
8
|
+
label="Article",
|
|
9
|
+
endpoint="wbwriter:article-list",
|
|
10
|
+
add=MenuItem(
|
|
11
|
+
label="Create an article",
|
|
12
|
+
endpoint="wbwriter:article-list",
|
|
13
|
+
),
|
|
14
|
+
permission=ItemPermission(
|
|
15
|
+
method=lambda request: is_internal_user(request.user), permissions=["wbwriter.view_article"]
|
|
16
|
+
),
|
|
17
|
+
),
|
|
18
|
+
# MenuItem(
|
|
19
|
+
# label="DDQ",
|
|
20
|
+
# endpoint="wbwriter:ddq-list",
|
|
21
|
+
# add=MenuItem(
|
|
22
|
+
# label="Create a DDQ related entry",
|
|
23
|
+
# endpoint="wbwriter:ddq-list",
|
|
24
|
+
# ),
|
|
25
|
+
# permission=ItemPermission(permissions=["wbwriter.view_article"]),
|
|
26
|
+
# ),
|
|
27
|
+
MenuItem(
|
|
28
|
+
label="Articles to review",
|
|
29
|
+
endpoint="wbwriter:review-article-list",
|
|
30
|
+
permission=ItemPermission(
|
|
31
|
+
method=lambda request: is_internal_user(request.user), permissions=["wbwriter.view_article"]
|
|
32
|
+
),
|
|
33
|
+
),
|
|
34
|
+
MenuItem(
|
|
35
|
+
label="Publication",
|
|
36
|
+
endpoint="wbwriter:publication-list",
|
|
37
|
+
permission=ItemPermission(
|
|
38
|
+
method=lambda request: is_internal_user(request.user), permissions=["wbwriter.view_publication"]
|
|
39
|
+
),
|
|
40
|
+
),
|
|
41
|
+
],
|
|
42
|
+
)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from wbcore.viewsets import ModelViewSet, RepresentationViewSet
|
|
2
|
+
from wbwriter.models import MetaInformation
|
|
3
|
+
from wbwriter.serializers import MetaInformationModelSerializer
|
|
4
|
+
from wbwriter.serializers.meta_information import (
|
|
5
|
+
MetaInformationRepresentationSerializer,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from .display import MetaInformationDisplayConfig
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class MetaInformationRepresentationViewSet(RepresentationViewSet):
|
|
12
|
+
serializer_class = MetaInformationRepresentationSerializer
|
|
13
|
+
queryset = MetaInformation.objects.all()
|
|
14
|
+
|
|
15
|
+
search_fields = ("name", "key")
|
|
16
|
+
filter_fields = {
|
|
17
|
+
"article_type": ["exact"],
|
|
18
|
+
"name": ["icontains", "exact"],
|
|
19
|
+
"key": ["icontains", "exact"],
|
|
20
|
+
"meta_information_type": ["exact"],
|
|
21
|
+
}
|
|
22
|
+
ordering_fields = ("article_type", "name", "key", "meta_information_type")
|
|
23
|
+
|
|
24
|
+
def get_queryset(self):
|
|
25
|
+
request = self.request
|
|
26
|
+
user = request.user
|
|
27
|
+
profile = user.profile
|
|
28
|
+
|
|
29
|
+
if user.is_superuser or profile.is_internal:
|
|
30
|
+
return MetaInformation.objects.all()
|
|
31
|
+
|
|
32
|
+
return MetaInformation.objects.none()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class MetaInformationModelViewSet(ModelViewSet):
|
|
36
|
+
serializer_class = MetaInformationModelSerializer
|
|
37
|
+
queryset = MetaInformation.objects.all()
|
|
38
|
+
|
|
39
|
+
display_config_class = MetaInformationDisplayConfig
|
|
40
|
+
|
|
41
|
+
search_fields = (
|
|
42
|
+
"name",
|
|
43
|
+
"key",
|
|
44
|
+
)
|
|
45
|
+
filterset_fields = {
|
|
46
|
+
"article_type": ["exact"],
|
|
47
|
+
"name": ["icontains"],
|
|
48
|
+
"key": ["icontains"],
|
|
49
|
+
"meta_information_type": ["exact"],
|
|
50
|
+
}
|
|
51
|
+
ordering_fields = ("article_type", "name", "key", "meta_information_type")
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from wbcore.viewsets import ModelViewSet, RepresentationViewSet
|
|
2
|
+
from wbwriter.models.meta_information import MetaInformationInstance
|
|
3
|
+
from wbwriter.serializers.meta_information import (
|
|
4
|
+
MetaInformationInstanceModelSerializer,
|
|
5
|
+
MetaInformationInstanceRepresentationSerializer,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from .display import MetaInformationInstanceDisplayConfig
|
|
9
|
+
from .endpoints import MetaInformationInstanceEndpointConfig
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MetaInformationInstanceModelViewSet(ModelViewSet):
|
|
13
|
+
serializer_class = MetaInformationInstanceModelSerializer
|
|
14
|
+
queryset = MetaInformationInstance.objects.all()
|
|
15
|
+
|
|
16
|
+
display_config_class = MetaInformationInstanceDisplayConfig
|
|
17
|
+
endpoint_config_class = MetaInformationInstanceEndpointConfig
|
|
18
|
+
|
|
19
|
+
search_fields = None
|
|
20
|
+
ordering_fields = ("boolean_value",)
|
|
21
|
+
|
|
22
|
+
def get_queryset(self):
|
|
23
|
+
qs = super().get_queryset()
|
|
24
|
+
if article_id := self.kwargs.get("article_id", None):
|
|
25
|
+
qs = qs.filter(article_id=article_id)
|
|
26
|
+
return qs.select_related("meta_information")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class MetaInformationInstanceRepresentationViewSet(RepresentationViewSet):
|
|
30
|
+
serializer_class = MetaInformationInstanceRepresentationSerializer
|
|
31
|
+
queryset = MetaInformationInstance.objects.all()
|
|
32
|
+
|
|
33
|
+
filter_fields = {
|
|
34
|
+
# "article": ["exact"],
|
|
35
|
+
"meta_information": ["exact"],
|
|
36
|
+
"boolean_value": ["exact"],
|
|
37
|
+
}
|
|
38
|
+
ordering_fields = ("meta_information__name", "boolean_value")
|
|
39
|
+
|
|
40
|
+
def get_queryset(self):
|
|
41
|
+
request = self.request
|
|
42
|
+
user = request.user
|
|
43
|
+
profile = user.profile
|
|
44
|
+
|
|
45
|
+
if user.is_superuser or profile.is_internal:
|
|
46
|
+
return MetaInformationInstance.objects.all()
|
|
47
|
+
|
|
48
|
+
return MetaInformationInstance.objects.none()
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
from reversion.views import RevisionMixin
|
|
2
|
+
from wbcore.viewsets import ModelViewSet, RepresentationViewSet
|
|
3
|
+
from wbwriter.models import Publication
|
|
4
|
+
from wbwriter.models.publication_models import PublicationParser
|
|
5
|
+
from wbwriter.serializers import (
|
|
6
|
+
PublicationModelSerializer,
|
|
7
|
+
PublicationParserRepresentationSerializer,
|
|
8
|
+
PublicationParserSerializer,
|
|
9
|
+
PublicationRepresentationSerializer,
|
|
10
|
+
)
|
|
11
|
+
from wbwriter.viewsets.buttons import PublicationButtonConfig
|
|
12
|
+
from wbwriter.viewsets.display import (
|
|
13
|
+
PublicationDisplayConfig,
|
|
14
|
+
PublicationParserDisplayConfig,
|
|
15
|
+
)
|
|
16
|
+
from wbwriter.viewsets.titles import PublicationTitleConfig
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class PublicationModelViewSet(RevisionMixin, ModelViewSet):
|
|
20
|
+
"""Displays all fields of the Publication model."""
|
|
21
|
+
|
|
22
|
+
serializer_class = PublicationModelSerializer
|
|
23
|
+
queryset = Publication.objects.all()
|
|
24
|
+
|
|
25
|
+
button_config_class = PublicationButtonConfig
|
|
26
|
+
display_config_class = PublicationDisplayConfig
|
|
27
|
+
title_config_class = PublicationTitleConfig
|
|
28
|
+
|
|
29
|
+
search_fields = ("title", "author__computed_str", "slug", "content")
|
|
30
|
+
filterset_fields = {
|
|
31
|
+
"title": ["icontains", "exact"],
|
|
32
|
+
"target": ["icontains", "exact"],
|
|
33
|
+
"author": ["exact"],
|
|
34
|
+
"created": ["exact", "lte", "gte"],
|
|
35
|
+
"modified": ["exact", "lte", "gte"],
|
|
36
|
+
}
|
|
37
|
+
ordering_fields = ("title", "author", "created", "modified")
|
|
38
|
+
|
|
39
|
+
def get_queryset(self):
|
|
40
|
+
if self.request.user.has_perm("wbwriter.view_publication"):
|
|
41
|
+
qs = Publication.objects.all()
|
|
42
|
+
|
|
43
|
+
if content_type := self.request.GET.get("content_type"):
|
|
44
|
+
qs = qs.filter(content_type_id=content_type)
|
|
45
|
+
|
|
46
|
+
if object_id := self.request.GET.get("object_id"):
|
|
47
|
+
qs = qs.filter(object_id=object_id)
|
|
48
|
+
|
|
49
|
+
return qs.prefetch_related("tags").select_related("parser", "author")
|
|
50
|
+
|
|
51
|
+
return Publication.objects.none()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class PublicationParserModelViewSet(ModelViewSet):
|
|
55
|
+
display_config_class = PublicationParserDisplayConfig
|
|
56
|
+
|
|
57
|
+
search_fields = ("title", "slug")
|
|
58
|
+
filterset_fields = {
|
|
59
|
+
"title": ["icontains", "exact"],
|
|
60
|
+
}
|
|
61
|
+
ordering_fields = ("title",)
|
|
62
|
+
|
|
63
|
+
serializer_class = PublicationParserSerializer
|
|
64
|
+
queryset = PublicationParser.objects.all()
|
|
65
|
+
|
|
66
|
+
def get_queryset(self):
|
|
67
|
+
if self.request.user.is_superuser or self.request.user.profile.is_internal:
|
|
68
|
+
return PublicationParser.objects.all()
|
|
69
|
+
|
|
70
|
+
return PublicationParser.objects.none()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class PublicationRepresentationViewSet(RepresentationViewSet):
|
|
74
|
+
"""Displays the title and the created date of the Publication model."""
|
|
75
|
+
|
|
76
|
+
serializer_class = PublicationRepresentationSerializer
|
|
77
|
+
queryset = Publication.objects.all()
|
|
78
|
+
|
|
79
|
+
display_config_class = PublicationDisplayConfig
|
|
80
|
+
button_config_class = PublicationButtonConfig
|
|
81
|
+
|
|
82
|
+
search_fields = ("title", "author", "slug", "content")
|
|
83
|
+
filterset_fields = {
|
|
84
|
+
"title": ["icontains", "exact"],
|
|
85
|
+
"target": ["icontains", "exact"],
|
|
86
|
+
"author": ["exact"],
|
|
87
|
+
"created": ["exact", "lte", "gte"],
|
|
88
|
+
"modified": ["exact", "lte", "gte"],
|
|
89
|
+
}
|
|
90
|
+
ordering_fields = ("title", "author", "created", "modified")
|
|
91
|
+
|
|
92
|
+
def get_queryset(self):
|
|
93
|
+
if self.request.user.is_superuser or ((person := self.request.user.profile) and person.is_internal):
|
|
94
|
+
return Publication.objects.all()
|
|
95
|
+
|
|
96
|
+
return Publication.objects.none()
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class PublicationParserRepresentationViewSet(RepresentationViewSet):
|
|
100
|
+
"""Displays the title of the PublicationParser model."""
|
|
101
|
+
|
|
102
|
+
serializer_class = PublicationParserRepresentationSerializer
|
|
103
|
+
queryset = PublicationParser.objects.all()
|
|
104
|
+
|
|
105
|
+
display_config_class = PublicationParserDisplayConfig
|
|
106
|
+
|
|
107
|
+
search_fields = ("title", "slug")
|
|
108
|
+
filterset_fields = {
|
|
109
|
+
"title": ["icontains", "exact"],
|
|
110
|
+
}
|
|
111
|
+
ordering_fields = ("title",)
|
|
112
|
+
|
|
113
|
+
def get_queryset(self):
|
|
114
|
+
if self.request.user.is_superuser or self.request.user.profile.is_internal:
|
|
115
|
+
return PublicationParser.objects.all()
|
|
116
|
+
|
|
117
|
+
return PublicationParser.objects.none()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from wbcore.metadata.configs.titles import TitleViewConfig
|
|
2
|
+
from wbwriter.models import Publication
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class PublicationTitleConfig(TitleViewConfig):
|
|
6
|
+
def get_list_title(self):
|
|
7
|
+
title = "Publications"
|
|
8
|
+
if self.request.GET.get("content_type") and self.request.GET.get("object_id"):
|
|
9
|
+
publications = Publication.objects.filter(
|
|
10
|
+
content_type__id=self.request.GET.get("content_type"), object_id=self.request.GET.get("object_id")
|
|
11
|
+
)
|
|
12
|
+
if publications.exists():
|
|
13
|
+
pub = publications.first()
|
|
14
|
+
content_type_label = pub.content_type.model
|
|
15
|
+
content_title = pub.content_object.get_publication_metadata()["title"]
|
|
16
|
+
title = f"{title} of {content_type_label}: {content_title}"
|
|
17
|
+
|
|
18
|
+
return title
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
wbwriter/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
|
|
2
|
+
wbwriter/admin.py,sha256=Pagj9JgNlRRrwQSn2I63iuzalOHjEtKjqQi5S9N2hdo,3625
|
|
3
|
+
wbwriter/apps.py,sha256=UdEgUQGJaw3f6fkHlbL4kNC4CyksLOBL7ZpDBJmqD_U,91
|
|
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=2GjtCgX9o-zYfzIaNveBqJtPu9bSL_yDn-4u6IBEVWE,9349
|
|
7
|
+
wbwriter/typings.py,sha256=-SsobxnS4-hCOL_44n-QcXXv1FuhZsQAwLj9BybtEVU,501
|
|
8
|
+
wbwriter/urls.py,sha256=uL04HSQ3EuYcA9L0M912GrS7rbXTo2RL3qhj1U_-pbY,2630
|
|
9
|
+
wbwriter/factories/__init__.py,sha256=NrHTM4vUVdLASCeSAYkklmBbtP2B5kQ5gwlZey5lp0o,364
|
|
10
|
+
wbwriter/factories/article.py,sha256=7GIMhpO1DDezlwW226yeIKzLPTlQyFKvq8sVVOMfMVs,5784
|
|
11
|
+
wbwriter/factories/meta_information.py,sha256=cEbMStmq_yNN7cH3ptHGQaWs-4jjwE0fuzZO62lWdI4,923
|
|
12
|
+
wbwriter/filters/__init__.py,sha256=2OTkcXa8veIWN-v_WV5mHvGuw3tIuJzh9qD2zaFrA4M,102
|
|
13
|
+
wbwriter/filters/article.py,sha256=xW8rg6vgRP6_guXO0QcaaopQiOUcV9D5Xs7L3f0iIHQ,1576
|
|
14
|
+
wbwriter/filters/metainformationinstance.py,sha256=oVj2izoG0mj1tPfhzKFJMevGkKxKTW4LBWzaktmy7DM,856
|
|
15
|
+
wbwriter/migrations/0001_initial_squashed_squashed_0008_alter_article_author_alter_article_feedback_contact_and_more.py,sha256=31Fo3O3Azaqe59v1CGWXtj4oLy349PmTnDI7S6oBg2U,26174
|
|
16
|
+
wbwriter/migrations/0009_dependantarticle.py,sha256=OCxWFj68ToPelJJ_Hlrt3PXZy56zvup8YWpCoAjU62g,1314
|
|
17
|
+
wbwriter/migrations/0010_alter_article_options.py,sha256=S2CVb5wVXHpwok3gehyedMrZMVbwj75m6LkrVg5dhv8,520
|
|
18
|
+
wbwriter/migrations/0011_auto_20240103_0953.py,sha256=UnaHFJM7DVOSEfS0wm8rWEh9H2_wDcmKPYFRJYIx1Gs,1321
|
|
19
|
+
wbwriter/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
wbwriter/models/__init__.py,sha256=opUUL36nRzxJypQNupPM8NxUj-u4uuB11IDn5XSkjVE,248
|
|
21
|
+
wbwriter/models/article.py,sha256=P8RsyIPqdRq-BPwNHdJmdiYgiVq7BtWqtIMjJbMzGW0,44416
|
|
22
|
+
wbwriter/models/article_type.py,sha256=hofB200Y11LFanpICNgWYDa5-Qg-K4X2fXv6qccBP_0,1999
|
|
23
|
+
wbwriter/models/block.py,sha256=tn2sklo7s401Y0Ww5M09Y9Wv-yivEvAR1eM5raG7gtc,835
|
|
24
|
+
wbwriter/models/block_parameter.py,sha256=bHBp9bo5EEiZKTzhYfBwkidcS6kZVy81vtcAlx7xzck,524
|
|
25
|
+
wbwriter/models/in_editor_template.py,sha256=1LqnxkAw9Iyh8EmjWnf3O3TUmneng0Zp4OTFpGgSphg,3411
|
|
26
|
+
wbwriter/models/meta_information.py,sha256=8Ipozrv8ndsBUZKIAc-Qcg57xr5IMpjfoSG-DbL_0qQ,3020
|
|
27
|
+
wbwriter/models/mixins.py,sha256=-1P0bQCS76H2D8Mj1Bwhzv3KsNwnkts9f75lGUrcxFU,249
|
|
28
|
+
wbwriter/models/publication_models.py,sha256=u7JHwnsIcrGxqgwsY6WqyDSuOtz5FUy3NYspMKCAPBc,5180
|
|
29
|
+
wbwriter/models/style.py,sha256=b-CnU9K5D6adePdz4LpCdwXjK2750V3QnFv39wK-JLA,262
|
|
30
|
+
wbwriter/models/template.py,sha256=i6b_qmkUJIbrFqNaeld3gSjR7GLeU-EfKJiPsfjFA_Y,928
|
|
31
|
+
wbwriter/serializers/__init__.py,sha256=zPzGMOsxp8yEZ5m2sATEeqlZaktNWbXCx8oZefeiCa4,828
|
|
32
|
+
wbwriter/serializers/article.py,sha256=x67h6XPXKA2szSodccLKoTnKlxjIDwz8q0qDvGucC2w,13494
|
|
33
|
+
wbwriter/serializers/article_type.py,sha256=uEEHQZmf45xw8Lbak9HhBaW9ruZFCMe6WYy27W10D8k,425
|
|
34
|
+
wbwriter/serializers/in_editor_template.py,sha256=lC5ZHbzQHp3raEuHgWpSEtepbYYSrUEyQbOcNMtWxkM,1031
|
|
35
|
+
wbwriter/serializers/meta_information.py,sha256=wSkrMOtX0MzmwUjTE8takluVCZ5cOytFSW44gSbTIjg,2045
|
|
36
|
+
wbwriter/serializers/publication.py,sha256=bMTQoZ_sICymrZ0ZpQnv6Bez1ibFUzfQImwc2hvLRT4,2500
|
|
37
|
+
wbwriter/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
+
wbwriter/templatetags/writer.py,sha256=YJ6vaqRF22JinE-wcxWE4_-5jWXeL7Ov-puyfoySuds,3050
|
|
39
|
+
wbwriter/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
wbwriter/tests/conftest.py,sha256=1vehReFFD4YZHYbOeCEFIuufIeC1QmbUV0mS4VmAXKU,982
|
|
41
|
+
wbwriter/tests/signals.py,sha256=ay1kQIaHT7a_kymGimdq1MWj_8UjNqlYW-oyN13WK6c,989
|
|
42
|
+
wbwriter/tests/test_filter.py,sha256=dhXiMsjSkwsTdsHMZt2cUt3QzCECvKgN3te5DLee5qM,2663
|
|
43
|
+
wbwriter/tests/test_model.py,sha256=pOdwMkgvEL8kWnT6QT4xCn7GU_jxxL5xgorg5F8jrLk,29216
|
|
44
|
+
wbwriter/tests/test_writer.py,sha256=XRmfaH-o4ItekFjw1dnIyMzw7veTCw6KH_PouQgFRRQ,1584
|
|
45
|
+
wbwriter/tests/tests.py,sha256=9quRn44Xi1XIKKIXKCBRmtSpARJowjm7_Edw40Mutdw,332
|
|
46
|
+
wbwriter/viewsets/__init__.py,sha256=FSoHcwxYukis44flBOwKaoa6fABkNI66lzaTXaYEZxk,722
|
|
47
|
+
wbwriter/viewsets/article.py,sha256=_1ftBoXh0UwqZBZ-CMRSlJ84gRcQhoq9FJ6pnruE2OU,9705
|
|
48
|
+
wbwriter/viewsets/article_type.py,sha256=YgsxYixelO903sFguSSXSOTPMjPkOCoLcKyylZTMJFw,1502
|
|
49
|
+
wbwriter/viewsets/buttons.py,sha256=4XPCOaUYSKur0n2pjVzcWPW8rW0g4bKugJPqWaIp68E,2843
|
|
50
|
+
wbwriter/viewsets/in_editor_template.py,sha256=q0JcJur5wP87aT68HAcg538JwxbzCV6Wgc09Z8tAliI,1712
|
|
51
|
+
wbwriter/viewsets/menu.py,sha256=SE-y6PIeamISF_DOJVCYtTKbTVTZQs0Hk5aSrBYib-Q,1472
|
|
52
|
+
wbwriter/viewsets/meta_information.py,sha256=fazKgKDD0gonnN-RHd4fGcKTXCke3og7DS6kh5lc11Y,1587
|
|
53
|
+
wbwriter/viewsets/meta_information_instance.py,sha256=ZGTxjrupbCjjVBi8BQLXuZ1vNRHjB-dVBVkPapPlK1E,1694
|
|
54
|
+
wbwriter/viewsets/publication.py,sha256=TG_DNlQcYH-lT4owNc1zCSzAB89M_R9dykJGILj7s0A,4032
|
|
55
|
+
wbwriter/viewsets/display/__init__.py,sha256=Jd-MWVcTEko7Ap9pbfURogzIjy5gKeb18KcYJfZjOQs,403
|
|
56
|
+
wbwriter/viewsets/display/article.py,sha256=P8JbmZX6vK7qrRNZCXnolxWK88JLb9Tej7SU52PdRXk,16701
|
|
57
|
+
wbwriter/viewsets/display/article_type.py,sha256=FV8nvnhY7MLaZbmtV59V33b2goH8QCWl9MrFJJ-Acf8,900
|
|
58
|
+
wbwriter/viewsets/display/in_editor_template.py,sha256=jGUb32byyK9KwBd6ZPcJ0m0e2WW-QBm7aP2TkLkQYl0,1490
|
|
59
|
+
wbwriter/viewsets/display/meta_information.py,sha256=jGxMsZHwiY7fmfXz7nktRyQtPdTs3PydkKx0CrNf0qo,1384
|
|
60
|
+
wbwriter/viewsets/display/meta_information_instance.py,sha256=OLwr22j_rSmrrHunJq5bsPaM-WmxHgHXsz-gJbUmlpE,1054
|
|
61
|
+
wbwriter/viewsets/display/publication.py,sha256=VyZ1EpZP7erTbXWeooFIwUWfh_OR8Nbcmpf0MuBawA8,1953
|
|
62
|
+
wbwriter/viewsets/endpoints/__init__.py,sha256=sqNwR-IiHFhX1287fdk27IEUuAPHG0l1V5gcJNDQWaU,160
|
|
63
|
+
wbwriter/viewsets/endpoints/article.py,sha256=QlMbNkKEEZisYdO8burkoJ12rPcNMMonxK5DW7VHiac,515
|
|
64
|
+
wbwriter/viewsets/endpoints/meta_information.py,sha256=m7rVbfTNjsQNibmqtAG4DvXSJhxQMZlFx4fE9YrrgwA,594
|
|
65
|
+
wbwriter/viewsets/titles/__init__.py,sha256=INLTvGeBi5Xro7i3FlJ2fesh-TjKbxRBlfsAyeg3h7k,131
|
|
66
|
+
wbwriter/viewsets/titles/publication_title_config.py,sha256=EzVGhcRvXspGT8MGah1Dj9LmD2_FBZnX0_Li_8Zs8SE,806
|
|
67
|
+
wbwriter/viewsets/titles/reviewer_article_title_config.py,sha256=YzRjuUwbe6vBwWhYLrCe6woGCpQ9c7AwkujKqPh5mLw,183
|
|
68
|
+
wbwriter-2.2.1.dist-info/METADATA,sha256=qE9BcOKWpPjI5De0rqIYo_Lo7nO5sVFERNqmu-Goy8I,229
|
|
69
|
+
wbwriter-2.2.1.dist-info/WHEEL,sha256=aO3RJuuiFXItVSnAUEmQ0yRBvv9e1sbJh68PtuQkyAE,105
|
|
70
|
+
wbwriter-2.2.1.dist-info/RECORD,,
|