ReferenceField sortieren klappt nicht

12 messages Options
Embed this post
Permalink
Nico Grubert-2

ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
Hallo zusammen

Ich möchte gern ein ReferenceField sortieren, das wie folgt definiert ist:

atapi.ReferenceField('interne_links',
     widget = ReferenceBrowserWidget(label = u'interne Links'),
     multiValued = True,
     relationship='navcontenttyp_interne_links',
     accessor='getInterneLinks',
     mutator='setInterneLinks',
     ),

Das Problem ist, dass sich die Reihenfolge diese Liste nicht verändert.
Ich verwende die definierte Mutator Methode 'setInterneLinks' und
übergebe eine sortierte Liste 'intlinks', die die referenzierten Objekte
enthält:

   self.setInterneLinks(intlinks)


Wenn ich danach auf self.getInterneLinks() oder auch self.interne_links
zugreife, ist immer noch die alte Liste drin und nicht die neu sortierte.

Habe ich etwas übersehen?


Viele Grüsse
Nico


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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
Hallo,
vielleicht hilft dir das folgende Produkt weiter:
http://pypi.python.org/pypi/archetypes.referencebrowserwidget/1.0a1

Features:
[...]
allow_sorting: allows you change the order of referenced objects
(requires multiValued=1)
[...]

Gruß aus Berlin.

--
Benjamin Hedrich
Informationssysteme
--
Condat AG
Alt-Moabit 91 d | 10559 Berlin | Germany
Tel: +49.30.39 49-1166 | Fax: +49.30.39 49-1300
[hidden email] | http://www.condat.de/

Vorstand: Dr. Olaf Schemczyk (CEO), Dr. Christof Peltason
Aufsichtsratsvorsitzender: Dr. Wolfgang Babeck
HRB Berlin Charlottenburg 83319




On Mon, 2009-10-12 at 15:04 +0200, Nico Grubert wrote:

> Hallo zusammen
>
> Ich möchte gern ein ReferenceField sortieren, das wie folgt definiert ist:
>
> atapi.ReferenceField('interne_links',
>      widget = ReferenceBrowserWidget(label = u'interne Links'),
>      multiValued = True,
>      relationship='navcontenttyp_interne_links',
>      accessor='getInterneLinks',
>      mutator='setInterneLinks',
>      ),
>
> Das Problem ist, dass sich die Reihenfolge diese Liste nicht verändert.
> Ich verwende die definierte Mutator Methode 'setInterneLinks' und
> übergebe eine sortierte Liste 'intlinks', die die referenzierten Objekte
> enthält:
>
>    self.setInterneLinks(intlinks)
>
>
> Wenn ich danach auf self.getInterneLinks() oder auch self.interne_links
> zugreife, ist immer noch die alte Liste drin und nicht die neu sortierte.
>
> Habe ich etwas übersehen?
>
>
> Viele Grüsse
> Nico
>
>
> _______________________________________________
> zope mailing list
> [hidden email]
> https://mail.dzug.org/mailman/listinfo/zope




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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
In reply to this post by Nico Grubert-2
Ah du benutzt es ja schon, dann fehlt dir aber noch das Property
"allow_sorting"
http://pypi.python.org/pypi/archetypes.referencebrowserwidget/1.0a1#properties


On Mon, 2009-10-12 at 15:04 +0200, Nico Grubert wrote:

> Hallo zusammen
>
> Ich möchte gern ein ReferenceField sortieren, das wie folgt definiert ist:
>
> atapi.ReferenceField('interne_links',
>      widget = ReferenceBrowserWidget(label = u'interne Links'),
>      multiValued = True,
>      relationship='navcontenttyp_interne_links',
>      accessor='getInterneLinks',
>      mutator='setInterneLinks',
>      ),
>
> Das Problem ist, dass sich die Reihenfolge diese Liste nicht verändert.
> Ich verwende die definierte Mutator Methode 'setInterneLinks' und
> übergebe eine sortierte Liste 'intlinks', die die referenzierten Objekte
> enthält:
>
>    self.setInterneLinks(intlinks)
>
>
> Wenn ich danach auf self.getInterneLinks() oder auch self.interne_links
> zugreife, ist immer noch die alte Liste drin und nicht die neu sortierte.
>
> Habe ich etwas übersehen?
>
>
> Viele Grüsse
> Nico
>
>
> _______________________________________________
> zope mailing list
> [hidden email]
> https://mail.dzug.org/mailman/listinfo/zope
--
Benjamin Hedrich
Informationssysteme
--
Condat AG
Alt-Moabit 91 d | 10559 Berlin | Germany
Tel: +49.30.39 49-1166 | Fax: +49.30.39 49-1300
[hidden email] | http://www.condat.de/

