Хороший способ создания пользователей из формы

Я должен создать сайт конференции, эта конференция проводилась каждый год один раз.

Пользователи должны зарегистрироваться, заполнить ~10 вопросов и загрузить 2 файла. В следующем году пользователи должны иметь возможность войти и исправить свои данные.

планируется использовать:
plone.app.forms
dexterity.membrane

Любые идеи приветствуются.

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-объектов.

Это хорошо сработало для меня в проекте, основанном на архетипах, но оно должно быть таким же для ловкости.

Надеюсь, это может помочь:)

Я предлагаю вам не трогать пользовательскую схему. Вы можете создать собственный тип контента с вашими вопросами и файлами и поделиться им со своими пользователями.

Другие вопросы по тегам