diff --git a/src/authentic2_pratic/models.py b/src/authentic2_pratic/models.py index a7b77ed..a647637 100644 --- a/src/authentic2_pratic/models.py +++ b/src/authentic2_pratic/models.py @@ -343,17 +343,20 @@ class ServiceInstance(Model): return (self.slug, self.service.natural_key(), self.collectivity.natural_key()) def clean(self): - if self.collectivity and self.service and self.service.is_global: - qs = ServiceInstance.objects.exclude(id=self.id) - qs = qs.filter(collectivity=self.collectivity, - service=self.service) - if qs.exists(): - raise ValidationError(_('There can be only one instance of a global service by collectivity')) - if self.service and self.service.is_global: - self.service_url = self.service.service_url - self.metadata_url = self.service.metadata_url - if not self.service.is_global and not self.service_url: - raise ValidationError(_('Service URL field is required')) + super(ServiceInstance, self).clean() + if self.service_id: + if self.collectivity and self.service.is_global: + qs = ServiceInstance.objects.exclude(id=self.id) + qs = qs.filter(collectivity=self.collectivity, + service=self.service) + if qs.exists(): + raise ValidationError(_('There can be only one instance of a global service by collectivity')) + if self.service.is_global: + self.service_url = self.service.service_url + self.metadata_url = self.service.metadata_url + self.cas_service_url = self.service.cas_service_url + if not self.service.is_global and not self.service_url: + raise ValidationError(_('Service URL field is required')) class Meta: verbose_name = _('service instance')