Code source de src.pypnnomenclature.models

from importlib import import_module
from flask import current_app
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.sql import select, func
from utils_flask_sqla.serializers import serializable

from .env import db


@serializable
[docs] class CorTaxrefNomenclature(db.Model): """ Relation entre taxonomie et nomenclature. A n'utiliser uniquement lorsque que l'extension 'taxonomie' des nomenclatures est installée """
[docs] __tablename__ = "cor_taxref_nomenclature"
[docs] __table_args__ = {"schema": "ref_nomenclatures"}
[docs] id_nomenclature = db.Column( db.Integer, ForeignKey("ref_nomenclatures.t_nomenclatures.id_nomenclature"), primary_key=True, )
[docs] regne = db.Column(db.Unicode, primary_key=True)
[docs] group2_inpn = db.Column(db.Unicode, primary_key=True)
[docs] group3_inpn = db.Column(db.Unicode, primary_key=True)
@serializable( exclude=[ "label_en", "definition_en", "label_es", "definition_es", "label_de", "definition_de", "label_it", "definition_it", "meta_create_date", "meta_update_date", ] )
[docs] class TNomenclatures(db.Model):
[docs] __tablename__ = "t_nomenclatures"
[docs] __table_args__ = {"schema": "ref_nomenclatures"}
[docs] id_nomenclature = db.Column(db.Integer, primary_key=True)
[docs] id_type = db.Column( db.Integer, ForeignKey("ref_nomenclatures.bib_nomenclatures_types.id_type") )
[docs] nomenclature_type = relationship( "BibNomenclaturesTypes", backref="nomenclatures", )
[docs] cd_nomenclature = db.Column(db.Unicode)
[docs] mnemonique = db.Column(db.Unicode)
[docs] label_default = db.Column(db.Unicode)
[docs] definition_default = db.Column(db.Unicode)
[docs] label_fr = db.Column(db.Unicode)
[docs] definition_fr = db.Column(db.Unicode)
[docs] label_en = db.Column(db.Unicode)
[docs] definition_en = db.Column(db.Unicode)
[docs] label_es = db.Column(db.Unicode)
[docs] definition_es = db.Column(db.Unicode)
[docs] label_de = db.Column(db.Unicode)
[docs] definition_de = db.Column(db.Unicode)
[docs] label_it = db.Column(db.Unicode)
[docs] definition_it = db.Column(db.Unicode)
[docs] source = db.Column(db.Unicode)
[docs] statut = db.Column(db.Unicode)
[docs] id_broader = db.Column(db.Integer)
[docs] hierarchy = db.Column(db.Unicode)
[docs] active = db.Column(db.BOOLEAN)
[docs] meta_create_date = db.Column(db.DateTime)
[docs] meta_update_date = db.Column(db.DateTime)
@staticmethod
[docs] def get_default_nomenclature(mnemonique, id_organism=0): q = select( func.ref_nomenclatures.get_default_nomenclature_value(mnemonique, id_organism).label( "default" ) ) result = db.session.execute(q) return result.fetchone().default
[docs] class TNomenclatureTaxonomy(TNomenclatures): """ Hérite de TNomenclatures, rajoute une relation vers CorTaxrefNomenclature """
[docs] taxref = relationship("CorTaxrefNomenclature", lazy="joined")
@serializable
[docs] class BibNomenclaturesTypes(db.Model):
[docs] __tablename__ = "bib_nomenclatures_types"
[docs] __table_args__ = {"schema": "ref_nomenclatures"}
[docs] id_type = db.Column(db.Integer, primary_key=True)
[docs] mnemonique = db.Column(db.Unicode)
[docs] label_default = db.Column(db.Unicode)
[docs] definition_default = db.Column(db.Unicode)
[docs] label_fr = db.Column(db.Unicode)
[docs] definition_fr = db.Column(db.Unicode)
[docs] label_en = db.Column(db.Unicode)
[docs] definition_en = db.Column(db.Unicode)
[docs] label_es = db.Column(db.Unicode)
[docs] definition_es = db.Column(db.Unicode)
[docs] label_de = db.Column(db.Unicode)
[docs] definition_de = db.Column(db.Unicode)
[docs] label_it = db.Column(db.Unicode)
[docs] definition_it = db.Column(db.Unicode)
[docs] source = db.Column(db.Unicode)
[docs] statut = db.Column(db.Unicode)
[docs] meta_create_date = db.Column(db.DateTime)
[docs] meta_update_date = db.Column(db.DateTime)
[docs] def __repr__(self): return self.label_default
@staticmethod
[docs] def get_default_nomenclature(mnemonique, id_organism=0): q = select( [ func.ref_nomenclatures.get_default_nomenclature_value( mnemonique, id_organism ).label("default") ] ) result = db.session.execute(q) return result.fetchone().default
[docs] class BibNomenclaturesTypeTaxo(BibNomenclaturesTypes): """ Hérite de BibNomenclaturesTypes, rajoute simplement une relation vers 'nomenclature' avec la jointure vers la taxonomie """
[docs] taxonomic_nomenclatures = relationship( "TNomenclatureTaxonomy", primaryjoin="and_(TNomenclatureTaxonomy.id_type == BibNomenclaturesTypes.id_type, TNomenclatureTaxonomy.active == True)", lazy="joined", order_by="TNomenclatureTaxonomy.hierarchy", viewonly=True, )
# Modèle utilisé seulement si l'extension 'taxonomie' # du module est activée et installée @serializable
[docs] class VNomenclatureTaxonomie(db.Model):
[docs] __tablename__ = "v_nomenclature_taxonomie"
[docs] __table_args__ = {"schema": "ref_nomenclatures"}
[docs] id_type = db.Column(db.Integer)
[docs] type_label = db.Column(db.Unicode)
[docs] type_definition = db.Column(db.Unicode)
[docs] type_label_fr = db.Column(db.Unicode)
[docs] type_definition_fr = db.Column(db.Unicode)
[docs] type_label_en = db.Column(db.Unicode)
[docs] type_definition_en = db.Column(db.Unicode)
[docs] type_label_es = db.Column(db.Unicode)
[docs] type_definition_es = db.Column(db.Unicode)
[docs] type_label_de = db.Column(db.Unicode)
[docs] type_definition_de = db.Column(db.Unicode)
[docs] type_label_it = db.Column(db.Unicode)
[docs] type_definition_it = db.Column(db.Unicode)
[docs] regne = db.Column(db.Unicode, primary_key=True)
[docs] group2_inpn = db.Column(db.Unicode, primary_key=True)
[docs] group3_inpn = db.Column(db.Unicode, primary_key=True)
[docs] id_nomenclature = db.Column(db.Integer, primary_key=True)
[docs] mnemonique = db.Column(db.Unicode)
[docs] nomenclature_label = db.Column(db.Unicode)
[docs] nomenclature_definition = db.Column(db.Unicode)
[docs] nomenclature_label_fr = db.Column(db.Unicode)
[docs] nomenclature_definition_fr = db.Column(db.Unicode)
[docs] nomenclature_label_en = db.Column(db.Unicode)
[docs] nomenclature_definition_en = db.Column(db.Unicode)
[docs] nomenclature_label_es = db.Column(db.Unicode)
[docs] nomenclature_definition_es = db.Column(db.Unicode)
[docs] nomenclature_label_de = db.Column(db.Unicode)
[docs] nomenclature_definition_de = db.Column(db.Unicode)
[docs] nomenclature_label_it = db.Column(db.Unicode)
[docs] nomenclature_definition_it = db.Column(db.Unicode)
[docs] id_broader = db.Column(db.Integer)
[docs] hierarchy = db.Column(db.Unicode)