Skip to content

Commit d06d47b

Browse files
authored
Merge pull request #4721 from dojutsu-user/gold-member-add-project-form
Fix the form for adopting a project
2 parents 8916742 + 728c9d0 commit d06d47b

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

readthedocs/gold/forms.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
from builtins import object
66
from django import forms
77

8+
from django.utils.translation import ugettext_lazy as _
9+
810
from readthedocs.payments.forms import StripeModelForm, StripeResourceMixin
11+
from readthedocs.projects.models import Project
912

1013
from .models import LEVEL_CHOICES, GoldUser
1114

@@ -88,6 +91,14 @@ def __init__(self, *args, **kwargs):
8891
self.projects = kwargs.pop('projects', None)
8992
super(GoldProjectForm, self).__init__(*args, **kwargs)
9093

94+
def clean_project(self):
95+
project_slug = self.cleaned_data.get('project', '')
96+
project_instance = Project.objects.filter(slug=project_slug)
97+
if not project_instance.exists():
98+
raise forms.ValidationError(_('No project found.'))
99+
else:
100+
return project_slug
101+
91102
def clean(self):
92103
cleaned_data = super(GoldProjectForm, self).clean()
93104
if self.projects.count() < self.user.num_supported_projects:

readthedocs/rtd_tests/tests/test_gold.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ def test_adding_projects(self):
2626
self.assertEqual(self.golduser.projects.count(), 1)
2727
self.assertEqual(resp.status_code, 302)
2828

29+
def test_incorrect_input_when_adding_projects(self):
30+
self.assertEqual(self.golduser.projects.count(), 0)
31+
incorrect_slug = 'xyz-random-incorrect-slug-xyz'
32+
self.assertEqual(Project.objects.filter(slug=incorrect_slug).count(), 0)
33+
resp = self.client.post(reverse('gold_projects'), data={'project': incorrect_slug})
34+
self.assertFormError(resp, form='form', field='project', errors='No project found.')
35+
2936
def test_too_many_projects(self):
3037
self.project2 = get(Project, slug='test2')
3138

0 commit comments

Comments
 (0)