在Plone中添加用户之间关系的首选方法是什么?

时间:2011-11-08 05:48:58

标签: python plone zope

我正在制作一个由Plone提供支持的社交网站,并希望在用户(朋友,粉丝等)之间建立关系。

如何在Plone 4中实现这一目标?

2 个答案:

答案 0 :(得分:4)

我建议使用annotations并创建多个树。例如:

import BTrees
from zope import annotation

FOLLOWERS_KEY = "my.product.followers"
FOLLOWS_KEY = "my.product.follows"
FRIENDS_KEY = "my.product.friends"

portal = self.context.portal_url.getPortalObject()
annotations = annotation.interfaces.IAnnotations(portal)

if not annotations.get(FOLLOWERS_KEY, None):
    annotations[FOLLOWERS_KEY] = BTrees.IIBTree.IITreeSet()
if not annotations.get(FOLLOWS_KEY, None):
    annotations[FOLLOWS_KEY] = BTrees.IIBTree.IITreeSet()
if not annotations.get(FRIENDS_KEY, None):
    annotations[FRIENDS_KEY] = BTrees.IIBTree.IITreeSet()

followers = annotation.get(FOLLOWERS_KEY)
follows = annotation.get(FOLLOWS_KEY)
friends = annotation.get(FRIENDS_KEY)

答案 1 :(得分:0)

感谢您的answer

当我提问时,我实际上正在考虑使用ACL组和引用机制。 这有助于权限和共享。

  • 对于每个关系,为每个用户创建一个组(UserA的朋友)

  • 创建用户>

    • 创建用户组>
      • 使用reference_catalog创建用户和组之间的引用(我不知道如何或甚至可能)
      • 为用户文件夹中的新组添加localroles(可以通过控制面板配置关系角色映射)
  • 创建关系时 - >为所有用户创建新组(需要时间,但很少使用)

  • 添加/删除关系 - >添加/删除相关组中的用户

更新:似乎我所需要的几乎全部是通过plone.app.relations包实现的。