Skip to content

Commit

Permalink
ref #50 ajout viewonly dans modeles chasse realisation
Browse files Browse the repository at this point in the history
  • Loading branch information
joelclems committed Sep 30, 2021
1 parent aecb547 commit b0500c9
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 23 deletions.
13 changes: 8 additions & 5 deletions app/modules/oeasc/chasse/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,15 +216,16 @@ class TRealisationsChasse(DB.Model):
__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)

id_attribution = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_attributions.id_attribution'))
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
uselist=False,
viewonly=True
)

id_auteur_tir = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_personnes.id_personne'))
Expand All @@ -241,7 +242,8 @@ class TRealisationsChasse(DB.Model):
secondary='oeasc_chasse.t_attributions',
primaryjoin="TAttributions.id_attribution==TRealisationsChasse.id_attribution",
secondaryjoin="TAttributions.id_zone_cynegetique_affectee==TZoneCynegetiques.id_zone_cynegetique",
uselist=False
uselist=False,
viewonly=True
)

id_zone_indicative_realisee = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_zone_indicatives.id_zone_indicative'))
Expand All @@ -251,7 +253,8 @@ class TRealisationsChasse(DB.Model):
secondary='oeasc_chasse.t_attributions',
primaryjoin="TAttributions.id_attribution==TRealisationsChasse.id_attribution",
secondaryjoin="TAttributions.id_zone_indicative_affectee==TZoneIndicatives.id_zone_indicative",
uselist=False
uselist=False,
viewonly=True
)

id_lieu_tir_synonyme = DB.Column(DB.Integer, DB.ForeignKey('oeasc_chasse.t_lieu_tir_synonymes.id_lieu_tir_synonyme'))
Expand Down
12 changes: 11 additions & 1 deletion app/modules/oeasc/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,18 @@ def cmd_test_chasse_realisation(module_code, schema_name):
Commande de test sur un schema
'''

post_data = json.loads('{"id_realisation":null,"saison":{"id_saison":7,"nom_saison":"2020-2021","date_debut":"2020-09-02","date_fin":"2021-05-01","current":true,"commentaire":null},"attribution":{"id_attribution":4617,"id_type_bracelet":2,"id_saison":7,"numero_bracelet":"CEFF 3502","id_zone_cynegetique_affectee":4,"id_zone_indicative_affectee":33,"meta_create_date":"2021-08-23 14:53:47.912476","meta_update_date":null,"saison":{"id_saison":7,"nom_saison":"2020-2021","date_debut":"2020-09-02","date_fin":"2021-05-01","current":true,"commentaire":null},"zone_cynegetique_affectee":{"id_zone_cynegetique":4,"code_zone_cynegetique":"MTLO_E_30","nom_zone_cynegetique":"Mont Lozère est (Gard)","id_secteur":3,"secteur":{"id_secteur":3,"code_secteur":"MTLO","nom_secteur":"Mont Lozère"}},"zone_indicative_affectee":{"id_zone_indicative":33,"code_zone_indicative":"6","nom_zone_indicative":"ACPNC - Mont Lozère Est - Gard","id_zone_cynegetique":4,"zone_cynegetique":{"id_zone_cynegetique":4,"code_zone_cynegetique":"MTLO_E_30","nom_zone_cynegetique":"Mont Lozère est (Gard)","id_secteur":3,"secteur":{"id_secteur":3,"code_secteur":"MTLO","nom_secteur":"Mont Lozère"}}},"type_bracelet":{"id_type_bracelet":2,"id_espece":1,"code_type_bracelet":"CEFF","description_type_bracelet":"sexe : Femelle, Indéterminé, Mâle; classe age : Adulte, Indéterminé, Jeune, Sub adulte; espece : Cerf élaphe","espece":{"id_espece":1,"nom_espece":"Cerf","code_espece":"CF"}}},"auteur_tir":null,"auteur_constat":null,"zone_cynegetique_affectee":{"id_zone_cynegetique":4,"code_zone_cynegetique":"MTLO_E_30","nom_zone_cynegetique":"Mont Lozère est (Gard)","id_secteur":3,"secteur":{"id_secteur":3,"code_secteur":"MTLO","nom_secteur":"Mont Lozère"}},"zone_cynegetique_realisee":{"id_zone_cynegetique":4,"code_zone_cynegetique":"MTLO_E_30","nom_zone_cynegetique":"Mont Lozère est (Gard)","id_secteur":3,"secteur":{"id_secteur":3,"code_secteur":"MTLO","nom_secteur":"Mont Lozère"}},"zone_indicative_affectee":{"id_zone_indicative":33,"code_zone_indicative":"6","nom_zone_indicative":"ACPNC - Mont Lozère Est - Gard","id_zone_cynegetique":4,"zone_cynegetique":{"id_zone_cynegetique":4,"code_zone_cynegetique":"MTLO_E_30","nom_zone_cynegetique":"Mont Lozère est (Gard)","id_secteur":3,"secteur":{"id_secteur":3,"code_secteur":"MTLO","nom_secteur":"Mont Lozère"}}},"zone_indicative_realisee":{"id_zone_indicative":33,"code_zone_indicative":"6","nom_zone_indicative":"ACPNC - Mont Lozère Est - Gard","id_zone_cynegetique":4,"zone_cynegetique":{"id_zone_cynegetique":4,"code_zone_cynegetique":"MTLO_E_30","nom_zone_cynegetique":"Mont Lozère est (Gard)","id_secteur":3,"secteur":{"id_secteur":3,"code_secteur":"MTLO","nom_secteur":"Mont Lozère"}}},"lieu_tir_synonyme":null,"date_exacte":null,"date_enreg":null,"mortalite_hors_pc":null,"parcelle_onf":null,"nomenclature_sexe":null,"nomenclature_classe_age":null,"nomenclature_mode_chasse":null,"poid_entier":null,"poid_vide":null,"poid_c_f_p":null,"long_mandibules_droite":null,"long_mandibules_gauche":null,"long_dagues_droite":null,"long_dagues_gauche":null,"cors_nb":null,"cors_commentaires":null,"gestation":null,"commentaires":null,"freeze":false,"id_zone_cynegetique_affectee":4,"id_zone_indicative_affectee":33}')
data_text = '''
{
"id_realisation":null,
"attribution" : { "id_attribution" : 7678 },
"zone_cynegetique_realisee" : {"id_zone_cynegetique_realisee": 1},
"zone_indicative_realisee" : {"id_zone_indicative_realisee": 1}
}
'''

post_data = json.loads(data_text)
print('test')
print(json.dumps(post_data, indent=4))
create_or_update_object_type('chasse', 'realisation', None, post_data)
print('test ok')

Expand Down
7 changes: 6 additions & 1 deletion data/chasse/schema_chasse.sql
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ CREATE TABLE oeasc_chasse.t_attributions
CREATE TABLE oeasc_chasse.t_realisations
(
id_realisation SERIAL NOT NULL,
id_attribution INTEGER NOT NULL, -- relation 1-1 ??1
id_attribution INTEGER NOT NULL, -- relation 1-1 -> contrainte unicité
id_zone_cynegetique_realisee INTEGER NOT NULL,
id_zone_indicative_realisee INTEGER NOT NULL,
id_lieu_tir_synonyme INTEGER,
Expand Down Expand Up @@ -226,7 +226,10 @@ CREATE TABLE oeasc_chasse.t_realisations
meta_create_date timestamp without time zone,
meta_update_date timestamp without time zone,

UNIQUE(id_attribution);

CONSTRAINT pk_t_realisations PRIMARY KEY (id_attribution),

CONSTRAINT fk_t_realisations_t_attributions FOREIGN KEY (id_attribution)
REFERENCES oeasc_chasse.t_attributions(id_attribution) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
Expand All @@ -248,8 +251,10 @@ CREATE TABLE oeasc_chasse.t_realisations
CONSTRAINT fk_t_realisations_t_roles FOREIGN KEY (id_numerisateur)
REFERENCES utilisateurs.t_roles(id_role) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION

);

-- ALTER TABLE oeasc_chasse.t_realisations ADD UNIQUE (id_realisation);

CREATE TRIGGER tri_meta_dates_change_t_realisations
BEFORE INSERT OR UPDATE
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/form/generic-form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ export default {
formDef.storeName
);
const idFieldName = configStore.idFieldName;
const condReload = values.some(v => !v[idFieldName]);
const condReload = values.some(v => v && !v[idFieldName]);
if (condReload) {
updateStores.push({ storeName: formDef.storeName, key });
}
Expand Down
20 changes: 7 additions & 13 deletions frontend/src/modules/chasse/config/store-realisation.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,31 +197,25 @@ export default {
return;
}

// on n'affecte que si ce n'est pas déja fait

baseModel.zone_cynegetique_affectee =
// baseModel.zone_cynegetique_affectee ||
baseModel.zone_cynegetique_affectee ||
baseModel.attribution.zone_cynegetique_affectee;

baseModel.zone_cynegetique_realisee =
// baseModel.zone_cynegetique_realisee ||
baseModel.zone_cynegetique_realisee ||
baseModel.attribution.zone_cynegetique_affectee;

baseModel.id_zone_cynegetique_affectee =
// baseModel.id_zone_cynegetique_affectee ||
baseModel.attribution.id_zone_cynegetique_affectee;

baseModel.zone_indicative_affectee =
// baseModel.zone_indicative_affectee ||
baseModel.zone_indicative_affectee ||
baseModel.attribution.zone_indicative_affectee;

baseModel.zone_indicative_realisee =
// baseModel.zone_indicative_realisee ||
baseModel.zone_indicative_realisee ||
baseModel.attribution.zone_indicative_affectee;

baseModel.id_zone_indicative_affectee =
// baseModel.id_zone_indicative_affectee ||
baseModel.attribution.id_zone_indicative_affectee;

// sexe et age auto en fonction du bracelet ??
// sexe et age en fct du bracelet ??
}
},
auteur_tir: {
Expand Down
3 changes: 1 addition & 2 deletions server.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def __call__(self, environ, start_response):
app.config['DB'] = DB
app.config['MAIL'] = mail

app.config['SQLALCHEMY_ECHO'] = True
# app.config['SQLALCHEMY_ECHO'] = True

@app.route('/oeasc/', defaults={'text':''})
@app.route('/oeasc/<path:text>')
Expand Down Expand Up @@ -127,7 +127,6 @@ def after_login_method(response):
from pypnnomenclature.routes import routes
app.register_blueprint(routes, url_prefix='/api/nomenclatures')

print('uuuu')
from app.modules.oeasc.commands import commands
for cmd in commands:
app.cli.add_command(cmd)
Expand Down

0 comments on commit b0500c9

Please sign in to comment.