X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/4f879ac556e18e95115681613d7e8d9b1e6b5333..f91bfa1ef832989770b0c0287d9c5d20cdee9b4a:/contrib/waldo/models.py diff --git a/contrib/waldo/models.py b/contrib/waldo/models.py index 93edab1..65cba9e 100644 --- a/contrib/waldo/models.py +++ b/contrib/waldo/models.py @@ -81,7 +81,7 @@ class LoginMultiView(MultiView): if host != request.get_host(): referrer = None else: - redirect = ''.join(referrer[2:]) + redirect = '%s?%s' % (referrer[2], referrer[4]) if referrer is None: redirect = node.get_absolute_url() @@ -107,6 +107,9 @@ class LoginMultiView(MultiView): """ Displays the login form for the given HttpRequest. """ + if request.user.is_authenticated(): + return HttpResponseRedirect(node.get_absolute_url()) + context = self.get_context(extra_context) from django.contrib.auth.models import User @@ -177,6 +180,9 @@ class LoginMultiView(MultiView): send_mail(subject, message, from_email, [email]) def password_reset(self, request, node=None, extra_context=None, token_generator=password_token_generator): + if request.user.is_authenticated(): + return HttpResponseRedirect(node.get_absolute_url()) + if request.method == 'POST': form = PasswordResetForm(request.POST) if form.is_valid(): @@ -257,7 +263,7 @@ class LoginMultiView(MultiView): } self.send_confirmation_email('Confirm account creation at %s' % current_site.name, user.email, self.register_confirmation_email, context) messages.add_message(request, messages.SUCCESS, 'An email has been sent to %s with details on activating your account.' % user.email, fail_silently=True) - return HttpResponseRedirect('') + return HttpResponseRedirect(node.get_absolute_url()) else: form = RegistrationForm() @@ -350,7 +356,7 @@ class AccountMultiView(LoginMultiView): return form_instances - def account_view(self, request, node=None, extra_context=None, token_generator=email_token_generator): + def account_view(self, request, node=None, extra_context=None, token_generator=email_token_generator, *args, **kwargs): if request.method == 'POST': form_instances = self.get_account_form_instances(request.user, request.POST) current_email = request.user.email @@ -407,7 +413,8 @@ class AccountMultiView(LoginMultiView): def account_required(self, view): def inner(request, *args, **kwargs): if not self.has_valid_account(request.user): - messages.add_message(request, messages.ERROR, "You need to add some account information before you can post listings.", fail_silently=True) + if not request.method == "POST": + messages.add_message(request, messages.ERROR, "You need to add some account information before you can access this page.", fail_silently=True) return self.account_view(request, *args, **kwargs) return view(request, *args, **kwargs) @@ -431,7 +438,7 @@ class AccountMultiView(LoginMultiView): user = get_object_or_404(User, id=uid_int) - email = email.replace('+', '@') + email = '@'.join(email.rsplit('+', 1)) if email == user.email: # Then short-circuit.