+ else:
+ # Send the on_cas_login signal. If we get an HttpResponse, return that.
+ for receiver, response in signals.on_cas_login.send(sender=login, request=request, **kwargs):
+ if isinstance(response, HttpResponse):
+ return response
+
+ if service is None:
+ # Try and pull the service off the session
+ service = request.session.pop('service', service)
+
+ if service is None:
+ # Normal internal success redirection.
+ logging.debug('Redirecting to %s', success_redirect)
+ return HttpResponseRedirect(success_redirect)
+ else:
+ # Create a service ticket and redirect to the service.
+ ticket = create_service_ticket(request.user, service)
+ if 'service' in request.session:
+ # Don't need this any more.
+ del request.session['service']
+
+ url = _build_service_url(service, ticket.ticket)
+ logging.debug('Redirecting to %s', url)
+ return HttpResponseRedirect(url)
+
+ logging.debug('Rendering response on %s, merge is %s', template_name, merge)
+ return render_to_response(template_name, {'form': form, 'errors': errors}, context_instance=RequestContext(request))