django-camomilla-cms 6.0.0b12__tar.gz → 6.0.0b13__tar.gz

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.
Files changed (117) hide show
  1. {django-camomilla-cms-6.0.0b12/django_camomilla_cms.egg-info → django-camomilla-cms-6.0.0b13}/PKG-INFO +1 -1
  2. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/__init__.py +1 -1
  3. django-camomilla-cms-6.0.0b13/camomilla/managers/__init__.py +3 -0
  4. django-camomilla-cms-6.0.0b13/camomilla/managers/pages.py +31 -0
  5. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/page.py +31 -3
  6. django-camomilla-cms-6.0.0b13/camomilla/theme/__init__.py +1 -0
  7. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13/django_camomilla_cms.egg-info}/PKG-INFO +1 -1
  8. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/django_camomilla_cms.egg-info/SOURCES.txt +2 -0
  9. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/setup.py +1 -1
  10. django-camomilla-cms-6.0.0b12/camomilla/theme/__init__.py +0 -1
  11. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/LICENSE +0 -0
  12. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/MANIFEST.in +0 -0
  13. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/README.md +0 -0
  14. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/apps.py +0 -0
  15. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/authentication.py +0 -0
  16. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/context_processors.py +0 -0
  17. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/contrib/__init__.py +0 -0
  18. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/contrib/modeltranslation/__init__.py +0 -0
  19. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/contrib/modeltranslation/hvad_migration.py +0 -0
  20. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/contrib/rest_framework/__init__.py +0 -0
  21. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/contrib/rest_framework/serializer.py +0 -0
  22. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/defaults.py +0 -0
  23. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/dynamic_pages_urls.py +0 -0
  24. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/exceptions.py +0 -0
  25. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/fields/__init__.py +0 -0
  26. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/fields/json.py +0 -0
  27. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/management/__init__.py +0 -0
  28. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/management/commands/__init__.py +0 -0
  29. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/management/commands/regenerate_thumbnails.py +0 -0
  30. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/model_api.py +0 -0
  31. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/__init__.py +0 -0
  32. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/article.py +0 -0
  33. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/content.py +0 -0
  34. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/media.py +0 -0
  35. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/menu.py +0 -0
  36. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/models/mixins/__init__.py +0 -0
  37. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/openapi/__init__.py +0 -0
  38. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/openapi/schema.py +0 -0
  39. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/parsers.py +0 -0
  40. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/permissions.py +0 -0
  41. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/__init__.py +0 -0
  42. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/article.py +0 -0
  43. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/base/__init__.py +0 -0
  44. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/content_type.py +0 -0
  45. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/fields/__init__.py +0 -0
  46. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/fields/file.py +0 -0
  47. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/fields/json.py +0 -0
  48. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/fields/related.py +0 -0
  49. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/media.py +0 -0
  50. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/menu.py +0 -0
  51. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/mixins/__init__.py +0 -0
  52. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/page.py +0 -0
  53. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/user.py +0 -0
  54. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/utils.py +0 -0
  55. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/serializers/validators.py +0 -0
  56. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/settings.py +0 -0
  57. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/sitemap.py +0 -0
  58. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/storages/__init__.py +0 -0
  59. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/storages/optimize.py +0 -0
  60. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/storages/overwrite.py +0 -0
  61. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/structured/__init__.py +0 -0
  62. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/structured/cache.py +0 -0
  63. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/structured/fields.py +0 -0
  64. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/structured/models.py +0 -0
  65. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/structured/utils.py +0 -0
  66. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/admin/camomilla/page/change_form.html +0 -0
  67. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/defaults/articles/default.html +0 -0
  68. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/defaults/base.html +0 -0
  69. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/defaults/pages/default.html +0 -0
  70. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/defaults/parts/langswitch.html +0 -0
  71. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/defaults/parts/menu.html +0 -0
  72. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates/defaults/widgets/media_select_multiple.html +0 -0
  73. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates_context/__init__.py +0 -0
  74. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates_context/autodiscover.py +0 -0
  75. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templates_context/rendering.py +0 -0
  76. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templatetags/__init__.py +0 -0
  77. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templatetags/camomilla_filters.py +0 -0
  78. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/templatetags/menus.py +0 -0
  79. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/admin.py +0 -0
  80. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/apps.py +0 -0
  81. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/static/admin/css/responsive.css +0 -0
  82. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/static/admin/img/favicon.ico +0 -0
  83. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/static/admin/img/logo.svg +0 -0
  84. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/templates/admin/base.html +0 -0
  85. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/theme/templates/rosetta/base.html +0 -0
  86. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/translation.py +0 -0
  87. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/urls.py +0 -0
  88. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/utils/__init__.py +0 -0
  89. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/utils/getters.py +0 -0
  90. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/utils/normalization.py +0 -0
  91. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/utils/seo.py +0 -0
  92. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/utils/templates.py +0 -0
  93. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/utils/translation.py +0 -0
  94. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/__init__.py +0 -0
  95. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/articles.py +0 -0
  96. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/base/__init__.py +0 -0
  97. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/contents.py +0 -0
  98. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/decorators.py +0 -0
  99. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/languages.py +0 -0
  100. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/medias.py +0 -0
  101. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/menus.py +0 -0
  102. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/mixins/__init__.py +0 -0
  103. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/mixins/ordering.py +0 -0
  104. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/mixins/pagination.py +0 -0
  105. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/pages.py +0 -0
  106. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/tags.py +0 -0
  107. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/camomilla/views/users.py +0 -0
  108. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/django_camomilla_cms.egg-info/dependency_links.txt +0 -0
  109. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/django_camomilla_cms.egg-info/requires.txt +0 -0
  110. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/django_camomilla_cms.egg-info/top_level.txt +0 -0
  111. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/pyproject.toml +0 -0
  112. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/setup.cfg +0 -0
  113. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/tests/__init__.py +0 -0
  114. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/tests/test_api.py +0 -0
  115. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/tests/test_camomilla_filters.py +0 -0
  116. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/tests/test_models.py +0 -0
  117. {django-camomilla-cms-6.0.0b12 → django-camomilla-cms-6.0.0b13}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-camomilla-cms
