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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.