コード例 #1
0
class CorExportsRoles(DB.Model):
    __tablename__ = 'cor_exports_roles'
    __table_args__ = {'schema': 'gn_exports'}
    id_export = DB.Column(DB.Integer(),
                          DB.ForeignKey(Export.id),
                          primary_key=True,
                          nullable=False)
    export = DB.relationship('Export', foreign_keys=[id_export], lazy='joined')
    id_role = DB.Column(DB.Integer,
                        DB.ForeignKey(User.id_role),
                        primary_key=True,
                        nullable=False)
    role = DB.relationship('User', foreign_keys=[id_role], lazy='joined')
コード例 #2
0
class CorListHabitat(DB.Model):
    __tablename__ = 'cor_list_habitat'
    __table_args__ = {'schema': 'ref_habitat', 'extend_existing': True}

    id_cor_list = DB.Column(DB.Integer,
                            primary_key=True,
                            server_default=DB.FetchedValue())
    id_list = DB.Column(DB.ForeignKey('ref_habitat.habref.bib_list_habitat',
                                      onupdate='CASCADE'),
                        nullable=False)
    cd_hab = DB.Column(DB.ForeignKey('ref_habitat.habref.cd_hab',
                                     onupdate='CASCADE'),
                       nullable=False)
コード例 #3
0
class TArbres (DB.Model):
    __tablename__ = "t_arbres"
    __table_args__ = {'schema': SCHEMA}
    id_arbre = DB.Column('id_arbre', DB.Integer, primary_key = True)
    id_arbre_orig = DB.Column('id_arbre_orig', DB.Integer)
    id_placette = DB.Column('id_placette', DB.Integer, DB.ForeignKey('pr_psdrf.t_placettes.id_placette'))
    code_essence = DB.Column('code_essence', DB.String, DB.ForeignKey('pr_psdrf.bib_essences.code_essence'))
    azimut = DB.Column('azimut', DB.Float)
    distance = DB.Column('distance', DB.Float)
    taillis = DB.Column('taillis', DB.Boolean)
    observation = DB.deferred(DB.Column('observation', DB.Text))

    placette = DB.relationship('TPlacettes', foreign_keys=id_placette)
    essence = DB.relationship('BibEssences', foreign_keys=code_essence)
コード例 #4
0
class CorNomListe(DB.Model):
    __tablename__ = "cor_nom_liste"
    __table_args__ = {"schema": "taxonomie"}
    id_liste = DB.Column(
        DB.Integer,
        DB.ForeignKey("taxonomie.bib_listes.id_liste"),
        nullable=False,
        primary_key=True,
    )
    id_nom = DB.Column(
        DB.Integer,
        DB.ForeignKey("taxonomie.bib_noms.id_nom"),
        nullable=False,
        primary_key=True,
    )
コード例 #5
0
class CorRelevePlotStrat(DB.Model):
    __tablename__ = 'cor_releve_plot_strats'
    __table_args__ = {'schema': 'pr_monitoring_habitat_station'}

    id_releve_plot_strat = DB.Column(DB.Integer,
                                     primary_key=True,
                                     server_default=DB.FetchedValue())
    id_releve_plot = DB.Column(DB.ForeignKey(
        'pr_monitoring_habitat_station.t_releve_plots.id_releve_plot',
        onupdate='CASCADE'),
                               nullable=False)
    id_nomenclature_strate = DB.Column(DB.ForeignKey(
        'ref_nomenclatures.t_nomenclatures.id_nomenclature',
        onupdate='CASCADE'),
                                       nullable=False)
    cover_pourcentage = DB.Column(DB.Integer)
