Skip to content

Commit

Permalink
Changes to fix the bad impl of get_groups(). Tests now successfully fail
Browse files Browse the repository at this point in the history
  • Loading branch information
rossjones committed Jan 23, 2012
1 parent 0a1acef commit 24495e5
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 12 deletions.
12 changes: 10 additions & 2 deletions ckan/logic/auth/publisher/__init__.py
Expand Up @@ -2,6 +2,14 @@

def _groups_intersect( groups_A, groups_B ):
""" Return true if any of the groups in A are also in B (or size
of intersection > 0)"""
return len( set( groups_A ).intersection( set(groups_B) ) ) > 0
of intersection > 0). If both are empty for now we will allow it """
# TODO: Fix me.

ga = set(groups_A)
gb = set(groups_B)

if len(gb) + len(ga) == 0:
return True

return len( ga.intersection( gb ) ) > 0

1 change: 1 addition & 0 deletions ckan/logic/auth/publisher/update.py
Expand Up @@ -201,6 +201,7 @@ def task_status_update(context, data_dict):
def package_update_rest(context, data_dict):
model = context['model']
user = context['user']

if user in (model.PSEUDO_USER__VISITOR, ''):
return {'success': False, 'msg': _('Valid API key needed to edit a package')}

Expand Down
7 changes: 3 additions & 4 deletions ckan/model/group.py
Expand Up @@ -141,11 +141,10 @@ def get_groups(self):
import ckan.model as model
if '_groups' not in self.__dict__:
self._groups = model.Session.query(model.Group).\
join(model.Member, model.Member.group_id == model.Group.id).\
join(model.Group, model.Group.id == model.Member.table_id).\
join(model.Package, model.Member.table_name == 'group' ).\
join(model.Member, model.Member.group_id == self.id and \
model.Member.table_name == 'group').\
filter(model.Member.state == 'active').\
filter(model.Group.id == self.id).all()
filter(model.Member.table_id == self.id).all()
return self._groups


Expand Down
6 changes: 3 additions & 3 deletions ckan/model/package.py
Expand Up @@ -505,11 +505,11 @@ def get_groups(self):
import ckan.model as model
if '_groups' not in self.__dict__:
self._groups = model.Session.query(model.Group).\
join(model.Member, model.Member.group_id == model.Group.id).\
join(model.Member, model.Member.group_id == model.Group.id and \
model.Member.table_name == 'package' ).\
join(model.Package, model.Package.id == model.Member.table_id).\
join(model.Package, model.Member.table_name == 'package' ).\
filter(model.Member.state == 'active').\
filter(model.Package.id == self.id).all()
filter(model.Member.table_id == self.id).all()
return self._groups

@property
Expand Down
6 changes: 3 additions & 3 deletions ckan/model/user.py
Expand Up @@ -152,11 +152,11 @@ def get_groups(self):
import ckan.model as model
if '_groups' not in self.__dict__:
self._groups = model.Session.query(model.Group).\
join(model.Member, model.Member.group_id == model.Group.id).\
join(model.Member, model.Member.group_id == model.Group.id and\
model.Member.table_name == 'user' ).\
join(model.User, model.User.id == model.Member.table_id).\
join(model.Package, model.Member.table_name == 'user' ).\
filter(model.Member.state == 'active').\
filter(model.User.id == self.id).all()
filter(model.Member.table_id == self.id).all()
return self._groups

@classmethod
Expand Down

0 comments on commit 24495e5

Please sign in to comment.