0

みんな

コンテキスト以外のオブジェクトの編集フォームを作成しようとしています。セッションに保存されている辞書です。MartinAspeliスキーマドライブフォームをフォローしています。簡単なはずですが、何らかの理由で、編集フォームはデータをロードしません。簡単な詳細が失われているかもしれませんが、見つかりません。私はignoreContext=Trueを作成し、辞書を返そうとしました。その後、スキーマを実装するインスタンスを返しましたが、機能しませんでした。

from plone.directives import form, dexterity
from zope.interface import invariant, Invalid, implements

class IUser(form.Schema):
    '''Represents an user'''

    uid = schema.TextLine(
        title = _(u'Login'),
        )
    gn  = schema.TextLine(
        title = _(u'Name'),
        )
    sn  = schema.TextLine(
        title = _(u'Surname'),
        )
    uniqueIdentifier  = schema.TextLine(
        title = _(u'Identifier'),
        description = _(u'Ej. V11222333'),
        )
    accClass = schema.TextLine(
        title = _(u'User class'),
        )
    dateExpiration = schema.TextLine(
        title = _(u'Date of expiration'),
        )

class User:
    implements(IUser)

    def __init__(self, **kargs):
        self.uid = kargs['uid']
        self.gn = kargs['givenName']
        self.sn = kargs['sn']
        self.uniqueIdentifier = kargs['uniqueIdentifier']
        self.accClass = kargs['accClass']
        self.dateExpiration = kargs.get('dateExpiration', '2015/06')

class Edit(form.SchemaEditForm):
    '''Modify User'''
    grok.context(IUserManager)  # It's ok. This is a view of an IUserManager object
    grok.require('zope2.View')  # <- just for testing
    grok.name('modify')

    schema = IUser
    ignoreContext = True
    label = 'Modify an User'

    def getContent(self):
        # I've tried returning a dictionary too, but it's useless
        user = User(**SessionUsers(self.context).current())
        return user
4

0 に答える 0