class Habref(DB.Model): __tablename__ = 'habref' __table_args__ = {'schema': 'ref_habitat', 'extend_existing': True} cd_hab = DB.Column(DB.Integer, primary_key=True, server_default=DB.FetchedValue()) fg_validite = DB.Column(DB.String(20), nullable=False) cd_typo = DB.Column(DB.ForeignKey('ref_habitat.typoref.cd_typo', ondelete='CASCADE', onupdate='CASCADE'), nullable=False) lb_code = DB.Column(DB.String(50)) lb_hab_fr = DB.Column(DB.String(255)) lb_hab_fr_complet = DB.Column(DB.String(255)) lb_hab_en = DB.Column(DB.String(255)) lb_auteur = DB.Column(DB.String(255)) niveau = DB.Column(DB.Integer) lb_niveau = DB.Column(DB.String(100)) cd_hab_sup = DB.Column(DB.Integer, nullable=False) path_cd_hab = DB.Column(DB.String(2000)) france = DB.Column(DB.String(5)) lb_description = DB.Column(DB.String(4000)) typoref = DB.relationship('Typoref', primaryjoin='Habref.cd_typo == Typoref.cd_typo', backref='habrefs')
class TNomenclature(DB.Model): __tablename__ = 't_nomenclatures' __table_args__ = {'schema': 'ref_nomenclatures', 'extend_existing': True} id_nomenclature = DB.Column(DB.Integer, primary_key=True, server_default=DB.FetchedValue()) mnemonique = DB.Column(DB.String(255)) label_default = DB.Column(DB.String(255), nullable=False)
class TTransect(DB.Model): __tablename__ = 't_transects' __table_args__ = {'schema': 'pr_monitoring_habitat_station'} id_transect = DB.Column(DB.Integer, primary_key=True, server_default=DB.FetchedValue()) id_base_site = DB.Column(DB.ForeignKey( 'gn_monitoring.t_base_sites.id_base_site', ondelete='CASCADE', onupdate='CASCADE'), nullable=False) transect_label = DB.Column(DB.String(50)) geom_start = DB.Column(Geometry('POINT', 4326)) geom_end = DB.Column(Geometry('POINT', 4326)) id_nomenclature_plot_position = DB.Column(DB.Integer, nullable=False) cd_hab = DB.Column(DB.ForeignKey('ref_habitat.habref.cd_hab', onupdate='CASCADE'), nullable=False) plot_size = DB.Column(DB.String(50)) # habref = DB.relationship('HabrefSHS', primaryjoin='TTransect.cd_hab == HabrefSHS.cd_hab', backref='t_transects') t_base_site = DB.relationship('TBaseSites') cor_plots = DB.relationship("TPlot", backref='t_plots') def get_geofeature(self, recursif=False): line = self.points_to_linestring() feature = Feature( id=str(self.id_base_site), geometry=line, properties=self.as_dict(recursif), ) return feature def points_to_linestring(self): point1 = (DB.session.scalar(geo_funcs.ST_X(self.geom_start)), DB.session.scalar(geo_funcs.ST_Y(self.geom_start))) point2 = (DB.session.scalar(geo_funcs.ST_X(self.geom_end)), DB.session.scalar(geo_funcs.ST_Y(self.geom_end))) return LineString([point1, point2])
class TPlot(DB.Model): __tablename__ = 't_plots' __table_args__ = {'schema': 'pr_monitoring_habitat_station'} id_plot = DB.Column(DB.Integer, primary_key=True, server_default=DB.FetchedValue()) id_transect = DB.Column(DB.ForeignKey( 'pr_monitoring_habitat_station.t_transects.id_transect', ondelete='CASCADE', onupdate='CASCADE'), nullable=False) code_plot = DB.Column(DB.String(50)) distance_plot = DB.Column(DB.Integer)
class ExportSchedules(DB.Model): __tablename__ = 't_export_schedules' __table_args__ = {'schema': 'gn_exports'} id_export_schedule = DB.Column(DB.Integer, primary_key=True, nullable=False) frequency = DB.Column(DB.Integer(), nullable=False) format = DB.Column(DB.String(10), nullable=False) id_export = DB.Column(DB.Integer(), DB.ForeignKey(Export.id)) export = DB.relationship( 'Export', primaryjoin='Export.id==ExportSchedules.id_export', backref='exports', lazy='subquery')
class TAdditionalFields(DB.Model): __tablename__ = "t_additional_fields" __table_args__ = {"schema": "gn_commons"} id_field = DB.Column(DB.Integer, primary_key=True) field_name = DB.Column(DB.String, nullable=False) field_label = DB.Column(DB.String, nullable=False) required = DB.Column(DB.Boolean) description = DB.Column(DB.String) quantitative = DB.Column(DB.Boolean, default=False) unity = DB.Column(DB.String(50)) field_values = DB.Column(JSONB) code_nomenclature_type = DB.Column(DB.String, DB.ForeignKey("ref_nomenclatures.bib_nomenclatures_types.mnemonique"), ) additional_attributes = DB.Column(JSONB) id_widget = DB.Column(DB.Integer, DB.ForeignKey("gn_commons.bib_widgets.id_widget"), nullable=False ) id_list = DB.Column(DB.Integer) exportable = DB.Column(DB.Boolean, default=True) field_order = DB.Column(DB.Integer) type_widget = DB.relationship("BibWidgets") bib_nomenclature_type = DB.relationship( "BibNomenclaturesTypes", primaryjoin="BibNomenclaturesTypes.mnemonique == TAdditionalFields.code_nomenclature_type" ) additional_attributes = DB.Column(JSONB) multiselect = DB.Column(DB.Boolean) key_label = DB.Column(DB.String) key_value = DB.Column(DB.String) api = DB.Column(DB.String) modules = DB.relationship( "TModules", secondary=cor_field_module, ) objects = DB.relationship( "TObjects", secondary=cor_field_object ) datasets = DB.relationship( "TDatasets", secondary=cor_field_dataset ) def __str__(self): return f"{self.field_label} ({self.description})"
class ExportLog(DB.Model): __tablename__ = 't_exports_logs' __table_args__ = {'schema': 'gn_exports'} id = DB.Column(DB.Integer, primary_key=True, nullable=False) # noqa: A003 id_role = DB.Column(DB.Integer, DB.ForeignKey(User.id_role)) role = DB.relationship('User', foreign_keys=[id_role], lazy='joined') id_export = DB.Column(DB.Integer(), DB.ForeignKey(Export.id)) export = DB.relationship('Export', lazy='joined') format = DB.Column(DB.String(4), nullable=False) # noqa: A003 start_time = DB.Column(DB.DateTime, nullable=False) end_time = DB.Column(DB.DateTime) status = DB.Column(DB.Integer, default=-2) log = DB.Column(DB.Text) def __init__(self, id_role, id_export, export_format, start_time, end_time, status, log): self.id_role = id_role self.id_export = id_export self.format = export_format self.start_time = start_time self.end_time = end_time self.status = status self.log = log @classmethod def from_dict(cls, adict): export_log = ExportLog(id_role=adict['id_role'], id_export=adict['id_export'], export_format=adict['export_format'], start_time=adict['start_time'], end_time=adict['end_time'], status=adict['status'], log=adict['log']) return export_log @classmethod def record(cls, adict): try: x = ExportLog.from_dict(adict) DB.session.add(x) DB.session.commit() except Exception as e: DB.session.rollback() raise e('Echec de journalisation.')
class ExportLog(DB.Model): __tablename__ = 't_exports_logs' __table_args__ = {'schema': 'gn_exports'} id = DB.Column(DB.Integer, primary_key=True, nullable=False) # noqa: A003 id_role = DB.Column(DB.Integer, DB.ForeignKey(User.id_role)) role = DB.relationship('User', foreign_keys=[id_role], lazy='joined') id_export = DB.Column(DB.Integer(), DB.ForeignKey(Export.id)) export = DB.relationship('Export', lazy='joined') format = DB.Column(DB.String(10), nullable=False) # noqa: A003 start_time = DB.Column(DB.DateTime, nullable=False) end_time = DB.Column(DB.DateTime) status = DB.Column(DB.Integer, default=-2) log = DB.Column(DB.Text) @classmethod def record(cls, adict): try: exportLog = cls() exportLog.from_dict(adict) DB.session.add(exportLog) DB.session.commit() except Exception as e: DB.session.rollback()
class Typoref(DB.Model): __tablename__ = 'typoref' __table_args__ = {'schema': 'ref_habitat', 'extend_existing': True} cd_typo = DB.Column(DB.Integer, primary_key=True, server_default=DB.FetchedValue()) cd_table = DB.Column(DB.String(255)) lb_nom_typo = DB.Column(DB.String(100)) nom_jeu_donnees = DB.Column(DB.String(255)) date_creation = DB.Column(DB.String(255)) date_mise_jour_table = DB.Column(DB.String(255)) date_mise_jour_metadonnees = DB.Column(DB.String(255)) auteur_typo = DB.Column(DB.String(4000)) auteur_table = DB.Column(DB.String(4000)) territoire = DB.Column(DB.String(4000)) organisme = DB.Column(DB.String(255)) langue = DB.Column(DB.String(255)) presentation = DB.Column(DB.String(4000))