Vorstand: Dr. Olaf Schemczyk (CEO), Dr. Christof Peltason
Aufsichtsratsvorsitzender: Dr. Wolfgang Babeck
HRB Berlin Charlottenburg 83319





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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
In reply to this post by Nico Grubert-2
Nico Grubert wrote:

> Hallo zusammen
>
> Ich möchte gern ein ReferenceField sortieren, das wie folgt definiert ist:
>
> atapi.ReferenceField('interne_links',
>     widget = ReferenceBrowserWidget(label = u'interne Links'),
>     multiValued = True,
>     relationship='navcontenttyp_interne_links',
>     accessor='getInterneLinks',
>     mutator='setInterneLinks',
>     ),
>
> Das Problem ist, dass sich die Reihenfolge diese Liste nicht verändert.

Probier mal

   http://pypi.python.org/pypi/archetypes.referencebrowserwidget

und setze 'allow_sorting' auf True.

Raphael


> Ich verwende die definierte Mutator Methode 'setInterneLinks' und
> übergebe eine sortierte Liste 'intlinks', die die referenzierten Objekte
> enthält:
>
>   self.setInterneLinks(intlinks)
>
>
> Wenn ich danach auf self.getInterneLinks() oder auch self.interne_links
> zugreife, ist immer noch die alte Liste drin und nicht die neu sortierte.
>
> Habe ich etwas übersehen?
>
>
> Viele Grüsse
> Nico
>
>
> _______________________________________________
> zope mailing list
> [hidden email]
> https://mail.dzug.org/mailman/listinfo/zope



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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
In reply to this post by Hedrich, Benjamin
> Ah du benutzt es ja schon, dann fehlt dir aber noch das Property
> "allow_sorting"
> http://pypi.python.org/pypi/archetypes.referencebrowserwidget/1.0a1#properties

Danke Raphael und Benjamin.
   allow_sorting = True
habe ich versucht.
Leider bleibt die Liste nach dem Aufruf von
   self.setInterneLinks(intlinks)
unverändert...



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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
> Danke Raphael und Benjamin.
>    allow_sorting = True
> habe ich versucht.
> Leider bleibt die Liste nach dem Aufruf von
>    self.setInterneLinks(intlinks)
> unverändert...
>

Hast du allow_sorting=True dem Konstruktur des Widgets übergeben und
nicht doch des Attributes? ;-) Hast du mal reinstalliert?


Versuche es mal so:

atapi.ReferenceField('interne_links',
     widget = ReferenceBrowserWidget(label = u'interne Links',
allow_sorting=True),
     multiValued = True,
     relationship='navcontenttyp_interne_links',
     #accessor='getInterneLinks',
     #mutator='setInterneLinks',
     ),

Gruß,
--
Benjamin Hedrich
Informationssysteme
--
Condat AG
Alt-Moabit 91 d | 10559 Berlin | Germany
Tel: +49.30.39 49-1166 | Fax: +49.30.39 49-1300
[hidden email] | http://www.condat.de/

Vorstand: Dr. Olaf Schemczyk (CEO), Dr. Christof Peltason
Aufsichtsratsvorsitzender: Dr. Wolfgang Babeck
HRB Berlin Charlottenburg 83319





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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
> Versuche es mal so:
>
> atapi.ReferenceField('interne_links',
>      widget = ReferenceBrowserWidget(label = u'interne Links',
> allow_sorting=True),
>      multiValued = True,
>      relationship='navcontenttyp_interne_links',
>      #accessor='getInterneLinks',
>      #mutator='setInterneLinks',
>      ),

Hatte ich probiert, leider ohne Erfolg.
Sollte im Edit-Formular dann ein Up/Down Link erscheinen, wenn
multiValued auf "True" gesetzt ist? Ich sehe da nix...

Was ich nicht verstehe ist, warum die Mutator-Methode nicht
funktioniert. Ist das ein Bug oder ein Feature? ;-)



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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink

> Hatte ich probiert, leider ohne Erfolg.
> Sollte im Edit-Formular dann ein Up/Down Link erscheinen, wenn
> multiValued auf "True" gesetzt ist? Ich sehe da nix...
>
> Was ich nicht verstehe ist, warum die Mutator-Methode nicht
> funktioniert. Ist das ein Bug oder ein Feature? ;-)

Nachdem ich das Produkt nochmal de-installiert und wieder neu
installiert hatte, läufts jetzt. Danke!



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

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink

> Nachdem ich das Produkt nochmal de-installiert und wieder neu
> installiert hatte, läufts jetzt. Danke!

Ich habe mich leider etwas zu früh gefreut.
Das Sortieren im Edit-Modus klappt zwar, aber die neue Reihenfolge wird
nicht abgespeichert. Sie bleibt unverändert.

Hat jemand dieses Verhalten schon mal gehabt?



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