コード例 #6
0
class Export(DB.Model):
    __tablename__ = 't_exports'
    __table_args__ = {'schema': 'gn_exports'}
    id = DB.Column(DB.Integer, primary_key=True, nullable=False)  # noqa: A003
    label = DB.Column(DB.Text, nullable=False, unique=True, index=True)
    schema_name = DB.Column(DB.Text, nullable=False)
    view_name = DB.Column(DB.Text, nullable=False)
    desc = DB.Column(DB.Text)
    geometry_field = DB.Column(DB.Text)
    geometry_srid = DB.Column(DB.Integer)
    public = DB.Column(DB.Boolean, nullable=False, default=False)
    id_licence = DB.Column(DB.Integer(),
                           DB.ForeignKey(Licences.id_licence),
                           primary_key=True,
                           nullable=False)

    licence = DB.relationship(
        'Licences',
        primaryjoin='Export.id_licence==Licences.id_licence',
        backref='exports')

    def __str__(self):
        return "{}".format(self.label)

    __repr__ = __str__
コード例 #7
0
class TMonitoringModules(TModules):
    __tablename__ = 't_module_complements'
    __table_args__ = {'schema': 'gn_monitoring'}
    __mapper_args__ = {
        'polymorphic_identity': 'monitoring_module',
    }

    id_module = DB.Column(DB.ForeignKey('gn_commons.t_modules.id_module'),
                          primary_key=True,
                          nullable=False,
                          unique=True)

    uuid_module_complement = DB.Column(UUID(as_uuid=True), default=uuid4)

    medias = DB.relationship(
        TMedias,
        primaryjoin=(TMedias.uuid_attached_row == uuid_module_complement),
        foreign_keys=[TMedias.uuid_attached_row])

    sites = DB.relationship(
        'TMonitoringSites',
        secondary='gn_monitoring.cor_site_module',
        primaryjoin=id_module == CorSiteModule.id_module,
        secondaryjoin=TMonitoringSites.id_base_site ==
        CorSiteModule.id_base_site,
        join_depth=0,
        lazy="select",
        # backref='parents'
    )
コード例 #8
0
class TMonitoringVisits(TBaseVisits):
    __tablename__ = "t_visit_complements"
    __table_args__ = {"schema": "gn_monitoring"}
    __mapper_args__ = {
        'polymorphic_identity': 'monitoring_visit',
    }

    id_base_visit = DB.Column(
        DB.ForeignKey('gn_monitoring.t_base_visits.id_base_visit'),
        nullable=False,
        primary_key=True)

    data = DB.Column(JSONB)

    medias = DB.relationship(
        TMedias,
        primaryjoin=(TMedias.uuid_attached_row == TBaseVisits.uuid_base_visit),
        foreign_keys=[TMedias.uuid_attached_row])

    observations = DB.relation(
        "TMonitoringObservations",
        primaryjoin=(TObservations.id_base_visit == TBaseVisits.id_base_visit),
        foreign_keys=[TObservations.id_base_visit],
        cascade="all,delete")

    @hybrid_property
    def nb_observations(self):
        return len(self.observations)
コード例 #9
0
class TPlacettes (DB.Model):
    __tablename__ = "t_placettes"
    __table_args__ = {'schema': SCHEMA}
    id_placette = DB.Column('id_placette', DB.Integer, primary_key = True)
    id_dispositif = DB.Column('id_dispositif', DB.Integer, DB.ForeignKey('pr_psdrf.t_dispositifs.id_dispositif'))
    id_placette_orig = DB.Column('id_placette_orig', DB.String)
    strate = DB.Column('strate', DB.Integer)
    pente = DB.Column('pente', DB.Float)
    poids_placette = DB.Column('poids_placette', DB.Float)
    correction_pente = DB.Column('correction_pente', DB.Boolean)
    exposition = DB.Column('exposition', DB.Integer)
    profondeur_app = DB.Column('profondeur_app', DB.String)
    profondeur_hydr = DB.Column('profondeur_hydr', DB.Float)
    texture = DB.Column('texture', DB.String)
    habitat = DB.Column('habitat', DB.String)
    station = DB.Column('station', DB.String)
    typologie = DB.Column('typologie', DB.String)
    groupe = DB.Column('groupe', DB.String)
    groupe1 = DB.Column('groupe1', DB.String)
    groupe2 = DB.Column('groupe2', DB.String)
    ref_habitat = DB.Column('ref_habitat', DB.String)
    precision_habitat = DB.deferred(DB.Column('precision_habitat', DB.Text))
    ref_station = DB.Column('ref_station', DB.String)
    ref_typologie = DB.Column('ref_typologie', DB.String)
    descriptif_groupe = DB.deferred(DB.Column('descriptif_groupe', DB.Text))
    descriptif_groupe1 = DB.deferred(DB.Column('descriptif_groupe1', DB.Text))
    descriptif_groupe2 = DB.deferred(DB.Column('descriptif_groupe2', DB.Text))
    precision_gps = DB.Column('precision_gps', DB.String)
    cheminement = DB.deferred(DB.Column('cheminement', DB.Text))
    geom = DB.Column('geom', Geometry('POINT', 2154))
    geom_wgs84 = DB.Column('geom_wgs84', Geometry('POINT', 4326))

    dispositif = DB.relationship('TDispositifs', foreign_keys=id_dispositif, back_populates='placettes')
