Probleme mit archetypes.schemaextender und ReferenceField

8 messages Options
Embed this post
Permalink
Lars Walther

Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
Hallo,

ich versuche gerade mit archetypes.schemaextender einen Folder zu  
erweitern. Mit DateTimeFields klappt das auch bestens, nur mit einem  
ReferenceField quäle ich mich etwas. Das ist die Konfig:

class CustomReferenceField(ExtensionField, ReferenceField):
     pass

class ProjectExtender(object):
     adapts(ATFolder)
     implements(ISchemaExtender)
     fields = [

               CustomReferenceField('pl',
                 schemata='Projekt',
                 relationship='Rel1',
                 allowed_types='FSDPerson',
                 multiValued=True,
                 widget = ReferenceBrowserWidget(
                            label = "Projektleiter",
                            description = "Bitte stellen Sie hier eine  
Referenz zum Projektleiter her",
                            startup_directory = '/',
                            force_close_on_insert = True,
                            ),
                   ),]

via Edit läßt sich das Feld problemlos setzen, nur komme ich nicht an  
die Daten, weder per Script noch im Template. Bei den DateTime Feldern  
klappt das mit "context.feldname" oder im Template mit here/feldname.  
Beim ReferenceField wirft das einen AttributeError "feldname". Hat  
jemand einen Tipp für mich. Auch die klassische Methode getFeldname()  
läuft in den Fehler.

Danke und viele Grüße
Lars



_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
ajung

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
On 29.06.09 21:36, Lars Walther wrote:

> Hallo,
>
> ich versuche gerade mit archetypes.schemaextender einen Folder zu
> erweitern. Mit DateTimeFields klappt das auch bestens, nur mit einem
> ReferenceField quäle ich mich etwas. Das ist die Konfig:
>
> class CustomReferenceField(ExtensionField, ReferenceField):
>     pass
>
> class ProjectExtender(object):
>     adapts(ATFolder)
>     implements(ISchemaExtender)
>     fields = [
>
>               CustomReferenceField('pl',
>                 schemata='Projekt',
>                 relationship='Rel1',
>                 allowed_types='FSDPerson',
>                 multiValued=True,
>                 widget = ReferenceBrowserWidget(
>                            label = "Projektleiter",
>                            description = "Bitte stellen Sie hier eine
> Referenz zum Projektleiter her",
>                            startup_directory = '/',
>                            force_close_on_insert = True,
>                            ),
>                   ),]
>
> via Edit läßt sich das Feld problemlos setzen, nur komme ich nicht an
> die Daten, weder per Script noch im Template. Bei den DateTime Feldern
> klappt das mit "context.feldname" oder im Template mit here/feldname.
> Beim ReferenceField wirft das einen AttributeError "feldname". Hat
> jemand einen Tipp für mich. Auch die klassische Methode getFeldname()
> läuft in den Fehler.´+
accessor = obj.Schema()['p1'].accessor
value = getattr(obj, accessor)()

Andreas



[lists.vcf]

begin:vcard
fn:Andreas Jung
n:Jung;Andreas
org:ZOPYX Ltd. & Co. KG
adr;quoted-printable:;;Charlottenstr. 37/1;T=C3=BCbingen;;72070;Germany
email;internet:[hidden email]
title:CEO
tel;work:+49-7071-793376
tel;fax:+49-7071-7936840
tel;home:+49-7071-793257
x-mozilla-html:FALSE
url:www.zopyx.com
version:2.1
end:vcard





_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
ajung

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
On 29.06.09 23:42, Lars Walther wrote:
> Hallo Andreas,
>
> ich glaube so bekomme ich die Objektliste aus den Referenzen:
>
> context.getReferences(relationship)
Keine Ahnung :-) Ich weiss nur, dass bei Verwendung von at.schemaextender
*kein* Accessor/Mutatormethoden getXXX() und setYYY() angelegt werden.
Deswegen muss man hier über die 'accessor' und 'mutator' Attribute der
jeweiligen AT Felder gehen.

