Skip to content
Snippets Groups Projects

Rewrite logic for AlekSIS/Django user/group sync to only save if necessary

This change refactors the code that ensures AlekSIS persons/groups are kept in sync with Django users/groups. Previously, the Django user object and all Djangogroup objects linked to a person were unconditionally saved on eache person save, which caused at least $number_of_groups+2 writes to the database (and as many haystack update tasks).

Now, we trace dirty fields (adding the django-dirtyfields library to ExensibleModel, so that we can rely on this feature in general) to decide whether to refresh the user object or not, and connect selectively to the m2m_changed signal on the members and owners relationships to decide which groups need refreshing.

Closes #350 (closed)

Edited by Nik | Klampfradler

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading