File size: 44,975 Bytes
2e25654
 
6dfc0a1
 
2e25654
 
 
 
 
 
6dfc0a1
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
2e25654
6dfc0a1
2e25654
 
 
 
6dfc0a1
 
2e25654
 
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
 
6dfc0a1
 
 
 
2e25654
 
6dfc0a1
 
 
 
2e25654
6dfc0a1
2e25654
 
6dfc0a1
 
 
 
2e25654
6dfc0a1
2e25654
6dfc0a1
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
2e25654
 
 
 
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
6dfc0a1
 
 
 
 
2e25654
 
6dfc0a1
 
 
 
 
 
2e25654
 
6dfc0a1
 
 
 
 
 
 
 
2e25654
 
6dfc0a1
 
 
 
2e25654
 
6dfc0a1
 
 
 
2e25654
 
6dfc0a1
 
 
 
 
 
 
 
 
 
2e25654
 
 
6dfc0a1
 
 
 
2e25654
6dfc0a1
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
 
 
 
 
 
 
 
 
2e25654
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
 
 
2e25654
 
6dfc0a1
 
 
 
 
 
 
2e25654
 
 
6dfc0a1
 
 
 
 
2e25654
6dfc0a1
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
 
 
 
 
 
 
 
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
 
 
 
 
 
 
 
2e25654
6dfc0a1
 
 
 
 
 
 
2e25654
6dfc0a1
2e25654
6dfc0a1
 
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
 
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
2e25654
6dfc0a1
 
 
 
cde09e3
6dfc0a1
 
 
 
 
 
cde09e3
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
 
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
6dfc0a1
 
 
 
 
 
 
 
 
 
cde09e3
 
6dfc0a1
 
 
 
 
 
2e25654
6dfc0a1
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
6dfc0a1
2e25654
6dfc0a1
 
 
2e25654
 
 
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
6dfc0a1
2e25654
 
 
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
6dfc0a1
 
 
 
2e25654
6dfc0a1
 
 
 
 
 
 
 
 
 
 
 
2e25654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6dfc0a1
2e25654
 
 
6dfc0a1
 
 
 
2e25654
6dfc0a1
 
 
 
2e25654
6dfc0a1
 
 
 
2e25654
6dfc0a1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
"""
Templates des différentes sections de contrats.
Ce module contient tous les textes de base pour les différentes sections des contrats,
avec une attention particulière à la rigueur juridique et à l'exhaustivité.
"""

from config import TELLERS_INFO, DEFAULT_DURATION, DEFAULT_RENEWAL, DEFAULT_TERRITORY


