[ckan-changes] [okfn/ckan] 30b4bf: Revert "[doc] Attempt to fix autodoc on readthedoc...
GitHub
noreply at github.com
Tue May 1 17:17:27 UTC 2012
Branch: refs/heads/master
Home: https://github.com/okfn/ckan
Commit: 30b4bf75962fd4fb8a07024729b4e9839d22092a
https://github.com/okfn/ckan/commit/30b4bf75962fd4fb8a07024729b4e9839d22092a
Author: Sean Hammond <seanhammond at lavabit.com>
Date: 2012-05-01 (Tue, 01 May 2012)
Changed paths:
M doc/conf.py
Log Message:
-----------
Revert "[doc] Attempt to fix autodoc on readthedocs"
This reverts commit c05bf86ac8b4a3c2accd49a41a5602494ec9bd18.
it didn't work, looks like the problem is pyutilib missing, requirements
file not working right on readthedocs
diff --git a/doc/conf.py b/doc/conf.py
index e02da47..3b672db 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -19,7 +19,7 @@
# If your extensions (or modules documented by autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-sys.path.append(os.path.abspath('..'))
+#sys.path.append(os.path.abspath('.'))
# General configuration
# ---------------------
================================================================
Commit: 4d7f0bf39f3c800c215955bd215d205d82b87d58
https://github.com/okfn/ckan/commit/4d7f0bf39f3c800c215955bd215d205d82b87d58
Author: Sean Hammond <seanhammond at lavabit.com>
Date: 2012-05-01 (Tue, 01 May 2012)
Changed paths:
M ckan/config/environment.py
M ckan/controllers/home.py
M ckan/controllers/user.py
M ckan/lib/base.py
M ckan/lib/helpers.py
M ckan/logic/__init__.py
M ckan/templates/user/login.html
M doc/configuration.rst
Log Message:
-----------
Merge branch 'master' of github.com:okfn/ckan
diff --git a/ckan/config/environment.py b/ckan/config/environment.py
index 8d42f4b..d5cf049 100644
--- a/ckan/config/environment.py
+++ b/ckan/config/environment.py
@@ -30,12 +30,12 @@ class _Helpers(object):
def __init__(self, helpers, restrict=True):
functions = {}
allowed = helpers.__allowed_functions__
- # list of functions due to be depreciated
- self.depreciated = []
+ # list of functions due to be deprecated
+ self.deprecated = []
for helper in dir(helpers):
if helper not in allowed:
- self.depreciated.append(helper)
+ self.deprecated.append(helper)
if restrict:
continue
functions[helper] = getattr(helpers, helper)
@@ -63,14 +63,14 @@ def null_function(cls, *args, **kw):
def __getattr__(self, name):
''' return the function/object requested '''
if name in self.functions:
- if name in self.depreciated:
- msg = 'Template helper function `%s` is depriciated' % name
+ if name in self.deprecated:
+ msg = 'Template helper function `%s` is deprecated' % name
self.log.warn(msg)
return self.functions[name]
else:
- if name in self.depreciated:
+ if name in self.deprecated:
msg = 'Template helper function `%s` is not available ' \
- 'as it has been depriciated.\nYou can enable it ' \
+ 'as it has been deprecated.\nYou can enable it ' \
'by setting ckan.restrict_template_vars = true ' \
'in your .ini file.' % name
self.log.critical(msg)
diff --git a/ckan/controllers/home.py b/ckan/controllers/home.py
index cfa139c..3f272b1 100644
--- a/ckan/controllers/home.py
+++ b/ckan/controllers/home.py
@@ -14,8 +14,8 @@ class HomeController(BaseController):
repo = model.repo
def __before__(self, action, **env):
- BaseController.__before__(self, action, **env)
try:
+ BaseController.__before__(self, action, **env)
context = {'model':model,'user': c.user or c.author}
ckan.logic.check_access('site_read',context)
except ckan.logic.NotAuthorized:
diff --git a/ckan/controllers/user.py b/ckan/controllers/user.py
index d17df6f..81ec29f 100644
--- a/ckan/controllers/user.py
+++ b/ckan/controllers/user.py
@@ -52,6 +52,11 @@ def _setup_template_variables(self, context):
## end hooks
+ def _get_repoze_handler(self, handler_name):
+ '''Returns the URL that repoze.who will respond to and perform a
+ login or logout.'''
+ return getattr(request.environ['repoze.who.plugins']['friendlyform'], handler_name)
+
def index(self):
LIMIT = 20
@@ -165,7 +170,9 @@ def _save_new(self, context):
return self.new(data_dict, errors, error_summary)
if not c.user:
# Redirect to a URL picked up by repoze.who which performs the login
- h.redirect_to('/login_generic?login=%s&password=%s' % (
+ login_url = self._get_repoze_handler('login_handler_path')
+ h.redirect_to('%s?login=%s&password=%s' % (
+ login_url,
str(data_dict['name']),
quote(data_dict['password1'].encode('utf-8'))))
else:
@@ -257,6 +264,7 @@ def login(self):
g.openid_enabled = False
if not c.user:
+ c.login_handler = h.url_for(self._get_repoze_handler('login_handler_path'))
return render('user/login.html')
else:
return render('user/logout_first.html')
@@ -283,10 +291,10 @@ def logged_in(self):
h.redirect_to(locale=lang, controller='user', action='login')
def logout(self):
- # save our language in the session so we don't loose it
+ # save our language in the session so we don't lose it
session['lang'] = request.environ.get('CKAN_LANG')
session.save()
- h.redirect_to('/user/logout')
+ h.redirect_to(self._get_repoze_handler('logout_handler_path'))
def set_lang(self, lang):
# this allows us to set the lang in session. Used for logging
diff --git a/ckan/lib/base.py b/ckan/lib/base.py
index ffb79a7..4f77150 100644
--- a/ckan/lib/base.py
+++ b/ckan/lib/base.py
@@ -169,9 +169,11 @@ def _identify_user(self):
b) For API calls he may set a header with his API key.
If the user is identified then:
c.user = user name (unicode)
+ c.userobj = user object
c.author = user name
otherwise:
c.user = None
+ c.userobj = None
c.author = user\'s IP address (unicode)
'''
# see if it was proxied first
@@ -180,8 +182,10 @@ def _identify_user(self):
c.remote_addr = request.environ.get('REMOTE_ADDR', 'Unknown IP Address')
# environ['REMOTE_USER'] is set by repoze.who if it authenticates a user's
- # cookie or OpenID. (But it doesn't check the user (still) exists in our
- # database - we need to do that here.
+ # cookie or OpenID. But repoze.who doesn't check the user (still)
+ # exists in our database - we need to do that here. (Another way would
+ # be with an userid_checker, but that would mean another db access.
+ # See: http://docs.repoze.org/who/1.0/narr.html#module-repoze.who.plugins.sql )
c.user = request.environ.get('REMOTE_USER', '')
if c.user:
c.user = c.user.decode('utf8')
@@ -210,38 +214,41 @@ def __call__(self, environ, start_response):
# the request is routed to. This routing information is
# available in environ['pylons.routes_dict']
+ try:
+ res = WSGIController.__call__(self, environ, start_response)
+ finally:
+ model.Session.remove()
+
# Clean out any old cookies as they may contain api keys etc
# This also improves the cachability of our pages as cookies
# prevent proxy servers from caching content unless they have
# been configured to ignore them.
- # we do not want to clear cookies when setting the user lang
- if not environ.get('PATH_INFO').startswith('/user/set_lang'):
- for cookie in request.cookies:
- if cookie.startswith('ckan') and cookie not in ['ckan']:
- response.delete_cookie(cookie)
- # Remove the ckan session cookie if not used e.g. logged out
- elif cookie == 'ckan' and not c.user:
- # Check session for valid data (including flash messages)
- # (DGU also uses session for a shopping basket-type behaviour)
- is_valid_cookie_data = False
- for key, value in session.items():
- if not key.startswith('_') and value:
- is_valid_cookie_data = True
- break
- if not is_valid_cookie_data:
- if session.id:
- if not session.get('lang'):
- session.delete()
- else:
- response.delete_cookie(cookie)
- # Remove auth_tkt repoze.who cookie if user not logged in.
- elif cookie == 'auth_tkt' and not session.id:
- response.delete_cookie(cookie)
-
- try:
- return WSGIController.__call__(self, environ, start_response)
- finally:
- model.Session.remove()
+ for cookie in request.cookies:
+ if cookie.startswith('ckan') and cookie not in ['ckan']:
+ response.delete_cookie(cookie)
+ # Remove the ckan session cookie if not used e.g. logged out
+ elif cookie == 'ckan' and not c.user:
+ # Check session for valid data (including flash messages)
+ # (DGU also uses session for a shopping basket-type behaviour)
+ is_valid_cookie_data = False
+ for key, value in session.items():
+ if not key.startswith('_') and value:
+ is_valid_cookie_data = True
+ break
+ if not is_valid_cookie_data:
+ if session.id:
+ if not session.get('lang'):
+ self.log.debug('No session data any more - deleting session')
+ self.log.debug('Session: %r', session.items())
+ session.delete()
+ else:
+ response.delete_cookie(cookie)
+ self.log.debug('No session data any more - deleting session cookie')
+ # Remove auth_tkt repoze.who cookie if user not logged in.
+ elif cookie == 'auth_tkt' and not session.id:
+ response.delete_cookie(cookie)
+
+ return res
def __after__(self, action, **params):
self._set_cors()
diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py
index b84636c..5c8660a 100644
--- a/ckan/lib/helpers.py
+++ b/ckan/lib/helpers.py
@@ -263,7 +263,7 @@ def are_there_flash_messages():
def nav_link(*args, **kwargs):
# nav_link() used to need c passing as the first arg
- # this is depriciated as pointless
+ # this is deprecated as pointless
# throws error if ckan.restrict_template_vars is True
# When we move to strict helpers then this should be removed as a wrapper
if len(args) > 2 or (len(args) > 1 and 'controller' in kwargs):
@@ -286,7 +286,7 @@ def _nav_link(text, controller, **kwargs):
def nav_named_link(*args, **kwargs):
# subnav_link() used to need c passing as the first arg
- # this is depriciated as pointless
+ # this is deprecated as pointless
# throws error if ckan.restrict_template_vars is True
# When we move to strict helpers then this should be removed as a wrapper
if len(args) > 3 or (len(args) > 0 and 'text' in kwargs) or \
@@ -307,7 +307,7 @@ def _nav_named_link(text, name, **kwargs):
def subnav_link(*args, **kwargs):
# subnav_link() used to need c passing as the first arg
- # this is depriciated as pointless
+ # this is deprecated as pointless
# throws error if ckan.restrict_template_vars is True
# When we move to strict helpers then this should be removed as a wrapper
if len(args) > 2 or (len(args) > 1 and 'action' in kwargs):
@@ -325,7 +325,7 @@ def _subnav_link(text, action, **kwargs):
def subnav_named_route(*args, **kwargs):
# subnav_link() used to need c passing as the first arg
- # this is depriciated as pointless
+ # this is deprecated as pointless
# throws error if ckan.restrict_template_vars is True
# When we move to strict helpers then this should be removed as a wrapper
if len(args) > 2 or (len(args) > 0 and 'text' in kwargs) or \
@@ -382,7 +382,7 @@ def facet_items(*args, **kwargs):
"""
_log.warning('Deprecated function: ckan.lib.helpers:facet_items(). Will be removed in v1.8')
# facet_items() used to need c passing as the first arg
- # this is depriciated as pointless
+ # this is deprecated as pointless
# throws error if ckan.restrict_template_vars is True
# When we move to strict helpers then this should be removed as a wrapper
if len(args) > 2 or (len(args) > 0 and 'name' in kwargs) or (len(args) > 1 and 'limit' in kwargs):
@@ -690,7 +690,7 @@ def dump_json(obj, **kw):
def auto_log_message(*args):
# auto_log_message() used to need c passing as the first arg
- # this is depriciated as pointless
+ # this is deprecated as pointless
# throws error if ckan.restrict_template_vars is True
# When we move to strict helpers then this should be removed as a wrapper
if len(args) and asbool(config.get('ckan.restrict_template_vars', 'false')):
@@ -777,7 +777,7 @@ def process_names(items):
'default_group_type',
'facet_items',
'facet_title',
- # am_authorized, # depreciated
+ # am_authorized, # deprecated
'check_access',
'linked_user',
'linked_authorization_group',
diff --git a/ckan/logic/__init__.py b/ckan/logic/__init__.py
index 30cd4ae..fa37d8a 100644
--- a/ckan/logic/__init__.py
+++ b/ckan/logic/__init__.py
@@ -227,7 +227,7 @@ def get_action(action):
def get_or_bust(data_dict, keys):
'''Try and get values from dictionary and if they are not there
- raise a validataion error.
+ raise a validation error.
data_dict: a dictionary
keys: either a single string key in which case will return a single value,
diff --git a/ckan/templates/user/login.html b/ckan/templates/user/login.html
index 9fdf3df..8575e62 100644
--- a/ckan/templates/user/login.html
+++ b/ckan/templates/user/login.html
@@ -22,7 +22,7 @@
<div py:match="content">
- <form action="${h.url_for('/login_generic')}" method="post" class="form-horizontal" id="login">
+ <form action="${c.login_handler}" method="post" class="form-horizontal" id="login">
<fieldset>
<!--legend i18n:msg="site_title">Login</legend-->
<div class="control-group">
diff --git a/doc/configuration.rst b/doc/configuration.rst
index 0ac49fb..7bcc747 100644
--- a/doc/configuration.rst
+++ b/doc/configuration.rst
@@ -673,7 +673,7 @@ This is a directory where SQL database backups are to be written, assuming a scr
-Compatability
+Compatibility
-------------
.. index::
================================================================
Compare: https://github.com/okfn/ckan/compare/94caef8...4d7f0bf
More information about the ckan-changes
mailing list