コード例 #10
0
class TMonitoringVisits(TBaseVisits):
    __tablename__ = "t_visit_complements"
    __table_args__ = {"schema": "gn_monitoring"}
    __mapper_args__ = {
        'polymorphic_identity': 'monitoring_visit',
    }

    id_base_visit = DB.Column(
        DB.ForeignKey('gn_monitoring.t_base_visits.id_base_visit'),
        nullable=False,
        primary_key=True)

    data = DB.Column(JSONB)

    medias = DB.relationship(
        TMedias,
        lazy='joined',
        primaryjoin=(TMedias.uuid_attached_row == TBaseVisits.uuid_base_visit),
        foreign_keys=[TMedias.uuid_attached_row])

    observers = DB.relationship(User,
                                lazy='joined',
                                secondary=corVisitObserver)

    observations = DB.relation(
        "TMonitoringObservations",
        lazy='select',
        primaryjoin=(TObservations.id_base_visit == TBaseVisits.id_base_visit),
        foreign_keys=[TObservations.id_base_visit],
        cascade="all,delete")

    nb_observations = column_property(
        select([func.count(TObservations.id_base_visit)]).\
            where(TObservations.id_base_visit==id_base_visit)
    )
コード例 #11
0
class CorCyclesRoles (DB.Model):
    __tablename__ = "cor_cycles_roles"
    __table_args__ = {'schema': SCHEMA}
    id_cycle = DB.Column('id_cycle', DB.Integer, DB.ForeignKey('pr_psdrf.t_cycles.id_cycle'), primary_key = True)
    id_role = DB.Column('id_role', DB.Integer, primary_key = True)

    cycle = DB.relationship('TCycles', foreign_keys=id_cycle)
コード例 #12
0
class TObservations(DB.Model):
    __tablename__ = "t_observations"
    __table_args__ = {"schema": "gn_monitoring"}

    id_observation = DB.Column(DB.Integer,
                               primary_key=True,
                               nullable=False,
                               unique=True)
    id_base_visit = DB.Column(
        DB.ForeignKey('gn_monitoring.t_base_visits.id_base_visit'))
    cd_nom = DB.Column(DB.Integer)
    comments = DB.Column(DB.String)
    uuid_observation = DB.Column(UUID(as_uuid=True), default=uuid4)

    medias = DB.relationship(
        TMedias,
        lazy='joined',
        primaryjoin=(TMedias.uuid_attached_row == uuid_observation),
        foreign_keys=[TMedias.uuid_attached_row])

    t_observation_details = DB.relation(
        TMonitoringObservationDetails,
        primaryjoin=(
            id_observation == TMonitoringObservationDetails.id_observation),
        foreign_keys=[TMonitoringObservationDetails.id_observation],
        cascade="all,delete")
コード例 #13
0
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')
コード例 #14
0
class TMonitoringSites(TBaseSites):

    __tablename__ = 't_site_complements'
    __table_args__ = {'schema': 'gn_monitoring'}
    __mapper_args__ = {
        'polymorphic_identity': 'monitoring_site',
    }

    id_base_site = DB.Column(
        DB.ForeignKey('gn_monitoring.t_base_sites.id_base_site'),
        nullable=False,
        primary_key=True)

    id_module = DB.Column(DB.ForeignKey('gn_commons.t_modules.id_module'),
                          nullable=False,
                          primary_key=True)

    data = DB.Column(JSONB)

    # unmap modules
    TBaseSites.modules = 0

    visits = DB.relationship(
        TMonitoringVisits,
        primaryjoin=(TBaseSites.id_base_site == TBaseVisits.id_base_site),
        foreign_keys=[TBaseVisits.id_base_site],
        cascade="all,delete")

    medias = DB.relationship(
        TMedias,
        primaryjoin=(TMedias.uuid_attached_row == TBaseSites.uuid_base_site),
        foreign_keys=[TMedias.uuid_attached_row],
        cascade="all,delete")

    @hybrid_property
    def last_visit(self):
        last_visit = None
        if self.visits:
            for visit in self.visits:
                if not last_visit or last_visit < visit.visit_date_min:
                    last_visit = visit.visit_date_min

        return last_visit

    @hybrid_property
    def nb_visits(self):
        return len(self.visits)
コード例 #15
0
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})"
コード例 #16
0
class TInfosSite(DB.Model):
    __tablename__ = 't_infos_site'
    __table_args__ = {'schema': 'pr_monitoring_habitat_territory'}

    id_infos_site = DB.Column(DB.Integer, primary_key=True)
    id_base_site = DB.Column(
        DB.ForeignKey('gn_monitoring.t_base_sites.id_base_site'),
        nullable=False)
    cd_hab = DB.Column(DB.ForeignKey('ref_habitat.habref.cd_hab'),
                       nullable=False)

    # habref = DB.relationship('Habref', primaryjoin='TInfosSite.cd_hab == Habref.cd_hab', backref='t_infos_sites')
    #t_base_site = DB.relationship('TBaseSites', primaryjoin='TInfosSite.id_base_site == TBaseSites.id_base_site', backref='t_infos_sites')
    t_base_site = DB.relationship('TBaseSites')
    geom = association_proxy('t_base_site', 'geom')

    def get_geofeature(self, recursif=True):
        return self.as_geofeature('geom', 'id_infos_site', recursif)
コード例 #17
0
class TBmSup30 (DB.Model):
    __tablename__ = "t_bm_sup_30"
    __table_args__ = {'schema': SCHEMA}
    id_bm_sup_30 = DB.Column('id_bm_sup_30', DB.Integer, primary_key = True)
    id_bm_sup_30_orig = DB.Column('id_bm_sup_30_orig', DB.Integer)
    id_placette = DB.Column('id_placette', DB.Integer, DB.ForeignKey('pr_psdrf.t_placettes.id_placette'))
    id_arbre = DB.Column('id_arbre', DB.Integer, DB.ForeignKey('pr_psdrf.t_arbres.id_arbre'))
    code_essence = DB.Column('code_essence', DB.String, DB.ForeignKey('pr_psdrf.bib_essences.code_essence'))
    azimut = DB.Column('azimut', DB.Float)
    distance = DB.Column('distance', DB.Float)
    orientation = DB.Column('orientation', DB.Float)
    azimut_souche = DB.Column('azimut_souche', DB.Float)
    distance_souche = DB.Column('distance_souche', DB.Float)
    observation = DB.deferred(DB.Column('observation', DB.Text))

    placette = DB.relationship('TPlacettes', foreign_keys=id_placette)
    essence = DB.relationship('BibEssences', foreign_keys=code_essence)
    arbre = DB.relationship('TArbres', foreign_keys=id_arbre)
