-
Alexa Valentová authoredAlexa Valentová authored
tasks.py 2.90 KiB
import logging
import os
import tempfile
from celery import shared_task
from shared.jekyll_import import JekyllArticleImporter
from shared.people_import import PeopleGroupImporter, PeopleTeamImporter, PersonImporter
logger = logging.getLogger(__name__)
@shared_task()
def import_jekyll_articles(
article_parent_page_id,
collection_id,
url,
dry_run,
use_git,
):
from .models import DistrictArticlePage, DistrictArticlesPage
return JekyllArticleImporter(
article_parent_page_id=article_parent_page_id,
article_parent_page_model=DistrictArticlesPage,
collection_id=collection_id,
url=url,
dry_run=dry_run,
use_git=use_git,
page_model=DistrictArticlePage,
).perform_import()
@shared_task()
def import_people_from_group(
people_parent_page_id, collection_id, group_shortcut, group_display
):
from .models import DistrictOctopusPersonPage, DistrictPeoplePage
lock_file_name = os.path.join(
tempfile.gettempdir(),
f"{people_parent_page_id}-{group_shortcut}.people-from-group-import-lock",
)
if os.path.isfile(lock_file_name):
return
open(lock_file_name, "w").close()
return PeopleGroupImporter(
people_parent_page_id=people_parent_page_id,
people_parent_page_model=DistrictPeoplePage,
person_page_model=DistrictOctopusPersonPage,
collection_id=collection_id,
group_shortcut=group_shortcut,
group_display=group_display,
lock_file_name=lock_file_name,
).perform_import()
@shared_task()
def import_people_from_team(
people_parent_page_id,
collection_id,
team_shortcut,
team_display,
):
from .models import DistrictOctopusPersonPage, DistrictPeoplePage
lock_file_name = os.path.join(
tempfile.gettempdir(),
f"{people_parent_page_id}-{team_shortcut}.people-from-team-import-lock",
)
if os.path.isfile(lock_file_name):
return
open(lock_file_name, "w").close()
return PeopleTeamImporter(
people_parent_page_id=people_parent_page_id,
people_parent_page_model=DistrictPeoplePage,
person_page_model=DistrictOctopusPersonPage,
collection_id=collection_id,
team_shortcut=team_shortcut,
team_display=team_display,
lock_file_name=lock_file_name,
).perform_import()
@shared_task()
def import_manual_person(
person_page_id,
collection_id,
):
from .models import DistrictManualOctopusPersonPage
lock_file_name = os.path.join(
tempfile.gettempdir(),
f"{person_page_id}.person-import-lock",
)
if os.path.isfile(lock_file_name):
return
open(lock_file_name, "w").close()
return PersonImporter(
person_page_model=DistrictManualOctopusPersonPage,
person_page_id=person_page_id,
collection_id=collection_id,
lock_file_name=lock_file_name,
).perform_import()