Woziii commited on
Commit
7d548ba
·
verified ·
1 Parent(s): 12d1337

Update contract_builder.py

Browse files
Files changed (1) hide show
  1. contract_builder.py +54 -39
contract_builder.py CHANGED
@@ -18,34 +18,49 @@ class ContractBuilder:
18
  def get_styles():
19
  """
20
  Retourne les styles pour le document PDF.
 
21
 
22
  Returns:
23
  dict: Dictionnaire des styles
24
  """
25
  styles = getSampleStyleSheet()
26
- styles.add(ParagraphStyle(name='Titre',
 
 
 
 
 
27
  fontName='Helvetica-Bold',
28
  fontSize=14,
29
  alignment=TA_CENTER,
30
  spaceAfter=12))
31
- styles.add(ParagraphStyle(name='Sous-titre',
 
 
32
  fontName='Helvetica-Bold',
33
  fontSize=12,
34
  spaceAfter=10,
35
  alignment=TA_CENTER))
36
- styles.add(ParagraphStyle(name='Normal',
 
 
37
  fontName='Helvetica',
38
  fontSize=10,
39
  alignment=TA_JUSTIFY,
40
  spaceAfter=6))
41
- styles.add(ParagraphStyle(name='Article',
 
 
42
  fontName='Helvetica-Bold',
43
  fontSize=11,
44
  spaceAfter=8))
45
- styles.add(ParagraphStyle(name='Sous-article',
 
 
46
  fontName='Helvetica-Bold',
47
  fontSize=10,
48
  spaceAfter=6))
 
49
  return styles
50
 
51
  @staticmethod
@@ -78,7 +93,7 @@ class ContractBuilder:
78
 
79
  # 1. Titre du contrat
80
  title = ContractTemplates.get_title(contract_type)
81
- elements.append(Paragraph(title, styles['Titre']))
82
  elements.append(Spacer(1, 15))
83
 
84
  # 2. Préambule
@@ -88,9 +103,9 @@ class ContractBuilder:
88
  if paragraph.strip():
89
  # Si c'est un titre comme "PRÉAMBULE" ou "ENTRE LES SOUSSIGNÉS"
90
  if paragraph.isupper() and len(paragraph) < 50:
91
- elements.append(Paragraph(paragraph, styles['Sous-titre']))
92
  else:
93
- elements.append(Paragraph(paragraph, styles['Normal']))
94
 
95
  # Ajouter un espace plus grand après les titres
96
  if paragraph.isupper() and len(paragraph) < 50:
@@ -111,12 +126,12 @@ class ContractBuilder:
111
  if paragraph.strip():
112
  # Si c'est un titre d'article (commence par "ARTICLE")
113
  if paragraph.startswith("ARTICLE"):
114
- elements.append(Paragraph(paragraph, styles['Article']))
115
  # Si c'est un sous-titre (comme "1.1 Œuvre concernée")
116
  elif paragraph.strip().startswith("1.") and len(paragraph.split("\n")[0]) < 50:
117
- elements.append(Paragraph(paragraph, styles['Sous-article']))
118
  else:
119
- elements.append(Paragraph(paragraph, styles['Normal']))
120
  elements.append(Spacer(1, 6))
121
 
122
  # Compteur d'articles
@@ -130,12 +145,12 @@ class ContractBuilder:
130
  if paragraph.strip():
131
  # Si c'est un titre d'article (commence par "ARTICLE")
132
  if paragraph.startswith("ARTICLE"):
133
- elements.append(Paragraph(paragraph, styles['Article']))
134
  # Si c'est un sous-titre (comme "2.1 Nature de la cession")
135
  elif paragraph.strip().startswith("2.") and len(paragraph.split("\n")[0]) < 50:
136
- elements.append(Paragraph(paragraph, styles['Sous-article']))
137
  else:
138
- elements.append(Paragraph(paragraph, styles['Normal']))
139
  elements.append(Spacer(1, 6))
140
  article_num += 1
141
 
@@ -157,12 +172,12 @@ class ContractBuilder:
157
  if paragraph.strip():
158
  # Si c'est un titre d'article (commence par "ARTICLE")
159
  if paragraph.startswith("ARTICLE"):
160
- elements.append(Paragraph(paragraph, styles['Article']))
161
  # Si c'est un sous-titre (comme "3.1 Objet de l'autorisation")
162
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
163
- elements.append(Paragraph(paragraph, styles['Sous-article']))
164
  else:
165
- elements.append(Paragraph(paragraph, styles['Normal']))
166
  elements.append(Spacer(1, 6))
167
  article_num += 1
168
 
@@ -173,12 +188,12 @@ class ContractBuilder:
173
  if paragraph.strip():
174
  # Si c'est un titre d'article (commence par "ARTICLE")
175
  if paragraph.startswith("ARTICLE"):
176
- elements.append(Paragraph(paragraph, styles['Article']))
177
  # Si c'est un sous-titre (comme "4.1 Durée")
178
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
179
- elements.append(Paragraph(paragraph, styles['Sous-article']))
180
  else:
181
- elements.append(Paragraph(paragraph, styles['Normal']))
182
  elements.append(Spacer(1, 6))
183
  article_num += 1
184
 
@@ -190,12 +205,12 @@ class ContractBuilder:
190
  if paragraph.strip():
191
  # Si c'est un titre d'article (commence par "ARTICLE")
192
  if paragraph.startswith("ARTICLE"):
193
- elements.append(Paragraph(paragraph, styles['Article']))
194
  # Si c'est un sous-titre (comme "5.1 Supports autorisés")
195
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
196
- elements.append(Paragraph(paragraph, styles['Sous-article']))
197
  else:
198
- elements.append(Paragraph(paragraph, styles['Normal']))
199
  elements.append(Spacer(1, 6))
200
  article_num += 1
201
 
@@ -206,12 +221,12 @@ class ContractBuilder:
206
  if paragraph.strip():
207
  # Si c'est un titre d'article (commence par "ARTICLE")
208
  if paragraph.startswith("ARTICLE"):
209
- elements.append(Paragraph(paragraph, styles['Article']))
210
  # Si c'est un sous-titre (comme "6.1 Cession à titre gratuit")
211
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
212
- elements.append(Paragraph(paragraph, styles['Sous-article']))
213
  else:
214
- elements.append(Paragraph(paragraph, styles['Normal']))
215
  elements.append(Spacer(1, 6))
216
  article_num += 1
217
 
@@ -222,12 +237,12 @@ class ContractBuilder:
222
  if paragraph.strip():
223
  # Si c'est un titre d'article (commence par "ARTICLE")
224
  if paragraph.startswith("ARTICLE"):
225
- elements.append(Paragraph(paragraph, styles['Article']))
226
  # Si c'est un sous-titre (comme "7.1 Garanties de l'Auteur")
227
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
228
- elements.append(Paragraph(paragraph, styles['Sous-article']))
229
  else:
230
- elements.append(Paragraph(paragraph, styles['Normal']))
231
  elements.append(Spacer(1, 6))
232
  article_num += 1
233
 
@@ -238,12 +253,12 @@ class ContractBuilder:
238
  if paragraph.strip():
239
  # Si c'est un titre d'article (commence par "ARTICLE")
240
  if paragraph.startswith("ARTICLE"):
241
- elements.append(Paragraph(paragraph, styles['Article']))
242
  # Si c'est un sous-titre (comme "8.1 Résiliation pour inexécution")
243
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
244
- elements.append(Paragraph(paragraph, styles['Sous-article']))
245
  else:
246
- elements.append(Paragraph(paragraph, styles['Normal']))
247
  elements.append(Spacer(1, 6))
248
  article_num += 1
249
 
@@ -254,12 +269,12 @@ class ContractBuilder:
254
  if paragraph.strip():
255
  # Si c'est un titre d'article (commence par "ARTICLE")
256
  if paragraph.startswith("ARTICLE"):
257
- elements.append(Paragraph(paragraph, styles['Article']))
258
  # Si c'est un sous-titre (comme "9.1 Clause de non-dénigrement")
259
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
260
- elements.append(Paragraph(paragraph, styles['Sous-article']))
261
  else:
262
- elements.append(Paragraph(paragraph, styles['Normal']))
263
  elements.append(Spacer(1, 6))
264
  article_num += 1
265
 
@@ -270,12 +285,12 @@ class ContractBuilder:
270
  if paragraph.strip():
271
  # Si c'est un titre d'article (commence par "ARTICLE")
272
  if paragraph.startswith("ARTICLE"):
