Ckan自定义组织类型

时间:2016-05-06 07:24:53

标签: ckan

我希望在ckan中创建自定义组织类型(他们需要成为组织,因为我们想要使用它们来管理权限)。

例如

  • /大学
  • /学校
  • / tafes

最好的方法是什么?

我想出了两种可能性:

首先:

使用heirarchies,创建父组“大学”,“学校”,“tafes”,并添加这些组作为其父母的正常组织。

然而,这需要设置许多自定义控制器和操作来获得所需的url结构,并且感觉有点hacky。

第二

使用IGroupForm,group_types设置为['university', 'school', ...]自定义控制器,并为每个控制器定义操作 - {'university_list': university_list}

使用以下

def university_list(context, data_dict):
    _check_access('organization_list', context, data_dict)
    return _group_or_org_list(context, data_dict, is_org=True)

这看起来好多了,但是这个功能里面有三行破坏了我的希望和梦想

query = query.filter(model.Group.is_organization == is_org)
if not is_org:
    query = query.filter(model.Group.type == group_type)

由于大学是orgs,如果我将is_org设置为False或者is_org为真,则过滤器将不匹配,它实际上从未检查过group_type

这意味着我必须重写整个_group_or_org_list方法(只改变那些行!),突然这个选项似乎比第一个更加骇人听闻。

0 个答案:

没有答案