Andreas

[lists.vcf]

begin:vcard
fn:Andreas Jung
n:Jung;Andreas
org:ZOPYX Ltd. & Co. KG
adr;quoted-printable:;;Charlottenstr. 37/1;T=C3=BCbingen;;72070;Germany
email;internet:[hidden email]
title:CEO
tel;work:+49-7071-793376
tel;fax:+49-7071-7936840
tel;home:+49-7071-793257
x-mozilla-html:FALSE
url:www.zopyx.com
version:2.1
end:vcard





_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
Jens W. klein-2

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
In reply to this post by Lars Walther
Am Montag, den 29.06.2009, 21:36 +0200 schrieb Lars Walther:
> via Edit läßt sich das Feld problemlos setzen, nur komme ich nicht an  
> die Daten, weder per Script noch im Template. Bei den DateTime Feldern  
> klappt das mit "context.feldname" oder im Template mit here/feldname.  
> Beim ReferenceField wirft das einen AttributeError "feldname". Hat  

Tu das nie! Vor allem komme nicht auf die Idee auf die Weise was zu
verspeichern. Andreas hat ja schon gezeigt wie es richtig geht

> jemand einen Tipp für mich. Auch die klassische Methode getFeldname()  
> läuft in den Fehler.

ReferenceFields haben eben kein eigenes Storage (gar keins) und damit
kannst du nicht einfach auf Attribute zugreifen (was eh die falsche
Methode ist und nur fürs AttributeStorage funktioniert). ReferenceFields
sind ansich nur eine Field-artige API auf die Reference-Maschinerie von
Archetypes. Somit sind Referencefields ein Spezialfall und nicht für
alles geeignet.

Du kannst eben entweder die die Reference-API nehmen oder die "get"
Methode des fields verwenden.

viel spass damit
--
Jens Klein
Software Architect
Managing Director, General Partner
+43 512 890077

BlueDynamics Alliance        WEB APPLICATIONS,  ZOPE,  PLONE, HOSTING
Klein & Partner KEG          production: concept, development, design
http://bluedynamics.com      consulting: analysis, coaching, training
http://zoplo.com             management: projects, process, community




_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
ajung

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
On 30.06.09 11:24, Jens W. Klein wrote:
>
> Du kannst eben entweder die die Reference-API nehmen oder die "get"
> Methode des fields verwenden.

Das klappt aber nicht für Felder, die über at.schemaextender
drangeflanscht werden.

Andreas

[lists.vcf]

begin:vcard
fn:Andreas Jung
n:Jung;Andreas
org:ZOPYX Ltd. & Co. KG
adr;quoted-printable:;;Charlottenstr. 37/1;T=C3=BCbingen;;72070;Germany
email;internet:[hidden email]
title:CEO
tel;work:+49-7071-793376
tel;fax:+49-7071-7936840
tel;home:+49-7071-793257
x-mozilla-html:FALSE
url:www.zopyx.com
version:2.1
end:vcard





_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
Jens W. klein-2

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
Am Dienstag, den 30.06.2009, 11:26 +0200 schrieb Andreas Jung:
> On 30.06.09 11:24, Jens W. Klein wrote:
> >
> > Du kannst eben entweder die die Reference-API nehmen oder die "get"
> > Methode des fields verwenden.
>
> Das klappt aber nicht für Felder, die über at.schemaextender
> drangeflanscht werden.

Woll! Dem Feld ist das doch wurscht wie es drangeflanscht wird! Einzig
im Restricted Python Code wird das etwas schwierig, da brauchts eine
Hilfe.

lg Jens
--
Jens Klein
Software Architect
Managing Director, General Partner
+43 512 890077

BlueDynamics Alliance        WEB APPLICATIONS,  ZOPE,  PLONE, HOSTING
Klein & Partner KEG          production: concept, development, design
http://bluedynamics.com      consulting: analysis, coaching, training
http://zoplo.com             management: projects, process, community




