Skip to content

Commit aa4ddc0

Browse files
committed
Limited the biography and photo uploading to people who have been assigned a role.
- Legacy-Id: 11283
1 parent c4b59f0 commit aa4ddc0

2 files changed

Lines changed: 27 additions & 11 deletions

File tree

ietf/ietfauth/forms.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from django.utils.html import mark_safe
88
from django.core.urlresolvers import reverse as urlreverse
99

10+
import debug # pyflakes:ignore
11+
1012
from ietf.person.models import Person, Email
1113

1214

@@ -43,16 +45,30 @@ def ascii_cleaner(supposedly_ascii):
4345
raise forms.ValidationError("Please only enter ASCII characters.")
4446
return supposedly_ascii
4547

46-
class PersonForm(ModelForm):
47-
class Meta:
48-
model = Person
49-
exclude = ('time', 'user')
48+
def get_person_form(*args, **kwargs):
49+
50+
exclude_list = ['time', 'user', 'photo_thumb', ]
51+
52+
person = kwargs['instance']
53+
roles = person.role_set.all()
54+
if not roles:
55+
exclude_list += ['biography', 'photo', ]
56+
57+
class PersonForm(ModelForm):
58+
class Meta:
59+
model = Person
60+
exclude = exclude_list
61+
62+
def __init__(self, *args, **kwargs):
63+
super(ModelForm, self).__init__(*args, **kwargs)
64+
65+
def clean_ascii(self):
66+
return ascii_cleaner(self.cleaned_data.get("ascii") or u"")
5067

51-
def clean_ascii(self):
52-
return ascii_cleaner(self.cleaned_data.get("ascii") or u"")
68+
def clean_ascii_short(self):
69+
return ascii_cleaner(self.cleaned_data.get("ascii_short") or u"")
5370

54-
def clean_ascii_short(self):
55-
return ascii_cleaner(self.cleaned_data.get("ascii_short") or u"")
71+
return PersonForm(*args, **kwargs)
5672

5773

5874
class NewEmailForm(forms.Form):

ietf/ietfauth/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
from ietf.group.models import Role
4646
from ietf.ietfauth.forms import RegistrationForm, PasswordForm, ResetPasswordForm, TestEmailForm
47-
from ietf.ietfauth.forms import PersonForm, RoleEmailForm, NewEmailForm
47+
from ietf.ietfauth.forms import get_person_form, RoleEmailForm, NewEmailForm
4848
from ietf.ietfauth.htpasswd import update_htpasswd_file
4949
from ietf.person.models import Person, Email, Alias
5050
from ietf.utils.mail import send_mail
@@ -175,7 +175,7 @@ def profile(request):
175175
new_email_forms = []
176176

177177
if request.method == 'POST':
178-
person_form = PersonForm(request.POST, instance=person)
178+
person_form = get_person_form(request.POST, instance=person)
179179
for r in roles:
180180
r.email_form = RoleEmailForm(r, request.POST, prefix="role_%s" % r.pk)
181181

@@ -236,7 +236,7 @@ def profile(request):
236236
for r in roles:
237237
r.email_form = RoleEmailForm(r, prefix="role_%s" % r.pk)
238238

239-
person_form = PersonForm(instance=person)
239+
person_form = get_person_form(instance=person)
240240

241241
return render(request, 'registration/edit_profile.html', {
242242
'user': request.user,

0 commit comments

Comments
 (0)