예제 #1
0
    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
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
    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)