Revision 4e30244e snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
45 | 45 |
from django.utils.safestring import mark_safe |
46 | 46 |
|
47 | 47 |
from astakos.im.models import AstakosUser, Invitation |
48 |
from astakos.im.settings import INVITATIONS_PER_LEVEL, DEFAULT_FROM_EMAIL, BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY, DEFAULT_CONTACT_EMAIL, RECAPTCHA_ENABLED
|
|
48 |
from astakos.im.settings import INVITATIONS_PER_LEVEL, DEFAULT_FROM_EMAIL, SITENAME, RECAPTCHA_PRIVATE_KEY, DEFAULT_CONTACT_EMAIL, RECAPTCHA_ENABLED |
|
49 | 49 |
from astakos.im.widgets import DummyWidget, RecaptchaWidget, ApprovalTermsWidget |
50 | 50 |
|
51 | 51 |
# since Django 1.4 use django.core.urlresolvers.reverse_lazy instead |
... | ... | |
160 | 160 |
super(InvitedLocalUserCreationForm, self).__init__(*args, **kwargs) |
161 | 161 |
|
162 | 162 |
#set readonly form fields |
163 |
self.fields['inviter'].widget.attrs['readonly'] = True |
|
164 |
self.fields['email'].widget.attrs['readonly'] = True |
|
165 |
self.fields['username'].widget.attrs['readonly'] = True |
|
163 |
ro = ('inviter', 'email', 'username',) |
|
164 |
for f in ro: |
|
165 |
self.fields[f].widget.attrs['readonly'] = True |
|
166 |
|
|
166 | 167 |
|
167 | 168 |
def save(self, commit=True): |
168 | 169 |
user = super(InvitedLocalUserCreationForm, self).save(commit=False) |
... | ... | |
230 | 231 |
logger.info('Created user %s', user) |
231 | 232 |
return user |
232 | 233 |
|
234 |
#class InvitedThirdPartyUserCreationForm(ThirdPartyUserCreationForm): |
|
235 |
# def __init__(self, *args, **kwargs): |
|
236 |
# super(InvitedThirdPartyUserCreationForm, self).__init__(*args, **kwargs) |
|
237 |
# #set readonly form fields |
|
238 |
# self.fields['email'].widget.attrs['readonly'] = True |
|
239 |
|
|
233 | 240 |
class InvitedThirdPartyUserCreationForm(ThirdPartyUserCreationForm): |
241 |
""" |
|
242 |
Extends the LocalUserCreationForm: adds an inviter readonly field. |
|
243 |
""" |
|
244 |
inviter = forms.CharField(widget=forms.TextInput(), label=_('Inviter Real Name')) |
|
245 |
|
|
234 | 246 |
def __init__(self, *args, **kwargs): |
247 |
""" |
|
248 |
Changes the order of fields, and removes the username field. |
|
249 |
""" |
|
235 | 250 |
super(InvitedThirdPartyUserCreationForm, self).__init__(*args, **kwargs) |
251 |
|
|
236 | 252 |
#set readonly form fields |
237 |
self.fields['email'].widget.attrs['readonly'] = True |
|
253 |
ro = ('inviter', 'email',) |
|
254 |
for f in ro: |
|
255 |
self.fields[f].widget.attrs['readonly'] = True |
|
256 |
|
|
257 |
def save(self, commit=True): |
|
258 |
user = super(InvitedThirdPartyUserCreationForm, self).save(commit=False) |
|
259 |
level = user.invitation.inviter.level + 1 |
|
260 |
user.level = level |
|
261 |
user.invitations = INVITATIONS_PER_LEVEL.get(level, 0) |
|
262 |
user.email_verified = True |
|
263 |
if commit: |
|
264 |
user.save() |
|
265 |
return user |
|
238 | 266 |
|
239 | 267 |
class ShibbolethUserCreationForm(ThirdPartyUserCreationForm): |
240 | 268 |
def clean_email(self): |
... | ... | |
250 | 278 |
raise forms.ValidationError(_("This email is already associated with another shibboleth account.")) |
251 | 279 |
except AstakosUser.DoesNotExist: |
252 | 280 |
return email |
281 |
|
|
282 |
class InvitedShibbolethUserCreationForm(InvitedThirdPartyUserCreationForm): |
|
283 |
pass |
|
253 | 284 |
|
254 | 285 |
class LoginForm(AuthenticationForm): |
255 | 286 |
username = forms.EmailField(label=_("Email")) |
... | ... | |
326 | 357 |
'url': url, |
327 | 358 |
'site_name': SITENAME, |
328 | 359 |
'user': user, |
329 |
'baseurl': BASEURL,
|
|
360 |
'baseurl': request.build_absolute_uri(),
|
|
330 | 361 |
'support': DEFAULT_CONTACT_EMAIL |
331 | 362 |
} |
332 | 363 |
from_email = DEFAULT_FROM_EMAIL |
Also available in: Unified diff