From de34baa8c4bde93317eefee7ee6e0f8876c717f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexa=20Valentov=C3=A1?= <git@imaniti.org> Date: Thu, 29 Aug 2024 22:30:10 +0200 Subject: [PATCH] fix articles page adding --- .../management/commands/update_callendars.py | 1 + district/forms.py | 4 ++++ elections/forms.py | 12 ++++++++++++ main/forms.py | 12 ++++++++++++ shared/forms.py | 9 ++++++--- uniweb/forms.py | 16 +++++++++++++--- 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/calendar_utils/management/commands/update_callendars.py b/calendar_utils/management/commands/update_callendars.py index d1c51b56..1d73aa0e 100644 --- a/calendar_utils/management/commands/update_callendars.py +++ b/calendar_utils/management/commands/update_callendars.py @@ -32,6 +32,7 @@ class Command(BaseCommand): self.stdout.write("Updating calendars...") for cal in Calendar.objects.all(): self.stdout.write(f"\n@ {cal.id} | {cal.url}") + try: cal.update_source() self.stdout.write("+ ok") diff --git a/district/forms.py b/district/forms.py index 26d60fb8..fb2974ad 100644 --- a/district/forms.py +++ b/district/forms.py @@ -84,3 +84,7 @@ class DistrictArticlesPageForm(SharedArticlesPageForm, JekyllImportForm): .order_by("name") .distinct("name") ) + else: + self.fields["shared_tags"].queryset = DistrictArticleTag.objects.filter(id=-1) + self.fields["displayed_tags"].queryset = DistrictArticleTag.objects.filter(id=-1) + self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(id=-1) diff --git a/elections/forms.py b/elections/forms.py index e2bd6ed7..246b89d8 100644 --- a/elections/forms.py +++ b/elections/forms.py @@ -45,9 +45,21 @@ class ElectionsArticlesPageForm(SharedArticlesPageForm, JekyllImportForm): .values_list("tag_id", flat=True) .distinct() ) + valid_shared_tag_ids = ( + self.instance.shared_tags.values_list("id", flat=True).distinct().all() + ) self.fields["displayed_tags"].queryset = ( ElectionsArticleTag.objects.filter(id__in=valid_tag_ids) .order_by("tag__name") .distinct("tag__name") ) + self.fields["displayed_shared_tags"].queryset = ( + SharedTag.objects.filter(id__in=valid_shared_tag_ids) + .order_by("name") + .distinct("name") + ) + else: + self.fields["shared_tags"].queryset = ElectionsArticleTag.objects.filter(id=-1) + self.fields["displayed_tags"].queryset = ElectionsArticleTag.objects.filter(id=-1) + self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(id=-1) diff --git a/main/forms.py b/main/forms.py index d6af8e42..5917307f 100644 --- a/main/forms.py +++ b/main/forms.py @@ -45,9 +45,21 @@ class MainArticlesPageForm(SharedArticlesPageForm, JekyllImportForm): .values_list("tag_id", flat=True) .distinct() ) + valid_shared_tag_ids = ( + self.instance.shared_tags.values_list("id", flat=True).distinct().all() + ) self.fields["displayed_tags"].queryset = ( MainArticleTag.objects.filter(id__in=valid_tag_ids) .order_by("tag__name") .distinct("tag__name") ) + self.fields["displayed_shared_tags"].queryset = ( + SharedTag.objects.filter(id__in=valid_shared_tag_ids) + .order_by("name") + .distinct("name") + ) + else: + self.fields["shared_tags"].queryset = MainArticleTag.objects.filter(id=-1) + self.fields["displayed_tags"].queryset = MainArticleTag.objects.filter(id=-1) + self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(id=-1) \ No newline at end of file diff --git a/shared/forms.py b/shared/forms.py index 776b1b61..3347d906 100644 --- a/shared/forms.py +++ b/shared/forms.py @@ -77,15 +77,18 @@ class TagModelChoiceField(ModelMultipleChoiceField): return obj.tag.name +from taggit.models import Tag + + class ArticlesPageForm(ClusterForm): displayed_tags = TagModelChoiceField( - queryset=None, + queryset=Tag.objects.filter(id=-1), required=False, label="Z tohoto webu", widget=CheckboxSelectMultiple, ) displayed_shared_tags = ModelMultipleChoiceField( - queryset=None, + queryset=Tag.objects.filter(id=-1), required=False, label="Sdílecí", help_text=( @@ -96,7 +99,7 @@ class ArticlesPageForm(ClusterForm): ) shared_tags = ModelMultipleChoiceField( - queryset=None, + queryset=Tag.objects.filter(id=-1), required=False, label="Štítky pro sdílení mezi weby", help_text="Články z ostatních webů se štítky, které vybereš, se ukážou na tomto webu.", diff --git a/uniweb/forms.py b/uniweb/forms.py index efcb9e24..2c00933f 100644 --- a/uniweb/forms.py +++ b/uniweb/forms.py @@ -1,5 +1,6 @@ from wagtail.admin.forms import WagtailAdminPageForm +from django.forms.models import ModelChoiceIterator from shared.forms import ArticlesPageForm as SharedArticlesPageForm @@ -24,13 +25,10 @@ class UniwebHomePageAdminForm(WagtailAdminPageForm): class UniwebArticlesPageForm(SharedArticlesPageForm, WagtailAdminPageForm): def __init__(self, *args, **kwargs): from shared.models import SharedTag - from .models import UniwebArticleTag super().__init__(*args, **kwargs) - self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name") - if self.instance.pk: valid_tag_ids = ( UniwebArticleTag.objects.filter( @@ -39,9 +37,21 @@ class UniwebArticlesPageForm(SharedArticlesPageForm, WagtailAdminPageForm): .values_list("id", flat=True) .distinct() ) + valid_shared_tag_ids = ( + self.instance.shared_tags.values_list("id", flat=True).distinct().all() + ) self.fields["displayed_tags"].queryset = ( UniwebArticleTag.objects.filter(id__in=valid_tag_ids) .order_by("tag__name") .distinct("tag__name") ) + self.fields["displayed_shared_tags"].queryset = ( + SharedTag.objects.filter(id__in=valid_shared_tag_ids) + .order_by("name") + .distinct("name") + ) + else: + self.fields["shared_tags"].queryset = UniwebArticleTag.objects.filter(id=-1) + self.fields["displayed_tags"].queryset = UniwebArticleTag.objects.filter(id=-1) + self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(id=-1) \ No newline at end of file -- GitLab