Crème CRM
Ajout de nouveau thème pour une publication PDF - Version imprimable

+- Crème CRM (https://www.cremecrm.com/forum)
+-- Forum : Développeurs (https://www.cremecrm.com/forum/forumdisplay.php?fid=10)
+--- Forum : Général (https://www.cremecrm.com/forum/forumdisplay.php?fid=11)
+--- Sujet : Ajout de nouveau thème pour une publication PDF (/showthread.php?tid=211)



Ajout de nouveau thème pour une publication PDF - matthieu - 10-09-2021

Bonjour je sollicite votre aide pour créer de nouveaux thèmes au niveau des publications PDF.
A ce jour je ne dispose que de cappuccino comme thème. et je souhaiterai rajouter 1 autre thème.

Je sais que la css est a ce niveau dans l'arborescence : creme_crm/creme/billing/templates/billing/export/xhtml2pdf/FR/fr_FR/cappuccino
du coup j'ai mis 1 dossier supplémentaire à ce niveau, en veillant bien a respecter les chemins pour les html.

J'ai ensuite déposé les miniatures png à ce niveau creme_crm/creme/media/static/billing/

j'ai ensuite modifié le fichier home/creme/creme_crm/creme/billing/exporters/xhtml2pdf.py et rajouté au niveau du FLAVOURS_INFO  un nouveau l10n.fr comportant les refs de mon nouveau thème.

En actualisant le panneau
Configuration > 
Application: Facturation
je m'aperçois que je n'ai rien. ai je manqué quelquechose ?

Mercci de vos réponses
Matthieu


RE: Ajout de nouveau thème pour une publication PDF - genglert - 13-09-2021

Bonjour,

il faudra au moins lancer la commande 'generatemedia' pour que la miniature soit prise en compte, et ensuite modifier une configuration (genre celle des factures, avec le petit stylo à droite de la ligne correspondante), où votre nouveau thème devrait être proposé dans l'étape 2.

J'espère ne rien oublier.


RE: Ajout de nouveau thème pour une publication PDF - matthieu - 29-09-2021

Bonjour, et merci de votre reponse. après avoir effectué ces manip j'ai ceci à la selection du thème (dans config>application:facturation) :
'Xhtml2pdfTheme' object has no attribute 'items'

Pour récapituler j'ai procéder ainsi :
1 - depose dans xhtml2pdf > FR > fr_FR de 2 templates
2 - modif du xhtml2pdf.py
avec  comme code :


Code :
FLAVOURS_INFO = {
       l10n.FR: {
           'fr_FR': {
               'cappuccino': Xhtml2pdfTheme(
                   verbose_name='.pdf - Xhtml2pdf - Thème Cappuccino (France)',
                   # description='...',  # TODO ?
                   # TODO: attribute "directory" ?
                   templates={
                       billing.get_invoice_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/cappuccino/invoice.html',
                       billing.get_credit_note_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/cappuccino/credit_note.html',
                       billing.get_quote_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/cappuccino/quote.html',
                       billing.get_sales_order_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/cappuccino/sales_order.html',
                       billing.get_template_base_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/cappuccino/template.html',
                   },
                   # TODO: by ContentType ?
                   screenshots=['billing/sample_xhtml2pdf.png'],
               ),
           },

       },
        'fr_FR': {
               'ADT': Xhtml2pdfTheme(
                   verbose_name='.pdf - Xhtml2pdf - Thème ADT (France)',
                   # description='...',  # TODO ?
                   # TODO: attribute "directory" ?
                   templates={
                       billing.get_invoice_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/ADT/invoice.html',
                       billing.get_credit_note_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/ADT/credit_note.html',
                       billing.get_quote_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/ADT/quote.html',
                       billing.get_sales_order_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/ADT/sales_order.html',
                       billing.get_template_base_model():
                           'billing/export/xhtml2pdf/FR/fr_FR/ADT/template.html',
                   },
                   # TODO: by ContentType ?
                   screenshots=['billing/sample_adt_xhtml2pdf.png'],
               ),
           }
   }


3 - fais un restart cremecrm_job_manager dans putty

Ai je manquer quelque chose ou fais une erreur dans le code ?

Je ne me sert de putty que pour faire un restart cremecrm_job_manager


RE: Ajout de nouveau thème pour une publication PDF - genglert - 30-09-2021

Bonjour,

quelque remarques d'ordre général pour commencer :

- lorsque vous avez une exception, ça peut être utile de donner toute la stacktrace plutôt que juste le message final, car les autres ne peuvent pas deviner où se déclare l'erreur par exemple.
- il y a des balises offertes par le forum afin de poster du code, et avoir par exemple une indentation correcte, ce qui facilitera la tâche aux autres pour vous aider.
- comme expliqué dans le tutoriel de développement de modules Creme (que vous trouverez dans doc/fr/ dans les sources) je ne saurai que trop vous conseiller de garder vos modifications dans une app à part (qui contiendra vos templates par exemple, et depuis laquelle vous pourrez modifier FLAVOURS_INFO).
- vous parlez de 'putty' ; j'imagine que ça veux dire que vous codez à distance sur un serveur, plutôt qu'avoir un Creme de développement sur votre poste (et de déployer qu'une fois le développement terminé). C'est une très mauvais idée, pour de nombreuses raisons...

Sinon pour votre problème du jour, j'ai l'impression que vous mettez votre clé 'ADT' n'importe où (elle devrait être dans le dictionnaire correspondant à la clé 'fr_FR' existante).

Bonne continuation !