diff --git a/shared/forms.py b/shared/forms.py index f93c09f7d4dee9da21a4b8ba1d74e514a2b45cc3..934dd0bf2da12a0adbec5ae823eaeb832c1a6580 100644 --- a/shared/forms.py +++ b/shared/forms.py @@ -2,7 +2,7 @@ from django import forms from wagtail.admin.forms import WagtailAdminPageForm from wagtail.models.collections import Collection -from shared.jekyll_import import JekyllArticleImporter +from .tasks import import_jekyll_articles class SubscribeForm(forms.Form): @@ -65,19 +65,20 @@ class JekyllImportForm(WagtailAdminPageForm): return cleaned_data - def handle_import(self, model): + def handle_import(self): # TODO: Portable function - from .models import MainArticlePage + print("handling import") - JekyllArticleImporter( - article_parent_page=self.instance, - collection_id=self.cleaned_data["collection"].id, - url=self.cleaned_data["jekyll_repo_url"], - dry_run=self.cleaned_data["dry_run"], - use_git=True, - page_model=MainArticlePage, - ).perform_import() + print( + 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, + ) + ) def save(self, commit=True): if self.cleaned_data.get("do_import"): diff --git a/shared/jekyll_import.py b/shared/jekyll_import.py index 2d84fb62f1f01ed7208270cb2780ffa66488a6a5..a58508c33cbe6b5a590c2a3071b1d01dc44f11cc 100644 --- a/shared/jekyll_import.py +++ b/shared/jekyll_import.py @@ -323,7 +323,8 @@ params = {} class JekyllArticleImporter: def __init__( self, - article_parent_page, + article_parent_page_id: int, + article_parent_page_model, collection_id: int, url: str, dry_run: bool, @@ -333,13 +334,19 @@ class JekyllArticleImporter: self.page_model = page_model # Params - self.article_parent_page = article_parent_page + self.article_parent_page_id = article_parent_page_id + self.article_parent_page_model = article_parent_page_model self.collection = Collection.objects.get(id=collection_id) self.dry_run = dry_run self.use_git = use_git self.url = url - # Computed props + # Computed proprs + import time + time.sleep(5) + + self.article_parent_page = self.article_parent_page_model.objects.filter(id=self.article_parent_page_id).first() + self.path, self.repo_name = get_path_and_repo_name(self.url, self.use_git) self.site = self.article_parent_page.get_site() self.site_config = get_site_config(self.path) diff --git a/shared/tasks.py b/shared/tasks.py new file mode 100644 index 0000000000000000000000000000000000000000..7d90d645e6e9abea8808599731c60ead70571525 --- /dev/null +++ b/shared/tasks.py @@ -0,0 +1,27 @@ +import logging + +from celery import shared_task +from shared.jekyll_import import JekyllArticleImporter + +logger = logging.getLogger(__name__) + + +@shared_task() +def import_jekyll_articles( + article_parent_page_id, + collection_id, + url, + dry_run, + use_git, +): + from main.models import MainArticlePage, MainArticlesPage + + return JekyllArticleImporter( + article_parent_page_id=article_parent_page_id, + article_parent_page_model=MainArticlesPage, + collection_id=collection_id, + url=url, + dry_run=dry_run, + use_git=use_git, + page_model=MainArticlePage, + ).perform_import()