Skip to content

Commit

Permalink
merge chasse
Browse files Browse the repository at this point in the history
  • Loading branch information
joelclems committed Jun 4, 2021
2 parents bc45d17 + ad22498 commit 521a5b5
Show file tree
Hide file tree
Showing 98 changed files with 6,343 additions and 3,309 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ remove/
*.pyc
venv/
var/log/error*
config/settings.ini
settings.ini
config/settings.ini_*
config/config.py

Expand Down
30 changes: 20 additions & 10 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
# actualite
TODO

- page component actualités (liste et plus)
- restitution
- bug ??

- revoir pages
- en cours
- documents
- ok
- generales
- admin
- tout serveur side
- nb indiqué dans l'onglet mis a jour (store.getter nb_total ??)

- chasse
- zone interet -> zone indicative
- formulaire
- titre
- css
- structure
- bracelet -> sexe + espece
- données
- reprendre les données

- serveur demo

- cadre couleur
DONE
- chasse
- [x] app.pnc.int 10.30
- [x] test ajout personne

- mode résumé (les n premières lignes)

66 changes: 66 additions & 0 deletions app/modules/oeasc/chasse/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
'''
api chasse
'''

from .models import (
TPersonnes, TZoneCynegetiques, TZoneIndicatives,
TLieuTirs, TSaisons, TSaisonDates,
TAttributionMassifs, TTypeBracelets, TAttributions, TRealisationsChasse
)
from ..generic.definitions import GenericRouteDefinitions
from flask import Blueprint, current_app, request


bp = Blueprint('chasse_api', __name__)
grd = GenericRouteDefinitions()

droits = { 'C': 5, 'R': 0, 'U': 5, 'D': 5 }

definitions = {
'personne': {
'model': TPersonnes,
'droits': droits
},
'zone_cynegetique': {
'model': TZoneCynegetiques,
'droits': droits
},
'zone_cynegetique': {
'model': TZoneCynegetiques,
'droits': droits
},
'zone_indicative': {
'model': TZoneIndicatives,
'droits': droits
},
'lieu_tir': {
'model': TLieuTirs,
'droits': droits
},
'saison': {
'model': TSaisons,
'droits': droits
},
'saison_date': {
'model': TSaisonDates,
'droits': droits
},
'attribution_massif': {
'model': TAttributionMassifs,
'droits': droits
},
'type_bracelet': {
'model': TTypeBracelets,
'droits': droits
},
'attribution': {
'model': TAttributions,
'droits': droits
},
'realisation': {
'model': TRealisationsChasse,
'droits': droits
},
}

grd.add_generic_routes('chasse', definitions)
274 changes: 274 additions & 0 deletions app/modules/oeasc/chasse/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,274 @@
'''
modele chasse
'''

from flask import current_app
from utils_flask_sqla.serializers import serializable
from geoalchemy2 import Geometry
from sqlalchemy.orm import column_property
from sqlalchemy import select, func, and_
from ..commons.models import TEspeces, TNomenclatures, TSecteurs

config = current_app.config
DB = config['DB']


@serializable
class TPersonnes(DB.Model):
'''
Personne (tir & constat)
'''
__tablename__ = 't_personnes'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_personne = DB.Column(DB.Integer, primary_key=True)
nom_personne = DB.Column(DB.Unicode)


@serializable
class TZoneCynegetiques(DB.Model):
'''
Zones Cynegetiques
'''
__tablename__ = 't_zone_cynegetiques'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_zone_cynegetique = DB.Column(DB.Integer, primary_key=True)
code_zone_cynegetique = DB.Column(DB.Unicode)
nom_zone_cynegetique = DB.Column(DB.Unicode)
id_secteur = DB.Column(
DB.Integer,
DB.ForeignKey('oeasc_commons.t_secteurs.id_secteur')
)
secteur = DB.relationship(TSecteurs, foreign_keys=id_secteur)


@serializable
class TZoneIndicatives(DB.Model):
'''
Zones d'interet cynegetiques
'''
__tablename__ = 't_zone_indicatives'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_zone_indicative = DB.Column(DB.Integer, primary_key=True)
code_zone_indicative = DB.Column(DB.Unicode)
nom_zone_indicative = DB.Column(DB.Unicode)
id_zone_cynegetique = DB.Column(
DB.Integer,
DB.ForeignKey('oeasc_chasse.t_zone_cynegetiques.id_zone_cynegetique')
)
zone_cynegetique = DB.relationship(TZoneCynegetiques, foreign_keys=id_zone_cynegetique)

@serializable
class TLieuTirs(DB.Model):
'''
Lieu de tir
'''
__tablename__ = 't_lieu_tirs'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_lieu_tir = DB.Column(DB.Integer, primary_key=True)
code_lieu_tir = DB.Column(DB.Unicode)
nom_lieu_tir = DB.Column(DB.Unicode)
geom = DB.Column(Geometry)
id_area_commune = DB.Column(DB.Integer, DB.ForeignKey('ref_geo.l_areas.id_area'))
id_zone_indicative = DB.Column(
DB.Integer,
DB.ForeignKey('oeasc_chasse.t_zone_indicatives.id_zone_indicative')
)
zone_indicative = DB.relationship(TZoneIndicatives, foreign_keys=id_zone_indicative)


@serializable
class TSaisons(DB.Model):
'''
Saison de chasse
'''

__tablename__ = 't_saisons'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_saison = DB.Column(DB.Integer, primary_key=True)
nom_saison = DB.Column(DB.Unicode)
date_debut = DB.Column(DB.Date)
date_fin = DB.Column(DB.Date)
current = DB.Column(DB.Boolean)
commentaire = DB.Column(DB.Unicode)

@serializable
class TSaisonDates(DB.Model):
'''
Date de chasse des différentes especes
'''

__tablename__ = 't_saison_dates'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_saison_date = DB.Column(DB.Integer, primary_key=True)
id_saison = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_saisons.id_saison'))
saison = DB.relationship(TSaisons, foreign_keys=id_saison)
id_espece = DB.Column(DB.Integer, DB.ForeignKey('oeasc_commons.t_especes.id_espece'))
espece = DB.relationship(TEspeces, foreign_keys=id_espece)
date_debut = DB.Column(DB.Date)
date_fin = DB.Column(DB.Date)
id_nomenclature_type_chasse = DB.Column(DB.Integer, DB.ForeignKey('ref_nomenclatures.t_nomenclatures.id_nomenclature'))
nomenclature_type_chasse = DB.relationship(TNomenclatures, foreign_keys=id_nomenclature_type_chasse)



@serializable
class TAttributionMassifs(DB.Model):
'''
Attribution selon les années
'''

__tablename__ = 't_attribution_massifs'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_attribution_massif = DB.Column(DB.Integer, primary_key=True)
id_saison = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_saisons.id_saison'))
id_espece = DB.Column(DB.Integer, DB.ForeignKey('oeasc_commons.t_especes.id_espece'))
id_zone_cynegetique = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_zone_cynegetiques.id_zone_cynegetique'))
nb_affecte_min = DB.Column(DB.Integer)
nb_affecte_max = DB.Column(DB.Integer)

saison = DB.relationship(TSaisons)
espece = DB.relationship(TEspeces)
zone_cynegetique = DB.relationship(TZoneCynegetiques)



@serializable
class TTypeBracelets(DB.Model):
'''
Type de bracelet
'''

__tablename__ = 't_type_bracelets'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_type_bracelet = DB.Column(DB.Integer, primary_key=True)
id_espece = DB.Column(DB.Integer, DB.ForeignKey('oeasc_commons.t_especes.id_espece'))
espece = DB.relationship(TEspeces, foreign_keys=id_espece)
code_type_bracelet = DB.Column(DB.Unicode)
description_type_bracelet = DB.Column(DB.Unicode)


@serializable
class TAttributions(DB.Model):
'''
Attributions
'''

__tablename__ = 't_attributions'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_attribution = DB.Column(DB.Integer, primary_key=True)
id_type_bracelet = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_type_bracelets.id_type_bracelet'))
id_saison = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_saisons.id_saison'))
numero_bracelet = DB.Column(DB.Unicode)
id_zone_cynegetique_affectee = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_zone_cynegetiques.id_zone_cynegetique'))
id_zone_indicative_affectee = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_zone_indicatives.id_zone_indicative'))
meta_create_date = DB.Column(DB.DateTime)
meta_update_date = DB.Column(DB.DateTime)

saison = DB.relationship(TSaisons)
zone_cynegetique_affectee = DB.relationship(TZoneCynegetiques)
zone_indicative_affectee = DB.relationship(TZoneIndicatives)
type_bracelet = DB.relationship(TTypeBracelets)



@serializable
class TRealisationsChasse(DB.Model):
'''
Realisations
'''

__tablename__ = 't_realisations'
__table_args__ = {'schema': 'oeasc_chasse', 'extend_existing': True}

id_realisation = DB.Column(DB.Integer, primary_key = True)
id_attribution = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_attributions.id_attribution'), primary_key=True)

attribution = DB.relationship(TAttributions)
saison = DB.relationship(
TSaisons,
secondary='oeasc_chasse.t_attributions',
primaryjoin="TAttributions.id_attribution==TRealisationsChasse.id_attribution",
secondaryjoin="TAttributions.id_saison==TSaisons.id_saison",
uselist=False
)

id_auteur_tir = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_personnes.id_personne'))
auteur_tir = DB.relationship(TPersonnes, foreign_keys=id_auteur_tir)

id_auteur_constat = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_personnes.id_personne'))
auteur_constat = DB.relationship(TPersonnes, foreign_keys=id_auteur_constat)


id_zone_cynegetique_realisee = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_zone_cynegetiques.id_zone_cynegetique'))
zone_cynegetique_realisee = DB.relationship(TZoneCynegetiques)
zone_cynegetique_affectee = DB.relationship(
TZoneCynegetiques,
secondary='oeasc_chasse.t_attributions',
primaryjoin="TAttributions.id_attribution==TRealisationsChasse.id_attribution",
secondaryjoin="TAttributions.id_zone_cynegetique_affectee==TZoneCynegetiques.id_zone_cynegetique",
uselist=False
)

id_zone_indicative_realisee = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_zone_indicatives.id_zone_indicative'))
zone_indicative_realisee = DB.relationship(TZoneIndicatives)
zone_indicative_affectee = DB.relationship(
TZoneIndicatives,
secondary='oeasc_chasse.t_attributions',
primaryjoin="TAttributions.id_attribution==TRealisationsChasse.id_attribution",
secondaryjoin="TAttributions.id_zone_indicative_affectee==TZoneIndicatives.id_zone_indicative",
uselist=False
)

id_lieu_tir = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_lieu_tirs.id_lieu_tir'))
lieu_tir = DB.relationship(TLieuTirs)

date_exacte = DB.Column(DB.Date)
date_enreg = DB.Column(DB.Date)

mortalite_hors_pc = DB.Column(DB.Boolean)
parcelle_onf = DB.Column(DB.Boolean)

id_nomenclature_sexe = DB.Column(DB.Integer, DB.ForeignKey('ref_nomenclatures.t_nomenclatures.id_nomenclature'))
nomenclature_sexe = DB.relationship(TNomenclatures, foreign_keys=id_nomenclature_sexe)

id_nomenclature_classe_age = DB.Column(DB.Integer, DB.ForeignKey('ref_nomenclatures.t_nomenclatures.id_nomenclature'))
nomenclature_classe_age = DB.relationship(TNomenclatures, foreign_keys=id_nomenclature_classe_age)

poid_entier = DB.Column(DB.Integer)
poid_vide = DB.Column(DB.Integer)
poid_c_f_p = DB.Column(DB.Integer)

long_dagues_droite = DB.Column(DB.Integer)
long_dagues_gauche = DB.Column(DB.Integer)
long_mandibules_droite = DB.Column(DB.Integer)
long_mandibules_gauche = DB.Column(DB.Integer)

cors_nb = DB.Column(DB.Integer)
cors_commentaires = DB.Column(DB.Unicode)

gestation = DB.Column(DB.Boolean)

id_nomenclature_mode_chasse = DB.Column(DB.Integer, DB.ForeignKey('ref_nomenclatures.t_nomenclatures.id_nomenclature'))
nomenclature_mode_chasse = DB.relationship(TNomenclatures, foreign_keys=id_nomenclature_mode_chasse)

commentaire = DB.Column(DB.Unicode)

# poid_indique = DB.Column(DB.Boolean)
# cors_indetermine = DB.Column(DB.Boolean)
# long_mandibule_indetermine = DB.Column(DB.Boolean)

# id_numerisateur = DB.Column(DB.Integer)

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


Loading

0 comments on commit 521a5b5

Please sign in to comment.