3
- Version: 6.0.0b12
3
+ Version: 6.0.0b13
4
4
  Summary: Django powered cms
5
5
  Author-email: Lotrèk <dimmitutto@lotrek.it>
6
6
  License: MIT
@@ -1,4 +1,4 @@
1
- __version__ = "6.0.0-beta.12"
1
+ __version__ = "6.0.0-beta.13"
2
2
 
3
3
 
4
4
  def get_core_apps():
@@ -0,0 +1,3 @@
1
+ from .pages import PageQuerySet
2
+
3
+ __all__ = ["PageQuerySet"]
@@ -0,0 +1,31 @@
1
+ from typing import Any, Tuple
2
+ from django.db.models.query import QuerySet
3
+ from django.db import transaction
4
+ from django.apps import apps
5
+
6
+ URL_NODE_RELATED_NAME = "%(app_label)s_%(class)s"
7
+
8
+
9
+ class PageQuerySet(QuerySet):
10
+ def get_or_create(self, defaults=None, **kwargs) -> Tuple[Any, bool]:
11
+ if "permalink" in kwargs:
12
+ with transaction.atomic():
13
+ UrlNode = apps.get_model("camomilla", "UrlNode")
14
+ url_node, created = UrlNode.objects.get_or_create(
15
+ permalink=kwargs.pop("permalink"),
16
+ related_name=URL_NODE_RELATED_NAME % self.model_info
17
+ )
18
+ if created is False and url_node.page is not None:
19
+ page = self.get(**kwargs)
20
+ if page.pk != url_node.page.pk:
21
+ raise self.model.MultipleObjectsReturned(
22
+ "got more than one %s object for the same permalink: %s"
23
+ % (
24
+ self.model._meta.object_name,
25
+ kwargs["permalink"],
26
+ )
27
+ )
28
+ return url_node.page, False
29
+ kwargs["url_node"] = url_node
30
+ return super().get_or_create(defaults, **kwargs)
31
+ return super().get_or_create(defaults, **kwargs)
@@ -2,6 +2,8 @@ from typing import Sequence, Tuple
2
2
  from uuid import uuid4
3
3
 
4
4
  from django.core.exceptions import ObjectDoesNotExist
5
+ from django.core.validators import RegexValidator
6
+
5
7
  from django.db import ProgrammingError, OperationalError, models, transaction
6
8
  from django.db.models.signals import post_delete
7
9
  from django.dispatch import receiver
@@ -12,6 +14,7 @@ from django.utils.functional import lazy
12
14
  from django.utils.text import slugify
13
15
  from django.utils.translation import gettext_lazy as _
14
16
 
17
+ from camomilla.managers.pages import PageQuerySet
15
18
  from camomilla.models.mixins import MetaMixin, SeoMixin
