<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Georges Racinet a &eacute;crit&nbsp;:
<blockquote cite="midDFDB9EE3-08C7-4E25-9F00-D0D57A101176@nuxeo.com"
 type="cite"><br>
On Aug 9, 2006, at 10:48 AM, Christophe Otton wrote: <br>
  <br>
  <blockquote type="cite">Bonjour, <br>
    <br>
Sur un CPS 3.2.4.0 et Zope 2.7.5 <br>
J'ai cr&eacute;&eacute; deux sites cps avec un chacun un produit dans lequel est
d&eacute;fini un chemin de stockage externe pour les fichiers attach&eacute;s des
types : file, news et flexible. <br>
Pour les deux premiers pas de pb mais pour les flexibles le
'disk_storage_path' est d&eacute;fini uniquement dans un script : <br>
AttachedFileWidgetPatch.py avec la ligne : <br>
    <br>
ExtendedWidgets.CPSAttachedFileWidget.field_inits[0]['disk_storage_path']
= 'var/StoSite1' <br>
et 'var/StoSite2' pour le deuxi&egrave;me site. <br>
    <br>
Evidemment, le dernier produit install&eacute; d&eacute;fini le chemin de stockage
pour les docs flexibles des deux sites. <br>
J'ai donc essay&eacute; de trouver un endroit o&ugrave; modifier ce chemin uniquement
pour le site : <br>
D'apr&egrave;s la doc de CPSSchema les champs CPS Disk File ont une propri&eacute;t&eacute;
'disk_storage_path' apparemment d&eacute;finie dans le sch&eacute;ma du document mais
les doc flexibles n'ont pas de schema ; Toujours d'apr&egrave;s la doc, si
cette propri&eacute;t&eacute; n'est pas d&eacute;finie c'est la valeur du portal_schemas qui
est utilis&eacute;e ? Mais je ne sais pas o&ugrave; est d&eacute;finie cette valeur. <br>
  </blockquote>
  <br>
Si, il y a un sch&eacute;ma (flexible), qui est cr&eacute;&eacute; dans le document au
moment de l'ajout du premier widget flexible par recopie de celui qui
est dans portal_types, qui sert donc de point de d&eacute;part. <br>
  <br>
Lorsque l'on ajoute un widget flexible, les champs n&eacute;cessaires sont
cr&eacute;&eacute;s dans ledit sch&eacute;ma, en fonction du type de widget cr&eacute;&eacute;. C'est
l'attribut de classe <br>
"field_types" qui sert &agrave; d&eacute;terminer quels types de champs cr&eacute;er. <br>
  <br>
  <br>
En CPS 3.4 (je ne suis pas s&ucirc;r pour 3.2), les propri&eacute;t&eacute;s des champs
sont de plus initialis&eacute;es en fonction de l'attribut "field_inits".
Voici un extrait de CPSSchemas/ExtendedWidgets.py: <br>
  <br>
class CPSAttachedFileWidget(CPSFileWidget): <br>
&nbsp;&nbsp;&nbsp; """AttachedFile widget.""" <br>
&nbsp;&nbsp;&nbsp; meta_type = 'AttachedFile Widget' <br>
  <br>