273
- elements.append(Paragraph(paragraph, styles['Article']))
274
  # Si c'est un sous-titre (comme "10.1 Loi applicable")
275
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
276
- elements.append(Paragraph(paragraph, styles['Sous-article']))
277
  else:
278
- elements.append(Paragraph(paragraph, styles['Normal']))
279
  elements.append(Spacer(1, 6))
280
 
281
  # 13. Signatures
@@ -284,7 +299,7 @@ class ContractBuilder:
284
  paragraphs = signatures.split('\n\n')
285
  for paragraph in paragraphs:
286
  if paragraph.strip():
287
- elements.append(Paragraph(paragraph, styles['Normal']))
288
  elements.append(Spacer(1, 8))
289
 
290
  return elements
 
18
  def get_styles():
19
  """
20
  Retourne les styles pour le document PDF.
21
+ Version corrigée pour éviter les conflits de styles.
22
 
23
  Returns:
24
  dict: Dictionnaire des styles
25
  """
26
  styles = getSampleStyleSheet()
27
+
28
+ # Modifier les styles existants plutôt que d'en ajouter de nouveaux
29
+ # ou utiliser des noms différents pour éviter les conflits
30
+
31
+ # Ajouter un style personnalisé pour le titre
32
+ styles.add(ParagraphStyle(name='ContractTitle',
33
  fontName='Helvetica-Bold',
34
  fontSize=14,
35
  alignment=TA_CENTER,
36
  spaceAfter=12))
37
+
38
+ # Ajouter un style personnalisé pour les sous-titres
39
+ styles.add(ParagraphStyle(name='ContractSubtitle',
40
  fontName='Helvetica-Bold',
41
  fontSize=12,
42
  spaceAfter=10,
43
  alignment=TA_CENTER))
44
+
45
+ # Ajouter un style personnalisé pour le texte normal
46
+ styles.add(ParagraphStyle(name='ContractText',
47
  fontName='Helvetica',
48
  fontSize=10,
49
  alignment=TA_JUSTIFY,
50
  spaceAfter=6))
51
+
52
+ # Ajouter un style personnalisé pour les articles
53
+ styles.add(ParagraphStyle(name='ContractArticle',
54
  fontName='Helvetica-Bold',
55
  fontSize=11,
56
  spaceAfter=8))
57
+
58
+ # Ajouter un style personnalisé pour les sous-articles
59
+ styles.add(ParagraphStyle(name='ContractSubArticle',
60
  fontName='Helvetica-Bold',
61
  fontSize=10,
62
  spaceAfter=6))
63
+
64
  return styles
65
 
66
  @staticmethod
 
93
 
94
  # 1. Titre du contrat
95
  title = ContractTemplates.get_title(contract_type)
96
+ elements.append(Paragraph(title, styles['ContractTitle']))
97
  elements.append(Spacer(1, 15))
98
 
99
  # 2. Préambule
 
103
  if paragraph.strip():
104
  # Si c'est un titre comme "PRÉAMBULE" ou "ENTRE LES SOUSSIGNÉS"
105
  if paragraph.isupper() and len(paragraph) < 50:
106
+ elements.append(Paragraph(paragraph, styles['ContractSubtitle']))
107
  else:
108
+ elements.append(Paragraph(paragraph, styles['ContractText']))
109
 
110
  # Ajouter un espace plus grand après les titres
111
  if paragraph.isupper() and len(paragraph) < 50:
 
126
  if paragraph.strip():
127
  # Si c'est un titre d'article (commence par "ARTICLE")
128
  if paragraph.startswith("ARTICLE"):
129
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
130
  # Si c'est un sous-titre (comme "1.1 Œuvre concernée")
131
  elif paragraph.strip().startswith("1.") and len(paragraph.split("\n")[0]) < 50:
132
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
133
  else:
134
+ elements.append(Paragraph(paragraph, styles['ContractText']))
135
  elements.append(Spacer(1, 6))
136
 
137
  # Compteur d'articles
 
145
  if paragraph.strip():
146
  # Si c'est un titre d'article (commence par "ARTICLE")
147
  if paragraph.startswith("ARTICLE"):
148
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
149
  # Si c'est un sous-titre (comme "2.1 Nature de la cession")
150
  elif paragraph.strip().startswith("2.") and len(paragraph.split("\n")[0]) < 50:
151
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
152
  else:
