从Form创建用户的好方法

时间:2014-02-07 11:15:01

标签: plone dexterity

我必须创建一个会议网站,这个会议每年都会发生一次。

用户必须注册,填写~10个问题并上传2个文件。在接下来的一年中,用户应该能够登录并更正他们的数据。

计划使用:
plone.app.forms
dexterity.membrane

欢迎任何想法。

2 个答案:

答案 0 :(得分:2)

您可以使用基于门户网站成员资格提供的功能的替代方法。 创建自己的对象UserFolder对象,并告诉门户网站成员将其用作用户文件夹类型。 为此,您只需在安装时更改门户网站成员资格设置并启用“我的文件夹操作”:

def setup_membership(self, site):
    portal_membership = getToolByName(site, 'portal_membership')
    workflow = getMultiAdapter((site, site.REQUEST), name=u'plone_tools').workflow()

    # setup member area
    if not site.hasObject(USERS_FOLDER_ID):
        site.invokeFactory('Folder', USERS_FOLDER_ID, **{'title':'Users'})

    users_folder = site[USERS_FOLDER_ID]
    users_folder.processForm()

    # publish the users folder
    ...

    users_folder.setExcludeFromNav(True)
    users_folder.reindexObject()

    # set members area folder
    portal_membership.setMembersFolderById(USERS_FOLDER_ID)

    # setup member area type
    portal_membership.manage_setMemberAreaType('UserProfile')

    # enable members memberarea creation
    portal_membership.memberareaCreationFlag = 1

    # enable the 'my folder' user action, etc...
    ...

这样你仍然可以使用标准的plone用户,你将获得对应用程序的完全控制,你也可以选择将UserFolder对象放在哪里(可能放入/ users文件夹),工作流程,添加新的配置文件字段,等。不需要膜。

我也有类似的要求允许上传N和只有最多N个附件(或其他对象)。我建议你为添加的UserProfile对象添加一个事件处理程序。这样,您可以强制创建两个或多个文件附件,并为用户提供编辑权限。他将无法添加其他附件,您仍然可以使用标准文件或图像对象,而无需处理blob存储。

这对我来说非常适合基于原型的项目,但灵巧性应该是一样的。

希望它可能会有所帮助:)。

答案 1 :(得分:0)

我建议您避免触及用户架构。 您可以使用问题和文件创建自定义内容类型,并与用户共享。