#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Dec 28 10:32:52 2023 @author: raphael """ import json from typing import List, Optional, Dict from pydantic import BaseModel, Field, UUID4 from enum import Enum, unique @unique class FamilleJugement(str, Enum): ARRET_APPEL = "Arrêt de la Cour d'Appel" AVIS_DEPOT = 'Avis de dépôt' EXTRAIT_JUGEMENT = 'Extrait de jugement' JUGEMENT_OUVERTURE_ouverture = "Jugement d'ouverture" JUGEMENT_CLOTURE = 'Jugement de clôture' JUGEMENT = 'Jugement prononçant' @unique class NatureJugement(str, Enum): ARRET_COUR_APPEL_INFIRMANT = "Arrêt de la cour d'appel infirmant une décision soumise à publicité" AUTRE_ARRET_COUR_APPEL = "Autre arrêt de la Cour d'Appel" AUTRE_AVIS_DE_DEPOT = "Autre avis de dépôt" AUTRE_JUGEMENT_OUVERTURE = "Autre jugement d'ouverture" AUTRE_JUGEMENT_CLOTURE = "Autre jugement de clôture" AUTRE_JUGEMENT_ORDONNANCE = "Autre jugement et ordonnance" AUTRE_JUGEMENT_PRONONCANT = "Autre jugement prononçant" DEPOT_ETAT_COLLOCATION = "Dépôt de l'état de collocation" DEPOT_ETAT_CREANCES = "Dépôt de l'état des créances" DEPOT_ETAT_CREANCES_1985 = "Dépôt de l'état des créances Loi de 1985" DEPOT_PROJET_REPARTITION = "Dépôt du projet de répartition" JUGEMENT_PLAN_SAUVEGARDE = "Jugement arrêtant le plan de sauvegarde" JUGEMENT_PLAN_CESSION = "Jugement arrêtant un plan de cession" EXTENSION_LIQUIDATION_JUDICIAIRE = "Jugement d'extension de liquidation judiciaire" INTERDICTION_GERER = "Jugement d'interdiction de gérer" OUVERTURE_PROCEDURE_RESTRUCTURATION = "Jugement d'ouverture d'une procédure de redressement judiciaire" OUVERTURE_PROCEDURE_SAUVEGARDE = "Jugement d'ouverture d'une procédure de sauvegarde" OUVERTURE_LIQUIDATION_JUDICIAIRE = "Jugement d'ouverture de liquidation judiciaire" CLOTURE_PROCEDURE_SAUVEGARDE = "Jugement de clôture de la procédure de sauvegarde" CLOTURE_EXTINCTION_PASSIF = "Jugement de clôture pour extinction du passif" CLOTURE_INSUFFISANCE_ACTIF = "Jugement de clôture pour insuffisance d'actif" CONVERSION_LIQUIDATION_JUDICIAIRE = "Jugement de conversion en liquidation judiciaire" CONVERSION_LIQUIDATION_SAUVEGARDE = "Jugement de conversion en liquidation judiciaire de la procédure de sauvegarde" CONVERSION_RESTRUCTURATION_SAUVEGARDE = "Jugement de conversion en redressement judiciaire de la procédure de sauvegarde" JUGEMENT_FAILLITE_PERSONNELLE = "Jugement de faillite personnelle" JUGEMENT_PLAN_RESTRUCTURATION = "Jugement de plan de redressement" REPRISE_PROCEDURE_LIQUIDATION = "Jugement de reprise de la procédure de liquidation judiciaire" FIN_PROCEDURE_RESTRUCTURATION = "Jugement mettant fin à la procédure de redressement judiciaire" FIN_PROCEDURE_SAUVEGARDE = "Jugement mettant fin à la procédure de sauvegarde" MODIFICATION_DATE_CESSATION_PAIEMENTS = "Jugement modifiant la date de cessation des paiements" MODIFICATION_PLAN_RESTRUCTURATION = "Jugement modifiant le plan de redressement" MODIFICATION_PLAN_SAUVEGARDE = "Jugement modifiant le plan de sauvegarde" MODIFICATION_PLAN_TRAITEMENT_SORTIE_CRISE = "Jugement modifiant le plan de traitement de sortie de crise" RESOLUTION_PLAN_RESTRUCTURATION_LIQUIDATION = "Jugement prononçant la résolution du plan de redressement et la liquidation judiciaire" RESOLUTION_PLAN_SAUVEGARDE_LIQUIDATION = "Jugement prononçant la résolution du plan de sauvegarde et la liquidation judiciaire" RESOLUTION_PLAN_SAUVEGARDE_RESTRUCTURATION = "Jugement prononçant la résolution du plan de sauvegarde et le redressement judiciaire" RESOLUTION_PLAN_SORTIE_CRISE_LIQUIDATION = "Jugement prononçant la résolution du plan de traitement de sortie de crise et la liquidation judiciaire" LISTE_CREANCES_POST_OUVERTURE_LIQUIDATION = "Liste des créances nées après le jugement d'ouverture d'une procédure de liquidation judiciaire" LISTE_CREANCES_POST_OUVERTURE_RESTRUCTURATION = "Liste des créances nées après le jugement d'ouverture d'une procédure de redressement judiciaire" # Méthode pour obtenir l'énumération à partir de la chaîne @staticmethod def from_string(s): for member in NatureJugement: if member.value == s: return member raise ValueError(f"{s} n'est pas une valeur valide de TypeJugement") class Personne(BaseModel): typePersonne: str numeroImmatriculation: Optional[Dict] = Field(default=None) denomination: Optional[str] = Field(default=None) activite: Optional[str] = Field(default=None) formeJuridique: Optional[str] = Field(default=None) adresseSiegeSocial: Optional[Dict] = Field(default=None) class Jugement(BaseModel): type:Optional[str] = None famille:Optional[str] = None nature:Optional[str] = None #nature: NatureJugement = None date: Optional[str] = None complementJugement: Optional[str] = None class Annonce(BaseModel): #uuid: UUID4 publicationavis: Optional[str] publicationavis_facette: Optional[str] parution: Optional[int] dateparution: Optional[str] numeroannonce: int typeavis: Optional[str] typeavis_lib: Optional[str] familleavis: Optional[str] familleavis_lib: Optional[str] numerodepartement: Optional[str] departement_nom_officiel: Optional[str] region_code: int region_nom_officiel: Optional[str] tribunal: Optional[str] commercant: Optional[str] ville: Optional[str] registre: Optional[List[str]] # Rendre le champ optionnel cp: Optional[str] pdf_parution_subfolder: int ispdf_unitaire: str listepersonnes: Optional[List[Personne]] # Liste d'instances de Personne listeetablissements: Optional[None] jugement: Optional[Jugement] # JSON string or None acte: Optional[None] modificationsgenerales: Optional[None] radiationaurcs: Optional[None] depot: Optional[None] listeprecedentexploitant: Optional[None] listeprecedentproprietaire: Optional[None] divers: Optional[None] parutionavisprecedent: Optional[None]