не совсем понятно, что подразумевается завести пользователя в ice.control, т.к. это просто UI для просмотра дерева, REPL и создания административных формочек.
Что именно писать, может быть, будет понятно из этого примера:
http://github.com/astoon/bbru/blob/master/src/bbru/authentication/config.py#L148
Где именно писать, то, на вскидку, разные варанты оформления кода:
1. Если это - разовый случай на одном инстансе, то руками через REPL, открыв его на объекте-сайте и использовав IPrincipalRoleManager(context)
2. Если это повторяющееся иногда действие для технического пользователя-сисадмина, то в конфигураторе (z3c.configurator), форма для него уже есть в админке.
3. Если нужно обеспечить единообразие и строгую версионность изменений базы данных между различными инстансами (тестовый, продакшн, у всех разработчиков и т.д.), то генерациями (zope.app.generations), форма тоже есть в админке.
4. Если это - регулярное действие, то для использования нетехническим контент-менеджером логичнее сделать формочку в своем скине
5. Но для сисадмина сойдет и ++skin++control. Как в него добавить формочку, описано в этом FAQ:
https://answers.launchpad.net/ice.control/+faq/1085
Если я завел пользователя в ice.control и не дал ему всех нужных прав,
как ему их добавить?
--
Ilshad R. Khabibullin
http://astoon.zwiki.org
+7 922 600 56 06