Revision 18ffbee1 snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
177 | 177 |
""" |
178 | 178 |
status = None |
179 | 179 |
message = None |
180 |
inviter = AstakosUser.objects.get(username = request.user.username) |
|
181 | 180 |
form = InvitationForm() |
182 | 181 |
|
182 |
inviter = request.user |
|
183 | 183 |
if request.method == 'POST': |
184 | 184 |
form = InvitationForm(request.POST) |
185 | 185 |
|
... | ... | |
187 | 187 |
if form.is_valid(): |
188 | 188 |
try: |
189 | 189 |
invitation = form.save() |
190 |
invitation.inviter = inviter |
|
191 | 190 |
invite_func(invitation, inviter) |
192 | 191 |
status = messages.SUCCESS |
193 | 192 |
message = _('Invitation sent to %s' % invitation.username) |
194 |
transaction.commit() |
|
195 | 193 |
except SendMailError, e: |
194 |
status = messages.ERROR |
|
196 | 195 |
message = e.message |
197 | 196 |
transaction.rollback() |
197 |
except BaseException, e: |
|
198 |
status = messages.ERROR |
|
199 |
message = _('Something went wrong.') |
|
200 |
logger.exception(e) |
|
201 |
transaction.rollback() |
|
202 |
else: |
|
203 |
transaction.commit() |
|
198 | 204 |
else: |
199 | 205 |
status = messages.ERROR |
200 | 206 |
message = _('No invitations left') |
... | ... | |
203 | 209 |
sent = [{'email': inv.username, |
204 | 210 |
'realname': inv.realname, |
205 | 211 |
'is_consumed': inv.is_consumed} |
206 |
for inv in inviter.invitations_sent.all()]
|
|
212 |
for inv in request.user.invitations_sent.all()]
|
|
207 | 213 |
kwargs = {'inviter': inviter, |
208 | 214 |
'sent':sent} |
209 | 215 |
context = get_context(request, extra_context, **kwargs) |
... | ... | |
266 | 272 |
context_instance = get_context(request, |
267 | 273 |
extra_context)) |
268 | 274 |
|
269 |
@transaction.commit_manually |
|
270 | 275 |
def signup(request, template_name='im/signup.html', on_success='im/signup_complete.html', extra_context={}, backend=None): |
271 | 276 |
""" |
272 | 277 |
Allows a user to create a local account. |
... | ... | |
305 | 310 |
""" |
306 | 311 |
if request.user.is_authenticated(): |
307 | 312 |
return HttpResponseRedirect(reverse('astakos.im.views.index')) |
308 |
if not backend: |
|
309 |
backend = get_backend(request) |
|
310 | 313 |
try: |
314 |
form = LocalUserCreationForm() |
|
315 |
if not backend: |
|
316 |
backend = get_backend(request) |
|
311 | 317 |
query_dict = request.__getattribute__(request.method) |
312 | 318 |
provider = query_dict.get('provider', 'local') |
313 | 319 |
form = backend.get_signup_form(provider) |
314 | 320 |
except (Invitation.DoesNotExist, ValueError), e: |
315 | 321 |
messages.add_message(request, messages.ERROR, e) |
322 |
except ValueError, e: |
|
323 |
messages.add_message(request, messages.ERROR, e) |
|
316 | 324 |
if request.method == 'POST': |
317 | 325 |
if form.is_valid(): |
318 |
user = form.save() |
|
326 |
user = form.save(commit=False)
|
|
319 | 327 |
try: |
320 | 328 |
result = backend.handle_activation(user) |
321 |
except SendMailError, e: |
|
322 |
message = e.message |
|
323 |
status = messages.ERROR |
|
324 |
transaction.rollback() |
|
325 |
else: |
|
326 |
message = result.message |
|
327 | 329 |
status = messages.SUCCESS |
328 |
transaction.commit() |
|
330 |
message = result.message |
|
331 |
user.save() |
|
329 | 332 |
if user and user.is_active: |
330 | 333 |
next = request.POST.get('next', '') |
331 | 334 |
return prepare_response(request, user, next=next) |
332 | 335 |
messages.add_message(request, status, message) |
333 | 336 |
return render_response(on_success, |
334 | 337 |
context_instance=get_context(request, extra_context)) |
338 |
except SendMailError, e: |
|
339 |
status = messages.ERROR |
|
340 |
message = e.message |
|
341 |
messages.add_message(request, status, message) |
|
342 |
except BaseException, e: |
|
343 |
status = messages.ERROR |
|
344 |
message = _('Something went wrong.') |
|
345 |
messages.add_message(request, status, message) |
|
335 | 346 |
return render_response(template_name, |
336 |
local_signup_form = form,
|
|
347 |
signup_form = form, |
|
337 | 348 |
context_instance=get_context(request, extra_context)) |
338 | 349 |
|
339 | 350 |
@login_required |
... | ... | |
438 | 449 |
messages.add_message(request, messages.ERROR, message) |
439 | 450 |
transaction.rollback() |
440 | 451 |
return signup(request, on_failure='im/signup.html') |
452 |
except BaseException, e: |
|
453 |
status = messages.ERROR |
|
454 |
message = _('Something went wrong.') |
|
455 |
logger.exception(e) |
|
456 |
transaction.rollback() |
|
457 |
return signup(request, on_failure='im/signup.html') |
|
441 | 458 |
|
442 | 459 |
def approval_terms(request, term_id=None, template_name='im/approval_terms.html', extra_context={}): |
443 | 460 |
term = None |
Also available in: Unified diff