Limited the biography and photo uploading to people who have been assigned a role.

- Legacy-Id: 11283
This commit is contained in:
Henrik Levkowetz 2016-06-06 12:42:24 +00:00
parent c4b59f0363
commit aa4ddc00e2
2 changed files with 27 additions and 11 deletions

View file

@ -7,6 +7,8 @@ from django.contrib.auth.models import User
from django.utils.html import mark_safe
from django.core.urlresolvers import reverse as urlreverse
import debug # pyflakes:ignore
from ietf.person.models import Person, Email
@ -43,16 +45,30 @@ def ascii_cleaner(supposedly_ascii):
raise forms.ValidationError("Please only enter ASCII characters.")
return supposedly_ascii
class PersonForm(ModelForm):
class Meta:
model = Person
exclude = ('time', 'user')
def get_person_form(*args, **kwargs):
def clean_ascii(self):
return ascii_cleaner(self.cleaned_data.get("ascii") or u"")
exclude_list = ['time', 'user', 'photo_thumb', ]
def clean_ascii_short(self):
return ascii_cleaner(self.cleaned_data.get("ascii_short") or u"")
person = kwargs['instance']
roles = person.role_set.all()
if not roles:
exclude_list += ['biography', 'photo', ]
class PersonForm(ModelForm):
class Meta:
model = Person
exclude = exclude_list
def __init__(self, *args, **kwargs):
super(ModelForm, self).__init__(*args, **kwargs)
def clean_ascii(self):
return ascii_cleaner(self.cleaned_data.get("ascii") or u"")
def clean_ascii_short(self):
return ascii_cleaner(self.cleaned_data.get("ascii_short") or u"")
return PersonForm(*args, **kwargs)
class NewEmailForm(forms.Form):

View file

@ -44,7 +44,7 @@ from django.contrib.auth.models import User
from ietf.group.models import Role
from ietf.ietfauth.forms import RegistrationForm, PasswordForm, ResetPasswordForm, TestEmailForm
from ietf.ietfauth.forms import PersonForm, RoleEmailForm, NewEmailForm
from ietf.ietfauth.forms import get_person_form, RoleEmailForm, NewEmailForm
from ietf.ietfauth.htpasswd import update_htpasswd_file
from ietf.person.models import Person, Email, Alias
from ietf.utils.mail import send_mail
@ -175,7 +175,7 @@ def profile(request):
new_email_forms = []
if request.method == 'POST':
person_form = PersonForm(request.POST, instance=person)
person_form = get_person_form(request.POST, instance=person)
for r in roles:
r.email_form = RoleEmailForm(r, request.POST, prefix="role_%s" % r.pk)
@ -236,7 +236,7 @@ def profile(request):
for r in roles:
r.email_form = RoleEmailForm(r, prefix="role_%s" % r.pk)
person_form = PersonForm(instance=person)
person_form = get_person_form(instance=person)
return render(request, 'registration/edit_profile.html', {
'user': request.user,