コード例 #18
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.')
コード例 #19
0
class TBmSup30Mesures (DB.Model):
    __tablename__ = "t_bm_sup_30_mesures"
    __table_args__ = {'schema': SCHEMA}
    id_bm_sup_30_mesure = DB.Column('id_bm_sup_30_mesure', DB.Integer, primary_key = True)
    id_bm_sup_30 = DB.Column('id_bm_sup_30', DB.Integer, DB.ForeignKey('pr_psdrf.t_bm_sup_30.id_bm_sup_30'))
    id_cycle = DB.Column('id_cycle', DB.Integer, DB.ForeignKey('pr_psdrf.t_cycles.id_cycle'))
    diametre_ini = DB.Column('diametre_ini', DB.Float)
    diametre_med = DB.Column('diametre_med', DB.Float)
    diametre_fin = DB.Column('diametre_fin', DB.Float)
    diametre_130 = DB.Column('diametre_130', DB.Float)
    longueur = DB.Column('longueur', DB.Float)
    ratio_hauteur = DB.Column('ratio_hauteur', DB.Boolean)
    contact = DB.Column('contact', DB.Float)
    chablis = DB.Column('chablis', DB.Boolean)
    stade_durete = DB.Column('stade_durete', DB.Integer)
    stade_ecorce = DB.Column('stade_ecorce', DB.Integer)
    observation = DB.deferred(DB.Column('observation', DB.Text))

    bm_sup_30 = DB.relationship('TBmSup30', foreign_keys=id_bm_sup_30)
    cycle = DB.relationship('TCycles', foreign_keys=id_cycle)
コード例 #20
0
class TCategories (DB.Model):
    __tablename__ = "t_categories"
    __table_args__ = {'schema': SCHEMA}
    id_category = DB.Column('id_category', DB.Integer, primary_key = True)
    id_dispositif = DB.Column('id_dispositif', DB.Integer, DB.ForeignKey('pr_psdrf.t_dispositifs.id_dispositif'))
    pb = DB.Column('pb', DB.Float)
    bm = DB.Column('bm', DB.Float)
    gb = DB.Column('gb', DB.Float)
    tgb = DB.Column('tgb', DB.Float)

    dispositif = DB.relationship('TDispositifs', foreign_keys=id_dispositif)
コード例 #21
0
class TDispositifs (DB.Model):
    __tablename__ = "t_dispositifs"
    __table_args__ = {'schema': SCHEMA}
    id_dispositif = DB.Column('id_dispositif', DB.Integer, primary_key = True)
    name = DB.Column('name', DB.String)
    id_organisme = DB.Column('id_organisme', DB.Integer, DB.ForeignKey('utilisateurs.bib_organismes.id_organisme'))
    alluvial = DB.Column('alluvial', DB.Boolean)
    organisme = DB.relationship('BibOrganismes')
    placettes = DB.relationship('TPlacettes', back_populates='dispositif')
    municipalities = DB.relationship('LiMunicipalities', secondary=dispositifs_municipalities_assoc)
    areas = DB.relationship('LAreas', secondary=dispositifs_area_assoc)
コード例 #22
0
class CorCyclesPlacettes (DB.Model):
    __tablename__ = "cor_cycles_placettes"
    __table_args__ = {'schema': SCHEMA}
    id_cycle_placette = DB.Column('id_cycle_placette', DB.Integer, primary_key = True)
    id_cycle = DB.Column('id_cycle', DB.Integer, DB.ForeignKey('pr_psdrf.t_cycles.id_cycle'))
    id_placette = DB.Column('id_placette', DB.Integer, DB.ForeignKey('pr_psdrf.t_placettes.id_placette'))
    date_releve = DB.Column('date_releve', DB.Date)
    date_intervention = DB.Column('date_intervention', DB.String)
    nature_intervention = DB.Column('nature_intervention', DB.String)
    gestion_placette = DB.Column('gestion_placette', DB.String)
    id_nomenclature_castor = DB.Column('id_nomenclature_castor', DB.Integer)
    id_nomenclature_frottis = DB.Column('id_nomenclature_frottis', DB.Integer)
    id_nomenclature_boutis = DB.Column('id_nomenclature_boutis', DB.Integer)
    recouv_herbes_basses = DB.Column('recouv_herbes_basses', DB.Float)
    recouv_herbes_hautes = DB.Column('recouv_herbes_hautes', DB.Float)
    recouv_buissons = DB.Column('recouv_buissons', DB.Float)
    recouv_arbres = DB.Column('recouv_arbres', DB.Float)

    cycle = DB.relationship('TCycles', foreign_keys=id_cycle)
    placette = DB.relationship('TPlacettes', foreign_keys=id_placette)
