TERRIEN Mickael wrote:

C'est justement ce que je viens d'essayer de faire :

--------------- patchRSSChannel.py ----------------------------
from Products.CPSRSS import RSSChannel


def _retrieveRSSFeed(self): #code modifi� ...

RSSChannel._retrieveRSSFeed = _retrieveRSSFeed
---------------------------------------------------------------

Mais cela ne fonctionne pas. Est-ce bien �a la syntaxe ?

J'ai l'impression que mon patch n'est pas pris en compte vu que c'est une m�thode "priv�e" que je mets � jour.


Avez vous ajout� votre fichier dans la chaine d'initialisation de zope,
cad en import dans l'__init__.py par exemple ?






-----Message d'origine----- De : Tarek Ziad� [mailto:[EMAIL PROTECTED] Envoy� : jeudi 14 avril 2005 11:09 � : TERRIEN Mickael Cc : [email protected] Objet : Re: TR: [CPS-users-fr] Customiser un produit


[note : je me permet de Cc sur la mailing pour archivage]

Bonjour,


TERRIEN Mickael wrote:



Bonjour,

Merci pour votre r�ponse.

En fait, je veux centraliser toutes mes customisations (je pr�cise "non commun � plusieurs utilisateurs" sinon je vous les aurais soumis) dans mon produit. Mon but est de faire un "produit" et tant pis si il y a ensuite des probl�mes avec les mises � jour. Je veux juste que quand je r�installe CPS mes fichiers ne soient pas �cras�s donc je veux qu'ils soient dans mon produit.

J'essaie pour cela d'appliquer un patch dynamique � la classe 
"CPSRSS/RSSChannel.py".

C'est juste un d�tail que j'ai modifi� dans la m�thode "_retrieveRSSFeed" qui 
m'impose de surcharger cette m�thode.

Comment faire ?

J'ai essay� :

--------------- patchRSSChannel.py ----------------------------
#D�but


from Products.CPSRSS import RSSChannel


#Suite
//Tout le code de RSSChannel.py avec ma modification dans la m�thode 
"_retrieveRSSFeed"

#Patch dynamique appliqu� � RSSChannel.py
RSSChannel = RSSChannel

#Fin
---------------------------------------------------------------

Mais c'est toujours l'ancienne m�thode qui est prise en compte !

Merci d'avance.




A ok en fait le principe du patch est le suivant :

fichier Foo.py :
class Foo:
   def bar(self):
       print 'fonctionnement original'



le patch fichier FooPatch.py :
(contient juste le delta)

from Foo import Foo

def bar(self):
   print 'je pr�f�re ainsi'

Foo.bar = bar
# a partir de ce point la classe Foo est patch�e









-----Message d'origine----- De : Tarek Ziad� [mailto:[EMAIL PROTECTED] Envoy� : mercredi 13 avril 2005 13:11 � : TERRIEN Mickael Cc : [email protected] Objet : Re: TR: [CPS-users-fr] Customiser un produit


TERRIEN Mickael wrote:





Dans mon cas, ce sont des classes de ces produits que je modifie.

Par exemple, RSSChannel.py pour le produit "CPSRSS" ou encore TypeMakerTool.py pour le produit "CPSTypeMaker"

Que me conseillez-vous de faire ?

J'ai l'impression que c'est de cr�er mon propre produit...






Ca tiens plus de l'�volution d'un produit que de la cr�ation d'un nouveau produit, car vous etes surement
en train de customiser des parties de cps qui n'ont pas �t� pr�vues pour l'instant pour etre customis�s comme les schemas, layouts etc..


Le probl�me surviendra lorsque vous mettrez � jour les produits concern�s avec des nouvelles version de CPS.

Pouvez vous nous d�crire bri�vement les modifications que vous apportez ?

Si ce sont des besoins de customisation communs � plusieurs utilisateurs, il s'agira alors peut etre de sortir des nouveaux points de customisation du produit concern� pour que vous puissiez adapter le fonctionnement de mani�re p�renne.

Tarek





-----Message d'origine-----
De : Anahide Tchertchian [mailto:[EMAIL PROTECTED]
Envoy� : mercredi 13 avril 2005 12:19
� : TERRIEN Mickael
Cc : [email protected]
Objet : Re: [CPS-users-fr] Customiser un produit


TERRIEN Mickael wrote:






Bonjour,






Bonjour,







je voudrais conna�tre la m�thode conseill�e pour customiser un produit ?






La m�thode conseill�e est, en effet, de cr�er son propre produit, dont l'installeur appelle l'installeur par d�faut de CPS, puis met en place les comportements personnalis�s.







Actuellement, je modifie directement les sources du produit pour qu'il prenne en compte les cas sp�cifiques et g�n�riques.
Mais je voudrais centraliser ces modifications dans mon produit personnel.


Quelle est la bonne m�thode ? :
- copier dans mon produit les classes en jeu
- installer le produit customis� (modifier le fichier install, ...) dans mon produit
- syst�me de patch


Est-ce-qu'une m�thode est ind�pendante des �ventuels mises � jour des produits concern�s ?






Je ne suis pas sure de comprendre cette question, mais peut-etre que l'explication precedente y repond : c'est l'appel du script d'update de CPS avant l'installation des specificites qui assure la mise a jour correcte du site.

Pour ce qui est des methodes plus "concretes", tout depend des modifications.
S'il s'agit de modifier un schema/layout par exemple, il est possible de les redefinir dans votre produit, et cette configuration ecrasera la configuration par defaut.


Certaines fois,la personnalisation est l�g�rement plus compliqu�e (modifications des methodes d'un widget par exemple).

D'autres fois encore, il est plus simple de monkey-patcher, voire patcher, mais en g�n�ral il vaut mieux l'�viter.

N'h�sitez pas � poser des questions concernant des personnalisations que vous ne sauriez pas mettre en place.

Cordialement,


















--
Tarek ZIADE, Nuxeo SARL: Zope Service Provider.
Mail: [EMAIL PROTECTED] - Tel: +33 (0)6 30 37 02 63
Nuxeo Collaborative Portal Server: http://www.nuxeo.com/cps
Gestion de contenu web / portail collaboratif / groupware / open source

_______________________________________________
cps-users-fr Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>

Répondre à