Skip to content
Snippets Groups Projects
Select Git revision
  • 25cb906b77483ba87a4bb855009b0d644253018c
  • test default protected
  • master protected
  • original
  • pirati-backup protected
  • beta-2
  • beta-1
  • v3.1.4
  • v3.1.3
  • v3.1.2
  • v3.1.1
  • v3.1.0
  • v3.0.16
  • v3.0.15
  • v3.0.14
  • v3.0.13
  • v3.0.12
  • v3.0.11
  • v3.0.10
  • v3.0.9
  • v3.0.8
  • v3.0.7
  • v3.0.6
  • v3.0.5
  • v3.0.4
25 results

__init__.py

Blame
  • forms.py 2.25 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 DistrictArticlesPageForm(SharedArticlesPageForm, JekyllImportForm):
        def __init__(self, *args, **kwargs):
            from shared.models import SharedTag
    
            from .models import DistrictArticleTag
    
            super().__init__(*args, **kwargs)
    
            self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name")
    
            if self.instance.pk:
                valid_tag_ids = list(
                    DistrictArticleTag.objects.filter(
                        content_object__in=self.instance.get_children().specific()
                    )
                    .values_list("tag_id", flat=True)
                    .distinct()
                    .all()
                )
    
                valid_shared_tag_ids = (
                    self.instance.shared_tags.values_list("id", flat=True).distinct().all()
                )
    
                self.fields["displayed_tags"].queryset = (
                    DistrictArticleTag.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 = DistrictArticleTag.objects.filter(
                    id=-1
                )
                self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(
                    id=-1
                )