コード例 #23
0
class TMonitoringModules(TModules):
    __tablename__ = 't_module_complements'
    __table_args__ = {'schema': 'gn_monitoring'}
    __mapper_args__ = {
        'polymorphic_identity': 'monitoring_module',
    }

    id_module = DB.Column(DB.ForeignKey('gn_commons.t_modules.id_module'),
                          primary_key=True,
                          nullable=False,
                          unique=True)

    uuid_module_complement = DB.Column(UUID(as_uuid=True), default=uuid4)

    id_list_observer = DB.Column(DB.Integer)
    id_list_taxonomy = DB.Column(DB.Integer)

    taxonomy_display_field_name = DB.Column(DB.Unicode)
    b_synthese = DB.Column(DB.Boolean)

    medias = DB.relationship(
        TMedias,
        primaryjoin=(TMedias.uuid_attached_row == uuid_module_complement),
        foreign_keys=[TMedias.uuid_attached_row],
        lazy='joined')

    sites = DB.relationship(
        'TMonitoringSites',
        uselist=True,  # pourquoi pas par defaut ?
        primaryjoin=TMonitoringSites.id_module == id_module,
        foreign_keys=[id_module],
        lazy="select",
    )

    sites_groups = DB.relationship(
        'TMonitoringSitesGroups',
        uselist=True,  # pourquoi pas par defaut ?
        primaryjoin=TMonitoringSitesGroups.id_module == id_module,
        foreign_keys=[id_module],
        lazy="select",
    )

    datasets = DB.relationship(
        'TDatasets',
        secondary='gn_commons.cor_module_dataset',
        secondaryjoin=TDatasets.id_dataset == CorModuleDataset.id_dataset,
        join_depth=0,
        lazy="joined",
    )

    meta_create_date = DB.Column(DB.DateTime)
    meta_update_date = DB.Column(DB.DateTime)

    data = DB.Column(JSONB)
コード例 #24
0
class TReperes (DB.Model):
    __tablename__ = "t_reperes"
    __table_args__ = {'schema': SCHEMA}
    id_repere = DB.Column('id_repere', DB.Integer, primary_key = True)
    id_placette = DB.Column('id_placette', DB.Integer, DB.ForeignKey('pr_psdrf.t_placettes.id_placette'))
    azimut = DB.Column('azimut', DB.Float)
    distance = DB.Column('distance', DB.Float)
    diametre = DB.Column('diametre', DB.Float)
    observation = DB.deferred(DB.Column('observation', DB.Text))

    placette = DB.relationship('TPlacettes', foreign_keys=id_placette)
コード例 #25
0
class CorVisitPerturbation(DB.Model):
    __tablename__ = 'cor_visit_perturbation'
    __table_args__ = {'schema': 'pr_monitoring_habitat_territory'}

    id_base_visit = DB.Column(DB.ForeignKey(
        'gn_monitoring.t_base_visits.id_base_visit', onupdate='CASCADE'),
                              primary_key=True,
                              nullable=False)
    id_nomenclature_perturbation = DB.Column(DB.ForeignKey(
        'ref_nomenclatures.t_nomenclatures.id_nomenclature',
        onupdate='CASCADE'),
                                             primary_key=True,
                                             nullable=False)
    create_date = DB.Column(DB.DateTime, nullable=False, default=func.now())

    #t_base_visit = DB.relationship('TVisitSHT', primaryjoin='CorVisitPerturbation.id_base_visit == TVisitSHT.id_base_visit', backref='cor_visit_perturbations')
    t_nomenclature = DB.relationship(
        'TNomenclature',
        primaryjoin=
        'CorVisitPerturbation.id_nomenclature_perturbation == TNomenclature.id_nomenclature',
        backref='cor_visit_perturbations')
