diff --git a/district/forms.py b/district/forms.py index fa3d801a0e7507a582bc2e1a532fa8513b24cb2b..257c9baa5db0190562feb23d7e4f631062b319ef 100644 --- a/district/forms.py +++ b/district/forms.py @@ -34,29 +34,6 @@ class JekyllImportForm(SharedJekyllImportForm): ) -class DistrictPeoplePageForm(WagtailAdminPageForm): - def save(self, *args, **kwargs): - parental_save_result = super().save(*args, **kwargs) - - # If anything inside the content field has changed and the instance exists, - # sync Octopus profiles just in case. - if "content" in self.changed_data and self.instance.pk: - collection_id = self.instance.root_page.image_collection_id - - if collection_id is None: - collection_id = Collection.objects.first().id - - for group in self.instance.get_syncable_octopus_groups(): - import_people_from_group.delay( - self.instance.id, - collection_id, - group["shortcut"], - group["title"], - ) - - return parental_save_result - - class DistrictArticlesPageForm(SharedArticlesPageForm, JekyllImportForm): def __init__(self, *args, **kwargs): from shared.models import SharedTag diff --git a/district/models.py b/district/models.py index 240a1e2188c643d681ac9af3a95aeb713f9beed7..578ef32a6de75cc1a23a2f59861739da8c4ab09d 100644 --- a/district/models.py +++ b/district/models.py @@ -26,7 +26,7 @@ from wagtail.models import Orderable, Page from wagtail.models.media import Collection from wagtailmetadata.models import MetadataPageMixin from wagtail import hooks -from .tasks import import_manual_person +from .tasks import import_manual_person, import_people_from_group, import_people_from_team from calendar_utils.models import CalendarMixin from maps_utils.blocks import MapPointBlock @@ -79,7 +79,6 @@ from shared.utils import ( from . import blocks from .forms import ( DistrictArticlesPageForm, - DistrictPeoplePageForm, ) CONTENT_BLOCKS = DEFAULT_CONTENT_BLOCKS + [ @@ -700,8 +699,6 @@ class DistrictPersonPage(MainPersonPageMixin): class DistrictPeoplePage(MainPeoplePageMixin): - base_form_class = DistrictPeoplePageForm - ### FIELDS content = StreamField( @@ -1619,8 +1616,6 @@ class DistrictGeoFeatureDetailPage( @hooks.register("after_create_page") @hooks.register("after_edit_page") def after_create_edit_page_hook(request, page): - print(page) - if isinstance(page, DistrictManualOctopusPersonPage): collection_id = page.root_page.image_collection_id @@ -1632,6 +1627,29 @@ def after_create_edit_page_hook(request, page): collection_id, ) + if isinstance(page, DistrictPeoplePage): + collection_id = page.root_page.image_collection_id + + if collection_id is None: + collection_id = Collection.objects.first().id + + for group in page.get_syncable_octopus_groups(): + import_people_from_group.delay( + page.id, + collection_id, + group["shortcut"], + group["title"], + ) + + for team in page.get_syncable_octopus_teams(): + import_people_from_team.delay( + page.id, + collection_id, + team["shortcut"], + team["title"], + team["roles"] + ) + # Legacy models required for migrations diff --git a/shared/people_import.py b/shared/people_import.py index fbdde0489bdbbb760dc9087e42878e2d42b08311..05eff1a4f4191f69496e14b9f4ebcef8e518ebd1 100644 --- a/shared/people_import.py +++ b/shared/people_import.py @@ -434,6 +434,7 @@ class PeopleTeamImporter(ImporterMixin): node {{ memberships {{ roleDisplay + roleOrder person {{ id }} @@ -450,7 +451,10 @@ class PeopleTeamImporter(ImporterMixin): users = [] for node in result["allTeams"]["edges"]: - for membership in node["node"]["memberships"]: + for membership in node["node"]["memberships"].sort( + key=lambda membership: membership["roleOrder"], + reverse=True + ): # Can't do this in the query (yet), so just filter here if len(self.team_roles) != 0 and membership["roleDisplay"] not in self.team_roles: