def save_model(self, request, obj, form, change=True): """ Save the model and assign delete permissions to particular objects. """ if request.GET.get('risk'): obj.risk = Risk.objects.get(pk=request.GET.get('risk')) obj.risk.prescription = self.prescription obj.save() # If can_delete is set, allow the user to delete this object. if self.can_delete: opts = self.opts group = Group.objects.get(name='Users') perm = get_permission_codename('delete', opts) assign_perm("%s.%s" % (opts.app_label, perm), group, obj)
def update_permissions(prescription, admin_site, state, action=remove_perm): """ Update a prescription's object permissions based on the state of the ePFP. """ # Loop over each model admin and check when it should be disabled, # adding/removing permissions as necessary. from pbs.prescription.admin import SavePrescriptionMixin group = Group.objects.get(name="Users") for model, model_admin in admin_site._registry.items(): if isinstance(model_admin, SavePrescriptionMixin): if model_admin.can_delete and model_admin.lock_after == state: opts = model_admin.opts perm = get_permission_codename("delete", opts) if hasattr(model_admin, "prescription_filter_field"): options = { model_admin.prescription_filter_field: prescription } else: options = {"prescription": prescription} for obj in model.objects.filter(**options): action("%s.%s" % (opts.app_label, perm), group, obj)