Skip to content

Commit 660d2a1

Browse files
authored
Merge pull request #4967 from dojutsu-user/validate-tags-length-100-characters
Add validation for tags of length greater than 100 characters
2 parents 070458c + a7b3656 commit 660d2a1

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

readthedocs/projects/forms.py

+9
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,15 @@ class Meta(object):
182182
widget=forms.Textarea,
183183
)
184184

185+
def clean_tags(self):
186+
tags = self.cleaned_data.get('tags', [])
187+
for tag in tags:
188+
if len(tag) > 100:
189+
raise forms.ValidationError(
190+
_('Length of each tag must be less than or equal to 100 characters.')
191+
)
192+
return tags
193+
185194

186195
class ProjectAdvancedForm(ProjectTriggerBuildMixin, ProjectForm):
187196

readthedocs/rtd_tests/tests/test_project_forms.py

+20
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,26 @@ def test_changing_vcs_should_not_change_latest_is_not_none(self):
163163
latest.refresh_from_db()
164164
self.assertEqual(latest.identifier, 'custom')
165165

166+
def test_length_of_tags(self):
167+
data = {
168+
'documentation_type': 'sphinx',
169+
'language': 'en'
170+
}
171+
data['tags'] = '{},{}'.format('a'*50, 'b'*99)
172+
form = ProjectExtraForm(data)
173+
self.assertTrue(form.is_valid())
174+
175+
data['tags'] = '{},{}'.format('a'*90, 'b'*100)
176+
form = ProjectExtraForm(data)
177+
self.assertTrue(form.is_valid())
178+
179+
data['tags'] = '{},{}'.format('a'*99, 'b'*101)
180+
form = ProjectExtraForm(data)
181+
self.assertFalse(form.is_valid())
182+
self.assertTrue(form.has_error('tags'))
183+
error_msg = 'Length of each tag must be less than or equal to 100 characters.'
184+
self.assertDictEqual(form.errors, {'tags': [error_msg]})
185+
166186

167187
class TestProjectAdvancedForm(TestCase):
168188

0 commit comments

Comments
 (0)