From 73610d6794f8d16284a821a68e8e9abb6b36468a Mon Sep 17 00:00:00 2001 From: Marc Rufener Date: Thu, 2 May 2024 15:38:22 +0200 Subject: [PATCH 1/4] update gitignore with new test instance --- .gitignore | 1 + back/.gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 20e1014f..fce71e20 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ env.local env.dev env.prepub env.prod +env.test diff --git a/back/.gitignore b/back/.gitignore index 44a5bba2..14f05330 100644 --- a/back/.gitignore +++ b/back/.gitignore @@ -135,6 +135,7 @@ venv.bak/ /production.ini /prepub.ini /local.ini +/test.ini # alembic versions infolica/alembic/versions/old From e16bc7396210b343feea38b20fd36ad89da8b763 Mon Sep 17 00:00:00 2001 From: Marc Rufener Date: Thu, 2 May 2024 16:08:53 +0200 Subject: [PATCH 2/4] adaptation formulaire selon demande interne --- .../alembic/versions/20240502_86046f932b74.py | 29 ++ back/infolica/models/models.py | 323 ++++++++---------- .../ControleMutation/controleMutation.html | 5 +- 3 files changed, 179 insertions(+), 178 deletions(-) create mode 100644 back/infolica/alembic/versions/20240502_86046f932b74.py diff --git a/back/infolica/alembic/versions/20240502_86046f932b74.py b/back/infolica/alembic/versions/20240502_86046f932b74.py new file mode 100644 index 00000000..dc769407 --- /dev/null +++ b/back/infolica/alembic/versions/20240502_86046f932b74.py @@ -0,0 +1,29 @@ +"""add item into ctrlMutation + +Revision ID: 86046f932b74 +Revises: 7f61c1192ef6 +Create Date: 2024-05-02 15:51:01.573804 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "86046f932b74" +down_revision = "7f61c1192ef6" +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("controle_mutation", sa.Column("cs_9", sa.Boolean(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("controle_mutation", "cs_9") + # ### end Alembic commands ### diff --git a/back/infolica/models/models.py b/back/infolica/models/models.py index 9607065d..c4daa6ae 100644 --- a/back/infolica/models/models.py +++ b/back/infolica/models/models.py @@ -1,19 +1,4 @@ -from sqlalchemy import ( - Column, - Integer, - BigInteger, - Float, - Text, - String, - Date, - DateTime, - Boolean, - ARRAY, - ForeignKey, - UniqueConstraint, - Table, - text -) +from sqlalchemy import Column, Integer, BigInteger, Float, Text, String, Date, DateTime, Boolean, ARRAY, ForeignKey, UniqueConstraint, Table, text from sqlalchemy.orm import relationship @@ -23,28 +8,27 @@ from .constant import Constant from .meta import Base -association_fonction_role = Table('fonction_role', Base.metadata, - Column('id', primary_key=True), - Column('role_id', ForeignKey('role.id'), nullable=False), - Column('fonction_id', ForeignKey('fonction.id'), nullable=False) -) +association_fonction_role = Table("fonction_role", Base.metadata, Column("id", primary_key=True), Column("role_id", ForeignKey("role.id"), nullable=False), Column("fonction_id", ForeignKey("fonction.id"), nullable=False)) + class Role(Base): - __tablename__ = 'role' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "role" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) fonctions = relationship("Fonction", secondary=association_fonction_role) + class Fonction(Base): - __tablename__ = 'fonction' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "fonction" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) + class Service(Base): - __tablename__ = 'service' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "service" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) service = Column(Text, nullable=False) abreviation = Column(Text, nullable=False) @@ -62,9 +46,10 @@ class Service(Base): date_entree = Column(Date) date_sortie = Column(Date) + class Operateur(Base): - __tablename__ = 'operateur' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "operateur" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) prenom = Column(Text, nullable=False) @@ -82,24 +67,25 @@ class Operateur(Base): ldap_domain = Column(String(5)) role = relationship("Role", uselist=False) + class Cadastre(Base): - __tablename__ = 'cadastre' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "cadastre" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) service_at_id = Column(BigInteger, ForeignKey(Service.id)) class ClientType(Base): - __tablename__ = 'client_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "client_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) class Client(Base): - __tablename__ = 'client' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "client" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) type_client = Column(BigInteger, ForeignKey(ClientType.id), nullable=False) entreprise = Column(Text) @@ -125,8 +111,8 @@ class Client(Base): class ClientMoralPersonne(Base): - __tablename__ = 'client_moral_personne' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "client_moral_personne" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) client_id = Column(BigInteger, ForeignKey(Client.id), nullable=False) titre = Column(Text) @@ -135,8 +121,8 @@ class ClientMoralPersonne(Base): class Plan(Base): - __tablename__ = 'mo_distr_plan' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "mo_distr_plan" + __table_args__ = {"schema": "infolica"} idobj = Column(Text, primary_key=True) id_obj2 = Column(Text) planno = Column(Text) @@ -151,28 +137,28 @@ class Plan(Base): class AffaireType(Base): - __tablename__ = 'affaire_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "affaire_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) ordre = Column(BigInteger) reservation_numeros_types_id = Column(ARRAY(BigInteger)) modif_affaire_type_id_vers = Column(ARRAY(BigInteger)) logique_processus = Column(ARRAY(BigInteger)) - affaire_section_suivi = Column(Boolean, server_default=text('true')) - affaire_section_preavis = Column(Boolean, server_default=text('false')) - affaire_section_numeros = Column(Boolean, server_default=text('true')) - affaire_section_facture = Column(Boolean, server_default=text('false')) - affaire_section_ctrl_chefprojet_mo = Column(Boolean, server_default=text('false')) - affaire_section_ctrl_chefprojet_ppe = Column(Boolean, server_default=text('false')) - affaire_section_ctrl_coordprojets = Column(Boolean, server_default=text('false')) - affaire_section_ctrl_geometre = Column(Boolean, server_default=text('false')) - affaire_section_documents = Column(Boolean, server_default=text('true')) + affaire_section_suivi = Column(Boolean, server_default=text("true")) + affaire_section_preavis = Column(Boolean, server_default=text("false")) + affaire_section_numeros = Column(Boolean, server_default=text("true")) + affaire_section_facture = Column(Boolean, server_default=text("false")) + affaire_section_ctrl_chefprojet_mo = Column(Boolean, server_default=text("false")) + affaire_section_ctrl_chefprojet_ppe = Column(Boolean, server_default=text("false")) + affaire_section_ctrl_coordprojets = Column(Boolean, server_default=text("false")) + affaire_section_ctrl_geometre = Column(Boolean, server_default=text("false")) + affaire_section_documents = Column(Boolean, server_default=text("true")) class Affaire(Base): - __tablename__ = 'affaire' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "affaire" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) no_access = Column(Text) nom = Column(Text) @@ -200,8 +186,8 @@ class Affaire(Base): class AffaireEtapeIndex(Base): - __tablename__ = 'affaire_etape_index' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "affaire_etape_index" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) ordre = Column(BigInteger) @@ -209,8 +195,8 @@ class AffaireEtapeIndex(Base): class AffaireEtape(Base): - __tablename__ = 'affaire_etape' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "affaire_etape" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) operateur_id = Column(BigInteger, ForeignKey(Operateur.id)) @@ -223,8 +209,8 @@ class AffaireEtape(Base): class ModificationAffaireType(Base): - __tablename__ = 'modification_affaire_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "modification_affaire_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) ordre = Column(BigInteger) @@ -234,26 +220,25 @@ class ModificationAffaireType(Base): class ModificationAffaire(Base): - __tablename__ = 'modification_affaire' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "modification_affaire" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id_mere = Column(Integer, ForeignKey(Affaire.id), nullable=False) affaire_id_fille = Column(Integer, ForeignKey(Affaire.id), nullable=False) - type_id = Column(BigInteger, ForeignKey( - ModificationAffaireType.id), nullable=False) + type_id = Column(BigInteger, ForeignKey(ModificationAffaireType.id), nullable=False) date = Column(Date, default=datetime.datetime.utcnow, nullable=False) class FactureType(Base): - __tablename__ = 'facture_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "facture_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) class FactureParametres(Base): - __tablename__ = 'facture_parametres' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "facture_parametres" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) valeur = Column(Float, nullable=False) @@ -262,8 +247,8 @@ class FactureParametres(Base): class Facture(Base): - __tablename__ = 'facture' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "facture" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) type_id = Column(BigInteger, ForeignKey(FactureType.id), nullable=False) sap = Column(Text) @@ -283,8 +268,8 @@ class Facture(Base): class TableauEmoluments(Base): - __tablename__ = 'tableau_emoluments' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "tableau_emoluments" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) domaine = Column(Text, nullable=False) categorie = Column(Text, nullable=False) @@ -309,8 +294,8 @@ class TableauEmoluments(Base): class EmolumentAffaire(Base): - __tablename__ = 'emolument_affaire' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "emolument_affaire" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id)) pente_pc = Column(Integer) @@ -326,16 +311,16 @@ class EmolumentAffaire(Base): class EmolumentAffaireRepartition(Base): - __tablename__ = 'emolument_affaire_repartition' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "emolument_affaire_repartition" + __table_args__ = {"schema": "infolica"} emolument_affaire_id = Column(BigInteger, ForeignKey(EmolumentAffaire.id), primary_key=True, nullable=False) facture_id = Column(BigInteger, ForeignKey(Facture.id), primary_key=True, nullable=False) repartition = Column(Float, nullable=False) class Emolument(Base): - __tablename__ = 'emolument' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "emolument" + __table_args__ = {"schema": "infolica"} emolument_affaire_id = Column(BigInteger, ForeignKey(EmolumentAffaire.id), primary_key=True) tableau_emolument_id = Column(BigInteger, ForeignKey(TableauEmoluments.id), primary_key=True) position = Column(Text, primary_key=True) @@ -347,8 +332,8 @@ class Emolument(Base): class SuiviMandat(Base): - __tablename__ = 'suivi_mandat' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "suivi_mandat" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) av_11 = Column(Boolean) # CREATION DE L’AFFAIRE DANS INFOLICA @@ -451,8 +436,8 @@ class SuiviMandat(Base): class ControleMutation(Base): - __tablename__ = 'controle_mutation' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "controle_mutation" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) terrain_1 = Column(Date) # Terrain - Levés préliminaires @@ -486,15 +471,16 @@ class ControleMutation(Base): cs_1 = Column(Boolean) # Contrôler les numéros des points particuliers "660" ainsi que la valeur, la précision et la fiabilité des points sont en adéquations avec le niveau de tolérance de la zone de travail. cs_2 = Column(Boolean) # Contrôler dans la table « Couverture_du_sol => Mise_a_jourCS » qu’il y a que les nouvelles surfaces créées dans votre affaire qu'il n'y a pas de surfaces sans géométrie. cs_3 = Column(Boolean) # Contrôler dans la table « Couverture_du_sol => PosNumero_de_batiment » que les éléments suivants sont corrects (Hali=Center, Vali=Base, Grandeur=Petite.tres_petite). - cs_4 = Column(Boolean) # Insérer les points dans la base Acces des bâtiments projets (voir Processus) + cs_4 = Column(Boolean) # Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté cs_5 = Column(Boolean) # Contrôler la géométrie des EGID (01.01.2012). cs_6 = Column(Boolean) # Réservation des numéros de points particuliers (660). cs_7 = Column(Boolean) # Réservation des numéros de bâtiments. cs_8 = Column(Boolean) # Désignation des bâtiments et bâtiments souterrains. + cs_9 = Column(Boolean) # Suppression du point SATAC dans la couche MO édition. od_1 = Column(Boolean) # Tous les points de constructions "760" sont supprimés. od_2 = Column(Boolean) # Contrôler les nouveaux éléments créés dans votre affaire et qu'il n'y a pas d'objets divers sans géométrie. od_3 = Column(Boolean) # Contrôler que les bâtiments souterrains ont les bons numéros et une désignation. - od_4 = Column(Boolean) # Insérer les points dans la base Acces des bâtiments projets (voir Processus) + od_4 = Column(Boolean) # Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté od_5 = Column(Boolean) # Contrôler que l'attribut « Objets_divers => SymboleElement_surfacique » est rempli pour les piscines. bat_1 = Column(Boolean) # Contrôler dans la table « Adresses_des_batiments => Mise_a_jourBAT » qu’il y a bien que les nouveaux éléments que vous avez créés dans votre affaire. bat_2 = Column(Boolean) # Contrôler dans la table « Adresses_des_batiments => PosNumero_maison » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.assez_petite). @@ -514,8 +500,8 @@ class ControleMutation(Base): class ControlePPE(Base): - __tablename__ = 'controle_ppe' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "controle_ppe" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) operateur_id = Column(BigInteger, ForeignKey(Operateur.id)) @@ -677,8 +663,8 @@ class ControlePPE(Base): class ControleGeometre(Base): - __tablename__ = 'controle_geometre' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "controle_geometre" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) operateur_id = Column(BigInteger, ForeignKey(Operateur.id)) @@ -761,8 +747,8 @@ class ControleGeometre(Base): class ControleGeometre_old(Base): - __tablename__ = 'controle_geometre_old' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "controle_geometre_old" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) check_1 = Column(Boolean) # Nom du cadastre et n° de bien-fonds corrects (cf extrait RF) et identiques sur tous les documents @@ -837,23 +823,23 @@ class ControleGeometre_old(Base): class NumeroType(Base): - __tablename__ = 'numero_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) ordre = Column(BigInteger) class NumeroEtat(Base): - __tablename__ = 'numero_etat' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero_etat" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) class Numero(Base): - __tablename__ = 'numero' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) cadastre_id = Column(BigInteger, ForeignKey(Cadastre.id), nullable=False) type_id = Column(BigInteger, ForeignKey(NumeroType.id), nullable=False) @@ -866,8 +852,8 @@ class Numero(Base): class ReservationNumerosMO(Base): - __tablename__ = 'reservation_numeros' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "reservation_numeros" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) cadastre_id = Column(BigInteger, ForeignKey(Cadastre.id), nullable=False) @@ -883,22 +869,20 @@ class ReservationNumerosMO(Base): class NumeroEtatHisto(Base): - __tablename__ = 'numero_etat_histo' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero_etat_histo" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) numero_id = Column(BigInteger, ForeignKey(Numero.id), nullable=False) - numero_etat_id = Column(BigInteger, ForeignKey( - NumeroEtat.id), nullable=False) + numero_etat_id = Column(BigInteger, ForeignKey(NumeroEtat.id), nullable=False) date = Column(Date, default=datetime.datetime.utcnow, nullable=False) class NumeroDiffere(Base): - __tablename__ = 'numero_differe' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero_differe" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) numero_id = Column(BigInteger, ForeignKey(Numero.id), nullable=False) - date_entree = Column( - Date, default=datetime.datetime.utcnow, nullable=False) + date_entree = Column(Date, default=datetime.datetime.utcnow, nullable=False) date_sortie = Column(Date) affaire_id = Column(BigInteger, ForeignKey(Affaire.id)) req_radiation = Column(Boolean) @@ -907,35 +891,34 @@ class NumeroDiffere(Base): class NumeroRelationType(Base): - __tablename__ = 'numero_relation_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero_relation_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) class NumeroRelation(Base): - __tablename__ = 'numero_relation' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "numero_relation" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) numero_id_base = Column(Integer, ForeignKey(Numero.id), nullable=False) numero_id_associe = Column(Integer, ForeignKey(Numero.id), nullable=False) - relation_type_id = Column(BigInteger, ForeignKey( - NumeroRelationType.id), nullable=False) + relation_type_id = Column(BigInteger, ForeignKey(NumeroRelationType.id), nullable=False) affaire_id = Column(BigInteger, ForeignKey(Affaire.id)) UniqueConstraint(numero_id_base, numero_id_associe, relation_type_id, affaire_id) class AffaireNumeroType(Base): - __tablename__ = 'affaire_numero_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "affaire_numero_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) class AffaireNumero(Base): - __tablename__ = 'affaire_numero' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "affaire_numero" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) numero_id = Column(BigInteger, ForeignKey(Numero.id), nullable=False) @@ -945,15 +928,15 @@ class AffaireNumero(Base): class PreavisType(Base): - __tablename__ = 'preavis_type' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "preavis_type" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) class Preavis(Base): - __tablename__ = 'preavis' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "preavis" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) affaire_id = Column(BigInteger, ForeignKey(Affaire.id), nullable=False) service_id = Column(BigInteger, ForeignKey(Service.id), nullable=False) @@ -967,8 +950,8 @@ class Preavis(Base): class PreavisDecision(Base): - __tablename__ = 'preavis_decision' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "preavis_decision" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) preavis_id = Column(BigInteger, ForeignKey(Preavis.id), nullable=False) preavis_type_id = Column(BigInteger, ForeignKey(PreavisType.id)) @@ -984,8 +967,8 @@ class PreavisDecision(Base): class PreavisRemarque(Base): - __tablename__ = 'preavis_remarque' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "preavis_remarque" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) preavis_id = Column(BigInteger, ForeignKey(Preavis.id), nullable=False) remarque = Column(Text, nullable=False) @@ -995,8 +978,8 @@ class PreavisRemarque(Base): class PreavisGlossaire(Base): - __tablename__ = 'preavis_glossaire' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "preavis_glossaire" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) service_id = Column(BigInteger, ForeignKey(Service.id), nullable=False) ordre = Column(Integer) @@ -1006,8 +989,8 @@ class PreavisGlossaire(Base): class GeosBalance(Base): - __tablename__ = 'geos_balance' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "geos_balance" + __table_args__ = {"schema": "infolica"} idobj = Column(String(40), primary_key=True) base = Column(String(50)) numero_new = Column(String(50)) @@ -1027,12 +1010,12 @@ class GeosBalance(Base): gid_geom_old = Column(String(50)) gid_numero_old = Column(String(50)) gid_mutation = Column(String(50)) - geom = Column(Geometry('POINT')) + geom = Column(Geometry("POINT")) class EtapeMailer(Base): - __tablename__ = 'etape_mailer' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "etape_mailer" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) etape_id = Column(BigInteger, ForeignKey(AffaireEtapeIndex.id), nullable=False) operateur_id = Column(BigInteger, ForeignKey(Operateur.id), nullable=False) @@ -1040,8 +1023,8 @@ class EtapeMailer(Base): class NotesMAJ(Base): - __tablename__ = 'notes_maj' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "notes_maj" + __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) operateur_id = Column(BigInteger, ForeignKey(Operateur.id), nullable=False) version = Column(Text, nullable=False) @@ -1052,8 +1035,8 @@ class NotesMAJ(Base): class ControleEtape(Base): - __tablename__ = 'controle_etape' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "controle_etape" + __table_args__ = {"schema": "infolica"} nom = Column(String(40), primary_key=True) etape_id = Column(BigInteger, ForeignKey(AffaireEtapeIndex.id)) force = Column(String(15)) @@ -1061,8 +1044,8 @@ class ControleEtape(Base): class ControleEtapeTypeAffaire(Base): - __tablename__ = 'controle_etape_type_affaire' - __table_args__ = {'schema': 'infolica'} + __tablename__ = "controle_etape_type_affaire" + __table_args__ = {"schema": "infolica"} affaire_type_id = Column(BigInteger, ForeignKey(AffaireType.id), primary_key=True) controle_etape_nom = Column(String(40), ForeignKey(ControleEtape.nom), primary_key=True) @@ -1073,9 +1056,8 @@ class ControleEtapeTypeAffaire(Base): class VNumeros(Base): - __tablename__ = 'v_numeros' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_numeros" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) cadastre = Column(Text) cadastre_id = Column(BigInteger) @@ -1100,9 +1082,8 @@ class VNumeros(Base): class VNumerosAffaires(Base): - __tablename__ = 'v_numeros_affaires' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_numeros_affaires" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) numero_id = Column(BigInteger) affaire_id = Column(BigInteger) @@ -1140,9 +1121,8 @@ class VNumerosAffaires(Base): class VAffaire(Base): - __tablename__ = 'v_affaires' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_affaires" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) no_access = Column(Text) nom = Column(Text) @@ -1229,9 +1209,8 @@ class VAffaire(Base): class VEnvois(Base): - __tablename__ = 'v_envois' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_envois" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) affaire_id = Column(BigInteger) affaire_nom = Column(Text) @@ -1247,9 +1226,8 @@ class VEnvois(Base): class VEtapesAffaires(Base): - __tablename__ = 'v_etapes_affaires' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_etapes_affaires" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) affaire_id = Column(BigInteger) etape_id = Column(BigInteger, primary_key=True) @@ -1273,9 +1251,8 @@ class VEtapesAffaires(Base): class VAffairesPreavis(Base): - __tablename__ = 'v_affaires_preavis' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_affaires_preavis" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) affaire_id = Column(BigInteger) service = Column(Text) @@ -1295,9 +1272,8 @@ class VAffairesPreavis(Base): class VTableauBord(Base): - __tablename__ = 'v_tableau_de_bord' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_tableau_de_bord" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} affaire_id = Column(BigInteger, primary_key=True) affaire_nom = Column(Text) delai = Column(Integer) @@ -1316,9 +1292,8 @@ class VTableauBord(Base): class VEmolumentsFactures(Base): - __tablename__ = 'v_emoluments_factures' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_emoluments_factures" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} facture_id = Column(BigInteger, primary_key=True) domaine = Column(Text) categorie = Column(Text) @@ -1333,9 +1308,8 @@ class VEmolumentsFactures(Base): class VNumerosRelations(Base): - __tablename__ = 'v_numeros_relations' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_numeros_relations" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} affaire_id = Column(BigInteger) numero_relation_id = Column(BigInteger, primary_key=True) numero_base_id = Column(BigInteger) @@ -1361,9 +1335,8 @@ class VNumerosRelations(Base): class VDocumentsAffaires(Base): - __tablename__ = 'v_documents_affaires' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_documents_affaires" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) nom = Column(Text) chemin = Column(Text) @@ -1373,9 +1346,8 @@ class VDocumentsAffaires(Base): class VFactures(Base): - __tablename__ = 'v_factures' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_factures" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) affaire_id = Column(BigInteger) affaire_vref = Column(Text) @@ -1416,8 +1388,7 @@ class VFactures(Base): class VReservationNumerosMO(Base): __tablename__ = "v_reservation_numeros_mo" - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} id = Column(BigInteger, primary_key=True) affaire_id = Column(BigInteger) cadastre_id = Column(BigInteger) @@ -1442,10 +1413,10 @@ class VReservationNumerosMO(Base): plan_idrepplan = Column(String(length=40)) plan_base = Column(String(length=50)) + class VPlan(Base): - __tablename__ = 'v_plans_mo' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_plans_mo" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} idobj = Column(Text, primary_key=True) id_obj2 = Column(Text) cadastre_id = Column(BigInteger) @@ -1459,10 +1430,10 @@ class VPlan(Base): idrepplan = Column(Text) base = Column(Text) + class VProchainNumeroDisponible(Base): - __tablename__ = 'v_prochain_numero_disponible' - __table_args__ = {'schema': 'infolica', - 'info': dict(is_view=True)} + __tablename__ = "v_prochain_numero_disponible" + __table_args__ = {"schema": "infolica", "info": dict(is_view=True)} cadastre_id = Column(BigInteger, primary_key=True) cadastre = Column(Text) plan = Column(Integer, primary_key=True) diff --git a/front/src/components/Affaires/ControleMutation/controleMutation.html b/front/src/components/Affaires/ControleMutation/controleMutation.html index 7ac51f2a..e9224fe1 100644 --- a/front/src/components/Affaires/ControleMutation/controleMutation.html +++ b/front/src/components/Affaires/ControleMutation/controleMutation.html @@ -150,7 +150,8 @@ Contrôler les numéros des points particuliers "660" ainsi que la valeur, la précision et la fiabilité des points sont en adéquations avec le niveau de tolérance de la zone de travail. Contrôler dans la table « Couverture_du_sol => Mise_a_jourCS » qu’il y a que les nouvelles surfaces créées dans votre affaire qu'il n'y a pas de surfaces sans géométrie. Contrôler dans la table « Couverture_du_sol => PosNumero_de_batiment » que les éléments suivants sont corrects (Hali=Center, Vali=Base, Grandeur=Petite.tres_petite) - Insérer les points dans la base Acces des bâtiments projets (voir Processus). + Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté. + Suppression du point SATAC dans la couche MO édition. Contrôler la géométrie des EGID (01.01.2012). @@ -167,7 +168,7 @@ Tous les points de constructions "760" sont supprimés. Contrôler les nouveaux éléments créés dans votre affaire et qu'il n'y a pas d'objets divers sans géométrie Contrôler que les bâtiments souterrains ont les bons numéros et une désignation. - Insérer les points dans la base Acces des bâtiments projets (voir Processus) + Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté Contrôler que l'attribut « Objets_divers => SymboleElement_surfacique » est rempli pour les piscines From e34e68b46d9bec26a42dc0fae2da99a4a8fdebad Mon Sep 17 00:00:00 2001 From: Marc Rufener Date: Fri, 3 May 2024 15:06:59 +0200 Subject: [PATCH 3/4] manage preavis on sat and service_urbanisme --- .../alembic/versions/20240503_6620a34e9d5c.py | 28 +++++++ back/infolica/models/models.py | 3 +- back/infolica/views/affaire_preavis.py | 76 ++++++++++--------- back/infolica/views/services_externes.py | 24 +++--- 4 files changed, 83 insertions(+), 48 deletions(-) create mode 100644 back/infolica/alembic/versions/20240503_6620a34e9d5c.py diff --git a/back/infolica/alembic/versions/20240503_6620a34e9d5c.py b/back/infolica/alembic/versions/20240503_6620a34e9d5c.py new file mode 100644 index 00000000..676438b2 --- /dev/null +++ b/back/infolica/alembic/versions/20240503_6620a34e9d5c.py @@ -0,0 +1,28 @@ +"""manage service urbanisme + +Revision ID: 6620a34e9d5c +Revises: 86046f932b74 +Create Date: 2024-05-03 14:20:54.319033 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '6620a34e9d5c' +down_revision = '86046f932b74' +branch_labels = None +depends_on = None + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column("cadastre", "service_at_id", new_column_name="service_urbanisme_id") + op.add_column('service', sa.Column('service_principal', sa.Boolean(), nullable=True)) + # ### end Alembic commands ### + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column("cadastre", "service_urbanisme_id", new_column_name="service_at_id") + op.drop_column('service', 'service_principal') + # ### end Alembic commands ### diff --git a/back/infolica/models/models.py b/back/infolica/models/models.py index c4daa6ae..59c15082 100644 --- a/back/infolica/models/models.py +++ b/back/infolica/models/models.py @@ -45,6 +45,7 @@ class Service(Base): relpath = Column(Text) date_entree = Column(Date) date_sortie = Column(Date) + service_principal = Column(Boolean) class Operateur(Base): @@ -73,7 +74,7 @@ class Cadastre(Base): __table_args__ = {"schema": "infolica"} id = Column(BigInteger, primary_key=True, autoincrement=True) nom = Column(Text, nullable=False) - service_at_id = Column(BigInteger, ForeignKey(Service.id)) + service_urbanisme_id = Column(BigInteger, ForeignKey(Service.id)) class ClientType(Base): diff --git a/back/infolica/views/affaire_preavis.py b/back/infolica/views/affaire_preavis.py index 2d678a1e..9818e460 100644 --- a/back/infolica/views/affaire_preavis.py +++ b/back/infolica/views/affaire_preavis.py @@ -57,7 +57,7 @@ def affaire_preavis_view(request): for p in preavis: p['unread_remarks'] = Utils.check_unread_preavis_remarks(request, affaire_id, service_id=p['service_id']) - + return preavis @@ -74,6 +74,14 @@ def preavis_new_view(request): model = Preavis() model = Utils.set_model_record(model, request.params) + # add preavis folder if not exists + affaires_directory = request.registry.settings['affaires_directory'] + service = request.dbsession.query(Service).filter(Service.id == model.service_id).first() + affaire = request.dbsession.query(Affaire).filter(Affaire.id == model.affaire_id).first() + preavis_service_path = os.path.join(affaires_directory, affaire.chemin, service.relpath) + if not os.path.exists(preavis_service_path): + os.makedirs(preavis_service_path) + request.dbsession.add(model) request.dbsession.flush() @@ -87,7 +95,7 @@ def preavis_new_view(request): 'date': datetime.strftime(datetime.now(), '%Y-%m-%d') } Utils.addNewRecord(request, PreavisRemarque, _params) - + # Send mail to external service for a new preavis demand MailTemplates.sendMailPreavisDemande(request, model.id, model.service_id, message=remarque_conversation) @@ -165,7 +173,7 @@ def strongAuthentication(request, preavis_id): if check_connected(request, [request.registry.settings['service_mo'].replace(' ', '')]): operateur = Utils.getOperateurFromUser(request) return operateur - + if not check_connected(request, request.registry.settings['preavis_services_externes'].replace(' ', '').split(',')): raise exc.HTTPForbidden() @@ -173,7 +181,7 @@ def strongAuthentication(request, preavis_id): operateur = Utils.getOperateurFromUser(request) if operateur.service_id is None: exc.HTTPForbidden(detail="Opérateur non autorisé à accéder à ce contenu") - + if preavis_id is None: exc.HTTPInternalServerError(detail="L'identidifiant du préavis est manquant") @@ -240,7 +248,7 @@ def service_externe_preavis_view(request): VAffaire.date_envoi == None, VAffaire.date_cloture == None ) - + if search is not None: search = search.split(' ') for s in search: @@ -253,7 +261,7 @@ def service_externe_preavis_view(request): ) query = query.order_by(Preavis.date_reponse.desc()) if status == "closed" else query.order_by(Preavis.date_demande.desc()) - + if status is not None and status == "closed": query = query.limit(request.registry.settings['search_limit']) @@ -291,7 +299,7 @@ def service_externe_preavis_view(request): 'priorite': priorite, 'remarque': remarque }) - + if status == 'open': results = sorted(results, key=lambda x: x['priorite_idx'], reverse=False) @@ -385,7 +393,7 @@ def service_externe_affaire_view(request): def service_externe_documents_view(request): """ GET documents of preavis_id for service externe - """ + """ affaire_id = request.params['affaire_id'] if 'affaire_id' in request.params else None operateur = strongAuthentication(request, affaire_id) @@ -396,7 +404,7 @@ def service_externe_documents_view(request): courriers_courriels_rel_path = request.registry.settings['courriers_courriels_rel_path'] documents = [] for rel_path in [service_relpath, courriers_courriels_rel_path]: - + affaire_rel_path = os.path.join(affaire_chemin, rel_path) affaire_path = os.path.join(request.registry.settings['affaires_directory'], affaire_rel_path) @@ -418,7 +426,7 @@ def service_externe_documents_view(request): file_i['creation'] = datetime.fromtimestamp(file_i['creation_sort']).strftime("%d.%m.%Y") file_i['modification'] = datetime.fromtimestamp(file_i['modification_sort']).strftime("%d.%m.%Y") documents.append(file_i) - + return documents @@ -429,7 +437,7 @@ def service_externe_conversation_view(request): """ preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None strongAuthentication(request, preavis_id) - + results = [] query = request.dbsession.query( @@ -475,13 +483,13 @@ def service_externe_conversation_new_view(request): preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None commentaire = request.params['commentaire'] if 'commentaire' in request.params else None operateur = strongAuthentication(request, preavis_id) - + preavis = request.dbsession.query(Preavis).filter( Preavis.id == preavis_id ).first() rp = PreavisRemarque() - + params = { 'preavis_id': preavis.id, 'remarque': commentaire, @@ -516,7 +524,7 @@ def service_externe_liste_decision_view(request): """ preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None strongAuthentication(request, preavis_id) - + result = request.dbsession.query( PreavisDecision.id, PreavisDecision.date, @@ -542,7 +550,7 @@ def service_externe_liste_decision_view(request): liste_decisions = [] for res in result: liste_decisions.append( - { + { 'preavisDecision_id': res.id, 'date': datetime.strftime(res.date, "%d.%m.%Y"), 'version': res.version, @@ -568,7 +576,7 @@ def service_externe_decision_view(request): preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None strongAuthentication(request, preavis_id) - + res = request.dbsession.query( PreavisDecision.preavis_type_id, PreavisDecision.remarque_contexte, @@ -589,7 +597,7 @@ def service_externe_decision_view(request): ).first() if res is not None: - result = { + result = { 'preavis_type_id': res.preavis_type_id, 'remarque_contexte': res.remarque_contexte, 'remarque_limite_fictive_gabarits': res.remarque_limite_fictive_gabarits, @@ -622,11 +630,11 @@ def service_externe_decision_new_view(request): remarque_autre = request.params['remarque_autre'] if 'remarque_autre' in request.params else None definitif = request.params['definitif'] == 'true' if 'definitif' in request.params else False operateur = strongAuthentication(request, preavis_id) - + rp = PreavisDecision() max_version = request.dbsession.query(func.max(PreavisDecision.version)).filter(PreavisDecision.preavis_id == preavis_id).scalar() max_version = 0 if max_version is None else max_version - + params = { 'preavis_id': preavis_id, 'preavis_type_id': preavis_type_id, @@ -657,7 +665,7 @@ def service_externe_decision_new_view(request): preavis.remarque = '\n\n'.join(filter(None, [remarque_contexte, remarque_limite_fictive_gabarits, remarque_transfert_droit_batir, remarque_stationnement_art29, remarque_autre])) MailTemplates.sendMailPreavisReponse(request, preavis_id) - + # log step service = request.dbsession.query(Service).filter(Service.id == preavis.service_id).first().abreviation Utils.newAffaireEtape( @@ -686,9 +694,9 @@ def service_externe_decision_update_view(request): remarque_autre = request.params['remarque_autre'] if 'remarque_autre' in request.params else None definitif = request.params['definitif'] == 'true' if 'definitif' in request.params else False operateur = strongAuthentication(request, preavis_id) - + result = request.dbsession.query(PreavisDecision).filter(PreavisDecision.id == preavis_decision_id).first() - + result.preavis_type_id = preavis_type_id result.operateur_id = operateur.id result.remarque_contexte = remarque_contexte @@ -711,7 +719,7 @@ def service_externe_decision_update_view(request): # send mail to SGRF project managers MailTemplates.sendMailPreavisReponse(request, preavis_id) - + # log step service = request.dbsession.query(Service).filter(Service.id == preavis.service_id).first().abreviation Utils.newAffaireEtape( @@ -732,7 +740,7 @@ def service_externe_preavis_attribution_update_view(request): """ preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None operateur = strongAuthentication(request, preavis_id) - + preavis = request.dbsession.query(Preavis).filter(Preavis.id == preavis_id).first() preavis.operateur_service_id = operateur.id @@ -747,7 +755,7 @@ def service_externe_save_documents_new_view(request): """ affaire_id = request.params['affaire_id'] if 'affaire_id' in request.params else None operateur = strongAuthentication(request, affaire_id) - + service = request.dbsession.query(Service).filter( Service.id == operateur.service_id ).first() @@ -792,7 +800,7 @@ def service_externe_glossaire_view(request): preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None operateur = strongAuthentication(request, preavis_id) - + results = request.dbsession.query( PreavisGlossaire.chapitre, func.array_agg(aggregate_order_by(PreavisGlossaire.texte, PreavisGlossaire.ordre.asc())).label('textes') @@ -807,7 +815,7 @@ def service_externe_glossaire_view(request): glossaire = {} for res in results: glossaire[res[0]] = res[1] - + return glossaire @@ -817,7 +825,7 @@ def preavis_print_view(request): GET PDF of specified preavis """ preavis_id = request.params['preavis_id'] if 'preavis_id' in request.params else None - + data = request.dbsession.query( Preavis.affaire_id, Service.service, @@ -872,7 +880,7 @@ def preavis_print_view(request): for res in preavis_decisions: preavis_version_max = res.version if res.version > preavis_version_max else preavis_version_max liste_decisions.append( - { + { 'preavisDecision_id': res.id, 'date': datetime.strftime(res.date, "%d.%m.%Y"), 'version': res.version, @@ -944,7 +952,7 @@ def preavis_print_view(request): padding-right: 10px; padding-left: 5px; }} - """ + """ html += ppp.format(**d) html += "" @@ -959,19 +967,19 @@ def preavis_print_view(request): html += "

