个人工作台
个人工作台对象
个人工作台
站点根、工作台,都是属于栏目容器。栏目容器可以管理子栏目,定义团队成员。栏目容器也叫做空间。
目录
1 站点成员空间
1.1 个人区 root['desks']
所有站点成员存放在个人区,位于 root['desks'] 。
个人区的 object_types
('HomeContainer', 'AppContainer', 'Container')
个人区下面是所有的个人工作台,可以通过dict方法访问:
for home in root['desks'].values(): print home.name
下面用 root.profiles 来管理站点成员空间
1.2 成员空间 get_home
得到某个人(pid)的成员空间:
home = root.profiles.get_home(pid)
成员空间的 object_types
('Home', 'AppContainer', 'Container')
成员空间可以是如下状态 stati:
- profile.member: 激活的成员
- profile.removed: 用户被删除
- profile.disabled: 用户被禁用
- profile.unlicensed: 未授权
- profile.excluded: 许可被排除(本来有的)
3 个人常用列表
经常需要维护我常用的列表,比如:
- users: 我常用的人员
- gorups: 常用的分组
- search-terms: 常用的搜索
- datamanagers: 常用的表单库
- files: 常用的文件
3.2 更新我常用的 update_recent
root.profiles.update_recent(pid, name, value, size)
其中:
- pid:用户
- name:常用信息代号
- value:新增的常用
- size:常用列表最大保留多少
注意,最近更新的数据,仍然可以通过 root.profiles.get(name) 获得,返回的内容是:
{'count':15, # 保存多少个最近使用项 'list':[] # 全部的最近使用项 }
4 工作台栏目
工作台的栏目管理,和站点栏目管理是类似的。
如果需要编写一个可以在工作台安装的栏目,可以定制一个 home_setup_ 开头的安装脚本。
首先需要部署一个应用容器:
if name in context: # 已经安装卸载工作台应用功能,返回错误信息 return '该栏目已安装' # 没有传入栏目title就用name container = context.add_appcontainer(name, title="my title") context.navs.append(container)
这个栏目必须和一个脚本关联,工作台将显示这个脚本的标题和图标。
优先使用栏目默认查看方式的标题:
container.settings['default_view'] = default_view container.index()
有些栏目没默认查看方式,而是点击展开,这时候用 on_nav_expand 脚本的标题:
# 二级导航展开设置 container.settings['on_nav_expand'] = on_nav_expand container.index()
5 收藏 home['myfavorites']
收藏是工作台的一个预制表单库栏目,任何对象都可以被收藏
5.1 收藏一个对象
其实是在表单库中添加一个表单页,以对象的 uid 作为名字:
uid = root.object_uid(obj) fav = home['myfavorites'].add_dataitem( {"title":obj.md['title'], 'list': [uid], 'type': obj.object_types[:1]}) fav.index() 收藏本身是一个表单,其 ``type`` 记录了收藏对象的 ``content_type`` 。
5.2 删除一个收藏
query_direct = QuerySet().anyof(path=home['myfavorites'])\ .anyof(list=[context_uid])\ .exclude(type=['Favorite']) if query_direct: del home['myfavorites'][query_direct[0].name]
5.3 添加一个收藏单
type 取值为 ["Favorite"]
fav = home['myfavorites'].add_dataitem( {"title":obj.md['title'], 'list': [uid], 'type': ["Favorite"], }) fav.index()