class ContractTemplates:
    """Classe contenant tous les templates pour la génération des contrats professionnels."""
    
    @staticmethod
    def get_title(contract_type):
        """
        Retourne le titre du contrat en fonction du type.
        
        Args:
            contract_type (list): Liste des types de contrats sélectionnés
            
        Returns:
            str: Titre du contrat
        """
        if "Auteur (droits d'auteur)" in contract_type and "Image (droit à l'image)" in contract_type:
            return "CONTRAT DE CESSION DE DROITS D'AUTEUR ET DE DROITS À L'IMAGE"
        elif "Auteur (droits d'auteur)" in contract_type:
            return "CONTRAT DE CESSION DE DROITS D'AUTEUR"
        else:
            return "CONTRAT DE CESSION DE DROITS À L'IMAGE"
    
    @staticmethod
    def get_preamble_text(contract_type, author_type, author_info):
        """
        Retourne le texte du préambule du contrat.
        
        Args:
            contract_type (list): Liste des types de contrats sélectionnés
            author_type (str): Type d'auteur ("Personne physique" ou "Personne morale")
            author_info (dict): Informations sur l'auteur
            
        Returns:
            str: Texte du préambule
        """
        # Partie commune à tous les contrats
        preamble = "ENTRE LES SOUSSIGNÉS :\n\n"
        
        # Informations sur l'auteur/modèle
        if author_type == "Personne physique":
            gentille = author_info.get("gentille", "M.")
            nom = author_info.get("nom", "")
            prenom = author_info.get("prenom", "")
            date_naissance = author_info.get("date_naissance", "")
            nationalite = author_info.get("nationalite", "")
            adresse = author_info.get("adresse", "")
            contact = author_info.get("contact", "")
            
            preamble += f"{gentille} {prenom} {nom}"
            if date_naissance:
                preamble += f", né(e) le {date_naissance}"
            if nationalite:
                preamble += f", de nationalité {nationalite}"
            preamble += f", domicilié(e) au {adresse}"
            if contact:
                preamble += f", joignable à {contact}"
        else:
            # Personne morale
            nom_societe = author_info.get("nom_societe", "")
            statut = author_info.get("statut", "")
            rcs = author_info.get("rcs", "")
            siege = author_info.get("siege", "")
            contact = author_info.get("contact", "")
            
            preamble += f"La société {nom_societe}, {statut}, immatriculée sous le numéro {rcs} au Registre du Commerce et des Sociétés, dont le siège social est situé {siege}"
            if contact:
                preamble += f", joignable à {contact}"
        
        # Dénomination en fonction du type de contrat
        if "Auteur (droits d'auteur)" in contract_type and "Image (droit à l'image)" in contract_type:
            preamble += ", ci-après dénommé(e) \"l'Auteur et le Modèle\",\n\n"
        elif "Auteur (droits d'auteur)" in contract_type:
            preamble += ", ci-après dénommé(e) \"l'Auteur\",\n\n"
        else:
            preamble += ", ci-après dénommé(e) \"le Modèle\",\n\n"
        
        # Informations sur Tellers (bénéficiaire)
        preamble += f"{TELLERS_INFO['nom']}, {TELLERS_INFO['forme_juridique']} au capital de {TELLERS_INFO['capital']}, "
        preamble += f"immatriculée sous le numéro {TELLERS_INFO['rcs']}, et dont le siège social est situé au : "
        preamble += f"{TELLERS_INFO['siege']}, représentée par son Président en exercice dûment habilité à l'effet des présentes, "
        preamble += "ci-après dénommée \"le Cessionnaire\",\n\n"
        
        # Introduction commune
        preamble += "Ci-après dénommées ensemble \"les Parties\" ou individuellement \"la Partie\",\n\n"
        
        # Préambule explicatif (contextualisation)
        preamble += "PRÉAMBULE\n\n"
        
        if "Auteur (droits d'auteur)" in contract_type and "Image (droit à l'image)" in contract_type:
            preamble += "L'Auteur a créé une œuvre originale et est titulaire des droits d'auteur sur cette œuvre. "
            preamble += "Il figure également en tant que Modèle dans des images ou vidéos qu'il souhaite inclure dans la présente cession. "
            preamble += "Le Cessionnaire souhaite obtenir certains droits sur cette œuvre et sur l'image de l'Auteur/Modèle "
            preamble += "afin de l'exploiter dans le cadre de ses activités.\n\n"
        elif "Auteur (droits d'auteur)" in contract_type:
            preamble += "L'Auteur a créé une œuvre originale et est titulaire exclusif des droits d'auteur sur cette œuvre. "
            preamble += "Le Cessionnaire souhaite obtenir certains droits sur cette œuvre afin de l'exploiter dans le cadre de ses activités.\n\n"
        else:
            preamble += "Le Modèle dispose de droits exclusifs sur son image et son apparence. "
            preamble += "Le Cessionnaire souhaite obtenir l'autorisation d'utiliser et d'exploiter l'image du Modèle "
            preamble += "dans le cadre de ses activités.\n\n"
        
        preamble += "Après s'être présenté et avoir échangé sur les conditions de leur collaboration, "
        preamble += "les Parties ont convenu ce qui suit.\n\n"
        
        preamble += "CECI EXPOSÉ, IL A ÉTÉ CONVENU CE QUI SUIT :\n\n"
        
        return preamble
    
    @staticmethod
    def get_object_clause(contract_type, work_description, image_description):
        """
        Retourne la clause d'objet du contrat.
        
        Args:
            contract_type (list): Liste des types de contrats sélectionnés
            work_description (str): Description de l'œuvre
            image_description (str): Description de l'image
            
        Returns:
            str: Clause d'objet
        """
        object_clause = "ARTICLE 1 – OBJET DU CONTRAT\n\n"
        
        if "Auteur (droits d'auteur)" in contract_type:
            object_clause += "1.1 Œuvre concernée\n\n"
            object_clause += f"L'Auteur déclare être le créateur et titulaire exclusif des droits d'auteur sur l'œuvre suivante (ci-après \"l'Œuvre\") :\n\n"
            object_clause += f"{work_description}\n\n"
            object_clause += "L'Auteur garantit que l'Œuvre présente un caractère original au sens de la législation sur le droit d'auteur et qu'il détient l'intégralité des droits nécessaires pour conclure le présent contrat.\n\n"
        
        if "Image (droit à l'image)" in contract_type:
            object_clause += "1.2 Images concernées\n\n"
            object_clause += f"Le Modèle autorise expressément l'utilisation et l'exploitation de son image telle qu'elle apparaît dans les photographies, vidéos ou autres supports visuels suivants (ci-après \"les Images\") :\n\n"
            object_clause += f"{image_description}\n\n"
            object_clause += "Le Modèle déclare être pleinement informé des implications de la présente autorisation et l'accorde en toute connaissance de cause.\n\n"
        
        object_clause += "1.3 Objet de la cession\n\n"
        
        if "Auteur (droits d'auteur)" in contract_type and "Image (droit à l'image)" in contract_type:
            object_clause += "Par le présent contrat :\n"
            object_clause += "- L'Auteur cède au Cessionnaire certains droits d'exploitation sur l'Œuvre ;\n"
            object_clause += "- Le Modèle autorise le Cessionnaire à exploiter son image ;\n"
            object_clause += "Le tout dans les conditions et limites définies ci-après.\n\n"
        elif "Auteur (droits d'auteur)" in contract_type:
            object_clause += "Par le présent contrat, l'Auteur cède au Cessionnaire certains droits d'exploitation sur l'Œuvre, dans les conditions et limites définies ci-après.\n\n"
        else:
            object_clause += "Par le présent contrat, le Modèle autorise le Cessionnaire à exploiter son image, dans les conditions et limites définies ci-après.\n\n"
        
        object_clause += "Le présent contrat définit les modalités de cette cession, notamment en termes de droits cédés, de durée, d'étendue territoriale, de supports d'exploitation, ainsi que les obligations réciproques des Parties."
        
        return object_clause
    
    @staticmethod
    def get_author_rights_clause(is_free, is_exclusive, additional_rights):
        """
        Retourne la clause des droits cédés pour le droit d'auteur.
        
        Args:
            is_free (bool): True si la cession est gratuite, False sinon
            is_exclusive (bool): True si la cession est exclusive, False sinon
            additional_rights (list): Liste des droits supplémentaires sélectionnés
            
        Returns:
            str: Clause des droits cédés
        """
        rights_clause = "ARTICLE 2 – ÉTENDUE DES DROITS CÉDÉS\n\n"
        
        rights_clause += "2.1 Nature de la cession\n\n"
        rights_clause += "L'Auteur cède au Cessionnaire, "
        
        if is_exclusive:
            rights_clause += "à titre exclusif, "
        else:
            rights_clause += "à titre non exclusif, "
        
        if is_free:
            rights_clause += f"gratuitement et pour la durée précisée à l'article 4, les droits patrimoniaux détaillés ci-après.\n\n"
        else:
            rights_clause += f"pour la durée précisée à l'article 4 et moyennant la rémunération précisée à l'article 6, les droits patrimoniaux détaillés ci-après.\n\n"
        
        rights_clause += "2.2 Droits patrimoniaux cédés\n\n"
        
        # Section pour les droits toujours inclus (reproduction et représentation)
        rights_clause += "2.2.1 Droits de base\n\n"
        
        # Droit de reproduction
        rights_clause += "a) Droit de reproduction\n\n"
        rights_clause += "L'Auteur cède au Cessionnaire le droit de reproduction qui s'entend comme le droit de reproduire ou de faire reproduire l'Œuvre :\n"
        rights_clause += "- Par tous procédés techniques connus ou inconnus à ce jour, notamment par impression, numérisation, enregistrement magnétique, optique, numérique ou électronique ;\n"
        rights_clause += "- Sur tous supports connus ou inconnus à ce jour, notamment papier, électronique, magnétique, optique, numérique, CD-ROM, DVD, disques durs, serveurs informatiques, réseaux, cloud ;\n"
        rights_clause += "- En tous formats ;\n"
        rights_clause += "- En autant d'exemplaires que le Cessionnaire le souhaitera, selon les besoins de son activité et les finalités précisées au présent contrat.\n\n"
        
        # Droit de représentation
        rights_clause += "b) Droit de représentation\n\n"
        rights_clause += "L'Auteur cède au Cessionnaire le droit de représentation qui s'entend comme le droit de communiquer l'Œuvre au public :\n"
        rights_clause += "- Par tous moyens de diffusion connus ou inconnus à ce jour, notamment exposition, projection publique, transmission dans un lieu public de l'Œuvre télédiffusée, présentation au public sur écran accessible en ligne ;\n"
        rights_clause += "- Par tous procédés connus ou inconnus à ce jour, notamment par diffusion numérique en ligne sur Internet (sites web, réseaux sociaux, blogs, plateformes de partage, applications mobiles), diffusion par satellite, câble, réseaux informatiques, etc. ;\n"
        rights_clause += "- À destination de tout public, restreint ou non.\n\n"
        
        # Droits supplémentaires pour les cessions onéreuses
        if not is_free and additional_rights:
            rights_clause += "2.2.2 Droits supplémentaires\n\n"
            
            if "distribution" in additional_rights:
                rights_clause += "c) Droit de distribution\n\n"
                rights_clause += "L'Auteur cède au Cessionnaire le droit de distribution qui s'entend comme le droit de mettre à disposition du public l'original de l'Œuvre ou ses copies, par la vente, la location, le prêt ou tout autre mode de mise à disposition. Ce droit comprend notamment :\n"
                rights_clause += "- Le droit de vendre ou faire vendre, d'offrir à la vente tout ou partie de l'Œuvre ;\n"
                rights_clause += "- Le droit de diffuser et de faire diffuser tout ou partie de l'Œuvre par tous moyens et sur tous supports ;\n"
                rights_clause += "- Le droit de distribuer l'Œuvre à des fins commerciales ou non commerciales.\n\n"
            
            if "usage" in additional_rights:
                rights_clause += "d) Droit d'usage\n\n"
                rights_clause += "L'Auteur cède au Cessionnaire le droit d'usage qui s'entend comme le droit d'utiliser l'Œuvre pour les besoins propres du Cessionnaire, notamment :\n"
                rights_clause += "- Dans le cadre de ses activités professionnelles, commerciales ou promotionnelles ;\n"
                rights_clause += "- À des fins d'illustration de ses services ou produits ;\n"
                rights_clause += "- Pour toute communication interne ou externe en lien avec son activité ;\n"
                rights_clause += "- Pour l'intégration dans ses outils, bases de données ou systèmes d'information.\n\n"
            
            if "adaptation" in additional_rights:
                rights_clause += "e) Droit d'adaptation\n\n"
                rights_clause += "L'Auteur cède au Cessionnaire le droit d'adaptation qui s'entend comme le droit de modifier, transformer, arranger, traduire l'Œuvre ou de l'incorporer dans toute autre œuvre ou création, notamment :\n"
                rights_clause += "- Le droit de traduire tout ou partie de l'Œuvre en toutes langues ;\n"
                rights_clause += "- Le droit d'adapter tout ou partie de l'Œuvre pour tous types de supports et formats ;\n"
                rights_clause += "- Le droit de modifier le format, les couleurs, les dimensions de l'Œuvre ;\n"
                rights_clause += "- Le droit d'intégrer tout ou partie de l'Œuvre au sein d'une œuvre composite ou collective ;\n"
                rights_clause += "- Le droit de modifier tout ou partie de l'Œuvre nécessaire à des fins d'exploitation techniques.\n\n"
                rights_clause += "Ces adaptations seront réalisées dans le respect du droit moral de l'Auteur.\n\n"
            
            if "pret" in additional_rights:
                rights_clause += "f) Droit de prêt\n\n"
                rights_clause += "L'Auteur cède au Cessionnaire le droit de prêt qui s'entend comme le droit de mettre l'Œuvre à disposition des utilisateurs pour un usage temporaire et non commercial :\n"
                rights_clause += "- Le droit de prêter l'Œuvre ou ses reproductions à des tiers, à titre gratuit ;\n"
                rights_clause += "- Le droit d'autoriser le prêt public de l'Œuvre ou de ses reproductions.\n\n"
            
            if "location" in additional_rights:
                rights_clause += "g) Droit de location\n\n"
                rights_clause += "L'Auteur cède au Cessionnaire le droit de location qui s'entend comme le droit de mettre l'Œuvre à disposition des utilisateurs pour un usage temporaire et moyennant une contrepartie économique directe ou indirecte :\n"
                rights_clause += "- Le droit de louer l'Œuvre ou ses reproductions à des tiers, à titre onéreux ;\n"
                rights_clause += "- Le droit d'autoriser la location de l'Œuvre ou de ses reproductions.\n\n"
            
            if "suite" in additional_rights:
                rights_clause += "h) Droit de suite\n\n"
                rights_clause += "Les parties reconnaissent l'existence du droit de suite, qui s'applique aux œuvres graphiques et plastiques. "
                rights_clause += "Conformément aux articles L. 122-8 et R. 122-1 à R. 122-12 du Code de la propriété intellectuelle, ce droit inaliénable permet à l'auteur d'une œuvre graphique ou plastique de percevoir un pourcentage sur le prix de revente de son œuvre lorsque intervient un professionnel du marché de l'art. "
                rights_clause += "Les parties s'engagent à respecter les dispositions légales en vigueur concernant le droit de suite.\n\n"
        
        rights_clause += "2.3 Droits réservés\n\n"
        rights_clause += "Tous les droits non expressément cédés par le présent contrat demeurent la propriété exclusive de l'Auteur. "
        rights_clause += "Toute exploitation non prévue au présent contrat devra faire l'objet d'un accord complémentaire entre les Parties.\n\n"
        
        rights_clause += "2.4 Modalités d'exploitation\n\n"
        
        # Clause d'exclusivité ou non-exclusivité
        if is_exclusive:
            rights_clause += "La présente cession est consentie à titre exclusif. En conséquence, pendant toute la durée du présent contrat :\n"
            rights_clause += "- L'Auteur s'interdit de céder à un tiers l'un quelconque des droits faisant l'objet de la présente cession ;\n"
            rights_clause += "- L'Auteur s'interdit d'exploiter lui-même l'Œuvre selon les modalités cédées au Cessionnaire.\n\n"
            rights_clause += "Cette exclusivité constitue un élément essentiel du présent contrat, sans lequel le Cessionnaire n'aurait pas contracté.\n\n"
        else:
            rights_clause += "La présente cession est consentie à titre non exclusif. En conséquence :\n"
            rights_clause += "- L'Auteur conserve le droit d'exploiter lui-même l'Œuvre et d'en autoriser l'exploitation par des tiers ;\n"
            rights_clause += "- L'Auteur s'engage toutefois à ne pas céder ces droits selon des modalités susceptibles de concurrencer directement et significativement l'exploitation par le Cessionnaire.\n\n"
        
        return rights_clause
    
    @staticmethod
    def get_image_rights_clause(is_free, is_exclusive):
        """
        Retourne la clause des droits cédés pour le droit à l'image.
        
        Args:
            is_free (bool): True si la cession est gratuite, False sinon
            is_exclusive (bool): True si la cession est exclusive, False sinon
            
        Returns:
            str: Clause des droits à l'image
        """
        image_clause = "ARTICLE 3 – AUTORISATION D'EXPLOITATION DE L'IMAGE\n\n"
        
        image_clause += "3.1 Objet de l'autorisation\n\n"
        image_clause += "Le Modèle autorise expressément le Cessionnaire à fixer, reproduire, diffuser et exploiter son image telle qu'elle figure dans les supports visuels décrits à l'article 1.2.\n\n"
        
        image_clause += "Cette autorisation comprend notamment :\n"
        image_clause += "- Le droit de reproduire et faire reproduire les Images par tous procédés techniques connus ou inconnus à ce jour (photographie, imprimerie, numérisation, etc.) sur tous supports (papier, tissu, plastique, céramique, supports électroniques, optiques, magnétiques, numériques, etc.) et en tous formats ;\n"
        image_clause += "- Le droit de représenter et faire représenter publiquement les Images par tous moyens de diffusion et de communication connus ou inconnus à ce jour, notamment exposition, télédiffusion, cinéma, Internet (sites web, réseaux sociaux, applications mobiles), affichage, projection publique, présentation au public, etc.\n\n"
        
        image_clause += "3.2 Conditions de l'autorisation\n\n"
        image_clause += "La présente autorisation est consentie "
        
        if is_exclusive:
            image_clause += "à titre exclusif, "
        else:
            image_clause += "à titre non exclusif, "
        
        if is_free:
            image_clause += "gratuitement, "
        else:
            image_clause += "moyennant la rémunération précisée à l'article 6, "
        
        image_clause += f"pour la durée et sur le territoire mentionnés à l'article 4.\n\n"
        
        image_clause += "3.3 Restrictions et engagements\n\n"
        
        # Restrictions d'utilisation pour le droit à l'image
        image_clause += "Le Cessionnaire s'engage expressément à :\n"
        image_clause += "- Ne pas porter atteinte à la dignité, à l'honneur ou à la réputation du Modèle ;\n"
        image_clause += "- Ne pas utiliser les Images dans un contexte diffamatoire, pornographique, injurieux ou contraire aux bonnes mœurs ;\n"
        image_clause += "- Ne pas associer les Images à des opinions politiques, religieuses ou idéologiques sans l'accord préalable et écrit du Modèle ;\n"
        image_clause += "- Informer le Modèle, sur simple demande, des utilisations faites de son image.\n\n"
        
        image_clause += "Les parties s'engagent mutuellement à ne pas tenir de propos dénigrants l'une envers l'autre, que ce soit en public ou en privé, notamment sur les réseaux sociaux ou dans les médias.\n\n"
        
        # Clause d'exclusivité pour le droit à l'image
        if is_exclusive:
            image_clause += "3.4 Exclusivité\n\n"
            image_clause += "Compte tenu du caractère exclusif de la présente autorisation, le Modèle s'engage, pendant toute la durée du présent contrat :\n"
            image_clause += "- À ne pas autoriser l'exploitation de son image telle que décrite à l'article 1.2 à des tiers ;\n"
            image_clause += "- À ne pas utiliser ou exploiter lui-même son image dans des conditions similaires à celles autorisées au Cessionnaire.\n\n"
            image_clause += "Cette exclusivité constitue un élément essentiel du présent contrat, sans lequel le Cessionnaire n'aurait pas contracté.\n\n"
        else:
            image_clause += "3.4 Non-exclusivité\n\n"
            image_clause += "La présente autorisation étant non exclusive, le Modèle conserve le droit d'autoriser l'exploitation de son image à des tiers, "
            image_clause += "sous réserve que cela ne nuise pas directement aux intérêts légitimes du Cessionnaire.\n\n"
        
        return image_clause
    
    @staticmethod
    def get_duration_territory_clause(article_num):
        """
        Retourne la clause de durée et territoire.
        
        Args:
            article_num (int): Numéro de l'article
            
        Returns:
            str: Clause de durée et territoire
        """
        duration_clause = f"ARTICLE {article_num} – DURÉE ET TERRITOIRE\n\n"
        
        duration_clause += "4.1 Durée\n\n"
        duration_clause += f"La présente cession est consentie pour une durée initiale de {DEFAULT_DURATION} à compter de la date de signature du présent contrat.\n\n"
        duration_clause += f"Elle se renouvellera ensuite automatiquement par {DEFAULT_RENEWAL}, "
        duration_clause += "sauf dénonciation par l'une ou l'autre des Parties par lettre recommandée avec accusé de réception, "
        duration_clause += "adressée à l'autre Partie au moins trois (3) mois avant l'expiration de la période en cours.\n\n"
        
        duration_clause += "4.2 Territoire\n\n"
        duration_clause += f"La présente cession est consentie pour le {DEFAULT_TERRITORY}, sans restriction géographique. "
        duration_clause += "Cette étendue territoriale se justifie par la nature numérique et dématérialisée des services fournis par le Cessionnaire, "
        duration_clause += "susceptibles d'être accessibles depuis n'importe quel point du globe, sans possibilité technique de limitation géographique efficace.\n\n"
        
        return duration_clause
    
    @staticmethod
    def get_supports_clause(article_num, supports):
        """
        Retourne la clause des supports d'exploitation.
        
        Args:
            article_num (int): Numéro de l'article
            supports (list): Liste des supports sélectionnés
            
        Returns:
            str: Clause des supports
        """
        supports_clause = f"ARTICLE {article_num} – SUPPORTS D'EXPLOITATION\n\n"
        
        supports_clause += "5.1 Supports autorisés\n\n"
        supports_clause += "Le Cessionnaire est autorisé à exploiter l'œuvre et/ou l'image sur les supports suivants :\n\n"
        
        # Création d'une liste détaillée des supports
        for support in supports:
            supports_clause += f"- {support}\n"
        
        supports_clause += "\n5.2 Nature des exploitations\n\n"
        supports_clause += "Le Cessionnaire pourra notamment, sans que cette liste soit limitative :\n"
        supports_clause += "- Publier l'œuvre et/ou l'image sur son site web et ses plateformes numériques ;\n"
        supports_clause += "- Inclure l'œuvre et/ou l'image dans des communications internes ou externes ;\n"
        supports_clause += "- Utiliser l'œuvre et/ou l'image à des fins promotionnelles ou publicitaires ;\n"
        supports_clause += "- Intégrer l'œuvre et/ou l'image dans des créations dérivées en lien avec son activité ;\n"
        supports_clause += "- Partager l'œuvre et/ou l'image sur les réseaux sociaux et plateformes de partage.\n\n"
        
        supports_clause += "5.3 Limitation d'usage\n\n"
        supports_clause += "Cette liste est limitative et le Cessionnaire s'engage à ne pas utiliser l'œuvre et/ou l'image sur d'autres supports "
        supports_clause += "sans l'autorisation préalable et écrite du Cédant.\n\n"
        
        supports_clause += "Le Cessionnaire s'interdit expressément toute exploitation susceptible de porter atteinte à la dignité humaine, "
        supports_clause += "à l'ordre public ou aux bonnes mœurs.\n\n"
        
        return supports_clause
    
    @staticmethod
    def get_remuneration_clause(article_num, is_free, remuneration):
        """
        Retourne la clause de rémunération.
        
        Args:
            article_num (int): Numéro de l'article
            is_free (bool): True si la cession est gratuite, False sinon
            remuneration (str): Modalités de rémunération
            
        Returns:
            str: Clause de rémunération
        """
        remuneration_clause = f"ARTICLE {article_num} – RÉMUNÉRATION\n\n"
        
        if is_free:
            remuneration_clause += "6.1 Cession à titre gratuit\n\n"
            remuneration_clause += "La présente cession est consentie à titre gratuit, sans contrepartie financière. "
            remuneration_clause += "Le Cédant déclare expressément renoncer à toute rémunération au titre de la présente cession et être pleinement informé "
            remuneration_clause += "de la portée de cette gratuité.\n\n"
            
            remuneration_clause += "6.2 Motivation de la gratuité\n\n"
            remuneration_clause += "Les Parties reconnaissent que cette gratuité se justifie par :\n"
            remuneration_clause += "- L'intérêt réciproque des Parties à cette collaboration ;\n"
            remuneration_clause += "- La visibilité et la promotion apportées par le Cessionnaire à l'œuvre et/ou à l'image du Cédant ;\n"
            remuneration_clause += "- Le caractère non lucratif de certaines exploitations envisagées.\n\n"
            
            remuneration_clause += "Le Cédant reconnaît avoir été pleinement informé de son droit à rémunération et y renoncer librement.\n\n"
        else:
            remuneration_clause += "6.1 Rémunération\n\n"
            remuneration_clause += f"En contrepartie de la présente cession, le Cessionnaire versera au Cédant la rémunération suivante :\n\n{remuneration}\n\n"
            
            remuneration_clause += "6.2 Modalités de paiement\n\n"
            if "forfaitaire" in remuneration.lower() or "€" in remuneration or "euros" in remuneration.lower():
                remuneration_clause += "Cette rémunération forfaitaire est réputée définitive, forfaitaire et non révisable. "
                remuneration_clause += "Elle inclut tout montant dû au titre de l'ensemble des droits cédés, tels que définis dans le présent contrat.\n\n"
                
                remuneration_clause += "Le paiement sera effectué par virement bancaire sur le compte du Cédant, dont les coordonnées seront "
                remuneration_clause += "communiquées séparément, dans un délai de trente (30) jours suivant la signature du présent contrat "
                remuneration_clause += "et réception d'une facture ou note d'honoraires conforme.\n\n"
            elif "proportionnelle" in remuneration.lower() or "%" in remuneration:
                remuneration_clause += "Cette rémunération proportionnelle sera calculée et versée selon les termes indiqués ci-dessus. "
                remuneration_clause += "Le Cessionnaire s'engage à tenir une comptabilité précise des exploitations donnant lieu à rémunération "
                remuneration_clause += "et à fournir au Cédant, sur simple demande, un état récapitulatif des exploitations réalisées.\n\n"
                
                remuneration_clause += "Les versements seront effectués par virement bancaire sur le compte du Cédant, dont les coordonnées seront "
                remuneration_clause += "communiquées séparément, selon la périodicité indiquée ci-dessus et sur présentation d'une facture "
                remuneration_clause += "ou note d'honoraires conforme.\n\n"
            else:
                remuneration_clause += "Le paiement sera effectué selon les modalités indiquées ci-dessus. "
                remuneration_clause += "Le Cessionnaire s'engage à respecter strictement ces conditions de rémunération, qui constituent "
                remuneration_clause += "un élément essentiel du consentement du Cédant.\n\n"
            
            remuneration_clause += "6.3 Justification de la rémunération\n\n"
            remuneration_clause += "Les Parties reconnaissent que cette rémunération est équitable et proportionnée aux exploitations prévues. "
            remuneration_clause += "Elle a été déterminée en tenant compte notamment de l'étendue des droits cédés, de la durée de la cession, "
            remuneration_clause += "du territoire concerné et des investissements nécessaires à l'exploitation de l'œuvre/image.\n\n"
        
        return remuneration_clause
    
    @staticmethod
    def get_warranties_clause(article_num, contract_type):
        """
        Retourne la clause de garanties.
        
        Args:
            article_num (int): Numéro de l'article
            contract_type (list): Liste des types de contrats sélectionnés
            
        Returns:
            str: Clause de garanties
        """
        warranties_clause = f"ARTICLE {article_num} – GARANTIES ET RESPONSABILITÉS\n\n"
        
        if "Auteur (droits d'auteur)" in contract_type:
            warranties_clause += "7.1 Garanties de l'Auteur\n\n"
            warranties_clause += "L'Auteur garantit au Cessionnaire :\n"
            warranties_clause += "- Qu'il est bien l'auteur de l'œuvre et le titulaire exclusif des droits de propriété intellectuelle sur celle-ci ;\n"
            warranties_clause += "- Que l'œuvre est originale et ne constitue pas une contrefaçon d'une œuvre préexistante ;\n"
            warranties_clause += "- Qu'il n'a préalablement consenti aucune cession ou licence de droits à un tiers qui serait incompatible avec la présente cession ;\n"
            warranties_clause += "- Que l'œuvre ne contient aucun élément susceptible de tomber sous le coup des lois et règlements relatifs à la diffamation, "
            warranties_clause += "l'injure, la protection de la vie privée, le droit à l'image, les droits de la personnalité ou la contrefaçon ;\n"
            warranties_clause += "- Qu'il n'existe aucune restriction légale ou contractuelle qui pourrait limiter ou interdire l'exploitation de l'œuvre "
            warranties_clause += "dans les conditions prévues au présent contrat.\n\n"
            
            warranties_clause += "En conséquence, l'Auteur garantit le Cessionnaire contre toute éviction, revendication ou action de tiers, "
            warranties_clause += "fondée sur la propriété intellectuelle ou tout autre fondement, qui troublerait l'exploitation paisible des droits cédés. "
            warranties_clause += "Il s'engage à indemniser le Cessionnaire de tous frais et indemnités qui pourraient résulter de telles actions.\n\n"
        
        if "Image (droit à l'image)" in contract_type:
            warranties_clause += "7.2 Garanties du Modèle\n\n"
            warranties_clause += "Le Modèle garantit au Cessionnaire :\n"
            warranties_clause += "- Qu'il est libre de consentir à la présente autorisation et dispose de la pleine capacité juridique à cet effet ;\n"
            warranties_clause += "- Que son image n'est pas liée à d'autres engagements exclusifs incompatibles avec le présent contrat ;\n"
            warranties_clause += "- Qu'aucun tiers ne détient de droits sur son image susceptibles d'entraver l'exploitation prévue par le présent contrat.\n\n"
            
            warranties_clause += "En conséquence, le Modèle garantit le Cessionnaire contre tout recours ou action émanant de tiers qui allégueraient "
            warranties_clause += "disposer de droits sur l'image du Modèle. Il s'engage à indemniser le Cessionnaire de tous frais et indemnités "
            warranties_clause += "qui pourraient résulter de telles actions.\n\n"
        
        section_num = '3' if 'Image (droit à l\'image)' in contract_type else '2'
        warranties_clause += f"7.{section_num} Obligations du Cessionnaire\n\n"
        warranties_clause += "Le Cessionnaire s'engage à :\n"
        warranties_clause += "- Respecter l'intégrité de l'œuvre et/ou de l'image dans le cadre des exploitations autorisées ;\n"
        
        if "Auteur (droits d'auteur)" in contract_type:
            warranties_clause += "- Mentionner le nom de l'Auteur lors de toute exploitation de l'œuvre, sauf lorsque cela est techniquement impossible "
            warranties_clause += "ou inapproprié compte tenu du support d'exploitation ;\n"
        
        warranties_clause += "- N'effectuer aucune modification substantielle de l'œuvre et/ou de l'image sans l'accord préalable du Cédant, "
        warranties_clause += "à l'exception des adaptations techniques nécessaires à l'exploitation ;\n"
        warranties_clause += "- Exploiter l'œuvre et/ou l'image conformément aux usages professionnels et aux dispositions du présent contrat.\n\n"
        
        return warranties_clause
    
    @staticmethod
    def get_termination_clause(article_num):
        """
        Retourne la clause de résiliation.
        
        Args:
            article_num (int): Numéro de l'article
            
        Returns:
            str: Clause de résiliation
        """
        termination_clause = f"ARTICLE {article_num} – RÉSILIATION\n\n"
        
        termination_clause += "8.1 Résiliation pour inexécution\n\n"
        termination_clause += "Le présent contrat pourra être résilié de plein droit par l'une des parties en cas d'inexécution "
        termination_clause += "par l'autre partie de l'une quelconque de ses obligations contractuelles. "
        termination_clause += "Cette résiliation deviendra effective trois (3) mois après l'envoi par la partie plaignante "
        termination_clause += "d'une lettre recommandée avec accusé de réception exposant les motifs de la plainte, "
        termination_clause += "à moins que, dans ce délai, la partie défaillante n'ait satisfait à ses obligations ou "
        termination_clause += "n'ait apporté la preuve d'un empêchement consécutif à un cas de force majeure.\n\n"
        
        termination_clause += "8.2 Résiliation anticipée\n\n"
        termination_clause += "Chacune des parties pourra également mettre fin au présent contrat avant son terme, "
        termination_clause += "moyennant un préavis de trois (3) mois notifié par lettre recommandée avec accusé de réception. "
        termination_clause += "Dans ce cas, la résiliation ne prendra effet qu'à l'expiration du préavis.\n\n"
        
        termination_clause += "8.3 Conséquences de la résiliation\n\n"
        termination_clause += "En cas de résiliation du contrat, pour quelque cause que ce soit :\n"
        termination_clause += "- Le Cessionnaire devra cesser toute nouvelle exploitation de l'œuvre et/ou de l'image ;\n"
        termination_clause += "- Le Cessionnaire sera néanmoins autorisé à écouler les stocks existants pendant une période maximale de trois (3) mois ;\n"
        termination_clause += "- Les exploitations déjà réalisées demeureront acquises au Cessionnaire, qui n'aura pas à les retirer ;\n"
        termination_clause += "- Les sommes déjà versées resteront définitivement acquises au Cédant ;\n"
        termination_clause += "- Les sommes encore dues au titre d'exploitations déjà réalisées devront être versées au Cédant.\n\n"
        
        termination_clause += "L'exercice de cette faculté de résiliation ne dispense pas la partie défaillante de remplir "
        termination_clause += "les obligations contractées jusqu'à la date de prise d'effet de la résiliation et ce, "
        termination_clause += "sous réserve des dommages éventuellement subis par la partie plaignante du fait de la résiliation anticipée du contrat.\n\n"
        
        return termination_clause
    
    @staticmethod
    def get_other_clauses(article_num, contract_type):
        """
        Retourne les clauses diverses.
        
        Args:
            article_num (int): Numéro de l'article
            contract_type (list): Liste des types de contrats sélectionnés
            
        Returns:
            str: Clauses diverses
        """
        other_clauses = f"ARTICLE {article_num} – DISPOSITIONS DIVERSES\n\n"
        
        other_clauses += "9.1 Clause de non-dénigrement\n\n"
        other_clauses += "Les Parties s'engagent mutuellement à ne pas tenir de propos négatifs ou diffamatoires l'une envers l'autre, "
        other_clauses += "que ce soit en privé ou en public, notamment sur les réseaux sociaux, dans les médias ou auprès de partenaires commerciaux. "
        other_clauses += "Cette obligation survivra à la fin du présent contrat pour une durée de deux (2) ans.\n\n"
        
        other_clauses += "9.2 Intuitu personae\n\n"
        other_clauses += "Le présent contrat est conclu intuitu personae. Les droits et obligations en résultant ne pourront être cédés ou transférés "
        other_clauses += "par l'une des Parties sans l'accord préalable et écrit de l'autre Partie.\n\n"
        
        other_clauses += "Toutefois, en cas de cession ou de transfert de son activité à un tiers, le Cessionnaire pourra transférer le bénéfice "
        other_clauses += "du présent contrat à ce tiers, à condition d'en informer préalablement le Cédant par écrit.\n\n"
        
        other_clauses += "9.3 Intégralité de l'accord\n\n"
        other_clauses += "Le présent contrat et ses éventuelles annexes constituent l'intégralité de l'accord entre les Parties relativement à son objet. "
        other_clauses += "Il remplace et annule tout engagement oral ou écrit antérieur relatif à l'objet des présentes.\n\n"
        
        other_clauses += "9.4 Nullité partielle\n\n"
        other_clauses += "Si l'une quelconque des stipulations du présent contrat était déclarée nulle au regard d'une règle de droit en vigueur "
        other_clauses += "ou d'une décision judiciaire devenue définitive, elle serait alors réputée non écrite, sans pour autant entraîner la nullité "
        other_clauses += "du contrat ni altérer la validité de ses autres dispositions.\n\n"
        
        other_clauses += "9.5 Modification du contrat\n\n"
        other_clauses += "Toute modification du présent contrat ne pourra résulter que d'un document écrit et signé par les Parties. "
        other_clauses += "Aucune modification ne pourra être déduite de la passivité de l'une des Parties.\n\n"
        
        return other_clauses
    
    @staticmethod
    def get_applicable_law_clause(article_num):
        """
        Retourne la clause de loi applicable.
        
        Args:
            article_num (int): Numéro de l'article
            
        Returns:
            str: Clause de loi applicable
        """
        law_clause = f"ARTICLE {article_num} – LOI APPLICABLE ET JURIDICTION COMPÉTENTE\n\n"
        
        law_clause += "10.1 Loi applicable\n\n"
        law_clause += "Le présent contrat est soumis au droit français.\n\n"
        
        law_clause += "10.2 Résolution amiable des litiges\n\n"
        law_clause += "En cas de différend entre les Parties relatif à l'interprétation, l'exécution ou la résiliation du présent contrat, "
        law_clause += "les Parties s'efforceront de résoudre leur différend à l'amiable.\n\n"
        
        law_clause += "À cet effet, la Partie la plus diligente adressera à l'autre Partie une notification précisant la nature et l'étendue du différend. "
        law_clause += "Les Parties s'engagent à se réunir dans les trente (30) jours suivant cette notification pour tenter de résoudre le litige.\n\n"
        
        law_clause += "10.3 Attribution de juridiction\n\n"
        law_clause += "À défaut d'accord amiable dans un délai de soixante (60) jours à compter de la notification du différend, "
        law_clause += "tout litige relatif à l'existence, la validité, l'interprétation, l'exécution ou la résiliation du présent contrat "
        law_clause += "sera soumis à la compétence exclusive des tribunaux de Lyon, y compris en cas de référé, d'appel en garantie "
        law_clause += "ou de pluralité de défendeurs.\n\n"
        
        return law_clause
    
    @staticmethod
    def get_signatures_template(contract_type):
        """
        Retourne le template des signatures.
        
        Args:
            contract_type (list): Liste des types de contrats sélectionnés
            
        Returns:
            str: Template des signatures
        """
        signatures = "\n\nFait à ________________, le ________________\n\n"
        signatures += "En deux exemplaires originaux, dont un pour chaque Partie.\n\n"
        
        # Adapter la signature en fonction du type de contrat
        if "Auteur (droits d'auteur)" in contract_type and "Image (droit à l'image)" in contract_type:
            signatures += "Pour l'Auteur et Modèle :                                Pour le Cessionnaire :\n"
            signatures += "[Nom, Prénom]                                            [Nom, Prénom et qualité]\n"
            signatures += "Signature précédée de la mention                         Signature précédée de la mention\n"
            signatures += "« Lu et approuvé »                                       « Lu et approuvé »\n"
        elif "Auteur (droits d'auteur)" in contract_type:
            signatures += "Pour l'Auteur :                                          Pour le Cessionnaire :\n"
            signatures += "[Nom, Prénom]                                            [Nom, Prénom et qualité]\n"
            signatures += "Signature précédée de la mention                         Signature précédée de la mention\n"
            signatures += "« Lu et approuvé »                                       « Lu et approuvé »\n"
        else:
            signatures += "Pour le Modèle :                                         Pour le Cessionnaire :\n"
            signatures += "[Nom, Prénom]                                            [Nom, Prénom et qualité]\n"
            signatures += "Signature précédée de la mention                         Signature précédée de la mention\n"
            signatures += "« Lu et approuvé »                                       « Lu et approuvé »\n"
        
        return signatures