add util.get_referer()
This commit is contained in:
		
							parent
							
								
									5b5b0c8738
								
							
						
					
					
						commit
						881e83e88e
					
				
					 2 changed files with 50 additions and 21 deletions
				
			
		
							
								
								
									
										45
									
								
								edbob/pyramid/util.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								edbob/pyramid/util.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
#!/usr/bin/env python
 | 
			
		||||
# -*- coding: utf-8  -*-
 | 
			
		||||
################################################################################
 | 
			
		||||
#
 | 
			
		||||
#  edbob -- Pythonic Software Framework
 | 
			
		||||
#  Copyright © 2010-2012 Lance Edgar
 | 
			
		||||
#
 | 
			
		||||
#  This file is part of edbob.
 | 
			
		||||
#
 | 
			
		||||
#  edbob is free software: you can redistribute it and/or modify it under the
 | 
			
		||||
#  terms of the GNU Affero General Public License as published by the Free
 | 
			
		||||
#  Software Foundation, either version 3 of the License, or (at your option)
 | 
			
		||||
#  any later version.
 | 
			
		||||
#
 | 
			
		||||
#  edbob is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | 
			
		||||
#  FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for
 | 
			
		||||
#  more details.
 | 
			
		||||
#
 | 
			
		||||
#  You should have received a copy of the GNU Affero General Public License
 | 
			
		||||
#  along with edbob.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
################################################################################
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
``edbob.pyramid.util`` -- Utilities
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_referer(request, default=None):
 | 
			
		||||
    """
 | 
			
		||||
    Returns a "referer" URL.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    if request.params.get('referer'):
 | 
			
		||||
        return request.params['referer']
 | 
			
		||||
    if request.session.get('referer'):
 | 
			
		||||
        return request.session.pop('referer')
 | 
			
		||||
    referer = request.referer
 | 
			
		||||
    if not referer or referer == request.current_route_url():
 | 
			
		||||
        if default:
 | 
			
		||||
            referer = default
 | 
			
		||||
        else:
 | 
			
		||||
            referer = request.route_url('home')
 | 
			
		||||
    return referer
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +35,7 @@ from pyramid_simpleform.renderers import FormRenderer
 | 
			
		|||
import edbob
 | 
			
		||||
from edbob.db.auth import authenticate_user
 | 
			
		||||
from edbob.pyramid import Session
 | 
			
		||||
from edbob.pyramid.util import get_referer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserLogin(formencode.Schema):
 | 
			
		||||
| 
						 | 
				
			
			@ -44,20 +45,12 @@ class UserLogin(formencode.Schema):
 | 
			
		|||
    password = formencode.validators.NotEmpty()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def login(context, request):
 | 
			
		||||
def login(request):
 | 
			
		||||
    """
 | 
			
		||||
    The login view, responsible for displaying and handling the login form.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    if request.params.get('referer'):
 | 
			
		||||
        referer = request.params['referer']
 | 
			
		||||
    elif request.session.get('referer'):
 | 
			
		||||
        referer = request.session.pop('referer')
 | 
			
		||||
    else:
 | 
			
		||||
        referer = request.referer
 | 
			
		||||
    if not referer or referer == request.route_url('login'):
 | 
			
		||||
        referer = edbob.config.get('edbob.pyramid', 'login.home',
 | 
			
		||||
                                   default=request.route_url('home'))
 | 
			
		||||
    referer = get_referer(request)
 | 
			
		||||
 | 
			
		||||
    # Redirect if already logged in.
 | 
			
		||||
    if request.user:
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +78,7 @@ def login(context, request):
 | 
			
		|||
            'logo_url': url, 'logo_kwargs': kwargs}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def logout(context, request):
 | 
			
		||||
def logout(request):
 | 
			
		||||
    """
 | 
			
		||||
    View responsible for logging out the current user.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -96,16 +89,7 @@ def logout(context, request):
 | 
			
		|||
    request.session.delete()
 | 
			
		||||
    request.session.invalidate()
 | 
			
		||||
    headers = forget(request)
 | 
			
		||||
 | 
			
		||||
    if request.params.get('referer'):
 | 
			
		||||
        referer = request.params['referer']
 | 
			
		||||
    elif request.session.get('referer'):
 | 
			
		||||
        referer = request.session.pop('referer')
 | 
			
		||||
    else:
 | 
			
		||||
        referer = request.referer
 | 
			
		||||
    if not referer or referer == request.route_url('logout'):
 | 
			
		||||
        referer = request.route_url('login')
 | 
			
		||||
 | 
			
		||||
    referer = get_referer(request)
 | 
			
		||||
    return HTTPFound(location=referer, headers=headers)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue