from wagtail.admin.forms import WagtailAdminPageForm from shared.forms import ArticlesPageForm as SharedArticlesPageForm class UniwebHomePageAdminForm(WagtailAdminPageForm): def clean(self): cleaned_data = super().clean() # If one logo is set, then both logos must be set. if (cleaned_data["dark_logo"] or cleaned_data["light_logo"]) and ( not cleaned_data["dark_logo"] or not cleaned_data["light_logo"] ): self.add_error( "dark_logo", "Pokud je jedno logo nastaveno, musí být obě loga nastaveny.", ) self.add_error( "light_logo", "Pokud je jedno logo nastaveno, musí být obě loga nastaveny.", ) class UniwebArticlesPageForm(SharedArticlesPageForm, WagtailAdminPageForm): def __init__(self, *args, **kwargs): from .models import UniwebArticleTag from shared.models import SharedTag super().__init__(*args, **kwargs) self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name") if self.instance.pk: valid_tag_ids = UniwebArticleTag.objects.filter( content_object__in=self.instance.get_children().specific() ).values_list('id', flat=True).distinct() self.fields['displayed_tags'].queryset = UniwebArticleTag.objects.filter(id__in=valid_tag_ids).order_by("tag__name").distinct("tag__name")