def save_model(self, request, obj, form, change): """ Explicitly record any membership changes. """ record_remote_many_to_many_changes_and_save(request, obj, form, change, "authorized_users", super().save_model) if "physical_access_exceptions" in form.changed_data: obj.physicalaccessexception_set.set(form.cleaned_data["physical_access_exceptions"])
def save_model(self, request, obj, form, change): """ Explicitly record any membership changes. """ record_remote_many_to_many_changes_and_save( request, obj, form, change, 'authorized_users', super(PhysicalAccessLevelAdmin, self).save_model)
def save_model(self, request, obj, form, change): """ Audit project creation and modification. Also save any project membership changes explicitly. """ record_remote_many_to_many_changes_and_save( request, obj, form, change, "members", super(ProjectAdmin, self).save_model ) # Make a history entry if a project has been moved under an account. # This applies to newly created projects and project ownership reassignment. if "account" in form.changed_data: # Create a membership removal entry for the project if it used to belong to another account: if change: previous_account = MembershipHistory() previous_account.authorizer = request.user previous_account.child_content_object = obj previous_account.parent_content_object = Account.objects.get(pk=form.initial["account"]) previous_account.action = MembershipHistory.Action.REMOVED previous_account.save() # Create a membership addition entry for the project with its current account. current_account = MembershipHistory() current_account.authorizer = request.user current_account.child_content_object = obj current_account.parent_content_object = obj.account current_account.action = MembershipHistory.Action.ADDED current_account.save() # Record whether the project is active or not. record_active_state(request, obj, form, "active", not change) if "principal_investigators" in form.changed_data: obj.manager_set.set(form.cleaned_data["principal_investigators"])
def save_model(self, request, obj, form, change): """ Explicitly record any project membership changes. """ if obj.parent_tool: if obj.pk: # if this is an update (from regular to child tool), we want to make sure we are creating a clean version. In case the previous tool had fields that are now irrelevant clean_alt_tool = Tool(**form.cleaned_data) clean_alt_tool.pk = obj.pk obj = clean_alt_tool super(ToolAdmin, self).save_model(request, obj, form, change) else: record_remote_many_to_many_changes_and_save(request, obj, form, change, 'qualified_users', super(ToolAdmin, self).save_model) if 'required_resources' in form.changed_data: obj.required_resource_set.set(form.cleaned_data['required_resources']) if 'nonrequired_resources' in form.changed_data: obj.nonrequired_resource_set.set(form.cleaned_data['nonrequired_resources'])