_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
ajung

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
On 30.06.09 11:56, Jens W. Klein wrote:

> Am Dienstag, den 30.06.2009, 11:26 +0200 schrieb Andreas Jung:
>  
>> On 30.06.09 11:24, Jens W. Klein wrote:
>>    
>>> Du kannst eben entweder die die Reference-API nehmen oder die "get"
>>> Methode des fields verwenden.
>>>      
>> Das klappt aber nicht für Felder, die über at.schemaextender
>> drangeflanscht werden.
>>    
> Woll! Dem Feld ist das doch wurscht wie es drangeflanscht wird! Einzig
> im Restricted Python Code wird das etwas schwierig, da brauchts eine
> Hilfe.
>  
hmm..du sagst, dass man für ein via at.schemaextender erweitertes Schema
mit einem neuen Feld 'foo' auf die Felder via getFoo(), setFoo()
zugreifen kann?

Andreas

--
ZOPYX Ltd. & Co. KG - Charlottenstr. 37/1 - 72070 Tübingen - Germany
Web: www.zopyx.com - Email: [hidden email] - Phone +49 - 7071 - 793376
Registergericht: Amtsgericht Stuttgart, Handelsregister A 381535
Geschäftsführer/Gesellschafter: ZOPYX Limited, Birmingham, UK
------------------------------------------------------------------------
E-Publishing, Python, Zope & Plone development, Consulting



[lists.vcf]

begin:vcard
fn:Andreas Jung
n:Jung;Andreas
org:ZOPYX Ltd. & Co. KG
adr;quoted-printable:;;Charlottenstr. 37/1;T=C3=BCbingen;;72070;Germany
email;internet:[hidden email]
title:CEO
tel;work:+49-7071-793376
tel;fax:+49-7071-7936840
tel;home:+49-7071-793257
x-mozilla-html:FALSE
url:www.zopyx.com
version:2.1
end:vcard





_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope
Jens W. klein-2

Re: Probleme mit archetypes.schemaextender und ReferenceField

Reply Threaded More More options
Print post
Permalink
Am Dienstag, den 30.06.2009, 12:02 +0200 schrieb Andreas Jung:

> On 30.06.09 11:56, Jens W. Klein wrote:
> > Am Dienstag, den 30.06.2009, 11:26 +0200 schrieb Andreas Jung:
> >  
> >> On 30.06.09 11:24, Jens W. Klein wrote:
> >>    
> >>> Du kannst eben entweder die die Reference-API nehmen oder die "get"
> >>> Methode des fields verwenden.
> >>>      
> >> Das klappt aber nicht für Felder, die über at.schemaextender
> >> drangeflanscht werden.
> >>    
> > Woll! Dem Feld ist das doch wurscht wie es drangeflanscht wird! Einzig
> > im Restricted Python Code wird das etwas schwierig, da brauchts eine
> > Hilfe.
> >  
>
> hmm..du sagst, dass man für ein via at.schemaextender erweitertes Schema
> mit einem neuen Feld 'foo' auf die Felder via getFoo(), setFoo()
> zugreifen kann?
Nein, ich habe gesagt, dass man mit der

""" "get" Methode des fields """

an die Daten kommt -> obj.Schema()['fieldname'].get(obj)

Das es keine automagisch generierten Accessoren/Mutatatoren gibt ist ja
eh klar ;)

Da haben wir wohl einanander vorbeigepostet.

lg
--
Jens Klein
Software Architect
Managing Director, General Partner
+43 512 890077

BlueDynamics Alliance        WEB APPLICATIONS,  ZOPE,  PLONE, HOSTING
Klein & Partner KEG          production: concept, development, design
http://bluedynamics.com      consulting: analysis, coaching, training
http://zoplo.com             management: projects, process, community




_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope