Skip to content

Commit

Permalink
Merge pull request #420 from okfn/420-controller-import-clean
Browse files Browse the repository at this point in the history
Controllers import clean
  • Loading branch information
vitorbaptista committed Feb 25, 2013
2 parents 7e8f984 + 7b29dc1 commit 15faf0f
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 70 deletions.
44 changes: 22 additions & 22 deletions ckan/controllers/home.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
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
msg = str(e)
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:
Expand All @@ -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']
Expand All @@ -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')
Expand Down Expand Up @@ -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}
Expand Down Expand Up @@ -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'''
Expand Down
37 changes: 19 additions & 18 deletions ckan/controllers/revision.py
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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()
Expand Down Expand Up @@ -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)
Expand All @@ -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(
Expand All @@ -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':
Expand Down
36 changes: 17 additions & 19 deletions ckan/controllers/tag.py
Original file line number Diff line number Diff line change
@@ -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
from ckan.lib.helpers import AlphaPage, Page
import ckan.logic as logic
import ckan.model as model
import ckan.lib.base as base
import ckan.lib.helpers as h

from ckan.logic import NotFound, NotAuthorized
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)
except 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'))

def index(self):
c.q = request.params.get('q', '')
Expand All @@ -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(
Expand All @@ -48,23 +46,23 @@ 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',
other_text=_('Other'),
)

return render('tag/index.html')
return base.render('tag/index.html')

def read(self, id):
context = {'model': model, 'session': model.Session,
'user': c.user or c.author, 'for_view': True}

data_dict = {'id': id}
try:
c.tag = get_action('tag_show')(context, data_dict)
except NotFound:
abort(404, _('Tag not found'))
c.tag = logic.get_action('tag_show')(context, data_dict)
except logic.NotFound:
base.abort(404, _('Tag not found'))

return render('tag/read.html')
return base.render('tag/read.html')
13 changes: 7 additions & 6 deletions ckan/controllers/template.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
5 changes: 0 additions & 5 deletions ckan/lib/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down

0 comments on commit 15faf0f

Please sign in to comment.