Plone sitelerimden birinde, harf oluşturmak için kullandığım birkaç el becerisi modelim var. Modeller: "Model" (mektubun temel içeriği), "İletişim" (isim, adres vb. Gibi iletişim bilgilerini içeren) ve "Birleştirme" (bu, bazılarının yerini aldığımız bir Model nesnesidir). alıcı bilgileri ile modelin kısımları). "Birleştirme" nesnenin şema aşağıdadır:Plone ve Dexterity: "ilişki" alanı için varsayılan değerler
class IMergeSchema(form.Schema):
"""
"""
title = schema.TextLine(
title=_p(u"Title"),
)
form.widget(text='plone.app.z3cform.wysiwyg.WysiwygFieldWidget')
text = schema.Text(
title=_p(u"Text"),
required=False,
)
form.widget(recipients=MultiContentTreeFieldWidget)
recipients = schema.List(
title=_('label_recipients',
default='Recipients'),
value_type=schema.Choice(
title=_('label_recipients',
default='Recipients'),
# Note that when you change the source, a plone.reload is
# not enough, as the source gets initialized on startup.
source=UUIDSourceBinder(portal_type='Contact')),
)
form.widget(model=ContentTreeFieldWidget)
form.mode(model='display')
model = schema.Choice(
title=_('label_model',
default='Model'),
source=UUIDSourceBinder(portal_type='Model'),
)
nesne, ben "Alıcıları" alanları klasöründe bulunan tüm kişiler ile önceden ayarlanabilir olması istiyorum "Birleştirme" yeni bir yaratma nerede yeni nesne oluşturuldu. Bir alan için varsayılan değer eklemek için Martin Aspelli'nin rehberini takip ettim: http://plone.org/products/dexterity/documentation/manual/developer-manual/reference/default-value-validator-adaptors
Metin giriş alanları için iyi çalışıyor, ancak "alıcılar" alanı için çalışamıyorum. Varsayılan değerleri üretmek için yöntem şudur (çirkin baskı ile bazı hata ayıklama bilgi ile, ancak daha sonra kaldırılır;)):
@form.default_value(field=IMergeSchema['recipients'])
def all_recipients(data):
contacts = [x for x in data.context.contentValues()
if IContact.providedBy(x)]
paths = [u'/'.join(c.getPhysicalPath()) for c in contacts]
uids = [IUUID(c, None) for c in contacts]
print 'Contacts: %s' % contacts
print 'Paths: %s' % paths
print 'UIDs: %s' % uids
return paths
Ben, doğrudan kendi göreli yol nesneleri döndürmek için çalıştı (içinde görünüm ekle, "self.widgets ['alıcılar']." değerine "erişirken, bu tür veriyi alırken) UID'lerini kullanırken herhangi bir etki olarak çözümden hiçbiri.
Ayrıca listeler veya hatta jeneratörler yerine tuple döndürmeyi denedim, ancak yine de hiçbir etkisi olmayacak.
Örnek günlüğündeki izleri gördüğümden yöntem kesin olarak çağrılır.