Préavis du " + data.service + "

" if data.service_telephone is not None or data.service_mail is not None: html += "

Contact: " - + contacts = [] if data.service_telephone is not None: contacts.append(data.service_telephone) - + if data.service_mail is not None: contacts.append( "" + data.service_mail + "" ) - + html += " / ".join(contacts) + "

" - + html += "

Affaire n° " + str(data.affaire_id) + "
" + "Cadastre: " + data.cadastre + "

" html += "

Description de l'affaire: " + data.affaire_description + "

" html += "

Date de la demande de préavis: " + str(data.date_demande.strftime("%d.%m.%Y")) + "

" diff --git a/back/infolica/views/services_externes.py b/back/infolica/views/services_externes.py index 235a76cf..f7b5a6ad 100644 --- a/back/infolica/views/services_externes.py +++ b/back/infolica/views/services_externes.py @@ -47,23 +47,21 @@ def services_view(request): cadastre_id = request.params['cadastre_id'] if 'cadastre_id' in request.params else None - if cadastre_id is not None: - cadastre = request.dbsession.query(Cadastre).filter(Cadastre.id == cadastre_id).first() - service_at_id = cadastre.service_at_id - - # filtrer le service de l'aménagement du territoire - records = request.dbsession.query(Service).filter(Service.ordre >= 20).union( - request.dbsession.query(Service).filter(Service.id == service_at_id)) - - else: - records = request.dbsession.query(Service) - - records = records.filter( + records = request.dbsession.query(Service).filter( + Service.service_principal == True, or_( Service.date_sortie == None, Service.date_sortie > now, ) - ).order_by(Service.ordre.asc()).all() + ) + + if cadastre_id is not None: + cadastre = request.dbsession.query(Cadastre).filter(Cadastre.id == cadastre_id).first() + + if cadastre.service_urbanisme_id is not None: + records = records.union(request.dbsession.query(Service).filter(Service.id == cadastre.service_urbanisme_id)) + + records = records.order_by(Service.ordre.asc()).all() return Utils.serialize_many(records) From a57ed25db8927f000bbbd87183b07eeffa3ed723 Mon Sep 17 00:00:00 2001 From: Marc Rufener Date: Wed, 8 May 2024 10:46:25 +0200 Subject: [PATCH 4/4] update formular --- .../alembic/versions/20240503_6620a34e9d5c.py | 2 + back/infolica/models/models.py | 1 + deploy | 2 +- .../ControleMutation/controleMutation.html | 59 ++++++++++--------- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/back/infolica/alembic/versions/20240503_6620a34e9d5c.py b/back/infolica/alembic/versions/20240503_6620a34e9d5c.py index 676438b2..ee8c1a68 100644 --- a/back/infolica/alembic/versions/20240503_6620a34e9d5c.py +++ b/back/infolica/alembic/versions/20240503_6620a34e9d5c.py @@ -18,11 +18,13 @@ def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.alter_column("cadastre", "service_at_id", new_column_name="service_urbanisme_id") + op.add_column('controle_mutation', sa.Column('od_6', sa.Boolean(), nullable=True)) op.add_column('service', sa.Column('service_principal', sa.Boolean(), nullable=True)) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.alter_column("cadastre", "service_urbanisme_id", new_column_name="service_at_id") + op.drop_column('controle_mutation', 'od_6') op.drop_column('service', 'service_principal') # ### end Alembic commands ### diff --git a/back/infolica/models/models.py b/back/infolica/models/models.py index 59c15082..78651dba 100644 --- a/back/infolica/models/models.py +++ b/back/infolica/models/models.py @@ -483,6 +483,7 @@ class ControleMutation(Base): od_3 = Column(Boolean) # Contrôler que les bâtiments souterrains ont les bons numéros et une désignation. od_4 = Column(Boolean) # Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté od_5 = Column(Boolean) # Contrôler que l'attribut « Objets_divers => SymboleElement_surfacique » est rempli pour les piscines. + od_6 = Column(Boolean) # Suppression du point SATAC dans la couche MO édition bat_1 = Column(Boolean) # Contrôler dans la table « Adresses_des_batiments => Mise_a_jourBAT » qu’il y a bien que les nouveaux éléments que vous avez créés dans votre affaire. bat_2 = Column(Boolean) # Contrôler dans la table « Adresses_des_batiments => PosNumero_maison » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.assez_petite). bat_3 = Column(Boolean) # Contrôler que les points adresses sont dans les géométries. diff --git a/deploy b/deploy index debe79df..d77c8b70 100644 --- a/deploy +++ b/deploy @@ -8,7 +8,7 @@ import subprocess import sys import shutil -ALLOWED_INSTANCES = ["prepub", "prod", "dev", "local"] +ALLOWED_INSTANCES = ["prepub", "prod", "dev", "local", "test"] def load_env(env_file): with open(env_file) as f: diff --git a/front/src/components/Affaires/ControleMutation/controleMutation.html b/front/src/components/Affaires/ControleMutation/controleMutation.html index e9224fe1..fc596ca6 100644 --- a/front/src/components/Affaires/ControleMutation/controleMutation.html +++ b/front/src/components/Affaires/ControleMutation/controleMutation.html @@ -55,8 +55,8 @@ Réservation des numéros de bâtiments Désignation des bâtiments et bâtiments souterrains Contrôler les numéros des points particuliers "660" ainsi que la valeur, la précision et la fiabilité des points en adéquations avec le niveau de tolérance de la zone de travail - Contrôler dans la table « Couverture_du_sol => Mise_a_jourCS » qu’il y a que les nouvelles surfaces créées dans votre affaire qu'il n'y a pas de surfaces sans géométrie - Contrôler dans la table « Couverture_du_sol => PosNumero_de_batiment » que les éléments suivants sont corrects (Hali=Center, Vali=Base, Grandeur=Petite.tres_petite). + Contrôler dans la table « Couverture_du_sol => Mise_a_jourCS » qu'il y a que les nouvelles surfaces créées dans votre affaire qu'il n'y a pas de surfaces sans géométrie + Contrôler dans la table « Couverture_du_sol => PosNumero_de_batiment » que les éléments suivants sont corrects (Hali=Center, Vali=Base, Grandeur=Petite.tres_petite) @@ -71,10 +71,10 @@ Tout cocher
- Tous les points de constructions "760" sont supprimés. - Contrôler les nouveaux éléments créés dans votre affaire et qu'il n'y a pas d'objets divers sans géométrie. - Contrôler que les bâtiments souterrains ont les bons numéros et une désignation. - Contrôler que l'attribut « Objets_divers => SymboleElement_surfacique » est rempli pour les piscines. + Tous les points de constructions "760" sont supprimés + Contrôler les nouveaux éléments créés dans votre affaire et qu'il n'y a pas d'objets divers sans géométrie + Contrôler que les bâtiments souterrains ont les bons numéros et une désignation + Contrôler que l'attribut « Objets_divers => SymboleElement_surfacique » est rempli pour les piscines
@@ -90,9 +90,9 @@ Tout cocher
- Contrôler dans la table « Adresses_des_batiments => Mise_a_jourBAT » qu’il y a bien que les nouveaux éléments que vous avez créés dans votre affaire. - Contrôler dans la table « Adresses_des_batiments => PosNumero_maison » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.assez_petite). - Contrôler que les points adresses sont dans les géométries. + Contrôler dans la table « Adresses_des_batiments => Mise_a_jourBAT » qu'il y a bien que les nouveaux éléments que vous avez créés dans votre affaire + Contrôler dans la table « Adresses_des_batiments => PosNumero_maison » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.assez_petite) + Contrôler que les points adresses sont dans les géométries
@@ -110,7 +110,7 @@ Tout cocher
Création de la mutation dans la BD - Contrôles de cohérences e.o. + Contrôles de cohérences e.o Production des désignations Production plan de mutation (papier) Production plan de mutation (PDF) @@ -130,9 +130,9 @@ Tout cocher
- Contrôler les numéros des points limites ainsi que la valeur, la précision et la fiabilité des points sont en adéquations avec le niveau de tolérance de la zone de travail. - Contrôler dans la table « Bien_fonds => Mise_a_jourBF » qu’il y que les nouveaux biens-fonds créés dans votre affaire et qu'il n'y a pas de biens-fonds sans géométrie. - Contrôler dans la table « Bien_fonds » que l’attribut « Validation_juridique » est non pour les nouveaux biens-fonds sauf pour les nouveaux DP + Contrôler les numéros des points limites ainsi que la valeur, la précision et la fiabilité des points sont en adéquations avec le niveau de tolérance de la zone de travail + Contrôler dans la table « Bien_fonds => Mise_a_jourBF » qu'il y que les nouveaux biens-fonds créés dans votre affaire et qu'il n'y a pas de biens-fonds sans géométrie + Contrôler dans la table « Bien_fonds » que l'attribut « Validation_juridique » est non pour les nouveaux biens-fonds sauf pour les nouveaux DP Contrôler dans la table « Biens_fonds.PosImmeuble » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.petite)
@@ -147,12 +147,12 @@ Tout cocher
- Contrôler les numéros des points particuliers "660" ainsi que la valeur, la précision et la fiabilité des points sont en adéquations avec le niveau de tolérance de la zone de travail. - Contrôler dans la table « Couverture_du_sol => Mise_a_jourCS » qu’il y a que les nouvelles surfaces créées dans votre affaire qu'il n'y a pas de surfaces sans géométrie. + Contrôler les numéros des points particuliers "660" ainsi que la valeur, la précision et la fiabilité des points sont en adéquations avec le niveau de tolérance de la zone de travail + Contrôler dans la table « Couverture_du_sol => Mise_a_jourCS » qu'il y a que les nouvelles surfaces créées dans votre affaire qu'il n'y a pas de surfaces sans géométrie Contrôler dans la table « Couverture_du_sol => PosNumero_de_batiment » que les éléments suivants sont corrects (Hali=Center, Vali=Base, Grandeur=Petite.tres_petite) - Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté. - Suppression du point SATAC dans la couche MO édition. - Contrôler la géométrie des EGID (01.01.2012). + Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté + Suppression du point SATAC dans la couche MO édition + Contrôler la géométrie des EGID (01.01.2012)
@@ -165,10 +165,11 @@
OBJETS DIVERS
Tout cocher
- Tous les points de constructions "760" sont supprimés. + Tous les points de constructions "760" sont supprimés Contrôler les nouveaux éléments créés dans votre affaire et qu'il n'y a pas d'objets divers sans géométrie - Contrôler que les bâtiments souterrains ont les bons numéros et une désignation. + Contrôler que les bâtiments souterrains ont les bons numéros et une désignation Modifier les attributs (raison, identification) dans les propriétés du bâtiment projeté + Suppression du point SATAC dans la couche MO édition Contrôler que l'attribut « Objets_divers => SymboleElement_surfacique » est rempli pour les piscines
@@ -182,10 +183,10 @@
ADRESSES DES BATIMENTS
Tout cocher
- Contrôler dans la table « Adresses_des_batiments => Mise_a_jourBAT » qu’il y a bien que les nouveaux éléments que vous avez créés dans votre affaire. - Contrôler dans la table « Adresses_des_batiments => PosNumero_maison » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.assez_petite). - Contrôler que les points adresses sont dans les géométries. - Contrôler les bâtiments IMVO (bâtiments sans numéros). + Contrôler dans la table « Adresses_des_batiments => Mise_a_jourBAT » qu'il y a bien que les nouveaux éléments que vous avez créés dans votre affaire + Contrôler dans la table « Adresses_des_batiments => PosNumero_maison » que les éléments suivants sont corrects (Hali=Center, Vali=Half, Grandeur=Petite.assez_petite) + Contrôler que les points adresses sont dans les géométries + Contrôler les bâtiments IMVO (bâtiments sans numéros)
@@ -198,8 +199,8 @@
SERVITUDES
Tout cocher
- Contrôler dans la table « Servitudes => Mise_a_jourSE » qu’il y a bien que les nouveaux éléments que vous avez créés dans votre affaire - Contrôler dans la table « Servitudes => Servitude_surface » ou « Servitudes => Servitude_ligne » ou « Servitudes => Servitude_point » que l’attribut « Validite » est en_projet pour les nouvelles servitudes + Contrôler dans la table « Servitudes => Mise_a_jourSE » qu'il y a bien que les nouveaux éléments que vous avez créés dans votre affaire + Contrôler dans la table « Servitudes => Servitude_surface » ou « Servitudes => Servitude_ligne » ou « Servitudes => Servitude_point » que l'attribut « Validite » est en_projet pour les nouvelles servitudes Contrôler dans la table « Servitudes => PosNumero_de_servitude » que les éléments suivants sont corrects (Hali=Left, Vali=Base, Grandeur= -)
@@ -212,7 +213,7 @@
NOMENCLATURE
- A partir de deux noms locaux pour un bien-fonds vérifier si cela est exact. + A partir de deux noms locaux pour un bien-fonds vérifier si cela est exact
@@ -238,8 +239,8 @@
DIVERS
Tout cocher
- Épurations des fichiers dans le répertoire de l’affaire - Contrôler que vous avez bien saisi le dernier numéro de point de l’affaire concernée dans le programme « Réservation des numéros » + Épurations des fichiers dans le répertoire de l'affaire + Contrôler que vous avez bien saisi le dernier numéro de point de l'affaire concernée dans le programme « Réservation des numéros » Contrôler rigoureusement les désignations, la balance ainsi que les observations pour le registre foncier