diff --git a/contracts/models.py b/contracts/models.py index 1c02dbfd3faa7f5bfc01a2ff1a12d7a92793a828..1e5cb1f5e89f0a9e25736335e90f2ed8ca471119 100644 --- a/contracts/models.py +++ b/contracts/models.py @@ -1,6 +1,7 @@ import typing from django.conf import settings +from django.core.exceptions import ValidationError from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver @@ -561,6 +562,18 @@ class Contract(NameStrMixin, models.Model): self.save() + def clean(self): + if ( + self.primary_contract is not None + and self.is_public + and not self.primary_contract.is_public + ): + raise ValidationError( + { + "is_public": "Primární smlouva je neveřejná, tato smlouva nemůže být veřejná." + } + ) + class Meta: app_label = "contracts" diff --git a/shared/templatetags/admin_extras.py b/shared/templatetags/admin_extras.py index de2d88fa540495e380d6219565115a4b4aea2323..c4cf61c33be7cab4ce33e851545ca89af1045f0f 100644 --- a/shared/templatetags/admin_extras.py +++ b/shared/templatetags/admin_extras.py @@ -2,7 +2,6 @@ from django.template import Library from shared.admin import FieldsetInlineOrder - register = Library() @@ -27,33 +26,15 @@ def get_fieldsets_and_inlines(context): ): if choice == FieldsetInlineOrder.FIELDSET: fieldsets_and_inlines.append( - ( - FieldsetInlineOrder.FIELDSET, - next(adminform) - ) + (FieldsetInlineOrder.FIELDSET, next(adminform)) ) elif choice == FieldsetInlineOrder.INLINE: - fieldsets_and_inlines.append( - ( - FieldsetInlineOrder.INLINE, - next(inlines) - ) - ) + fieldsets_and_inlines.append((FieldsetInlineOrder.INLINE, next(inlines))) for fieldset in adminform: - fieldsets_and_inlines.append( - ( - FieldsetInlineOrder.FIELDSET, - fieldset - ) - ) + fieldsets_and_inlines.append((FieldsetInlineOrder.FIELDSET, fieldset)) for inline in inlines: - fieldsets_and_inlines.append( - ( - FieldsetInlineOrder.INLINE, - inline - ) - ) + fieldsets_and_inlines.append((FieldsetInlineOrder.INLINE, inline)) - return fieldsets_and_inlines + return fieldsets_and_inlines