seperate error messages and add some tags in (bug 614710)

This commit is contained in:
Andy McKay 2011-02-11 15:33:55 -08:00
Родитель a69e2b5a8a
Коммит e35fc54772
3 изменённых файлов: 36 добавлений и 11 удалений

Просмотреть файл

@ -94,15 +94,21 @@ class AddonFormBasic(AddonFormBase):
max_tags = amo.MAX_TAGS
total = len(target)
blocked = []
for tag in Tag.objects.filter(tag_text__in=target):
if (len(tag.tag_text) > 0 and (tag.blacklisted or tag.restricted)):
blocked.append(tag.tag_text)
if blocked:
blacklisted = (Tag.objects.values_list('tag_text', flat=True)
.filter(tag_text__in=target, blacklisted=True))
if blacklisted:
# L10n: {0} is a single tag or a comma-separated list of tags.
msg = ngettext('Invalid tag: {0}', 'Invalid tags: {0}',
len(blocked)).format(', '.join(blocked))
len(blacklisted)).format(', '.join(blacklisted))
raise forms.ValidationError(msg)
restricted = (Tag.objects.values_list('tag_text', flat=True)
.filter(tag_text__in=target, restricted=True))
if restricted:
# L10n: {0} is a single tag or a comma-separated list of tags.
msg = ngettext('"{0}" is a reserved tag and cannot be used.',
'"{0}" are reserved tags and cannot be used.',
len(restricted)).format('", "'.join(restricted))
raise forms.ValidationError(msg)
if total > max_tags:

Просмотреть файл

@ -99,7 +99,7 @@ class TestTagsForm(test_utils.TestCase):
def add_tags(self, tags):
data = self.data.copy()
data.update({"tags": tags})
data.update({'tags': tags})
form = forms.AddonFormBasic(data=data, request=None,
instance=self.addon)
assert form.is_valid()
@ -130,9 +130,12 @@ class TestTagsForm(test_utils.TestCase):
self.add_tags(u'Österreich')
eq_(self.get_tag_text(), [u'Österreich'.lower()])
def add_restricted(self):
tag = Tag.objects.create(tag_text='restartless', restricted=True)
AddonTag.objects.create(tag=tag, addon=self.addon)
def add_restricted(self, *args):
if not args:
args = ['restartless']
for arg in args:
tag = Tag.objects.create(tag_text=arg, restricted=True)
AddonTag.objects.create(tag=tag, addon=self.addon)
def test_tags_restricted(self):
self.add_restricted()
@ -145,6 +148,20 @@ class TestTagsForm(test_utils.TestCase):
self.add_tags('')
eq_(self.get_tag_text(), ['restartless'])
def test_tags_error(self):
self.add_restricted('restartless', 'sdk')
data = self.data.copy()
data.update({'tags': 'restartless'})
form = forms.AddonFormBasic(data=data, request=None,
instance=self.addon)
eq_(form.errors['tags'][0],
'"restartless" is a reserved tag and cannot be used.')
data.update({'tags': 'restartless, sdk'})
form = forms.AddonFormBasic(data=data, request=None,
instance=self.addon)
eq_(form.errors['tags'][0],
'"restartless", "sdk" are reserved tags and cannot be used.')
def test_tags_restricted_count(self):
self.add_restricted()
self.add_tags(', '.join('tag-test-%s' % i for i in range(0, 20)))

Просмотреть файл

@ -0,0 +1,2 @@
insert into tags (tag_text, blacklisted, restricted) values ('restartless', 0, 1) on duplicate key update restricted = 1;
insert into tags (tag_text, blacklisted, restricted) values ('jetpack', 0, 1) on duplicate key update restricted = 1;