Dont traceback if ServiceInstance is not completely initialised

If .service_id is None, .service would raise.
This commit is contained in:
Benjamin Dauvergne 2015-06-16 12:25:47 +02:00
parent 083222b34c
commit d0cb1c3805
1 changed files with 14 additions and 11 deletions

View File

@ -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')