environment: Service title unicity (#35392)
This commit is contained in:
parent
0ed638b83e
commit
6123b1bce2
|
@ -163,8 +163,12 @@ class ServiceBase(models.Model):
|
|||
|
||||
def clean(self, *args, **kwargs):
|
||||
for service in get_installed_services():
|
||||
if service.slug == self.slug and service.id != self.id:
|
||||
if self.pk == service.pk:
|
||||
continue
|
||||
if service.slug == self.slug:
|
||||
raise ValidationError(_('This slug is already used. It must be unique.'))
|
||||
if service.title == self.title:
|
||||
raise ValidationError(_('This title is already used. It must be unique.'))
|
||||
return super(ServiceBase, self).clean(*args, **kwargs)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pytest
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils import timezone
|
||||
|
||||
|
@ -47,9 +46,33 @@ def test_unique_slug():
|
|||
assert e.value.messages[0] == u'This slug is already used. It must be unique.'
|
||||
|
||||
|
||||
def test_unique_title():
|
||||
Combo.objects.create(
|
||||
title='Combo test',
|
||||
slug='bar',
|
||||
last_operational_success_timestamp=timezone.now(),
|
||||
last_operational_check_timestamp=timezone.now(),
|
||||
secret_key='1nesüper5Cr!eteKAaY~',
|
||||
base_url='http://example.com'
|
||||
)
|
||||
|
||||
combo = Combo(
|
||||
title='Combo test',
|
||||
slug='foo',
|
||||
last_operational_success_timestamp=timezone.now(),
|
||||
last_operational_check_timestamp=timezone.now(),
|
||||
secret_key='1nesüper5Cr!eteKAaY~',
|
||||
base_url='http://example.com'
|
||||
)
|
||||
|
||||
with pytest.raises(ValidationError) as e:
|
||||
combo.clean()
|
||||
|
||||
assert e.value.messages[0] == u'This title is already used. It must be unique.'
|
||||
|
||||
|
||||
def test_base_url_field_validator():
|
||||
kwargs = {'title': 'Combo test',
|
||||
'last_operational_success_timestamp': timezone.now(),
|
||||
kwargs = {'last_operational_success_timestamp': timezone.now(),
|
||||
'last_operational_check_timestamp': timezone.now(),
|
||||
'secret_key': '1nesüper5Cr!eteKAaY~'}
|
||||
cpt = 0 # slugs must be unique
|
||||
|
@ -58,7 +81,8 @@ def test_base_url_field_validator():
|
|||
for url in ('https://example.com', 'http://example.com'):
|
||||
cpt += 1
|
||||
slug = 'wesh' + str(cpt)
|
||||
combo = Combo(base_url=url, slug=slug ,**kwargs)
|
||||
title = 'Combo test ' + str(cpt)
|
||||
combo = Combo(base_url=url, slug=slug, title=title, **kwargs)
|
||||
combo.full_clean()
|
||||
combo.save()
|
||||
assert True # no exception raised
|
||||
|
@ -67,8 +91,9 @@ def test_base_url_field_validator():
|
|||
for url in ('example.com', 'http:/example.com', 'file:///home/me'):
|
||||
cpt += 1
|
||||
slug = 'wesh' + str(cpt)
|
||||
title = 'Combo test ' + str(cpt)
|
||||
with pytest.raises(ValidationError):
|
||||
combo = Combo(base_url=url, slug='wesh_'+str(cpt), **kwargs)
|
||||
combo = Combo(base_url=url, slug=slug, title=title, **kwargs)
|
||||
combo.full_clean()
|
||||
combo.save()
|
||||
|
||||
|
|
Loading…
Reference in New Issue