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
import tempfile
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_people_from_group
......@@ -26,3 +28,23 @@ class JekyllImportForm(SharedJekyllImportForm):
dry_run=self.cleaned_data["dry_run"],
use_git=True,
)
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 (
)
from . import blocks
from .forms import JekyllImportForm
from .forms import JekyllImportForm, DistrictPeoplePageForm
CONTENT_BLOCKS = DEFAULT_CONTENT_BLOCKS + [
("chart", ChartBlock()),
......@@ -575,6 +575,8 @@ class DistrictPersonPage(MainPersonPageMixin):
class DistrictPeoplePage(MainPeoplePageMixin):
base_form_class = DistrictPeoplePageForm
### FIELDS
content = StreamField(
......@@ -614,7 +616,8 @@ class DistrictPeoplePage(MainPeoplePageMixin):
if block.block_type == "octopus_group":
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):
......
......@@ -291,6 +291,14 @@ class PeopleGroupImporter:
person_page = self.person_page_model.objects.filter(person=person_instance).descendant_of(self.people_parent_page).first()
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=person_instance,
is_automatically_created=True,
......
......@@ -8,7 +8,7 @@ def is_first_people_type(content, forloop):
first_people_type_position = None
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:
first_people_type_position = position
break
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment