Revision 678b2236 snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
46 | 46 |
from django.utils.safestring import mark_safe |
47 | 47 |
from django.contrib import messages |
48 | 48 |
from django.utils.encoding import smart_str |
49 |
from django.forms.models import fields_for_model |
|
49 | 50 |
|
50 |
from astakos.im.models import AstakosUser, Invitation, get_latest_terms, EmailChange |
|
51 |
from astakos.im.models import ( |
|
52 |
AstakosUser, Invitation, get_latest_terms, |
|
53 |
EmailChange, PendingThirdPartyUser |
|
54 |
) |
|
51 | 55 |
from astakos.im.settings import (INVITATIONS_PER_LEVEL, DEFAULT_FROM_EMAIL, |
52 | 56 |
BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY, DEFAULT_CONTACT_EMAIL, |
53 | 57 |
RECAPTCHA_ENABLED, LOGGING_LEVEL, PASSWORD_RESET_EMAIL_SUBJECT, |
... | ... | |
189 | 193 |
) |
190 | 194 |
class Meta: |
191 | 195 |
model = AstakosUser |
192 |
fields = ("email", "first_name", "last_name", "third_party_identifier", "has_signed_terms")
|
|
196 |
fields = ['email', 'third_party_identifier']
|
|
193 | 197 |
|
194 | 198 |
def __init__(self, *args, **kwargs): |
195 | 199 |
""" |
... | ... | |
202 | 206 |
latest_terms = get_latest_terms() |
203 | 207 |
if latest_terms: |
204 | 208 |
self._meta.fields.append('has_signed_terms') |
205 |
|
|
209 |
|
|
206 | 210 |
super(ThirdPartyUserCreationForm, self).__init__(*args, **kwargs) |
207 | 211 |
|
208 | 212 |
if latest_terms: |
... | ... | |
215 | 219 |
% (reverse('latest_terms'), _("the terms")) |
216 | 220 |
self.fields['has_signed_terms'].label = \ |
217 | 221 |
mark_safe("I agree with %s" % terms_link_html) |
218 |
|
|
222 |
|
|
223 |
default = fields_for_model( |
|
224 |
self._meta.model, |
|
225 |
THIRDPARTY_ACC_ADDITIONAL_FIELDS.keys() |
|
226 |
) |
|
227 |
for fname, field in THIRDPARTY_ACC_ADDITIONAL_FIELDS.iteritems(): |
|
228 |
if field: |
|
229 |
self.fields[fname] = field |
|
230 |
self.fields.setdefault(fname, default.get(fname)) |
|
231 |
self.initial[fname] = getattr(self.instance, fname, None) |
|
232 |
|
|
219 | 233 |
def clean_email(self): |
220 | 234 |
email = self.cleaned_data['email'] |
221 | 235 |
if not email: |
... | ... | |
287 | 301 |
raise forms.ValidationError(_("This email is already used")) |
288 | 302 |
super(ShibbolethUserCreationForm, self).clean_email() |
289 | 303 |
return email |
304 |
|
|
305 |
def save(self, commit=True): |
|
306 |
user = super(ShibbolethUserCreationForm, self).save(commit=False) |
|
307 |
try: |
|
308 |
p = PendingThirdPartyUser.objects.get( |
|
309 |
provider=user.provider, |
|
310 |
third_party_identifier=user.third_party_identifier |
|
311 |
) |
|
312 |
except: |
|
313 |
pass |
|
314 |
else: |
|
315 |
p.delete() |
|
316 |
return user |
|
290 | 317 |
|
291 | 318 |
class InvitedShibbolethUserCreationForm(ShibbolethUserCreationForm, InvitedThirdPartyUserCreationForm): |
292 | 319 |
pass |
Also available in: Unified diff