153
+ elements.append(Paragraph(paragraph, styles['ContractText']))
154
  elements.append(Spacer(1, 6))
155
  article_num += 1
156
 
 
172
  if paragraph.strip():
173
  # Si c'est un titre d'article (commence par "ARTICLE")
174
  if paragraph.startswith("ARTICLE"):
175
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
176
  # Si c'est un sous-titre (comme "3.1 Objet de l'autorisation")
177
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
178
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
179
  else:
180
+ elements.append(Paragraph(paragraph, styles['ContractText']))
181
  elements.append(Spacer(1, 6))
182
  article_num += 1
183
 
 
188
  if paragraph.strip():
189
  # Si c'est un titre d'article (commence par "ARTICLE")
190
  if paragraph.startswith("ARTICLE"):
191
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
192
  # Si c'est un sous-titre (comme "4.1 Durée")
193
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
194
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
195
  else:
196
+ elements.append(Paragraph(paragraph, styles['ContractText']))
197
  elements.append(Spacer(1, 6))
198
  article_num += 1
199
 
 
205
  if paragraph.strip():
206
  # Si c'est un titre d'article (commence par "ARTICLE")
207
  if paragraph.startswith("ARTICLE"):
208
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
209
  # Si c'est un sous-titre (comme "5.1 Supports autorisés")
210
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
211
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
212
  else:
213
+ elements.append(Paragraph(paragraph, styles['ContractText']))
214
  elements.append(Spacer(1, 6))
215
  article_num += 1
216
 
 
221
  if paragraph.strip():
222
  # Si c'est un titre d'article (commence par "ARTICLE")
223
  if paragraph.startswith("ARTICLE"):
224
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
225
  # Si c'est un sous-titre (comme "6.1 Cession à titre gratuit")
226
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
227
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
228
  else:
229
+ elements.append(Paragraph(paragraph, styles['ContractText']))
230
  elements.append(Spacer(1, 6))
231
  article_num += 1
232
 
 
237
  if paragraph.strip():
238
  # Si c'est un titre d'article (commence par "ARTICLE")
239
  if paragraph.startswith("ARTICLE"):
240
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
241
  # Si c'est un sous-titre (comme "7.1 Garanties de l'Auteur")
242
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
243
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
244
  else:
245
+ elements.append(Paragraph(paragraph, styles['ContractText']))
246
  elements.append(Spacer(1, 6))
247
  article_num += 1
248
 
 
253
  if paragraph.strip():
254
  # Si c'est un titre d'article (commence par "ARTICLE")
255
  if paragraph.startswith("ARTICLE"):
256
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
257
  # Si c'est un sous-titre (comme "8.1 Résiliation pour inexécution")
258
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
259
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
260
  else:
261
+ elements.append(Paragraph(paragraph, styles['ContractText']))
262
  elements.append(Spacer(1, 6))
263
  article_num += 1
264
 
 
269
  if paragraph.strip():
270
  # Si c'est un titre d'article (commence par "ARTICLE")
271
  if paragraph.startswith("ARTICLE"):
272
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
273
  # Si c'est un sous-titre (comme "9.1 Clause de non-dénigrement")
274
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
275
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
276
  else:
277
+ elements.append(Paragraph(paragraph, styles['ContractText']))
278
  elements.append(Spacer(1, 6))
279
  article_num += 1
280
 
 
285
  if paragraph.strip():
286
  # Si c'est un titre d'article (commence par "ARTICLE")
287
  if paragraph.startswith("ARTICLE"):
288
+ elements.append(Paragraph(paragraph, styles['ContractArticle']))
289
  # Si c'est un sous-titre (comme "10.1 Loi applicable")
290
  elif paragraph.strip()[0].isdigit() and "." in paragraph.strip()[:3] and len(paragraph.split("\n")[0]) < 50:
291
+ elements.append(Paragraph(paragraph, styles['ContractSubArticle']))
292
  else:
293
+ elements.append(Paragraph(paragraph, styles['ContractText']))
294
  elements.append(Spacer(1, 6))
295
 
296
  # 13. Signatures
 
299
  paragraphs = signatures.split('\n\n')
300
  for paragraph in paragraphs:
301
  if paragraph.strip():
302
+ elements.append(Paragraph(paragraph, styles['ContractText']))
303
  elements.append(Spacer(1, 8))
304
 
305
  return elements