From 28c57cfd0d0f8208a254db0a921c3ef12c5faeab Mon Sep 17 00:00:00 2001 From: tobes Date: Tue, 19 Feb 2013 11:34:57 +0000 Subject: [PATCH 1/2] [#420] Clean imports for some controllers --- ckan/controllers/home.py | 44 ++++++++++++++++++------------------ ckan/controllers/revision.py | 37 +++++++++++++++--------------- ckan/controllers/tag.py | 10 ++++---- ckan/controllers/template.py | 13 ++++++----- ckan/lib/base.py | 5 ---- 5 files changed, 53 insertions(+), 56 deletions(-) diff --git a/ckan/controllers/home.py b/ckan/controllers/home.py index a766771cd39..21843ca4fb3 100644 --- a/ckan/controllers/home.py +++ b/ckan/controllers/home.py @@ -1,29 +1,29 @@ -import random - -from pylons.i18n import set_lang +from pylons.i18n import _ +from pylons import g, c, config, cache import sqlalchemy.exc -import ckan.logic +import ckan.logic as logic import ckan.lib.maintain as maintain -from ckan.lib.search import SearchError -from ckan.lib.base import * -from ckan.lib.helpers import url_for +import ckan.lib.search as search +import ckan.lib.base as base +import ckan.model as model +import ckan.lib.helpers as h CACHE_PARAMETERS = ['__cache', '__no_cache__'] # horrible hack dirty_cached_group_stuff = None -class HomeController(BaseController): +class HomeController(base.BaseController): repo = model.repo def __before__(self, action, **env): try: - BaseController.__before__(self, action, **env) + base.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: - abort(401, _('Not authorized to see this page')) + logic.check_access('site_read', context) + except logic.NotAuthorized: + base.abort(401, _('Not authorized to see this page')) except (sqlalchemy.exc.ProgrammingError, sqlalchemy.exc.OperationalError), e: # postgres and sqlite errors for missing tables @@ -31,7 +31,7 @@ def __before__(self, action, **env): if ('relation' in msg and 'does not exist' in msg) or \ ('no such table' in msg): # table missing, major database problem - abort(503, _('This site is currently off-line. Database ' + base.abort(503, _('This site is currently off-line. Database ' 'is not initialised.')) # TODO: send an email to the admin person (#1285) else: @@ -50,7 +50,7 @@ def index(self): 'sort': 'views_recent desc', 'fq': 'capacity:"public"' } - query = ckan.logic.get_action('package_search')( + query = logic.get_action('package_search')( context, data_dict) c.search_facets = query['search_facets'] c.package_count = query['count'] @@ -74,14 +74,14 @@ def index(self): if 'groups' in c.search_facets: data_dict['groups'] = [ item['name'] for item in c.search_facets['groups']['items'] ] - c.groups = ckan.logic.get_action('group_list')(context, data_dict) - except SearchError, se: + c.groups = logic.get_action('group_list')(context, data_dict) + except search.SearchError, se: c.package_count = 0 c.groups = [] if c.userobj is not None: msg = None - url = url_for(controller='user', action='edit') + url = h.url_for(controller='user', action='edit') is_google_id = \ c.userobj.name.startswith( 'https://www.google.com/accounts/o8/id') @@ -130,8 +130,8 @@ def db_to_form_schema(group_type=None): data_dict = {'id': id} try: - group_dict = ckan.logic.get_action('group_show')(context, data_dict) - except ckan.logic.NotFound: + group_dict = logic.get_action('group_show')(context, data_dict) + except logic.NotFound: return None return {'group_dict' :group_dict} @@ -172,13 +172,13 @@ def db_to_form_schema(group_type=None): # END OF DIRTYNESS - return render('home/index.html', cache_force=True) + return base.render('home/index.html', cache_force=True) def license(self): - return render('home/license.html') + return base.render('home/license.html') def about(self): - return render('home/about.html') + return base.render('home/about.html') def cache(self, id): '''Manual way to clear the caches''' diff --git a/ckan/controllers/revision.py b/ckan/controllers/revision.py index 84683c1efc9..32809602cc3 100644 --- a/ckan/controllers/revision.py +++ b/ckan/controllers/revision.py @@ -1,18 +1,19 @@ -import sys from datetime import datetime, timedelta -from pylons.i18n import get_lang +from pylons.i18n import get_lang, _ +from pylons import c, request from ckan.logic import NotAuthorized, check_access -from ckan.lib.base import * -from ckan.lib.helpers import Page +import ckan.lib.base as base +import ckan.model as model +import ckan.lib.helpers as h -class RevisionController(BaseController): +class RevisionController(base.BaseController): def __before__(self, action, **env): - BaseController.__before__(self, action, **env) + base.BaseController.__before__(self, action, **env) context = {'model': model, 'user': c.user or c.author} if c.user: @@ -26,7 +27,7 @@ def __before__(self, action, **env): try: check_access('site_read', context) except NotAuthorized: - abort(401, _('Not authorized to see this page')) + base.abort(401, _('Not authorized to see this page')) def index(self): return self.list() @@ -127,20 +128,20 @@ def list(self): return feed.writeString('utf-8') else: query = model.Session.query(model.Revision) - c.page = Page( + c.page = h.Page( collection=query, page=request.params.get('page', 1), url=h.pager_url, items_per_page=20 ) - return render('revision/list.html') + return base.render('revision/list.html') def read(self, id=None): if id is None: - abort(404) + base.abort(404) c.revision = model.Session.query(model.Revision).get(id) if c.revision is None: - abort(404) + base.abort(404) pkgs = model.Session.query(model.PackageRevision).\ filter_by(revision=c.revision) @@ -152,11 +153,11 @@ def read(self, id=None): grps = model.Session.query(model.GroupRevision).\ filter_by(revision=c.revision) c.groups = [grp.continuity for grp in grps] - return render('revision/read.html') + return base.render('revision/read.html') def diff(self, id=None): if 'diff' not in request.params or 'oldid' not in request.params: - abort(400) + base.abort(400) c.revision_from = model.Session.query(model.Revision).get( request.params.getone('oldid')) c.revision_to = model.Session.query(model.Revision).get( @@ -170,23 +171,23 @@ def diff(self, id=None): c.group = model.Group.by_name(id) diff = c.group.diff(c.revision_to, c.revision_from) else: - abort(400) + base.abort(400) c.diff = diff.items() c.diff.sort() - return render('revision/diff.html') + return base.render('revision/diff.html') def edit(self, id=None): if id is None: - abort(404) + base.abort(404) revision = model.Session.query(model.Revision).get(id) if revision is None: - abort(404) + base.abort(404) action = request.params.get('action', '') if action in ['delete', 'undelete']: # this should be at a lower level (e.g. logic layer) if not c.revision_change_state_allowed: - abort(401) + base.abort(401) if action == 'delete': revision.state = model.State.DELETED elif action == 'undelete': diff --git a/ckan/controllers/tag.py b/ckan/controllers/tag.py index ef3ff5721c5..2b27c627662 100644 --- a/ckan/controllers/tag.py +++ b/ckan/controllers/tag.py @@ -4,9 +4,9 @@ from ckan.lib.base import * from ckan.lib.search import query_for -from ckan.lib.helpers import AlphaPage, Page +import ckan.lib.helpers as h -from ckan.logic import NotFound, NotAuthorized +import ckan.logic as logic from ckan.logic import check_access, get_action LIMIT = 25 @@ -19,7 +19,7 @@ def __before__(self, action, **env): try: context = {'model': model, 'user': c.user or c.author} check_access('site_read', context) - except NotAuthorized: + except logic.NotAuthorized: abort(401, _('Not authorized to see this page')) def index(self): @@ -48,7 +48,7 @@ def index(self): ) c.page.items = results else: - c.page = AlphaPage( + c.page = h.AlphaPage( collection=results, page=request.params.get('page', 'A'), alpha_attribute='name', @@ -64,7 +64,7 @@ def read(self, id): data_dict = {'id': id} try: c.tag = get_action('tag_show')(context, data_dict) - except NotFound: + except logic.NotFound: abort(404, _('Tag not found')) return render('tag/read.html') diff --git a/ckan/controllers/template.py b/ckan/controllers/template.py index 41e8a49f0d3..1ebc700345b 100644 --- a/ckan/controllers/template.py +++ b/ckan/controllers/template.py @@ -1,8 +1,9 @@ -from ckan.lib.base import * from genshi.template.loader import TemplateNotFound +import ckan.lib.base as base -class TemplateController(BaseController): + +class TemplateController(base.BaseController): def view(self, url): """By default, the final controller tried to fulfill the request @@ -27,12 +28,12 @@ def view(self, url): Found) """ try: - return render(url) + return base.render(url) except TemplateNotFound: if url.endswith('.html'): - abort(404) + base.abort(404) url += '.html' try: - return render(url) + return base.render(url) except TemplateNotFound: - abort(404) + base.abort(404) diff --git a/ckan/lib/base.py b/ckan/lib/base.py index 33253d6e0d0..0fd783c0bbf 100644 --- a/ckan/lib/base.py +++ b/ckan/lib/base.py @@ -2,11 +2,7 @@ Provides the BaseController class for subclassing. """ -from datetime import datetime -from hashlib import md5 import logging -import os -import urllib import time from paste.deploy.converters import asbool @@ -18,7 +14,6 @@ from pylons.i18n import _, ungettext, N_, gettext, ngettext from pylons.templating import cached_template, pylons_globals from genshi.template import MarkupTemplate -from genshi.template.base import TemplateSyntaxError from genshi.template.text import NewTextTemplate from webhelpers.html import literal From 7b29dc1ebcc414e692fcc20ecdf499d4e082e676 Mon Sep 17 00:00:00 2001 From: tobes Date: Tue, 19 Feb 2013 11:39:23 +0000 Subject: [PATCH 2/2] [#420] Clean tag controller --- ckan/controllers/tag.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/ckan/controllers/tag.py b/ckan/controllers/tag.py index 2b27c627662..bc45347db75 100644 --- a/ckan/controllers/tag.py +++ b/ckan/controllers/tag.py @@ -1,26 +1,24 @@ from pylons.i18n import _ -from pylons import config -from sqlalchemy.orm import eagerload_all +from pylons import request, c -from ckan.lib.base import * -from ckan.lib.search import query_for +import ckan.logic as logic +import ckan.model as model +import ckan.lib.base as base import ckan.lib.helpers as h -import ckan.logic as logic -from ckan.logic import check_access, get_action LIMIT = 25 -class TagController(BaseController): +class TagController(base.BaseController): def __before__(self, action, **env): - BaseController.__before__(self, action, **env) + base.BaseController.__before__(self, action, **env) try: context = {'model': model, 'user': c.user or c.author} - check_access('site_read', context) + logic.check_access('site_read', context) except logic.NotAuthorized: - abort(401, _('Not authorized to see this page')) + base.abort(401, _('Not authorized to see this page')) def index(self): c.q = request.params.get('q', '') @@ -37,7 +35,7 @@ def index(self): data_dict['offset'] = (page - 1) * LIMIT data_dict['return_objects'] = True - results = get_action('tag_list')(context, data_dict) + results = logic.get_action('tag_list')(context, data_dict) if c.q: c.page = h.Page( @@ -55,7 +53,7 @@ def index(self): other_text=_('Other'), ) - return render('tag/index.html') + return base.render('tag/index.html') def read(self, id): context = {'model': model, 'session': model.Session, @@ -63,8 +61,8 @@ def read(self, id): data_dict = {'id': id} try: - c.tag = get_action('tag_show')(context, data_dict) + c.tag = logic.get_action('tag_show')(context, data_dict) except logic.NotFound: - abort(404, _('Tag not found')) + base.abort(404, _('Tag not found')) - return render('tag/read.html') + return base.render('tag/read.html')