我希望在ckan中创建自定义组织类型(他们需要成为组织,因为我们想要使用它们来管理权限)。
例如
最好的方法是什么?
我想出了两种可能性:
首先:
使用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
方法(只改变那些行!),突然这个选项似乎比第一个更加骇人听闻。