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