Compare commits

...

2 Commits

Author SHA1 Message Date
94eedcc6e8 Export des annotations 2022-03-02 17:56:58 +01:00
37fa253950 ajout message info, doc 2022-03-02 15:27:35 +01:00
4 changed files with 49 additions and 9 deletions

View File

@ -53,7 +53,7 @@ from werkzeug.utils import secure_filename
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def index(): def index():
""" """
Permet d'afficher une page avec la liste des entreprises et une liste des dernières opérations Permet d'afficher une page avec la liste des entreprises (visible) et une liste des dernières opérations
""" """
entreprises = Entreprise.query.filter_by(visible=True) entreprises = Entreprise.query.filter_by(visible=True)
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all() logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
@ -86,7 +86,7 @@ def logs():
@permission_required(Permission.RelationsEntreprisesValidate) @permission_required(Permission.RelationsEntreprisesValidate)
def validation(): def validation():
""" """
Permet d'afficher une page avec la liste des entreprises a valider Permet d'afficher une page avec la liste des entreprises a valider (non visible)
""" """
entreprises = Entreprise.query.filter_by(visible=False).all() entreprises = Entreprise.query.filter_by(visible=False).all()
return render_template( return render_template(
@ -100,7 +100,7 @@ def validation():
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def contacts(): def contacts():
""" """
Permet d'afficher une page la liste des contacts et une liste des dernières opérations Permet d'afficher une page avec la liste des contacts des entreprises visibles et une liste des dernières opérations
""" """
contacts = ( contacts = (
db.session.query(EntrepriseContact, Entreprise) db.session.query(EntrepriseContact, Entreprise)
@ -170,7 +170,7 @@ def fiche_entreprise(id):
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def logs_entreprise(id): def logs_entreprise(id):
""" """
Permet d'afficher les logs (toutes les entreprises) Permet d'afficher les logs d'une entreprise
""" """
page = request.args.get("page", 1, type=int) 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(
@ -211,7 +211,7 @@ def fiche_entreprise_validation(id):
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def offres_recues(): def offres_recues():
""" """
Permet d'afficher la page où l'on recoit les offres Permet d'afficher la page où l'on peut voir les offres reçues
""" """
offres_recues = ( offres_recues = (
db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre) db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre)
@ -624,6 +624,9 @@ def delete_offre(id):
@bp.route("/delete_offre_recue/<int:id>", methods=["GET", "POST"]) @bp.route("/delete_offre_recue/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def delete_offre_recue(id): def delete_offre_recue(id):
"""
Permet de supprimer une offre reçue
"""
offre_recue = EntrepriseEnvoiOffre.query.filter_by( offre_recue = EntrepriseEnvoiOffre.query.filter_by(
id=id, receiver_id=current_user.id id=id, receiver_id=current_user.id
).first_or_404(description=f"offre recu {id} inconnue") ).first_or_404(description=f"offre recu {id} inconnue")
@ -635,11 +638,18 @@ def delete_offre_recue(id):
@bp.route("/expired/<int:id>", methods=["GET", "POST"]) @bp.route("/expired/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange) @permission_required(Permission.RelationsEntreprisesChange)
def expired(id): def expired(id):
"""
Permet de rendre expirée et non expirée 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} inconnue" description=f"offre {id} inconnue"
) )
offre.expired = not offre.expired offre.expired = not offre.expired
db.session.commit() db.session.commit()
if offre.expired:
flash("L'offre a été rendu expirée")
else:
flash("L'offre a été rendu non expirée")
return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id)) return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id))
@ -815,7 +825,7 @@ def add_historique(id):
@permission_required(Permission.RelationsEntreprisesSend) @permission_required(Permission.RelationsEntreprisesSend)
def envoyer_offre(id): def envoyer_offre(id):
""" """
Permet d'envoyer une offre à un utilisateur Permet d'envoyer une offre à un utilisateur ScoDoc
""" """
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404( offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
description=f"offre {id} inconnue" description=f"offre {id} inconnue"
@ -877,7 +887,7 @@ def json_etudiants():
@permission_required(Permission.RelationsEntreprisesChange) @permission_required(Permission.RelationsEntreprisesChange)
def json_responsables(): def json_responsables():
""" """
Permet de récuperer un JSON avec tous les étudiants Permet de récuperer un JSON avec tous les utilisateurs ScoDoc
""" """
if request.args.get("term") is None: if request.args.get("term") is None:
abort(400) abort(400)
@ -921,7 +931,7 @@ def export_entreprises():
@permission_required(Permission.RelationsEntreprisesExport) @permission_required(Permission.RelationsEntreprisesExport)
def get_import_entreprises_file_sample(): def get_import_entreprises_file_sample():
""" """
Permet de récupérer un fichier pour pouvoir importer des entreprises Permet de récupérer un fichier exemple vide pour pouvoir importer des entreprises
""" """
keys = [ keys = [
"siret", "siret",
@ -1052,7 +1062,7 @@ def export_contacts():
@permission_required(Permission.RelationsEntreprisesExport) @permission_required(Permission.RelationsEntreprisesExport)
def get_import_contacts_file_sample(): def get_import_contacts_file_sample():
""" """
Permet de récupérer un fichier pour pouvoir importer des contacts Permet de récupérer un fichier exemple vide pour pouvoir importer des contacts
""" """
keys = [ keys = [
"nom", "nom",
@ -1254,6 +1264,9 @@ def delete_offre_file(offre_id, filedir):
@bp.route("/preferences", methods=["GET", "POST"]) @bp.route("/preferences", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesValidate) @permission_required(Permission.RelationsEntreprisesValidate)
def preferences(): def preferences():
"""
Permet d'afficher la page des préférences du module gestion des relations entreprises
"""
form = PreferencesForm() form = PreferencesForm()
if form.validate_on_submit(): if form.validate_on_submit():
EntreprisePreferences.set_email_notifications(form.mail_entreprise.data.strip()) EntreprisePreferences.set_email_notifications(form.mail_entreprise.data.strip())

View File

@ -60,6 +60,7 @@ from app.scodoc import sco_cache
from app.scodoc import sco_etud from app.scodoc import sco_etud
from app.scodoc import sco_permissions_check from app.scodoc import sco_permissions_check
from app.scodoc import sco_xml from app.scodoc import sco_xml
from app.scodoc import sco_excel
from app.scodoc.sco_exceptions import ScoException, AccessDenied, ScoValueError from app.scodoc.sco_exceptions import ScoException, AccessDenied, ScoValueError
from app.scodoc.sco_permissions import Permission from app.scodoc.sco_permissions import Permission
from app.scodoc.TrivialFormulator import TrivialFormulator from app.scodoc.TrivialFormulator import TrivialFormulator
@ -1609,6 +1610,27 @@ def make_query_groups(group_ids):
return "" return ""
def exportAnnotation(group_ids):
cnx = ndb.GetDBConnexion()
cursor = cnx.cursor()
cursor.execute(
"""SELECT i.nom, i.prenom, ea.date, ea.comment
FROM group_membership gm, identite i, etud_annotations ea
WHERE gm.group_id=%(group_ids)s
AND gm.etudid=i.id
AND i.id=ea.etudid
""",
{"group_ids": group_ids},
)
titles = ["nom", "prenom", "date", "annotation"]
title = "annotations"
xlsx = sco_excel.excel_simple_table(
titles=titles, lines=cursor.fetchall(), sheet_name=title
)
filename = title
return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE)
class GroupIdInferer(object): class GroupIdInferer(object):
"""Sert à retrouver l'id d'un groupe dans un semestre donné """Sert à retrouver l'id d'un groupe dans un semestre donné
à partir de son nom. à partir de son nom.

View File

@ -826,6 +826,8 @@ def tab_absences_html(groups_infos, etat=None):
% groups_infos.groups_query_args, % groups_infos.groups_query_args,
"""<li><a class="stdlink" href="trombino?%s&format=pdflist">Liste d'appel avec photos</a></li>""" """<li><a class="stdlink" href="trombino?%s&format=pdflist">Liste d'appel avec photos</a></li>"""
% groups_infos.groups_query_args, % groups_infos.groups_query_args,
"""<li><a class="stdlink" href="exportAnnotations?%s">Feuille annotations</a></li>"""
% groups_infos.groups_query_args,
"</ul>", "</ul>",
] ]
) )

View File

@ -2193,3 +2193,6 @@ def stat_bac(formsemestre_id):
sco_publish( sco_publish(
"/sco_dump_and_send_db", sco_dump_db.sco_dump_and_send_db, Permission.ScoView "/sco_dump_and_send_db", sco_dump_db.sco_dump_and_send_db, Permission.ScoView
) )
# --- Export annotations
sco_publish("/exportAnnotations", sco_groups.exportAnnotation, Permission.ScoView)