Skip to content

Commit

Permalink
merge 1.6.1 changes
Browse files Browse the repository at this point in the history
  • Loading branch information
kindly committed Mar 15, 2012
2 parents 7d4e1d5 + 9491210 commit 3e19079
Show file tree
Hide file tree
Showing 20 changed files with 470 additions and 141 deletions.
2 changes: 1 addition & 1 deletion ckan/__init__.py
@@ -1,4 +1,4 @@
__version__ = '1.6.1a'
__version__ = '1.6.1b'
__description__ = 'Comprehensive Knowledge Archive Network (CKAN) Software'
__long_description__ = \
'''CKAN software provides a hub for datasets. The flagship site running CKAN
Expand Down
65 changes: 0 additions & 65 deletions ckan/config/plugins.py

This file was deleted.

25 changes: 21 additions & 4 deletions ckan/controllers/group.py
Expand Up @@ -36,9 +36,26 @@ def _db_to_form_schema(self, group_type=None):
def _setup_template_variables(self, context, data_dict, group_type=None):
return lookup_group_plugin(group_type).setup_template_variables(context,data_dict)

def _new_template(self,group_type):
from ckan.lib.helpers import default_group_type
return lookup_group_plugin(group_type).new_template()

def _index_template(self,group_type):
from ckan.lib.helpers import default_group_type
return lookup_group_plugin(group_type).index_template()

def _read_template(self, group_type):
return lookup_group_plugin(group_type).read_template()

def _history_template(self, group_type):
return lookup_group_plugin(group_type).history_template()

## end hooks

def index(self):
group_type = request.path.strip('/').split('/')[0]
if group_type == 'group':
group_type = None

context = {'model': model, 'session': model.Session,
'user': c.user or c.author}
Expand All @@ -58,7 +75,7 @@ def index(self):
url=h.pager_url,
items_per_page=20
)
return render('group/index.html')
return render( self._index_template(group_type) )


def read(self, id):
Expand Down Expand Up @@ -170,7 +187,7 @@ def pager_url(q=None, page=None):
ckan.logic.action.get.group_activity_list_html(context,
{'id': c.group_dict['id']})

return render('group/read.html')
return render( self._read_template(c.group_dict['type']) )

def new(self, data=None, errors=None, error_summary=None):
group_type = request.path.strip('/').split('/')[0]
Expand Down Expand Up @@ -198,7 +215,7 @@ def new(self, data=None, errors=None, error_summary=None):

self._setup_template_variables(context,data)
c.form = render(self._group_form(group_type=group_type), extra_vars=vars)
return render('group/new.html')
return render(self._new_template(group_type))

def edit(self, id, data=None, errors=None, error_summary=None):
group_type = self._get_group_type(id.split('@')[0])
Expand Down Expand Up @@ -383,7 +400,7 @@ def history(self, id):
)
feed.content_type = 'application/atom+xml'
return feed.writeString('utf-8')
return render('group/history.html')
return render( self._history_template(c.group_dict['type']) )

def _render_edit_form(self, fs):
# errors arrive in c.error and fs.errors
Expand Down
30 changes: 26 additions & 4 deletions ckan/controllers/package.py
Expand Up @@ -63,10 +63,31 @@ def _check_data_dict(self, data_dict, package_type=None):
def _setup_template_variables(self, context, data_dict, package_type=None):
return lookup_package_plugin(package_type).setup_template_variables(context, data_dict)

def _new_template(self, package_type):
return lookup_package_plugin(package_type).new_template()

def _comments_template(self, package_type):
return lookup_package_plugin(package_type).comments_template()

def _search_template(self, package_type):
return lookup_package_plugin(package_type).search_template()

def _read_template(self, package_type):
return lookup_package_plugin(package_type).read_template()

def _history_template(self, package_type):
return lookup_package_plugin(package_type).history_template()


authorizer = ckan.authz.Authorizer()

def search(self):
from ckan.lib.search import SearchError

package_type = request.path.strip('/').split('/')[0]
if package_type == 'group':
package_type = None

try:
context = {'model':model,'user': c.user or c.author}
check_access('site_read',context)
Expand Down Expand Up @@ -145,7 +166,7 @@ def pager_url(q=None, page=None):
c.facets = {}
c.page = h.Page(collection=[])

return render('package/search.html')
return render( self._search_template(package_type) )

def _content_type_for_format(self, fmt):
"""
Expand Down Expand Up @@ -239,7 +260,8 @@ def read(self, id):
break

PackageSaver().render_package(c.pkg_dict, context)
return render('package/read.' + extension, loader_class=loader)

return render( self._read_template( package_type ) )

def comments(self, id):
package_type = self._get_package_type(id)
Expand Down Expand Up @@ -331,7 +353,7 @@ def history(self, id):
)
feed.content_type = 'application/atom+xml'
return feed.writeString('utf-8')
return render('package/history.html')
return render( self._history_template(c.pkg_dict['type']))

def new(self, data=None, errors=None, error_summary=None):

Expand Down Expand Up @@ -370,7 +392,7 @@ def new(self, data=None, errors=None, error_summary=None):
c.form = render(self.package_form, extra_vars=vars)
else:
c.form = render(self._package_form(package_type=package_type), extra_vars=vars)
return render('package/new.html')
return render( self._new_template(''))


def edit(self, id, data=None, errors=None, error_summary=None):
Expand Down
65 changes: 64 additions & 1 deletion ckan/lib/plugins.py
Expand Up @@ -127,7 +127,7 @@ def register_group_plugins(map):
# Our version of routes doesn't allow the environ to be
# passed into the match call and so we have to set it on the
# map instead. This looks like a threading problem waiting
# to happen but it is executed sequentially from instead the
# to happen but it is executed sequentially from inside the
# routing setup

map.connect('%s_index' % group_type, '/%s' % group_type,
Expand Down Expand Up @@ -168,6 +168,41 @@ class DefaultDatasetForm(object):
Note - this isn't a plugin implementation. This is deliberate, as we
don't want this being registered.
"""
def new_template(self):
"""
Returns a string representing the location of the template to be
rendered for the new page
"""
return 'package/new.html'

def comments_template(self):
"""
Returns a string representing the location of the template to be
rendered for the comments page
"""
return 'package/comments.html'

def search_template(self):
"""
Returns a string representing the location of the template to be
rendered for the search page (if present)
"""
return 'package/search.html'

def read_template(self):
"""
Returns a string representing the location of the template to be
rendered for the read page
"""
return 'package/read.html'

def history_template(self):
"""
Returns a string representing the location of the template to be
rendered for the history page
"""
return 'package/history.html'


def package_form(self):
return 'package/new_package_form.html'
Expand Down Expand Up @@ -264,6 +299,34 @@ class DefaultGroupForm(object):
Note - this isn't a plugin implementation. This is deliberate, as we
don't want this being registered.
"""
def new_template(self):
"""
Returns a string representing the location of the template to be
rendered for the 'new' page
"""
return 'group/new.html'

def index_template(self):
"""
Returns a string representing the location of the template to be
rendered for the index page
"""
return 'group/index.html'

def read_template(self):
"""
Returns a string representing the location of the template to be
rendered for the read page
"""
return 'group/read.html'

def history_template(self):
"""
Returns a string representing the location of the template to be
rendered for the read page
"""
return 'group/history.html'


def group_form(self):
return 'group/new_group_form.html'
Expand Down
19 changes: 11 additions & 8 deletions ckan/logic/action/create.py
Expand Up @@ -174,31 +174,34 @@ def member_create(context, data_dict=None):
"""
model = context['model']
user = context['user']
group = context['group']

rev = model.repo.new_revision()
rev.author = user
if 'message' in context:
rev.message = context['message']
else:
rev.message = _(u'REST API: Create member object %s') % data_dict.get("name", "")

group_id = data_dict['group']
obj_id = data_dict['object']
obj_type = data_dict['object_type']
capacity = data_dict['capacity']

if 'group' not in context:
context['group'] = group_id

# User must be able to update the group to add a member to it
check_access('group_update', context, data_dict)

# Look up existing, in case it exists
member = model.Session.query(model.Member).\
filter(model.Member.table_name == obj_type).\
filter(model.Member.table_id == obj_id).\
filter(model.Member.group_id == group_id).\
filter(model.Member.state == "active").\
filter(model.Member.capacity == capacity).first()
filter(model.Member.group_id == group.id).\
filter(model.Member.state == "active").first()
if member:
member.capacity = capacity
else:
member = model.Member(table_name = obj_type,
table_id = obj_id,
group_id = group_id,
group_id = group.id,
capacity=capacity)

model.Session.add(member)
Expand Down
6 changes: 2 additions & 4 deletions ckan/logic/action/delete.py
Expand Up @@ -82,21 +82,19 @@ def member_delete(context, data_dict=None):
"""
model = context['model']
user = context['user']
group = context['group']

group_id = data_dict['group']
obj_id = data_dict['object']
obj_type = data_dict['object_type']

if 'group' not in context:
context['group'] = group_id

# User must be able to update the group to remove a member from it
check_access('group_update', context, data_dict)

member = model.Session.query(model.Member).\
filter(model.Member.table_name == obj_type).\
filter(model.Member.table_id == obj_id).\
filter(model.Member.group_id == group_id).\
filter(model.Member.group_id == group.id).\
filter(model.Member.state == "active").first()
if member:
member.delete()
Expand Down
5 changes: 2 additions & 3 deletions ckan/logic/action/get.py
Expand Up @@ -117,18 +117,17 @@ def member_list(context, data_dict=None):
"""
model = context['model']
user = context['user']
group = context['group']

group_id = data_dict['group']
obj_type = data_dict.get('object_type', None)
capacity = data_dict.get('capacity', None)

# User must be able to update the group to remove a member from it
if 'group' not in context:
context['group'] = group_id
check_access('group_show', context, data_dict)

q = model.Session.query(model.Member).\
filter(model.Member.group_id == group_id).\
filter(model.Member.group_id == group.id).\
filter(model.Member.state == "active")

if obj_type:
Expand Down
5 changes: 3 additions & 2 deletions ckan/plugins/core.py
Expand Up @@ -63,14 +63,15 @@ def _get_service(plugin):

if isinstance(plugin, basestring):
try:
name = plugin
(plugin,) = iter_entry_points(
group=PLUGINS_ENTRY_POINT_GROUP,
name=plugin
name=name
)
except ValueError:
raise PluginNotFoundException(plugin)

return plugin.load()()
return plugin.load()(name=name)

elif isinstance(plugin, _pca_Plugin):
return plugin
Expand Down

0 comments on commit 3e19079

Please sign in to comment.