我必须创建一个会议网站,这个会议每年都会发生一次。
用户必须注册,填写~10个问题并上传2个文件。在接下来的一年中,用户应该能够登录并更正他们的数据。
计划使用:
plone.app.forms
dexterity.membrane
欢迎任何想法。
答案 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)
我建议您避免触及用户架构。 您可以使用问题和文件创建自定义内容类型,并与用户共享。