Ajouter des métadonnées afin de pouvoir les exploiter.
Ajouter des métadonnées afin de pouvoir les exploiter.
Afin de pouvoir, ensuite, dans un dossier automatique (point ou séance) faire apparaitre ce champ.
Par exemple, dans 'les points décidés', ce serai interressant de voir les séances proposées
et dans tous les points, les séances souhaitées.
Nous allons dans la ZMI, Portal Catalog, indexées ... mais ensuite ...

Merci d'avance.
David, Vincent
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
),il faudrait stocker ces éléments sous forme de metadata. En effet, la plupart des vues utilisent le portal_catalog, c'est pourquoi pour ne pas accéder à l'objet au cas où il manque une donnée (ce qui est le cas pour ces 2 dates pour l'instant), il faut les ajouter sous forme de metadata. Dans Plone, si une metadata à le même nom que l'accessor (méthode qui permet d'accéder) d'une donnée (la date d'une séance), il sera automatiquement indexé.
Ici, les zones que tu souhaites afficher sont :
- la date de la séance préférée. Tu peux retrouver la séance préférée via la méthode "getPreferredMeeting" sur un point. Sur cette base, tu peux alors retrouver la date de la séance (ou juste le titre de la séance qui contient la date...)
- la date de la séance dans laquelle le point est présenté. Tu as une méthode "getMeeting" qui te ramène la séance dans laquelle le point est présenté...
Le problème c'est qu'un index ne peut pas contenir un objet... Donc, tu dois passer par une méthode intermédiaire (par exemple un script python du même nom que la metadata) qui lors de l'indexation ira chercher sur le context dudit objet la bonne valeur à indexer (la date).
Ensuite, lorsque la metadata est bien configurée, tu dois faire en sorte qu'elle puisse être affichée dans ton dossier automatique. Concernant les dossiers automatiques (ou Collections en Plone3), tu as dans la configuration du site une section "Configuration des dossiers automatiques" (en Plone 2.5 et qui s'appelle "Collections" en Plone3) qui te permet de définir quelles metadata vont être affichables dans les dossiers automatiques (ou Collections en Plone3). Il faut y ajouter tes metadata puis, dans la configuration de PloneMeeting, sur 'points décidés' par exemple, en passant par "modifier", définir les colonnes à afficher...
Dans un premier temps, créer les 2 metadata (pas du nom de l'accessor puisque tu ne peux pas, mais du nom du script intermédiaire qui appelle l'accessor)...
Bien à toi,
Gauthier Bastien, AC Sambreville
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
Dans un premier temps, créer les 2 metadata (pas du nom de l'accessor puisque tu ne peux pas, mais du nom du script intermédiaire qui appelle l'accessor)...
Bon, déjà là ... je suis perdu !

Je ne sais pas quoi créer ou ?
Par contre, pour la suite :
Ensuite, lorsque la metadata est bien configurée, tu dois faire en sorte qu'elle puisse être affichée dans ton dossier automatique. Concernant les dossiers automatiques (ou Collections en Plone3), tu as dans la configuration du site une section "Configuration des dossiers automatiques" (en Plone 2.5 et qui s'appelle "Collections" en Plone3) qui te permet de définir quelles metadata vont être affichables dans les dossiers automatiques (ou Collections en Plone3). Il faut y ajouter tes metadata puis, dans la configuration de PloneMeeting, sur 'points décidés' par exemple, en passant par "modifier", définir les colonnes à afficher...
J'avais déjà cherché de ce côté là, donc, cela m'inquiêtes moins ...

Re: Ajouter des métadonnées afin de pouvoir les exploiter.
Voilà, une piste en plus

Bien à toi,
Gauthier Bastien, AC Sambreville
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
Donc, dans portal_catalog, onglet metadata, on créé :
getDatePreferredMeeting qui va appeler :
object.getDatePreferredMeeting()
et
getDateMeeting qui va appeler :
object.getDateMeeting()
Dans un premier temps, je teste sur la séance préférée :
Dans portal_skin/custom , je créé : getDatePreferredMeeting --> Add Script (Python)
if context.Type == 'MeetingItemCollege':
if context.getPreferredMeeting:
return context.getPreferredMeeting.getDate,
Résultat : Syntax Error
On a essayé beaucoup de variantes 
J’ai essayé plus simple …
Car il existe :
getPreferredMeeting (index type : FieldIndex)
et
getDate (index type : FieldIndex)
dans indexes et qui renvoyent déjà des valeurs.
Avec getPreferredMeeting, ensuite, dans
Paramètres des dossiers automatiques / métadonnées des collections / tous les champs
Cocher getPreferredMeeting lui donner un nom : Date de collège souhaitée
Enregistrer
Puis dans la configuration plonemeeting/collège/interface utilisateur, sur ‘mes points’ par exemple
Modifier
Ajouter 'date de collège souhaitée'
Cela fonctionne, mais cela renvoi : b6dc617c9b2eb48c01327d26d9af6487
L'id de la séance souhaitée, mais pas la date ...
Re: Ajouter des métadonnées afin de pouvoir les exploiter.

Voici ce que je te conseille :
Crée 2 metadata ("preferredMeetingMetadata" et "meetingDateMetadata" par exemple, avec ces noms là, tu es sur que çà ne pose pas de problème d'attributs déjà existants sur les points ou séances), ensuite, crée 2 scripts ayant ces noms.
Dans "preferredMeetingMetadata", on teste non pas sur le portal_type (du type MeetingItemCollege, MeetingItemCouncil, ...) mais sur le meta_type qui lui ne varie pas. On va alors chercher la séance préférée si elle existe. Parfois, la valeur "pas de séance préférée" a été sélectionnée et on a alors la valeur "whatever". Ensuite, comme ce n'est pas la séance qui est derrière getPreferredMeeting mais son UID (identifiant unique à travers le site), on doit retrouver l'object représentant la séance dans l'uid_catalog et alors retourner la date de cet object (date de séance) :
if context.meta_type == 'MeetingItem':
preferred = context.getPreferredMeeting()
if preferred not in ['', 'whatever',]:
brains = context.uid_catalog(UID=preferred)
if brains:
brain = brains[0]
return brain.getObject().getDate()
Et dans meetingDateMetadata, c'est un peu plus simple puisque le point a une méthode getMeeting qui ramène cette fois le vrai object "Meeting" dans lequel le point est présenté (s'il est présenté à une séance... on teste celà avec "hasMeeting"
, voici :
if context.meta_type == 'MeetingItem':
if context.hasMeeting():
return context.getMeeting().getDate()
Et voilà, en réindexant le portal_catalog, çà devrait alors fonctionner... Sauf si je me suis planté
N'hésite pas à tester et à confirmer que çà fonctionne. Evidemment, idéalement, tout ceci devrait se trouver dans un produit python présent sur le FileSystem...
Bien à toi,
Gauthier Bastien, AC Sambreville
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
Je vais préparer les scripts, mais pas créer les métadatas pour l'instant,
nous avons un collège demain et tout le monde s'affaire sur l'instance

Je te tiens au courant.
Bonne journée.
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
Je teste donc sur la version 2.01 toute neuve.
http://montigny-app2.communesplone.be
J'ai tout bien suivi, mais il doit manquer quelque chose, car je ne vois pas mes deux critères dans les champs de la vue personnalisée lorsque je veux les ajouter à 'mes points' par exemple...
http://montigny-app2.communesplone.be/portal_plonemeeting/meeting-config-college/topics/searchmyitems/edit
Je sèche

Bonne journée.
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
le trunk a été récemment adapté pour permettre de sélectionner dans les tableaux présentant des points, les colonnes "séance souhaitée" et "séance" (représentant la séance à laquelle le point est présenté). Tu peux tester en interne (je pense que tu as une instance de test en interne?) car malheureusement cette fonctionnalité n'est pas encore disponible dans la version que tu utilises en ligne. Ce sera le cas prochainement (on doit encore valider le passage à cette dernière version).
Bien à toi,
Gauthier Bastien, AC Sambreville
Re: Ajouter des métadonnées afin de pouvoir les exploiter.
bonne journée

