Skip to content

Commit

Permalink
[1607] Adding all sub-groups to facets for searching on the group_rea…
Browse files Browse the repository at this point in the history
…d page
  • Loading branch information
rossjones committed Feb 16, 2012
1 parent e301565 commit 53952ee
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
2 changes: 2 additions & 0 deletions ckan/controllers/group.py
Expand Up @@ -219,6 +219,8 @@ def read(self, id):

# Search within group
q += ' groups: "%s"' % c.group_dict.get('name')
for gp in c.group.get_children_groups( ):
q += ' groups: "%s"' % gp.name

try:
description_formatted = ckan.misc.MarkdownFormat().to_html(c.group_dict.get('description',''))
Expand Down
14 changes: 11 additions & 3 deletions ckan/model/group.py
Expand Up @@ -119,15 +119,15 @@ def members_of_type(self, object_type, capacity=None):
from ckan import model
object_type_string = object_type.__name__.lower()
query = Session.query(object_type).\
filter(group_table.c.id == self.id).\
filter(model.Group.id == self.id).\
filter(model.Member.state == 'active').\
filter(model.Member.table_name == object_type_string)

if capacity:
query = query.filter(model.Member.capacity == capacity)

query = query.join(member_table, member_table.c.table_id == getattr(object_type,'id') ).\
join(group_table, group_table.c.id == member_table.c.group_id)
query = query.join(model.Member, member_table.c.table_id == getattr(object_type,'id') ).\
join(model.Group, group_table.c.id == member_table.c.group_id)

return query

Expand All @@ -137,6 +137,14 @@ def add_child(self, object_instance):
member = Member(group=self, table_id=getattr(object_instance,'id'), table_name=object_type_string)
Session.add(member)

def get_children_groups(self):
# TODO: Investigate Using members_of_type gives an error about
# group appearing too many times in query
members = Session.query(Member).\
filter_by(state=vdm.sqlalchemy.State.ACTIVE).\
filter(Member.table_name == "group").\
filter(Member.group_id == self.id).all()
return [ Group.get( m.table_id ) for m in members ]

def active_packages(self, load_eager=True):
query = Session.query(Package).\
Expand Down

0 comments on commit 53952ee

Please sign in to comment.