AW: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
Hallo Nico,

  alleine das Flag "allow_sorting" reicht leider nicht aus. Du brauchst auch ein Feld, welches eine Ordnung auch unterstützt. Das mit Plone mitgelieferte ReferenceField tut das leider nicht. Eine Möglichkeit ist das OrderableReferenceField (http://plone.org/products/orderablereferencefield/)

Eine andere ist

plonerelations.ATField (http://dev.plone.org/collective/browser/plonerelations.ATField/branches/orderedfield)

-Tom


-----Ursprüngliche Nachricht-----
Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Nico Grubert
Gesendet: Dienstag, 13. Oktober 2009 12:47
An: Deutschsprachige Zope-Benutzer-Liste
Betreff: Re: [dzug-zope] ReferenceField sortieren klappt nicht


> Nachdem ich das Produkt nochmal de-installiert und wieder neu
> installiert hatte, läufts jetzt. Danke!

Ich habe mich leider etwas zu früh gefreut.
Das Sortieren im Edit-Modus klappt zwar, aber die neue Reihenfolge wird nicht abgespeichert. Sie bleibt unverändert.

Hat jemand dieses Verhalten schon mal gehabt?



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

Re: AW: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
Hi,

ich lese grade in wenig mit und will Mal a bischerl Hintergrundwissen
liefern:

a) Archetypes Referecences funktionieren schön ohne jedes Field. Es ist
eine eigene "Referenceable-API", die man sogar ebenso schön rausschälen
könnte; und die hat mit den Archetypes - als fields, widgets, storages
usw. - nicht viel zu tun. References sind grundsätzlich aber nicht
geordnet. Das hat primär Performance Gründe (ja auch an sowas wurde
damals gedacht, wenn wir es heute dann noch besser machen könnten - die
Welt steht nicht still).

b) Archetypes Fields haben im Normalfall ein Storage und ein Widget. Das
Storage sorgt z.B. für das Einhalten der Reihenfolge bei Listen.

c) Das ReferenceField hat _kein_ Storage. Die References werden im "set"
des Fields nicht an ein Storage delegiert, sondern an die Referenceable
API. Achja, und wie war das? Diese ist nicht geordnet!

Soweit so gut. Jetzt wollen wir Orderable References? Das geht nur mit
einem Field, dass sich die Order merkt und in ein Storage schreibt und
dann die Referenzen an die API delegiert. Sowas gibt es hier:
https://dev.plone.org/archetypes/browser/Products.OrderableReferenceField/trunk
oder das von Tom genannte.

Nachteil ist, dass Referenzen die nicht über das Field gesetzt werden im
Field nicht, bzw ausserhalb der Order erscheinen. Redundanz haben wir
auch. Wird eine Reference gelöscht ohne das Field zu Nutzen, so wird
diese in der Field -Order bestehen bleiben. Das kann man eventuell
sinnvoll abfangen und ich habe mir die Field-Implementierung in der
Hinsicht nicht angeschaut. Aber man muss eine Gewisse Aufmerksamkeit bei
diesen Punkten an den Tag legen.

Ich hoffe das hilft ein wenig.

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

Klein & Partner KEG          WEB APPLICATIONS,  ZOPE,  PLONE, HOSTING
BlueDynamics Alliance        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
Nico Grubert-2

Re: ReferenceField sortieren klappt nicht

Reply Threaded More More options
Print post
Permalink
In reply to this post by Gross,Thomas Michael
>   alleine das Flag "allow_sorting" reicht leider nicht aus. Du brauchst auch ein Feld, welches eine Ordnung auch unterstützt. Das mit Plone mitgelieferte ReferenceField tut das leider nicht. Eine Möglichkeit ist das OrderableReferenceField (http://plone.org/products/orderablereferencefield/)
>
> Eine andere ist
>
> plonerelations.ATField (http://dev.plone.org/collective/browser/plonerelations.ATField/branches/orderedfield)
>
> -Tom

Hallo Tom (und Jens)

vielen Dank soweit erstmal.
Vielen Dank auch an Jens für die ausführliche Antwort.

Ich habe
http://dev.plone.org/collective/browser/plonerelations.ATField/branches/orderedfield
installiert, bekomme aber einen KeyError, wenn ich versuche, zu speichern.

'OrderableReferenceField' habe ich versucht, gemäss Anleitung
http://svn.zope.de/plone.org/archetypes/Products.OrderableReferenceField/trunk/docs/INSTALL.txt
zu installieren, aber beim Aufruf von bin/buildout erhalte ich den
folgenden Fehler:

Couldn't find index page for 'Products.OrderableReferenceField' (maybe
misspelled?)
Getting distribution for 'Products.OrderableReferenceField'.
While:
   Installing instance.
   Getting distribution for 'Products.OrderableReferenceField'.
Error: Couldn't find a distribution for 'Products.OrderableReferenceField'.

Gruss
Nico



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