&nbsp;&nbsp;&nbsp; field_types = ('CPS File Field',&nbsp;&nbsp; # File <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'CPS String Field', # Plain text for indexing
(optional) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'CPS File Field',&nbsp;&nbsp; # Preview (HTML, optional) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'CPS SubObjects Field',) <br>
  <br>
&nbsp;&nbsp;&nbsp; field_inits = ({'is_searchabletext': 0, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'suffix_text': '_f1', # _f# are autocomputed field
ext <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'suffix_html': '_f2', <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'suffix_html_subfiles': '_f3', <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {'is_searchabletext': 1}, {}, {}, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) <br>
  <br>
Lorsque l'on ajoute un widget flexible de type (meta_type)
"AttachedFile Widget" il y a donc creation de 4 champs. Le premier (le
CPS File Field) portera les r&eacute;f&eacute;rences aux autres, le second est
indexable full text et rien de particulier pour les autres. <br>
  <br>
Pour faire ce que vous voulez le plus simple est de cr&eacute;er un nouveau
type de widget h&eacute;ritant de celui-l&agrave; portant les bons param&egrave;tres
(disk_storage_path sur le Disk File Field) <br>
  <br>
</blockquote>
Merci de votre r&eacute;ponse,<br>
Voil&agrave; ce que j'en ai fait en essayant de faire au plus simple (j'ai un
peu de mal avec le python...) <br>
J'aimerais bien quand m&ecirc;me une confirmation de la validit&eacute; de la manip
avant de la mettre sur le serveur en production - bien que &ccedil;a m'ait
pris une journ&eacute;e de r&eacute;flexion et 3h de travail, &ccedil;a me semble qd m&ecirc;me un
peu trop simple.<br>
<br>
Donc sur le site 1:<br>
J'ai laiss&eacute; le patch complet du CPSAttachedFileWidget qui si je
comprends bien patch pour tous les sites :<br>
<blockquote><i>from Products.CPSSchemas import ExtendedWidgets<br>
  </i></blockquote>
<blockquote><i><br>
field_types = ('CPS Disk File Field', 'CPS String Field', 'CPS File
Field')<br>
  <br>
ExtendedWidgets.CPSAttachedFileWidget.field_types = field_types<br>
ExtendedWidgets.CPSAttachedFileWidget.field_inits[0]['disk_storage_path']
= 'var/storage'<br>
  </i></blockquote>
Pour le site 2 : J'ai cr&eacute;&eacute; : <br>
<blockquote>un nouveau widget bas&eacute; sur CPSAttachedFileWidget en mettant
dans mon produit un getCustomDocumentWidget.py comme &ccedil;a (Facteau c'est
mon Site2):<br>
  <blockquote><i>"""Return custom layouts types."""<br>
widgets = {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'AttachedFileFacteau Widget': {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type': 'CPS AttachedFile Widget Type',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'data': {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'field_inits':{<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; 'disk_storage_path':'var/facteau',<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>
&nbsp;&nbsp;&nbsp; &nbsp; }<br>
return widgets</i><br>
  </blockquote>
</blockquote>
<blockquote>et un nouveau layout pour 'flexible_content'<br>
  <blockquote><i>flexible_content_layout = {<br>
&nbsp;&nbsp;&nbsp; 'widgets': { .../...<br>
    </i>
    <blockquote><i>'attachedFileFacteau': {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type': 'AttachedFileFacteau Widget',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'data': {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'title': 'cpsdoc_flex_attachedFile_title',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'fields': ('?',),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; etc...<br>
      </i></blockquote>
et<br>
    <i>'layout': {</i><br>
    <i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'style_prefix': 'layout_default_',</i><br>
    <i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'flexible_widgets': ('textimage:10', 'link',
'attachedFileFacteau:10'),</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; etc..<br>
  </blockquote>
</blockquote>
Apr&egrave;s un test rapide &ccedil;a a l'air de fonctionner, mais j'ai un encore un
petit doute... <br>
<br>
<blockquote>
  <blockquote>
    <blockquote></blockquote>
  </blockquote>
</blockquote>
<blockquote cite="midDFDB9EE3-08C7-4E25-9F00-D0D57A101176@nuxeo.com"
 type="cite">
  <blockquote type="cite"><br>
Est ce quelqu'un a une id&eacute;e pour r&eacute;soudre le pb ? <br>
    <br>
Merci d'avance <br>
    <br>
_______________________________________________ <br>
cps-users-fr <br>
Adresse de la liste : <a class="moz-txt-link-abbreviated"
 href="mailto:cps-users-fr@lists.nuxeo.com">cps-users-fr@lists.nuxeo.com</a>
    <br>
Gestion de l'abonnement :
    <a class="moz-txt-link-rfc2396E"
 href="http://lists.nuxeo.com/mailman/listinfo/cps-users-fr">&lt;http://lists.nuxeo.com/mailman/listinfo/cps-users-fr&gt;</a>
    <br>
  </blockquote>
  <br>
--------- <br>
Georges Racinet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nuxeo SAS <br>
  <a class="moz-txt-link-abbreviated" href="mailto:gracinet@nuxeo.com">gracinet@nuxeo.com</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <a class="moz-txt-link-freetext" href="http://nuxeo.com">http://nuxeo.com</a>
  <br>
Tel: +33 (0) 1 40 33 71 73 <br>
  <br>
  <br>
  <br>
  <br>
</blockquote>
<br>
<br>
</body>
</html>