Bonjour à tous,

Je bricole de plus en plus en python et cette fois je m'attaque aux class (je dev plus en php) et surtout j'essaie d'organiser mon projet. J'écris un programme pour automatiser la création de fichier pdf à partir de fichier csv extrait d'un ERP. La base en là mais je bloque sur le passage d'une variable d'une class à une autre.

Lorsque je lance le programme j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
{'root': '/home/xxxxx/Scripts', 'source': '/import', 'export': '/export', 'assets': '/assets', 'font': 'helvetica', 'font_size': 10, 'marge_all': 85, 'marge_left': 10, 'marge_top': 10, 'marge_right': 10}
 
Traceback (most recent call last):
  File "/home/xxx/Scripts/x3topdf/./main.py", line 94, in <module>
    main(sys.argv)
  File "/home/xxx/Scripts/x3topdf/./main.py", line 85, in main
    pdf.add_page()
  File "/home/xxx/.local/lib/python3.10/site-packages/fpdf/fpdf.py", line 787, in add_page
    self.header()
  File "/home/xxx/Scripts/x3topdf/modules/pdf.py", line 6, in header
    self.image(config['root'] + "/" + config['assets'] + "/logo.png", 10, 8, 33)
NameError: name 'config' is not defined
Si je comprends bien, l'objet config n'est pas accessible dans la class PDF, mais c'est ici que s'arrête mes connaissances python Est-ce que vous avez des pistes pour que je puisse continuer l'écriture du programme ?

Merci d'avance.

Structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
+main.py
+config.json
+modules/
+-- tools.py
+-- pdf.py
main.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sys, datetime, csv
from modules.tools import tools
from modules.pdf import PDF
 
def createVar(f, v):
    globals()[f] = v
 
def main(argv=None):
    config = tools.loadConfig()
    print(config)
    pdf = PDF()
    pdf.set_font(config['font'], size=config['font_size'])
    pdf.set_margin(config['marge_all'])
    pdf.set_margins(config['marge_left'], config['marge_top'], config['marge_right'])
 
    file = csv.DictReader(open(config['root'] + "/" + config['source'] + "/FACHIL21040400.csv", "r"), delimiter="|")
[...]
 
if __name__ == "__main__":
        main(sys.argv)
tools.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
import json
 
class tools:
    def loadConfig():
        try:
            with open('./config.json', 'r') as fichier:
                config = json.load(fichier)
            return config
        except FileNotFoundError:
            print("Fichier de configuration illisible")
            exit(1)
pdf.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
# https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html
from fpdf import FPDF
 
class PDF(FPDF):
    def header(self):
        self.image(config['root'] + "/" + config['assets'] + "/logo.png", 10, 8, 33)
        self.set_font(config['font'], "B", 11)
        self.cell(60)
[...]
Tronqué car l'erreur est présente dès le début