Skip to content
Snippets Groups Projects
Commit 9e305481 authored by Tomi Valentová's avatar Tomi Valentová
Browse files

finish octopus import

parent e3520e8c
No related branches found
No related tags found
2 merge requests!1097Release,!1095Add basic Octopus people sync
Pipeline #19300 passed
...@@ -2,6 +2,8 @@ import os ...@@ -2,6 +2,8 @@ import os
import tempfile import tempfile
from shared.forms import JekyllImportForm as SharedJekyllImportForm from shared.forms import JekyllImportForm as SharedJekyllImportForm
from wagtail.admin.forms import WagtailAdminPageForm
from wagtail.models.media import Collection
from .tasks import import_jekyll_articles from .tasks import import_jekyll_articles
from .tasks import import_people_from_group from .tasks import import_people_from_group
...@@ -25,4 +27,24 @@ class JekyllImportForm(SharedJekyllImportForm): ...@@ -25,4 +27,24 @@ class JekyllImportForm(SharedJekyllImportForm):
url=self.cleaned_data["jekyll_repo_url"], url=self.cleaned_data["jekyll_repo_url"],
dry_run=self.cleaned_data["dry_run"], dry_run=self.cleaned_data["dry_run"],
use_git=True, use_git=True,
) )
\ No newline at end of file
class DistrictPeoplePageForm(WagtailAdminPageForm):
def save(self, *args, **kwargs):
# If anything inside the content field has changed,
# sync Octopus profiles just in case.
if "content" in self.changed_data:
collection_id = self.instance.root_page.image_collection_id
if collection_id is None:
collection_id = Collection.objects.first().id
for shortcut in self.instance.get_syncable_octopus_groups():
import_people_from_group.delay(
self.instance.id,
collection_id,
shortcut,
)
return super().save(*args, **kwargs)
\ No newline at end of file
...@@ -71,7 +71,7 @@ from shared.utils import ( ...@@ -71,7 +71,7 @@ from shared.utils import (
) )
from . import blocks from . import blocks
from .forms import JekyllImportForm from .forms import JekyllImportForm, DistrictPeoplePageForm
CONTENT_BLOCKS = DEFAULT_CONTENT_BLOCKS + [ CONTENT_BLOCKS = DEFAULT_CONTENT_BLOCKS + [
("chart", ChartBlock()), ("chart", ChartBlock()),
...@@ -575,6 +575,8 @@ class DistrictPersonPage(MainPersonPageMixin): ...@@ -575,6 +575,8 @@ class DistrictPersonPage(MainPersonPageMixin):
class DistrictPeoplePage(MainPeoplePageMixin): class DistrictPeoplePage(MainPeoplePageMixin):
base_form_class = DistrictPeoplePageForm
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
...@@ -614,7 +616,8 @@ class DistrictPeoplePage(MainPeoplePageMixin): ...@@ -614,7 +616,8 @@ class DistrictPeoplePage(MainPeoplePageMixin):
if block.block_type == "octopus_group": if block.block_type == "octopus_group":
group_shortcuts.append(block.value["group_shortcut"]) group_shortcuts.append(block.value["group_shortcut"])
return group_shortcuts # Don't duplicate groups needlessly
return list(set(group_shortcuts))
class DistrictCalendarPage(SubpageMixin, MetadataPageMixin, CalendarMixin, Page): class DistrictCalendarPage(SubpageMixin, MetadataPageMixin, CalendarMixin, Page):
......
...@@ -291,6 +291,14 @@ class PeopleGroupImporter: ...@@ -291,6 +291,14 @@ class PeopleGroupImporter:
person_page = self.person_page_model.objects.filter(person=person_instance).descendant_of(self.people_parent_page).first() person_page = self.person_page_model.objects.filter(person=person_instance).descendant_of(self.people_parent_page).first()
if person_page is None: if person_page is None:
if not isinstance(person_instance.display_name, str):
logger.warning(
"Skipping page creation for user %s, they have no display name",
person_instance.username
)
continue
person_page = self.person_page_model( person_page = self.person_page_model(
person=person_instance, person=person_instance,
is_automatically_created=True, is_automatically_created=True,
......
...@@ -8,7 +8,7 @@ def is_first_people_type(content, forloop): ...@@ -8,7 +8,7 @@ def is_first_people_type(content, forloop):
first_people_type_position = None first_people_type_position = None
for position, item in enumerate(content): for position, item in enumerate(content):
if item.block_type in ("people_group", "team_group"): if item.block_type in ("octopus_group", "people_group", "team_group"):
if first_people_type_position is None: if first_people_type_position is None:
first_people_type_position = position first_people_type_position = position
break break
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment