seperate error messages and add some tags in (bug 614710)
This commit is contained in:
Родитель
a69e2b5a8a
Коммит
e35fc54772
|
@ -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;
|
Загрузка…
Ссылка в новой задаче