Plone nach 'reference' sortieren lassen

  • Hallo,

    ich habe mit Poseidon zwei Klassen erstellt:
    Abteilung
    Studiengang

    Beide mit Tagged_Values:
    relationship:'Abteilung'
    bzw
    relationship:'Studiengang'

    +plus index:FieldIndex

    Das Problem: Er speichert mir die Verbindung so in den Index:
    b9982bf85cc62bce9cf85b5ba019e1c0 --> /test/mitarbeiter1

    Das "b9982...." sollte eigenltich "Marketing" heißen, wie kann ich jetzt mein View das ausgeben lassen, bzw nach dem sortieren??

    lg

  • Hallo,

    das Prob. ist dass, die Refs. in einem Catalog gespeichert werden und du nach den id's oder anderen Metafelder der einzellnen Objekte sortieren willst. Versuch mal nach "targetId" zu sortieren, so heißt ein Metafeld im RefCatalog. Das ist die id des ZielObjektes.

    mfg maik

  • du must im reference_catalog suchen denke ich,
    Die Werte stehen da auf jeden Fall drinn.
    Mit ein wenig probieren kommst du sicher auch daran.

    ;)

    Andere Möglichkeiten gibt es auch, aber dann müstest du jedes Objekt laden um die entsprechenden Felder auszulesen.
    Das geht nur bei ganz kleinen Mengen, sonst dauert das zu lange.

    mfg maik

  • Hallo,

    das Problem besteht noch immer, hab ja auch noch keine Lösung. :)

    Also, ich habe ein nette kleine Katalogssuche:

    Code
    <div tal:define="results python:container.portal_catalog(portal_type='Mitarbeiter',
                                                                     targetId='title',
                                                                     review_state='published');
                             Batch python:modules['Products.CMFPlone'].Batch;">

    Plone soll mir alle Mitarbeiter ausgeben die eine Reference mit dem Titel des aktuellen Ordners haben.

    Aber so wie oben, ignoriert er das ganze, ist ja auch klar :D

    Aber sonst bin ich mit meinem (spärlichen) Latein am Ende...

    Also, ich habe diese Ordnerstruktur:

    Organisation
    --Marketing
    ----- Michael Graf -> :reference 'Abteilung' = Marketing
    --Biotech
    ----- Wolfgang Schütt -> :reference 'Abteilung' = Biotech


    Also ich will im Ordner Marketing alle Mitarbeiter anzeigen die eine Abteilung = Marketing haben usw

    Und da die Ordner "marketing" und "biotech" ja nicht immer so heißen, soll er auch die ID des aktuellen Ordners nehmen, die ja auch so in der TargetId drinnensteht

    Verstanden... ? :D

    Falls nicht, und ihr etwas Zeit habt, hier das mehr oder weniger aktuelle Produkt

  • warum verwenest du referenzen?
    ist es nicht einfacher ein weiteres Feld mit der Information zu der Abteilung. Das ist auf jeden Fall robuster, als mit Referenzen. Obwohl natürlich auch Referenzen ihren Scharm haben.

    Du suchst mit deiner Abfrage im portal_catalog und nicht im referenzkatalog. Versuch mal was in der folgenden Art:

    container.reference_catalog(portal_type='Mitarbeiter',
    targetId='title',
    review_state='published');

    k.a. ob das so geht aber man sicher auch in dem catalog suchen.

    ;)

  • Ich versteh zwar nicht was du meinst, aber ich verwende Referencen, weil ich alle Abteilungen, Studienrichtungen automatisch angezeigt bekomme, wenn ich neue anlege... und sie dann einfach hinzufügen kann. und wieder aussortieren

    Und nein, funktioniert leider auch nicht. ;(

  • Nochmal kurz, ein Beispiel:
    Ich will im Order-Abteilung "Marketing" nur Mitarbeiter anzeigen, die eine Referenz auf die Abteilung "Marketing haben.

    Aber leider kann ich ihm "Marketing" nicht vorgeben, da ich verschiedene Abteilungen habe und so x-verschiedene Views machen müsste... :D


    Falls jemand eine bessere Idee hat -> bitte rausdamit, aber so das auch ich sie verstehe :sehr_verwirrt: :)

  • wie setzt du die referenzen?
    Hast du die Einstellungen vom Member aufgebohrt oder referenzierst du von den Abteilungen auf die Member. Sind die Abteilungen eigene CT's oder nur Ordner?

    lg maik

  • Im Prinzip sind die Abteilungen eigene CTs = "Abteilung", aber folderish und nur mit einem Titelattribut.

    Im Mitarbeiter habe ich ein reference Field das die vorhandenen "Abteilungen" angibt. Allerdings als "Selection", das mir nur die vorhandenen "Abteilungen" anzeigt.

    PS: nicht "Member"! mitarbeiter is ebenfalls ein neues CT, mit spezifischen Infos über den Mitarbeiter. Hat also nichts mit dem Plone-Member zu tun!!! :wink:

  • achso, also nicht über member.
    Gut aber dann sollte es ja möglich sein die Referenzen auszulesen.

    schau dir mal folgendes an:
    http://docs.neuroinf.de/api/at-api/pub…able-class.html
    da gibt es eine Methode die du auf Objekte anwenden kannst.

    z.B. gibt dir folgende Methode alle Objekten zu denen eine Referenz besteht.
    self.getRefs()
    Backreferences bekommst du mit:
    self.getBRefs()

    Damit solltest du weiter kommen.

    lg maik

  • Sorry, nach einer kurzen pause wollte ichs wieder versuchen, bekomms aber noch immer nicht hin....

    Also, schön langsam reichts mir, schreib halt einfache HTML-Seiten... :smilie111:

  • wieso wo ist jetzt noch das Problem?
    du bekommst nach meiner Anleitung die nötige Info und kannst in einem ZPT diese so wie ich dir beschrieben habe auslesen. Der Rest ist eigentlich trivial.

    Lauf in einer Schleife über deine Objekte und werte diese Infos aus.
    Du kannst auch im Portal_catalog einen neuen index anlegen der diese informationen enthält. Dazu legst du einen Index an z.B. keyIndex und gibts ihm als attribute eine methode welche die referenzen ausliest. Danach must du nur noch einmal den index reindizieren und schon hast du einen index nach dem du auch sortieren kannst.

    Nur so als Angebot, ich kann die Umsetzung gerne für Euch als Auftrag machen. Bei Interesse einfach mal Melden.

    lg maik