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)
示例#3
0
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])
示例#4
0
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)
示例#5
0
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})"
示例#7
0
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.')
示例#8
0
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))