def update(self, instance, validated_data): changed_data = [] modified = False user = self.context['request'].user _update_spattributes(validated_data, instance, user, modified) _update_contacts(validated_data, instance, user, modified) _update_redirecturis(validated_data, instance, user, modified) for field in validated_data: if getattr(instance, field) != validated_data[field]: changed_data.append(field) if changed_data: if instance.validated: create_sp_history_copy(instance.pk) instance.validated = None modified = True for field in changed_data: if field == 'admins': instance.admins.set(validated_data[field]) elif field == 'admin_groups': instance.admin_groups.set(validated_data[field]) else: setattr(instance, field, validated_data[field]) if changed_data or modified: instance.updated_by = user logger.info("Service {service} updated by {user}".format( service=instance, user=user)) if modified: instance.save_modified() else: instance.save() return instance
def form_valid(self, form): if form.has_changed(): sp = ServiceProvider.objects.get(pk=form.instance.pk) # create a history copy if modifying validated SP if sp.validated: create_sp_history_copy(sp) redirect_url = super().form_valid(form) self.object.updated_by = self.request.user self.object.validated = None self.object.save_modified() logger.info("SP %s updated by %s", self.object, self.request.user) return redirect_url else: return super().form_invalid(form)
def form_valid(self, form): if form.has_changed(): sp = ServiceProvider.objects.get(pk=form.instance.pk) # create a history copy if modifying validated SP if sp.validated: create_sp_history_copy(sp) self.object.updated_by = self.request.user self.object.validated = None # Update entity_ids for testusers if it has changed if 'entity_id' in form.changed_data: update_entity_ids(self.object) form.save(commit=False) self.object.save_modified() form.save_m2m() logger.info("SP %s updated by %s", self.object, self.request.user) return HttpResponseRedirect(self.get_success_url()) else: return super().form_invalid(form)
def form_valid(self, form): if form.has_changed(): sp = ServiceProvider.objects.get(pk=form.instance.pk) # create a history copy if modifying validated SP if sp.validated: create_sp_history_copy(sp) redirect_url = super().form_valid(form) self.object.updated_by = self.request.user self.object.validated = None # Update entity_ids for testusers if it has changed if 'entity_id' in form.changed_data: update_entity_ids(self.object) if form.cleaned_data['reset_client_secret']: client_secret = self.object.generate_client_secret() if client_secret: logger.info( "Client secret generated for {sp} by {user}".format( sp=sp, user=self.request.user)) messages.add_message(self.request, messages.INFO, _('Client secret generated.')) else: messages.add_message( self.request, messages.ERROR, _('Unable to generate a client secret. Usually this means incorrect server configuration.' )) if form.cleaned_data['remove_client_secret']: self.object.encrypted_client_secret = "" logger.info("Client secret removed from {sp} by {user}".format( sp=sp, user=self.request.user)) messages.add_message(self.request, messages.INFO, _('Client secret removed.')) self.object.save_modified() logger.info("RP %s updated by %s", self.object, self.request.user) return redirect_url else: return super().form_invalid(form)