コード例 #26
0
class TMonitoringObservationDetails(DB.Model):
    __tablename__ = "t_observation_details"
    __table_args__ = {"schema": "gn_monitoring"}

    id_observation_detail = DB.Column(DB.Integer,
                                      primary_key=True,
                                      nullable=False,
                                      unique=True)

    id_observation = DB.Column(
        DB.ForeignKey('gn_monitoring.t_observations.id_observation'))
    data = DB.Column(JSONB)
コード例 #27
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])
コード例 #28
0
class CorVisitTaxon(DB.Model):
    __tablename__ = 'cor_visit_taxons'
    __table_args__ = {'schema': 'pr_monitoring_habitat_territory'}

    id_cor_visite_taxons = DB.Column(DB.Integer,
                                     nullable=False,
                                     server_default=DB.FetchedValue(),
                                     primary_key=True)
    id_base_visit = DB.Column(
        DB.ForeignKey('gn_monitoring.t_base_visits.id_base_visit',
                      ondelete='CASCADE',
                      onupdate='CASCADE'))
    cd_nom = DB.Column(DB.Integer)
コード例 #29
0
class TCycles (DB.Model):
    __tablename__ = "t_cycles"
    __table_args__ = {'schema': SCHEMA}
    id_cycle = DB.Column('id_cycle', DB.Integer, primary_key = True)
    id_dispositif = DB.Column('id_dispositif', DB.Integer, DB.ForeignKey('pr_psdrf.t_dispositifs.id_dispositif'))
    num_cycle = DB.Column('num_cycle', DB.Integer)
    coeff = DB.Column('coeff', DB.Integer)
    date_debut = DB.Column('date_debut', DB.Date)
    date_fin = DB.Column('date_fin', DB.Date)
    diam_lim = DB.Column('diam_lim', DB.Float)
    monitor = DB.Column('monitor', DB.String)

    dispositif = DB.relationship('TDispositifs', foreign_keys=id_dispositif)
コード例 #30
0
class TMonitoringSitesGroups(DB.Model):
    __tablename__ = 't_sites_groups'
    __table_args__ = {'schema': 'gn_monitoring'}

    id_sites_group = DB.Column(DB.Integer,
                               primary_key=True,
                               nullable=False,
                               unique=True)

    id_module = DB.Column(DB.ForeignKey('gn_commons.t_modules.id_module'),
                          nullable=False,
                          unique=True)

    uuid_sites_group = DB.Column(UUID(as_uuid=True), default=uuid4)

    sites_group_name = DB.Column(DB.Unicode)
    sites_group_code = DB.Column(DB.Unicode)
    sites_group_description = DB.Column(DB.Unicode)

    comments = DB.Column(DB.Unicode)

    data = DB.Column(JSONB)

    medias = DB.relationship(
        TMedias,
        primaryjoin=(TMedias.uuid_attached_row == uuid_sites_group),
        foreign_keys=[TMedias.uuid_attached_row],
        lazy="joined",
    )

    sites = DB.relationship(
        TMonitoringSites,
        uselist=True,  # pourquoi pas par defaut ?
        primaryjoin=(TMonitoringSites.id_sites_group == id_sites_group),
        foreign_keys=[TMonitoringSites.id_sites_group],
        lazy="joined",
    )

    nb_sites = column_property(
        select([func.count(TMonitoringSites.id_sites_group)]).\
            where(TMonitoringSites.id_sites_group==id_sites_group)
    )

    nb_visits = column_property(
        select([func.count(TMonitoringVisits.id_base_site)]).\
            where(and_(
                TMonitoringVisits.id_base_site == TMonitoringSites.id_base_site,
                TMonitoringSites.id_sites_group == id_sites_group
                )
        )
    )