16
19
  from camomilla.utils import (
17
20
  activate_languages,
@@ -164,6 +167,16 @@ class PageBase(models.base.ModelBase):
164
167
  return new_class
165
168
 
166
169
 
170
+ class UrlPathValidator(RegexValidator):
171
+
172
+ regex = r"^[a-zA-Z0-9_\-\/]+[^\/]$"
173
+ message = _(
174
+ "Enter a valid 'slug' consisting of lowercase letters, numbers, "
175
+ "underscores, hyphens and slashes."
176
+ )
177
+ flags = 0
178
+
179
+
167
180
  class AbstractPage(SeoMixin, MetaMixin, models.Model, metaclass=PageBase):
168
181
  date_created = models.DateTimeField(auto_now_add=True)
169
182
  date_updated_at = models.DateTimeField(auto_now=True)
@@ -175,7 +188,9 @@ class AbstractPage(SeoMixin, MetaMixin, models.Model, metaclass=PageBase):
175
188
  editable=False,
176
189
  )
177
190
  breadcrumbs_title = models.CharField(max_length=128, null=True, blank=True)
178
- slug = models.SlugField(max_length=150, allow_unicode=True, null=True, blank=True)
191
+ slug = models.CharField(
192
+ max_length=150, null=True, blank=True, validators=[UrlPathValidator()]
193
+ )
179
194
  status = models.CharField(
180
195
  max_length=3,
181
196
  choices=PAGE_STATUS,
@@ -195,6 +210,8 @@ class AbstractPage(SeoMixin, MetaMixin, models.Model, metaclass=PageBase):
195
210
  on_delete=models.CASCADE,
196
211
  )
197
212
 
213
+ objects = PageQuerySet.as_manager()
214
+
198
215
  def __init__(self, *args, **kwargs):
199
216
  super(AbstractPage, self).__init__(*args, **kwargs)
200
217
  self._meta.get_field("template").choices = lazy(GET_TEMPLATE_CHOICES, list)()
@@ -294,7 +311,10 @@ class AbstractPage(SeoMixin, MetaMixin, models.Model, metaclass=PageBase):
294
311
  else fallback_slug
295
312
  )
296
313
  set_nofallbacks(self, "slug", slug)
297
- permalink = "/%s" % slugify(slug or "", allow_unicode=True)
314
+ slug_parts = (slug or "").split("/")
315
+ for i, part in enumerate(slug_parts):
316
+ slug_parts[i] = slugify(part, allow_unicode=True)
317
+ permalink = "/%s" % "/".join(slug_parts)
298
318
  if self.parent:
299
319
  permalink = f"{self.parent.permalink}{permalink}"
300
320
  qs = UrlNode.objects.exclude(pk=getattr(self.url_node or object, "pk", None))
@@ -376,12 +396,20 @@ class AbstractPage(SeoMixin, MetaMixin, models.Model, metaclass=PageBase):
376
396
  raise Http404(ex)
377
397
 
378
398
  def alternate_urls(self, *args, **kwargs) -> dict:
399
+ request = False
400
+ if len(args) > 0:
401
+ request = args[0]
402
+ if "request" in kwargs:
403
+ request = kwargs["request"]
404
+ preview = request and getattr(request, "GET", {}).get("preview", False)
379
405
  permalinks = get_field_translations(self.url_node or object, "permalink", None)
380
406
  for lang in activate_languages():
381
407
  if lang in permalinks:
382
408
  permalinks[lang] = (
383
- UrlNode.reverse_url(permalinks[lang]) if self.is_public else None
409
+ UrlNode.reverse_url(permalinks[lang]) if preview or self.is_public else None
384
410
  )
411
+ if preview:
412
+ permalinks = {k: f"{v}?preview=true" for k, v in permalinks.items()}
385
413
  return permalinks
386
414
 
387
415
  class Meta:
@@ -0,0 +1 @@
1
+ __version__ = "6.0.0-beta.13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-camomilla-cms
3
- Version: 6.0.0b12
3
+ Version: 6.0.0b13
4
4
  Summary: Django powered cms
5
5
  Author-email: Lotrèk <dimmitutto@lotrek.it>
6
6
  License: MIT
@@ -27,6 +27,8 @@ camomilla/fields/json.py
27
27
  camomilla/management/__init__.py
28
28
  camomilla/management/commands/__init__.py
29
29
  camomilla/management/commands/regenerate_thumbnails.py
30
+ camomilla/managers/__init__.py
31
+ camomilla/managers/pages.py
30
32
  camomilla/models/__init__.py
31
33
  camomilla/models/article.py
32
34
  camomilla/models/content.py
@@ -1,5 +1,5 @@
1
1
  from setuptools import setup
2
2
 
3
- __version__ = "6.0.0-beta.12"
3
+ __version__ = "6.0.0-beta.13"
4
4
 
5
5
  setup(version=__version__)
@@ -1 +0,0 @@
1
- __version__ = "6.0.0-beta.12"