Revision d8f63346
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
48 | 48 |
from astakos.im.widgets import DummyWidget, RecaptchaWidget, ApprovalTermsWidget |
49 | 49 |
|
50 | 50 |
# since Django 1.4 use django.core.urlresolvers.reverse_lazy instead |
51 |
from astakos.im.util import reverse_lazy |
|
51 |
from astakos.im.util import reverse_lazy, get_latest_terms
|
|
52 | 52 |
|
53 | 53 |
import logging |
54 | 54 |
import recaptcha.client.captcha as captcha |
... | ... | |
80 | 80 |
kwargs.pop('ip') |
81 | 81 |
super(LocalUserCreationForm, self).__init__(*args, **kwargs) |
82 | 82 |
self.fields.keyOrder = ['email', 'first_name', 'last_name', |
83 |
'password1', 'password2', |
|
84 |
'has_signed_terms'] |
|
83 |
'password1', 'password2'] |
|
84 |
if get_latest_terms(): |
|
85 |
self.fields.keyOrder.append('has_signed_terms') |
|
85 | 86 |
if RECAPTCHA_ENABLED: |
86 | 87 |
self.fields.keyOrder.extend(['recaptcha_challenge_field', |
87 | 88 |
'recaptcha_response_field',]) |
... | ... | |
149 | 150 |
Changes the order of fields, and removes the username field. |
150 | 151 |
""" |
151 | 152 |
super(InvitedLocalUserCreationForm, self).__init__(*args, **kwargs) |
152 |
self.fields.keyOrder = ['email', 'inviter', 'first_name', |
|
153 |
'last_name', 'password1', 'password2', |
|
154 |
'has_signed_terms'] |
|
155 |
if RECAPTCHA_ENABLED: |
|
156 |
self.fields.keyOrder.extend(['recaptcha_challenge_field', |
|
157 |
'recaptcha_response_field',]) |
|
158 | 153 |
|
159 | 154 |
#set readonly form fields |
160 | 155 |
self.fields['inviter'].widget.attrs['readonly'] = True |
b/snf-astakos-app/astakos/im/util.py | ||
---|---|---|
175 | 175 |
def reverse_lazy(*args, **kwargs): |
176 | 176 |
return lazy_string(reverse, *args, **kwargs) |
177 | 177 |
|
178 |
def has_signed_terms(user):
|
|
178 |
def get_latest_terms():
|
|
179 | 179 |
try: |
180 | 180 |
term = ApprovalTerms.objects.order_by('-id')[0] |
181 |
if not user.has_signed_terms: |
|
182 |
return False |
|
183 |
if not user.date_signed_terms: |
|
184 |
return False |
|
185 |
if user.date_signed_terms < term.date: |
|
186 |
user.has_signed_terms = False |
|
187 |
user.save() |
|
188 |
return False |
|
181 |
return term |
|
189 | 182 |
except IndexError: |
190 | 183 |
pass |
191 |
return True |
|
184 |
return None |
|
185 |
|
|
186 |
def has_signed_terms(user): |
|
187 |
term = get_latest_terms() |
|
188 |
if not term: |
|
189 |
return True |
|
190 |
if not user.has_signed_terms: |
|
191 |
return False |
|
192 |
if not user.date_signed_terms: |
|
193 |
return False |
|
194 |
if user.date_signed_terms < term.date: |
|
195 |
user.has_signed_terms = False |
|
196 |
user.save() |
|
197 |
return False |
Also available in: Unified diff