Skip to content
Snippets Groups Projects
Select Git revision
  • 82a6e76c6a82135178d6dd64a77a97bc6f065181
  • test default protected
  • master protected
  • feat/custom-css
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/redesign-fixes-3
  • feat/pirstan-changes
  • feat/separate-import-thread
  • feat/dary-improvements
  • features/add-pdf-page
  • features/add-typed-table
  • features/fix-broken-calendar-categories
  • features/add-embed-to-articles
  • features/create-mastodon-feed-block
  • features/add-custom-numbering-for-candidates
  • features/add-timeline
  • features/create-wordcloud-from-article-page
  • features/create-collapsible-extra-legal-info
  • features/extend-hero-banner
  • features/add-link-to-images
21 results

0019_alter_maincontactpage_text.py

Blame
  • forms.py 2.23 KiB
    import os
    import tempfile
    
    from shared.forms import ArticlesPageForm as SharedArticlesPageForm
    from shared.forms import JekyllImportForm as SharedJekyllImportForm
    
    from .tasks import import_jekyll_articles
    
    
    class JekyllImportForm(SharedJekyllImportForm):
        def handle_import(self):
            lock_file_name = os.path.join(
                tempfile.gettempdir(), f".{self.instance.id}.articles-import-lock"
            )
    
            if os.path.isfile(lock_file_name):
                return
    
            open(lock_file_name, "w").close()
    
            import_jekyll_articles.delay(
                article_parent_page_id=self.instance.id,
                collection_id=self.cleaned_data["collection"].id,
                url=self.cleaned_data["jekyll_repo_url"],
                dry_run=self.cleaned_data["dry_run"],
                use_git=True,
            )
    
    
    class ElectionsArticlesPageForm(SharedArticlesPageForm, JekyllImportForm):
        def __init__(self, *args, **kwargs):
            from shared.models import SharedTag
    
            from .models import ElectionsArticleTag
    
            super().__init__(*args, **kwargs)
    
            self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name")
    
            if self.instance.pk:
                valid_tag_ids = (
                    ElectionsArticleTag.objects.filter(
                        content_object__in=self.instance.get_children().specific()
                    )
                    .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["displayed_tags"].queryset = ElectionsArticleTag.objects.filter(
                    id=-1
                )
                self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(
                    id=-1
                )