diff --git a/judge/forms.py b/judge/forms.py index f8511fbc4..0a0de4325 100755 --- a/judge/forms.py +++ b/judge/forms.py @@ -198,7 +198,7 @@ def clean_code(self): if self.org_pk is None: return code org = Organization.objects.get(pk=self.org_pk) - prefix = ''.join(x for x in org.slug.lower() if x.isalpha()) + '_' + prefix = ''.join(x for x in org.slug.lower() if x.isalnum()) + '_' if not code.startswith(prefix): raise forms.ValidationError(_('Problem id code must starts with `%s`') % (prefix, ), 'problem_id_invalid_prefix') @@ -692,7 +692,7 @@ def clean_key(self): if self.org_pk is None: return key org = Organization.objects.get(pk=self.org_pk) - prefix = ''.join(x for x in org.slug.lower() if x.isalpha()) + '_' + prefix = ''.join(x for x in org.slug.lower() if x.isalnum()) + '_' if not key.startswith(prefix): raise forms.ValidationError(_('Contest id must starts with `%s`') % (prefix, ), 'contest_id_invalid_prefix') diff --git a/judge/views/organization.py b/judge/views/organization.py index ba26a83c2..54fb59390 100644 --- a/judge/views/organization.py +++ b/judge/views/organization.py @@ -604,7 +604,7 @@ class ProblemCreateOrganization(AdminOrganizationMixin, ProblemCreate): def get_initial(self): initial = super(ProblemCreateOrganization, self).get_initial() initial = initial.copy() - initial['code'] = ''.join(x for x in self.organization.slug.lower() if x.isalpha()) + '_' + initial['code'] = ''.join(x for x in self.organization.slug.lower() if x.isalnum()) + '_' return initial def get_form_kwargs(self): @@ -644,7 +644,7 @@ def form_valid(self, form): with revisions.create_revision(atomic=True): post = form.save() post.authors.add(self.request.user.profile) - post.slug = ''.join(x for x in self.organization.slug.lower() if x.isalpha()) # Initial post slug + post.slug = ''.join(x for x in self.organization.slug.lower() if x.isalnum()) # Initial post slug post.organization = self.organization post.save() @@ -660,7 +660,7 @@ class ContestCreateOrganization(AdminOrganizationMixin, CreateContest): def get_initial(self): initial = super(ContestCreateOrganization, self).get_initial() initial = initial.copy() - initial['key'] = ''.join(x for x in self.organization.slug.lower() if x.isalpha()) + '_' + initial['key'] = ''.join(x for x in self.organization.slug.lower() if x.isalnum()) + '_' return initial def get_form_kwargs(self):