Revision 270dd48d snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
31 | 31 |
# interpreted as representing official policies, either expressed |
32 | 32 |
# or implied, of GRNET S.A. |
33 | 33 |
from urlparse import urljoin |
34 |
from datetime import datetime |
|
34 | 35 |
|
35 | 36 |
from django import forms |
36 | 37 |
from django.utils.translation import ugettext as _ |
... | ... | |
40 | 41 |
from django.template import Context, loader |
41 | 42 |
from django.utils.http import int_to_base36 |
42 | 43 |
from django.core.urlresolvers import reverse |
44 |
from django.utils.functional import lazy |
|
43 | 45 |
|
44 | 46 |
from astakos.im.models import AstakosUser |
45 | 47 |
from astakos.im.settings import INVITATIONS_PER_LEVEL, DEFAULT_FROM_EMAIL, BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY, DEFAULT_CONTACT_EMAIL |
46 |
from astakos.im.widgets import DummyWidget, RecaptchaWidget |
|
48 |
from astakos.im.widgets import DummyWidget, RecaptchaWidget, ApprovalTermsWidget |
|
49 |
|
|
50 |
# since Django 1.4 use django.core.urlresolvers.reverse_lazy instead |
|
51 |
from astakos.im.util import reverse_lazy |
|
47 | 52 |
|
48 | 53 |
import logging |
49 | 54 |
import recaptcha.client.captcha as captcha |
... | ... | |
63 | 68 |
|
64 | 69 |
class Meta: |
65 | 70 |
model = AstakosUser |
66 |
fields = ("email", "first_name", "last_name") |
|
71 |
fields = ("email", "first_name", "last_name", "has_signed_terms") |
|
72 |
widgets = {"has_signed_terms":ApprovalTermsWidget(terms_uri=reverse_lazy('latest_terms'))} |
|
67 | 73 |
|
68 | 74 |
def __init__(self, *args, **kwargs): |
69 | 75 |
""" |
... | ... | |
75 | 81 |
super(LocalUserCreationForm, self).__init__(*args, **kwargs) |
76 | 82 |
self.fields.keyOrder = ['email', 'first_name', 'last_name', |
77 | 83 |
'password1', 'password2', |
84 |
'has_signed_terms', |
|
78 | 85 |
'recaptcha_challenge_field', |
79 |
'recaptcha_response_field'] |
|
86 |
'recaptcha_response_field',]
|
|
80 | 87 |
|
81 | 88 |
def clean_email(self): |
82 | 89 |
email = self.cleaned_data['email'] |
... | ... | |
88 | 95 |
except AstakosUser.DoesNotExist: |
89 | 96 |
return email |
90 | 97 |
|
98 |
def clean_has_signed_terms(self): |
|
99 |
has_signed_terms = self.cleaned_data['has_signed_terms'] |
|
100 |
if not has_signed_terms: |
|
101 |
raise forms.ValidationError(_('You have to agree with the terms')) |
|
102 |
return has_signed_terms |
|
103 |
|
|
91 | 104 |
def clean_recaptcha_response_field(self): |
92 | 105 |
if 'recaptcha_challenge_field' in self.cleaned_data: |
93 | 106 |
self.validate_captcha() |
... | ... | |
112 | 125 |
""" |
113 | 126 |
user = super(LocalUserCreationForm, self).save(commit=False) |
114 | 127 |
user.renew_token() |
128 |
user.date_signed_terms = datetime.now() |
|
115 | 129 |
if commit: |
116 | 130 |
user.save() |
117 | 131 |
logger.info('Created user %s', user) |
... | ... | |
126 | 140 |
|
127 | 141 |
class Meta: |
128 | 142 |
model = AstakosUser |
129 |
fields = ("email", "first_name", "last_name") |
|
143 |
fields = ("email", "first_name", "last_name", "has_signed_terms") |
|
144 |
widgets = {"has_signed_terms":ApprovalTermsWidget(terms_uri=reverse_lazy('latest_terms'))} |
|
130 | 145 |
|
131 | 146 |
def __init__(self, *args, **kwargs): |
132 | 147 |
""" |
... | ... | |
135 | 150 |
super(InvitedLocalUserCreationForm, self).__init__(*args, **kwargs) |
136 | 151 |
self.fields.keyOrder = ['email', 'inviter', 'first_name', |
137 | 152 |
'last_name', 'password1', 'password2', |
153 |
'has_signed_terms', |
|
138 | 154 |
'recaptcha_challenge_field', |
139 | 155 |
'recaptcha_response_field'] |
140 | 156 |
#set readonly form fields |
... | ... | |
270 | 286 |
from_email = DEFAULT_FROM_EMAIL |
271 | 287 |
send_mail(_("Password reset on %s alpha2 testing") % SITENAME, |
272 | 288 |
t.render(Context(c)), from_email, [user.email]) |
289 |
|
|
290 |
class SignApprovalTermsForm(forms.ModelForm): |
|
291 |
class Meta: |
|
292 |
model = AstakosUser |
|
293 |
fields = ("has_signed_terms",) |
|
294 |
|
|
295 |
def __init__(self, *args, **kwargs): |
|
296 |
super(SignApprovalTermsForm, self).__init__(*args, **kwargs) |
|
297 |
|
|
298 |
def clean_has_signed_terms(self): |
|
299 |
has_signed_terms = self.cleaned_data['has_signed_terms'] |
|
300 |
if not has_signed_terms: |
|
301 |
raise forms.ValidationError(_('You have to agree with the terms')) |
|
302 |
return has_signed_terms |
|
303 |
|
|
304 |
def save(self, commit=True): |
|
305 |
""" |
|
306 |
Saves the , after the normal |
|
307 |
save behavior is complete. |
|
308 |
""" |
|
309 |
user = super(SignApprovalTermsForm, self).save(commit=False) |
|
310 |
user.date_signed_terms = datetime.now() |
|
311 |
if commit: |
|
312 |
user.save() |
|
313 |
return user |
Also available in: Unified diff