equal
deleted
inserted
replaced
27 |
27 |
28 from django import forms |
28 from django import forms |
29 |
29 |
30 from soc.logic import dicts |
30 from soc.logic import dicts |
31 from soc.logic import validate |
31 from soc.logic import validate |
32 from soc.logic.models import user as user_logic |
32 from soc.logic.models.site import logic as site_logic |
|
33 from soc.logic.models.user import logic as user_logic |
33 from soc.views import helper |
34 from soc.views import helper |
|
35 from soc.views.helper import responses |
34 from soc.views.models import base |
36 from soc.views.models import base |
35 |
37 |
36 import soc.models.linkable |
38 import soc.models.linkable |
37 import soc.models.user |
39 import soc.models.user |
38 import soc.logic.models.user |
40 import soc.logic.models.user |
78 |
80 |
79 link_id_user = soc.logic.models.user.logic.getForFields(properties, |
81 link_id_user = soc.logic.models.user.logic.getForFields(properties, |
80 unique=True) |
82 unique=True) |
81 key_name = self.data.get('key_name') |
83 key_name = self.data.get('key_name') |
82 if key_name: |
84 if key_name: |
83 key_name_user = user_logic.logic.getFromKeyName(key_name) |
85 key_name_user = user_logic.getFromKeyName(key_name) |
84 |
86 |
85 if (link_id_user and key_name_user |
87 if (link_id_user and key_name_user |
86 and (link_id_user.account != key_name_user.account)): |
88 and (link_id_user.account != key_name_user.account)): |
87 raise forms.ValidationError("This link ID is already in use.") |
89 raise forms.ValidationError("This link ID is already in use.") |
88 |
90 |
90 |
92 |
91 def clean_email(self): |
93 def clean_email(self): |
92 form_account = users.User(email=self.cleaned_data.get('email')) |
94 form_account = users.User(email=self.cleaned_data.get('email')) |
93 key_name = self.data.get('key_name') |
95 key_name = self.data.get('key_name') |
94 if key_name: |
96 if key_name: |
95 user = user_logic.logic.getFromKeyName(key_name) |
97 user = user_logic.getFromKeyName(key_name) |
96 old_email = user.account.email() |
98 old_email = user.account.email() |
97 else: |
99 else: |
98 old_email = None |
100 old_email = None |
99 |
101 |
100 new_email = form_account.email() |
102 new_email = form_account.email() |
101 |
103 |
102 if new_email != old_email \ |
104 if new_email != old_email \ |
103 and user_logic.logic.getForFields({'email': new_email}, unique=True): |
105 and user_logic.getForFields({'email': new_email}, unique=True): |
104 raise forms.ValidationError("This account is already in use.") |
106 raise forms.ValidationError("This account is already in use.") |
105 |
107 |
106 return self.cleaned_data.get('email') |
108 return self.cleaned_data.get('email') |
107 |
109 |
108 |
110 |
147 """See base.View._editGet(). |
149 """See base.View._editGet(). |
148 """ |
150 """ |
149 |
151 |
150 # fill in the email field with the data from the entity |
152 # fill in the email field with the data from the entity |
151 form.fields['email'].initial = entity.account.email() |
153 form.fields['email'].initial = entity.account.email() |
|
154 form.fields['agrees_to_tos'].example_text = self._getToSExampleText() |
152 |
155 |
153 super(View, self)._editGet(request, entity, form) |
156 super(View, self)._editGet(request, entity, form) |
154 |
157 |
155 def _editPost(self, request, entity, fields): |
158 def _editPost(self, request, entity, fields): |
156 """See base.View._editPost(). |
159 """See base.View._editPost(). |
159 # fill in the account field with the user created from email |
162 # fill in the account field with the user created from email |
160 fields['account'] = users.User(fields['email']) |
163 fields['account'] = users.User(fields['email']) |
161 |
164 |
162 super(View, self)._editPost(request, entity, fields) |
165 super(View, self)._editPost(request, entity, fields) |
163 |
166 |
|
167 def _getToSExampleText(self): |
|
168 """Returns example_text linking to site-wide ToS, or a warning message. |
|
169 """ |
|
170 tos_link = responses.getToSLink(site_logic.getSingleton()) |
|
171 |
|
172 if not tos_link: |
|
173 return ('<div class="notice"> <i>No site-wide</i> Terms of' |
|
174 ' Service <i>are currently set!</i> </div>') |
|
175 |
|
176 return ('<i>current site-wide <b><a href=%s>Terms of Service</a></b></i>' |
|
177 % tos_link) |
|
178 |
|
179 |
164 view = View() |
180 view = View() |
165 |
181 |
166 create = view.create |
182 create = view.create |
167 delete = view.delete |
183 delete = view.delete |
168 edit = view.edit |
184 edit = view.edit |