Zwei ArrayField Fragen: Feldzugriff und Fehler bei ImageField
Nico Grubert <[email protected]>
| Newsgroups | gmane.comp.web.zope.german |
|---|---|
| Message-ID | <[email protected]> |
Hallo Liste
ich habe einen Archetypes Content-Typen für Plone (version: 3.1.7)
entwickelt, der eine Liste (ArrayField) von je 3 Feldern ("bild",
"bildunterschrift" und "textblock") enthält.
Der Code sieht wie folgt aus:
ArrayField(
CompoundField(name='bilder', schema=atapi.Schema((
atapi.ImageField(name='bild',
label=u'Bild',
searchable = 0,
required = 0,
max_size = (380, 220),
allowable_content_types = ('image/gif','image/jpeg','image/png'),
widget = atapi.ImageWidget(label = u'Bild'),
),
atapi.StringField(name='bildunterschrift',
accessor="getBildunterschrift",
label = u'Bildunterschrift'),
atapi.StringField(name='textblock',
accessor="getTextblock",
label = u'Textblock'),
),),
),
widget=EnhancedArrayWidget(
label=u"Bilder, Bildunterschriften und Text",
),
size=2,
),
Das klappt soweit alles ganz gut, aber ich stosse auf 2 Probleme:
1. Mir gelingt es nicht, den Inhalt der 2 'StringField' Felder
"bildunterschrift" und "textblock" auszulesen. An die Grafik komme
ich ohne Probleme heran.
In einer Methode in der Klasse meines Content-Typen habe ich folgendes
versucht:
# Ein Beispiel Content Objekt (self) enthält 2 Paare von
# ['bild', 'bildunterschrift', 'textblock']
res = []
f = self.Schema().getField('bilder')
# f.getFields() ->
# [[<Field bilder|size(integer:rw)>,
# <Field bilder|bilder:000(compoundfield:rw)>,
# <Field bilder|bilder:001(compoundfield:rw)>]]
ff = f.getFields()[1:]
# ff -> <Field bilder|bilder:000(compoundfield:rw)>
# ff.Schema().fields() ->
# [<Field bilder|bilder:000|bild(image:rw)>,
# <Field bilder|bilder:000|bildunterschrift(string:rw)>,
# <Field bilder|bilder:000|textblock(string:rw)>]
for i in ff:
# i -> <Field bilder|bilder:000(compoundfield:rw)>
schema = i.Schema()
# i.Schema().keys() -> ['bild', 'bildunterschrift', 'textblock']
d = {}
field_bild = schema.get('bild')
d['bild'] = field_bild
d['bild_tag'] = field_bild.tag(self) # klappt wunderbar
field_bildunterschrift = schema.get('bildunterschrift')
# -> <Field bilder|bilder:000|bildunterschrift(string:rw)>
field_bildunterschrift_value = field_bildunterschrift.???
# wie komme ich hier an den Wert, der in 'bildunterschrift' ist?
# field_bildunterschrift.getBildunterschrift() -> Attribute Error
d['bildunterschrift'] = field_bildunterschrift_value
field_textblock = schema.get('textblock')
field_textblock_value = field_textblock.???
d['textblock'] = field_textblock
res.append(d)
return res
Hat jemand eine Idee, wie ich an die Werte ran komme, die in den
Textfeldern stehen?
2. Beim Bearbeiten eines erstellten Content Objektes erhalte ich einen
Fehler: string object has no Attribute getContentType()
Der Fehler resultiert aus:
\Archetypes\skins\archetypes\widgets\image.pt
Zeile 15: -> htacpt.find(img.getContentType())
Wenn ich diese Bedingung rausnehme, klappt alles. Hat jemand eine
Idee, was dort falsch läuft?
Viele Grüsse und Danke im voraus
Nico
_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope