not found module gestion entreprises

This commit is contained in:
Arthur ZHU 2022-02-21 20:22:27 +01:00
parent 9b21157fb7
commit 663daa564b
3 changed files with 108 additions and 24 deletions

View File

@ -190,6 +190,7 @@ def create_app(config_class=DevConfig):
app.register_error_handler(ScoGenError, handle_sco_value_error)
app.register_error_handler(ScoValueError, handle_sco_value_error)
app.register_error_handler(404, handle_sco_value_error)
app.register_error_handler(AccessDenied, handle_access_denied)
app.register_error_handler(500, internal_server_error)
@ -201,7 +202,7 @@ def create_app(config_class=DevConfig):
app.register_blueprint(auth_bp, url_prefix="/auth")
from app.entreprises import bp as entreprises_bp
app.register_blueprint(entreprises_bp, url_prefix="/ScoDoc/entreprises")
from app.views import scodoc_bp

View File

@ -123,7 +123,9 @@ def fiche_entreprise(id):
La fiche entreprise comporte les informations de l'entreprise, les contacts de l'entreprise et
les offres de l'entreprise.
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"fiche entreprise {id} inconnu"
)
offres_with_files = []
depts = are.get_depts()
for offre in entreprise.offres:
@ -163,7 +165,9 @@ def logs_entreprise(id):
Permet d'afficher les logs (toutes les entreprises)
"""
page = request.args.get("page", 1, type=int)
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"logs fiche entreprise {id} inconnu"
)
logs = (
EntrepriseLog.query.order_by(EntrepriseLog.date.desc())
.filter_by(object=id)
@ -183,7 +187,9 @@ def fiche_entreprise_validation(id):
"""
Permet d'afficher la fiche entreprise d'une entreprise a valider
"""
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404(
description=f"fiche entreprise (validation) {id} inconnu"
)
contacts = entreprise.contacts
return render_template(
"entreprises/fiche_entreprise_validation.html",
@ -235,7 +241,9 @@ def offres_expirees(id):
"""
Permet d'afficher la liste des offres expirés d'une entreprise
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"fiche entreprise {id} inconnu"
)
offres_expirees_with_files = []
depts = are.get_depts()
for offre in entreprise.offres:
@ -309,7 +317,9 @@ def edit_entreprise(id):
"""
Permet de modifier une entreprise de la base avec un formulaire
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"entreprise {id} inconnu"
)
form = EntrepriseModificationForm()
if form.validate_on_submit():
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{form.nom.data.strip()}</a>"
@ -376,7 +386,9 @@ def delete_entreprise(id):
"""
Permet de supprimer une entreprise de la base avec un formulaire de confirmation
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"entreprise {id} inconnu"
)
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(entreprise)
@ -411,7 +423,9 @@ def validate_entreprise(id):
Permet de valider une entreprise
"""
form = ValidationConfirmationForm()
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404(
description=f"entreprise (validation) {id} inconnu"
)
if form.validate_on_submit():
entreprise.visible = True
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom}</a>"
@ -436,7 +450,9 @@ def delete_validation_entreprise(id):
"""
Permet de supprimer une entreprise en attente de validation avec une formulaire de validation
"""
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404(
description=f"entreprise (validation) {id} inconnu"
)
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(entreprise)
@ -456,7 +472,9 @@ def add_offre(id):
"""
Permet d'ajouter une offre a une entreprise
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"entreprise {id} inconnu"
)
form = OffreCreationForm()
if form.validate_on_submit():
offre = EntrepriseOffre(
@ -499,7 +517,9 @@ def edit_offre(id):
"""
Permet de modifier une offre
"""
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
description=f"offre {id} inconnu"
)
offre_depts = EntrepriseOffreDepartement.query.filter_by(offre_id=offre.id).all()
form = OffreModificationForm()
offre_depts_list = [(offre_dept.dept_id) for offre_dept in offre_depts]
@ -554,7 +574,9 @@ def delete_offre(id):
"""
Permet de supprimer une offre
"""
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
description=f"offre {id} inconnu"
)
entreprise_id = offre.entreprise.id
form = SuppressionConfirmationForm()
if form.validate_on_submit():
@ -588,7 +610,7 @@ def delete_offre(id):
def delete_offre_recue(id):
offre_recue = EntrepriseEnvoiOffre.query.filter_by(
id=id, receiver_id=current_user.id
).first_or_404()
).first_or_404(description=f"offre recu {id} inconnu")
db.session.delete(offre_recue)
db.session.commit()
return redirect(url_for("entreprises.offres_recues"))
@ -600,7 +622,9 @@ def add_contact(id):
"""
Permet d'ajouter un contact a une entreprise
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"entreprise {id} inconnu"
)
form = ContactCreationForm(hidden_entreprise_id=entreprise.id)
if form.validate_on_submit():
contact = EntrepriseContact(
@ -635,7 +659,9 @@ def edit_contact(id):
"""
Permet de modifier un contact
"""
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
contact = EntrepriseContact.query.filter_by(id=id).first_or_404(
description=f"contact {id} inconnu"
)
form = ContactModificationForm(
hidden_entreprise_id=contact.entreprise_id,
hidden_contact_id=contact.id,
@ -678,7 +704,9 @@ def delete_contact(id):
"""
Permet de supprimer un contact
"""
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
contact = EntrepriseContact.query.filter_by(id=id).first_or_404(
description=f"contact {id} inconnu"
)
form = SuppressionConfirmationForm()
if form.validate_on_submit():
contact_count = EntrepriseContact.query.filter_by(
@ -717,7 +745,9 @@ def add_historique(id):
"""
Permet d'ajouter un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise
"""
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
description=f"entreprise {id} inconnu"
)
form = HistoriqueCreationForm()
if form.validate_on_submit():
etudiant_nomcomplet = form.etudiant.data.upper().strip()
@ -760,7 +790,9 @@ def envoyer_offre(id):
"""
Permet d'envoyer une offre à un utilisateur
"""
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
description=f"offre {id} inconnu"
)
form = EnvoiOffreForm()
if form.validate_on_submit():
responsable_data = form.responsable.data.upper().strip()
@ -794,7 +826,7 @@ def json_etudiants():
"""
Permet de récuperer un JSON avec tous les étudiants
"""
if request.args.get("term") == None:
if request.args.get("term") is None:
abort(400)
term = request.args.get("term").strip()
etudiants = Identite.query.filter(Identite.nom.ilike(f"%{term}%")).all()
@ -820,7 +852,7 @@ def json_responsables():
"""
Permet de récuperer un JSON avec tous les étudiants
"""
if request.args.get("term") == None:
if request.args.get("term") is None:
abort(400)
term = request.args.get("term").strip()
responsables = User.query.filter(
@ -873,8 +905,9 @@ def get_import_entreprises_file_sample():
"pays",
]
titles = keys[:]
# lines = [["" for x in range(6)] for y in range(100)]
title = "ImportEntreprises"
xlsx = sco_excel.excel_simple_table(titles=titles, sheet_name="Entreprises")
xlsx = sco_excel.excel_simple_table_test(titles=titles, sheet_name="Entreprises")
filename = title
return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE)
@ -1126,7 +1159,7 @@ def get_offre_file(entreprise_id, offre_id, filedir, filename):
as_attachment=True,
)
else:
abort(404)
abort(404, description=f"fichier {filename} inconnu")
@bp.route("/add_offre_file/<int:offre_id>", methods=["GET", "POST"])
@ -1135,7 +1168,9 @@ def add_offre_file(offre_id):
"""
Permet d'ajouter un fichier à une offre
"""
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404(
description=f"offre {offre_id} inconnu"
)
form = AjoutFichierForm()
if form.validate_on_submit():
date = f"{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}"
@ -1165,7 +1200,9 @@ def delete_offre_file(offre_id, filedir):
"""
Permet de supprimer un fichier d'une offre
"""
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404(
description=f"offre {offre_id} inconnu"
)
form = SuppressionConfirmationForm()
if form.validate_on_submit():
path = os.path.join(

View File

@ -428,6 +428,52 @@ def excel_simple_table(
return ws.generate()
def excel_simple_table_test(
titles=None, lines=None, sheet_name=b"feuille", titles_styles=None, comments=None
):
"""Export simple type 'CSV': 1ere ligne en gras, le reste tel quel"""
ws = ScoExcelSheet(sheet_name)
if titles is None:
titles = []
if lines is None:
lines = [[]]
if titles_styles is None:
style = excel_make_style(bold=True)
titles_styles = [style] * len(titles)
if comments is None:
comments = [None] * len(titles)
# ligne de titres
ws.append_row(
[
ws.make_cell(it, style, comment)
for (it, style, comment) in zip(titles, titles_styles, comments)
]
)
default_style = excel_make_style()
text_style = excel_make_style(number_format=FORMAT_GENERAL)
int_style = excel_make_style()
float_style = excel_make_style(number_format=FORMAT_NUMBER_00)
for line in lines:
cells = []
for it in line:
cell_style = default_style
if type(it) == float:
cell_style = float_style
elif type(it) == int:
cell_style = int_style
else:
cell_style = text_style
cells.append(ws.make_cell(it, cell_style))
ws.append_row(cells)
# sheet = ws.wb.active
# for cell in sheet["A2":"A100"]:
# cell.number_format = FORMAT_GENERAL
return ws.generate()
def excel_feuille_saisie(e, titreannee, description, lines):
"""Genere feuille excel pour saisie des notes.
E: evaluation (dict)