forked from ScoDoc/ScoDoc
Templates jinja2 pour pages ScoDoc
This commit is contained in:
parent
b1bc8b3f41
commit
2e1ec1c5ea
@ -128,7 +128,7 @@ _HTML_BEGIN = """<!DOCTYPE html>
|
|||||||
def scodoc_top_html_header(page_title="ScoDoc: bienvenue"):
|
def scodoc_top_html_header(page_title="ScoDoc: bienvenue"):
|
||||||
H = [
|
H = [
|
||||||
_HTML_BEGIN % {"page_title": page_title, "encoding": scu.SCO_ENCODING},
|
_HTML_BEGIN % {"page_title": page_title, "encoding": scu.SCO_ENCODING},
|
||||||
"""</head><body class="gtrcontent" id="gtrcontent">""",
|
"""</head><body id="gtrcontent">""",
|
||||||
scu.CUSTOM_HTML_HEADER_CNX,
|
scu.CUSTOM_HTML_HEADER_CNX,
|
||||||
]
|
]
|
||||||
return "\n".join(H)
|
return "\n".join(H)
|
||||||
@ -143,8 +143,6 @@ def sco_header(
|
|||||||
javascripts=[], # additionals JS filenames to load
|
javascripts=[], # additionals JS filenames to load
|
||||||
scripts=[], # script to put in page header
|
scripts=[], # script to put in page header
|
||||||
bodyOnLoad="", # JS
|
bodyOnLoad="", # JS
|
||||||
init_jquery=True, # load and init jQuery
|
|
||||||
init_jquery_ui=True, # include all stuff for jquery-ui and initialize scripts
|
|
||||||
init_qtip=False, # include qTip
|
init_qtip=False, # include qTip
|
||||||
init_google_maps=False, # Google maps
|
init_google_maps=False, # Google maps
|
||||||
init_datatables=True,
|
init_datatables=True,
|
||||||
@ -179,9 +177,6 @@ def sco_header(
|
|||||||
else:
|
else:
|
||||||
params["margin_left"] = "140px"
|
params["margin_left"] = "140px"
|
||||||
|
|
||||||
if init_jquery_ui or init_qtip or init_datatables:
|
|
||||||
init_jquery = True
|
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
"""<!DOCTYPE html><html lang="fr">
|
"""<!DOCTYPE html><html lang="fr">
|
||||||
<head>
|
<head>
|
||||||
@ -194,7 +189,6 @@ def sco_header(
|
|||||||
% params
|
% params
|
||||||
]
|
]
|
||||||
# jQuery UI
|
# jQuery UI
|
||||||
if init_jquery_ui:
|
|
||||||
# can modify loaded theme here
|
# can modify loaded theme here
|
||||||
H.append(
|
H.append(
|
||||||
'<link type="text/css" rel="stylesheet" href="/ScoDoc/static/libjs/jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css" />\n'
|
'<link type="text/css" rel="stylesheet" href="/ScoDoc/static/libjs/jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css" />\n'
|
||||||
@ -227,7 +221,6 @@ def sco_header(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# jQuery
|
# jQuery
|
||||||
if init_jquery:
|
|
||||||
H.append(
|
H.append(
|
||||||
"""<script src="/ScoDoc/static/jQuery/jquery.js"></script>
|
"""<script src="/ScoDoc/static/jQuery/jquery.js"></script>
|
||||||
"""
|
"""
|
||||||
@ -242,11 +235,10 @@ def sco_header(
|
|||||||
'<link type="text/css" rel="stylesheet" href="/ScoDoc/static/libjs/qtip/jquery.qtip-3.0.3.min.css" />'
|
'<link type="text/css" rel="stylesheet" href="/ScoDoc/static/libjs/qtip/jquery.qtip-3.0.3.min.css" />'
|
||||||
)
|
)
|
||||||
|
|
||||||
if init_jquery_ui:
|
|
||||||
H.append(
|
H.append(
|
||||||
'<script src="/ScoDoc/static/libjs/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js"></script>'
|
'<script src="/ScoDoc/static/libjs/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js"></script>'
|
||||||
)
|
)
|
||||||
# H.append('<script src="/ScoDoc/static/libjs/jquery-ui/js/jquery-ui-i18n.js"></script>')
|
|
||||||
H.append('<script src="/ScoDoc/static/js/scodoc.js"></script>')
|
H.append('<script src="/ScoDoc/static/js/scodoc.js"></script>')
|
||||||
if init_google_maps:
|
if init_google_maps:
|
||||||
H.append(
|
H.append(
|
||||||
@ -263,7 +255,7 @@ def sco_header(
|
|||||||
|
|
||||||
H.append(
|
H.append(
|
||||||
"""<style>
|
"""<style>
|
||||||
.gtrcontent {
|
#gtrcontent {
|
||||||
margin-left: %(margin_left)s;
|
margin-left: %(margin_left)s;
|
||||||
height: 100%%;
|
height: 100%%;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
@ -287,7 +279,7 @@ def sco_header(
|
|||||||
#
|
#
|
||||||
if not no_side_bar:
|
if not no_side_bar:
|
||||||
H.append(html_sidebar.sidebar())
|
H.append(html_sidebar.sidebar())
|
||||||
H.append("""<div class="gtrcontent" id="gtrcontent">""")
|
H.append("""<div id="gtrcontent">""")
|
||||||
#
|
#
|
||||||
# Barre menu semestre:
|
# Barre menu semestre:
|
||||||
H.append(formsemestre_page_title())
|
H.append(formsemestre_page_title())
|
||||||
|
@ -31,6 +31,12 @@ div#gtrcontent {
|
|||||||
margin-bottom: 4ex;
|
margin-bottom: 4ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gtrcontent_std {
|
||||||
|
margin-left: 140px;
|
||||||
|
height: 100%;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.scotext {
|
.scotext {
|
||||||
font-family : TimesNewRoman, "Times New Roman", Times, Baskerville, Georgia, serif;
|
font-family : TimesNewRoman, "Times New Roman", Times, Baskerville, Georgia, serif;
|
||||||
}
|
}
|
||||||
@ -161,6 +167,9 @@ p.footer {
|
|||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
border-top: 1px solid rgb(60,60,60);
|
border-top: 1px solid rgb(60,60,60);
|
||||||
}
|
}
|
||||||
|
div.part2 {
|
||||||
|
margin-top: 3ex;
|
||||||
|
}
|
||||||
|
|
||||||
/* ---- (left) SIDEBAR ----- */
|
/* ---- (left) SIDEBAR ----- */
|
||||||
|
|
||||||
@ -262,6 +271,7 @@ div.logo-logo {
|
|||||||
text-align: center ;
|
text-align: center ;
|
||||||
}
|
}
|
||||||
div.logo-logo img {
|
div.logo-logo img {
|
||||||
|
box-sizing: content-box;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
width: 55px; /* 100px */
|
width: 55px; /* 100px */
|
||||||
padding-right: 50px;
|
padding-right: 50px;
|
||||||
@ -378,24 +388,24 @@ table.semlist tr td.modalite {
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
}
|
}
|
||||||
div.gtrcontent table.semlist tr.css_S-1 {
|
div#gtrcontent table.semlist tr.css_S-1 {
|
||||||
background-color: rgb(251, 250, 216);
|
background-color: rgb(251, 250, 216);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.gtrcontent table.semlist tr.css_S1 {
|
div#gtrcontent table.semlist tr.css_S1 {
|
||||||
background-color: rgb(92%,95%,94%);
|
background-color: rgb(92%,95%,94%);
|
||||||
}
|
}
|
||||||
div.gtrcontent table.semlist tr.css_S2 {
|
div#gtrcontent table.semlist tr.css_S2 {
|
||||||
background-color: rgb(214, 223, 236);
|
background-color: rgb(214, 223, 236);
|
||||||
}
|
}
|
||||||
div.gtrcontent table.semlist tr.css_S3 {
|
div#gtrcontent table.semlist tr.css_S3 {
|
||||||
background-color: rgb(167, 216, 201);
|
background-color: rgb(167, 216, 201);
|
||||||
}
|
}
|
||||||
div.gtrcontent table.semlist tr.css_S4 {
|
div#gtrcontent table.semlist tr.css_S4 {
|
||||||
background-color: rgb(131, 225, 140);
|
background-color: rgb(131, 225, 140);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.gtrcontent table.semlist tr.css_MEXT {
|
div#gtrcontent table.semlist tr.css_MEXT {
|
||||||
color: #0b6e08;
|
color: #0b6e08;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1048,7 +1058,7 @@ table.notes_evaluation td.moy_ue {
|
|||||||
color:rgb(1, 116, 96);
|
color:rgb(1, 116, 96);
|
||||||
}
|
}
|
||||||
|
|
||||||
h2.formsemestre, .gtrcontent h2 {
|
h2.formsemestre, #gtrcontent h2 {
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
font-size: 130%;
|
font-size: 130%;
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,34 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "sco_page.html" %}
|
||||||
{% import 'bootstrap/wtf.html' as wtf %}
|
{% import 'bootstrap/wtf.html' as wtf %}
|
||||||
|
|
||||||
{% block app_content %}
|
{% block app_content %}
|
||||||
<h1>Référentiels de compétences chargés</h1>
|
<h2>Référentiels de compétences chargés</h2>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{tab.html() | safe}}
|
{{tab.html() | safe}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="part2">
|
||||||
<a href="{{url_for(
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a class="stdlink" href="{{url_for(
|
||||||
'notes.refcomp_load', scodoc_dept=g.scodoc_dept)
|
'notes.refcomp_load', scodoc_dept=g.scodoc_dept)
|
||||||
}}">charger un nouveau référentiel de compétences Orébut</a>.
|
}}">Charger un nouveau référentiel de compétences Orébut</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p class="help">
|
||||||
|
Les référentiels de compétences sont généralement saisis dans une application
|
||||||
|
externe, comme Orébut pour le Bachelor Universitaire de Technologie.
|
||||||
|
</p>
|
||||||
|
<p class="help">
|
||||||
|
Il sont importés dans ScoDoc et peuvent être liés à une formation pour
|
||||||
|
permettre à ScoDoc de présenter les <em>compétences</em> et leurs
|
||||||
|
<em>apprentissages critiques</em>.
|
||||||
|
</p>
|
||||||
|
<p class="help">
|
||||||
|
ScoDoc importe le format XML généré par Orébut, et peut exporter une représentation JSON.
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
35
app/templates/formsemestre_header.html
Normal file
35
app/templates/formsemestre_header.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{# Description un semestre (barre de menu et infos) #}
|
||||||
|
<!-- formsemestre_header -->
|
||||||
|
<div class="formsemestre_page_title">
|
||||||
|
<div class="infos">
|
||||||
|
<span class="semtitle"><a class="stdlink" title="{{sco.sem.session_id()}}"
|
||||||
|
href="{{
|
||||||
|
url_for('notes.formsemestre_status',
|
||||||
|
scodoc_dept=g.scodoc_dept, formsemestre_id=sco.sem.id)
|
||||||
|
}}">{{sco.sem.titre}}</a>
|
||||||
|
<a title="{{sco.sem.etapes_apo_str()}}">
|
||||||
|
{% if sco.sem.semestre_id != -1 %}, {{sco.sem.formation.get_parcours().SESSION_NAME}} {{sco.sem.semestre_id}}
|
||||||
|
{% endif %}</a>
|
||||||
|
{% if sco.sem.modalite %} en {{sco.sem.modalite}}{% endif %}</span>
|
||||||
|
<span class="dates">
|
||||||
|
<a title="du {{sco.sem.date_debut.strftime('%d/%m/%Y')}}
|
||||||
|
au {{sco.sem.date_fin.strftime('%d/%m/%Y')}} ">{{sco.scu.MONTH_NAMES_ABBREV[ sco.sem.date_debut.month]}} {{sco.sem.date_debut.year}} - {{sco.scu.MONTH_NAMES_ABBREV[sco.sem.date_fin.month]}} {{sco.sem.date_fin.year}}</a></span>
|
||||||
|
<span class="resp"><a
|
||||||
|
title="{{sco.sem.responsables_str(abbrev_prenom=False)}}">{{sco.sem.responsables_str()}}</a></span>
|
||||||
|
<span class="nbinscrits"><a class="discretelink"
|
||||||
|
href="{{url_for('scolar.groups_view', scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=sco.sem.id)}}">{{sco.sem.inscriptions|length}} inscrits</a></span><span class="lock">{% if sco.sem.etat %}<a href="{{url_for("notes.formsemestre_change_lock", scodoc_dept=g.scodoc_dept, formsemestre_id=sco.sem.id)}}">{{sco.scu.icontag("lock_img", border="0", title="Semestre verrouillé")|safe}}</a>{% endif %}</span><span class="eye">
|
||||||
|
{% if sco.prefs["bul_display_publication"] %}
|
||||||
|
<a href="{{url_for("notes.formsemestre_change_publication_bul", scodoc_dept=g.scodoc_dept, formsemestre_id=sco.sem.id)}}">
|
||||||
|
{% if sco.sem.bul_hide_xml %}
|
||||||
|
{{ sco.scu.icontag("hide_img", border="0", title="Bulletins NON publiés")|safe}}
|
||||||
|
{% else %}
|
||||||
|
{{ sco.scu.icontag("eye_img", border="0", title="Bulletins publiés")|safe }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ sco.sem_menu_bar|safe }}
|
||||||
|
</div>
|
||||||
|
<!-- end of formsemestre_header -->
|
51
app/templates/sco_page.html
Normal file
51
app/templates/sco_page.html
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{% extends 'bootstrap/base.html' %}
|
||||||
|
|
||||||
|
{% block styles %}
|
||||||
|
{{super()}}
|
||||||
|
<link type="text/css" rel="stylesheet" href="/ScoDoc/static/libjs/jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css" />
|
||||||
|
<link rel="stylesheet" href="/ScoDoc/static/css/scodoc.css">
|
||||||
|
<link href="/ScoDoc/static/css/menu.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/ScoDoc/static/css/gt_table.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link type="text/css" rel="stylesheet" href="/ScoDoc/static/libjs/qtip/jquery.qtip-3.0.3.min.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/ScoDoc/static/DataTables/datatables.min.css"/>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{% if title %}{{ title }} - ScoDoc{% else %}Welcome to ScoDoc{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% block scodoc_sidebar %}
|
||||||
|
{% include "sidebar.html" %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<div id="gtrcontent" class="gtrcontent_std">
|
||||||
|
{% if sco.sem %}
|
||||||
|
{% block formsemestre_header %}
|
||||||
|
{% include "formsemestre_header.html" %}
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% block app_content %}
|
||||||
|
page vide
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
{{ super() }}
|
||||||
|
{{ moment.include_moment() }}
|
||||||
|
{{ moment.lang(g.locale) }}
|
||||||
|
<script src="/ScoDoc/static/libjs/menu.js"></script>
|
||||||
|
<script src="/ScoDoc/static/libjs/bubble.js"></script>
|
||||||
|
<script src="/ScoDoc/static/libjs/qtip/jquery.qtip-3.0.3.min.js"></script>
|
||||||
|
<script src="/ScoDoc/static/libjs/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js"></script>
|
||||||
|
<script src="/ScoDoc/static/js/scodoc.js"></script>
|
||||||
|
<script src="/ScoDoc/static/DataTables/datatables.min.js"></script>
|
||||||
|
<script>
|
||||||
|
window.onload=function(){enableTooltips("gtrcontent")};
|
||||||
|
|
||||||
|
var SCO_URL="{{ url_for('scolar.index_html', scodoc_dept=g.scodoc_dept)[:-11] }}";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
98
app/templates/sidebar.html
Normal file
98
app/templates/sidebar.html
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
{# Barre marge gauche ScoDoc #}
|
||||||
|
<!-- sidebar -->
|
||||||
|
<div class="sidebar">
|
||||||
|
{# sidebar_common #}
|
||||||
|
<a class="scodoc_title" href="{{
|
||||||
|
url_for("scodoc.index", scodoc_dept=g.scodoc_dept)
|
||||||
|
}}">ScoDoc 9.1</a>
|
||||||
|
<div id="authuser"><a id="authuserlink" href="{{
|
||||||
|
url_for("users.user_info_page",
|
||||||
|
scodoc_dept=g.scodoc_dept, user_name=current_user.user_name)
|
||||||
|
}}">{{current_user.user_name}}</a>
|
||||||
|
<br/><a id="deconnectlink" href="{{url_for("auth.logout")}}">déconnexion</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% block sidebar_dept %}
|
||||||
|
<h2 class="insidebar">Dépt. {{ sco.prefs["DeptName"] }}</h2>
|
||||||
|
<a href="{{ url_for('scolar.index_html', scodoc_dept=g.scodoc_dept) }}" class="sidebar">Accueil</a> <br />
|
||||||
|
{% if sco.prefs["DeptIntranetURL"] %}
|
||||||
|
<a href="{{ sco.prefs["DeptIntranetURL"] }}" class="sidebar">
|
||||||
|
{{ sco.prefs["DeptIntranetTitle"] }}</a>
|
||||||
|
{% endif %}
|
||||||
|
<br />
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<h2 class="insidebar">Scolarité</h2>
|
||||||
|
<a href="{{url_for("scolar.index_html", scodoc_dept=g.scodoc_dept)}}" class="sidebar">Semestres</a> <br/>
|
||||||
|
<a href="{{url_for("notes.index_html", scodoc_dept=g.scodoc_dept)}}" class="sidebar">Programmes</a> <br/>
|
||||||
|
<a href="{{url_for("absences.index_html", scodoc_dept=g.scodoc_dept)}}" class="sidebar">Absences</a> <br/>
|
||||||
|
|
||||||
|
{% if current_user.has_permission(sco.Permission.ScoUsersAdmin)
|
||||||
|
or current_user.has_permission(sco.Permission.ScoUsersView)
|
||||||
|
%}
|
||||||
|
<a href="{{url_for("users.index_html", scodoc_dept=g.scodoc_dept)}}" class="sidebar">Utilisateurs</a> <br/>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if current_user.has_permission(sco.Permission.ScoChangePreferences) %}
|
||||||
|
<a href="{{url_for("scolar.edit_preferences", scodoc_dept=g.scodoc_dept)}}"
|
||||||
|
class="sidebar">Paramétrage</a> <br/>
|
||||||
|
{% endif %}
|
||||||
|
{# /sidebar_common #}
|
||||||
|
|
||||||
|
<div class="box-chercheetud">Chercher étudiant:<br/>
|
||||||
|
<form method="get" id="form-chercheetud"
|
||||||
|
action="{{ url_for('scolar.search_etud_in_dept', scodoc_dept=g.scodoc_dept) }}">
|
||||||
|
<div>
|
||||||
|
<input type="text" size="12" id="in-expnom" name="expnom" spellcheck="false"/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="etud-insidebar">
|
||||||
|
{% if sco.etud %}
|
||||||
|
<h2 id="insidebar-etud"><a href="{{url_for(
|
||||||
|
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=sco.etud.id
|
||||||
|
)}}" class="sidebar">
|
||||||
|
<span class="fontred">{{sco.etud.civilite_str()}} {{sco.etud.nom_disp()}}</span></a>
|
||||||
|
</h2>
|
||||||
|
<b>Absences</b>
|
||||||
|
{% if sco.etud_cur_sem %}
|
||||||
|
<span title="absences du {{ sco.etud_cur_sem['date_debut'] }}
|
||||||
|
au {{ sco.etud_cur_sem['date_fin'] }}">(1/2 j.)
|
||||||
|
<br/>{{sco.nbabsjust}} J., {{sco.nbabsnj}} N.J.</span>
|
||||||
|
{% endif %}
|
||||||
|
<ul>
|
||||||
|
{% if current_user.has_permission(sco.Permission.ScoAbsChange) %}
|
||||||
|
<li><a href="{{ url_for('absences.SignaleAbsenceEtud', scodoc_dept=g.scodoc_dept,
|
||||||
|
etudid=sco.etud.id) }}">Ajouter</a></li>
|
||||||
|
<li><a href="{{ url_for('absences.JustifAbsenceEtud', scodoc_dept=g.scodoc_dept,
|
||||||
|
etudid=sco.etud.id) }}">Justifier</a></li>
|
||||||
|
<li><a href="{{ url_for('absences.AnnuleAbsenceEtud', scodoc_dept=g.scodoc_dept,
|
||||||
|
etudid=sco.etud.id) }}">Supprimer</a></li>
|
||||||
|
{% if sco.prefs["handle_billets_abs"] %}
|
||||||
|
<li><a href="{{ url_for('absences.listeBilletsEtud', scodoc_dept=g.scodoc_dept,
|
||||||
|
etudid=sco.etud.id) }}">Billets</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
<li><a href="{{ url_for('absences.CalAbs', scodoc_dept=g.scodoc_dept,
|
||||||
|
etudid=sco.etud.id) }}">Calendrier</a></li>
|
||||||
|
<li><a href="{{ url_for('absences.ListeAbsEtud', scodoc_dept=g.scodoc_dept,
|
||||||
|
etudid=sco.etud.id) }}">Liste</a></li>
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
</div> {# /etud-insidebar #}
|
||||||
|
|
||||||
|
{# LOGO #}
|
||||||
|
<div class="logo-insidebar">
|
||||||
|
<div class="sidebar-bottom"><a href="{{ url_for( 'scodoc.about',
|
||||||
|
scodoc_dept=g.scodoc_dept ) }}" class="sidebar">À propos</a>
|
||||||
|
<br/>
|
||||||
|
<a href="{{ sco.scu.SCO_USER_MANUAL }}" target="_blank" class="sidebar">Aide</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="logo-logo">
|
||||||
|
<a href="{{ url_for( 'scodoc.about', scodoc_dept=g.scodoc_dept ) }}">
|
||||||
|
{{ sco.scu.icontag("scologo_img", no_size=True) | safe}}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end of sidebar -->
|
@ -4,11 +4,18 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
from flask import g, current_app
|
from flask import g, current_app, request
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
|
||||||
from app import db
|
from app import db
|
||||||
|
from app.models import Identite
|
||||||
|
from app.models.formsemestre import FormSemestre
|
||||||
from app.scodoc import notesdb as ndb
|
from app.scodoc import notesdb as ndb
|
||||||
|
from app.scodoc import sco_abs
|
||||||
|
from app.scodoc import sco_formsemestre_status
|
||||||
|
from app.scodoc import sco_preferences
|
||||||
|
from app.scodoc.sco_permissions import Permission
|
||||||
|
from app.scodoc import sco_utils as scu
|
||||||
|
|
||||||
scodoc_bp = Blueprint("scodoc", __name__)
|
scodoc_bp = Blueprint("scodoc", __name__)
|
||||||
scolar_bp = Blueprint("scolar", __name__)
|
scolar_bp = Blueprint("scolar", __name__)
|
||||||
@ -16,8 +23,6 @@ notes_bp = Blueprint("notes", __name__)
|
|||||||
users_bp = Blueprint("users", __name__)
|
users_bp = Blueprint("users", __name__)
|
||||||
absences_bp = Blueprint("absences", __name__)
|
absences_bp = Blueprint("absences", __name__)
|
||||||
|
|
||||||
from app.views import scodoc, notes, scolar, absences, users, pn_modules, refcomp
|
|
||||||
|
|
||||||
|
|
||||||
# Cette fonction est bien appelée avant toutes les requêtes
|
# Cette fonction est bien appelée avant toutes les requêtes
|
||||||
# de tous les blueprints
|
# de tous les blueprints
|
||||||
@ -39,3 +44,51 @@ def start_scodoc_request():
|
|||||||
def close_dept_db_connection(arg):
|
def close_dept_db_connection(arg):
|
||||||
# current_app.logger.info("close_db_connection")
|
# current_app.logger.info("close_db_connection")
|
||||||
ndb.close_db_connection()
|
ndb.close_db_connection()
|
||||||
|
|
||||||
|
|
||||||
|
class ScoData:
|
||||||
|
"""Classe utilisée pour passer des valeurs aux vues (templates)"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Champs utilisés par toutes les pages ScoDoc (sidebar, en-tête)
|
||||||
|
self.Permission = Permission
|
||||||
|
self.scu = scu
|
||||||
|
# -- Informations étudiant courant, si sélectionné:
|
||||||
|
etudid = g.get("etudid", None)
|
||||||
|
if not etudid:
|
||||||
|
if request.method == "GET":
|
||||||
|
etudid = request.args.get("etudid", None)
|
||||||
|
elif request.method == "POST":
|
||||||
|
etudid = request.form.get("etudid", None)
|
||||||
|
|
||||||
|
if etudid:
|
||||||
|
# Infos sur l'étudiant courant
|
||||||
|
self.etud = Identite.query.get_or_404(etudid)
|
||||||
|
ins = self.etud.inscription_courante()
|
||||||
|
if ins:
|
||||||
|
self.etud_cur_sem = ins.formsemestre
|
||||||
|
self.nbabs, self.nbabsjust = sco_abs.get_abs_count_in_interval(
|
||||||
|
etudid,
|
||||||
|
self.etud_cur_sem.date_debut.isoformat(),
|
||||||
|
self.etud_cur_sem.date_fin.isoformat(),
|
||||||
|
)
|
||||||
|
self.nbabsnj = self.nbabs - self.nbabsjust
|
||||||
|
else:
|
||||||
|
self.etud_cur_sem = None
|
||||||
|
else:
|
||||||
|
self.etud = None
|
||||||
|
# --- Informations sur semestre courant, si sélectionné
|
||||||
|
formsemestre_id = sco_formsemestre_status.retreive_formsemestre_from_request()
|
||||||
|
if formsemestre_id is None:
|
||||||
|
self.sem = None
|
||||||
|
self.sem_menu_bar = None
|
||||||
|
else:
|
||||||
|
self.sem = FormSemestre.query.get_or_404(formsemestre_id)
|
||||||
|
self.sem_menu_bar = sco_formsemestre_status.formsemestre_status_menubar(
|
||||||
|
self.sem.to_dict()
|
||||||
|
)
|
||||||
|
# --- Préférences
|
||||||
|
self.prefs = sco_preferences.SemPreferences(formsemestre_id)
|
||||||
|
|
||||||
|
|
||||||
|
from app.views import scodoc, notes, scolar, absences, users, pn_modules, refcomp
|
||||||
|
@ -466,9 +466,24 @@ def index_html():
|
|||||||
|
|
||||||
if editable:
|
if editable:
|
||||||
H.append(
|
H.append(
|
||||||
"""<p><a class="stdlink" href="formation_create" id="link-create-formation">Créer une formation</a></p>
|
f"""
|
||||||
<p><a class="stdlink" href="formation_import_xml_form">Importer une formation (xml)</a></p>
|
<p class="help">Une "formation" est un programme pédagogique structuré
|
||||||
<p class="help">Une "formation" est un programme pédagogique structuré en UE, matières et modules. Chaque semestre se réfère à une formation. La modification d'une formation affecte tous les semestres qui s'y réfèrent.</p>
|
en UE, matières et modules. Chaque semestre se réfère à une formation.
|
||||||
|
La modification d'une formation affecte tous les semestres qui s'y
|
||||||
|
réfèrent.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a class="stdlink" href="formation_create" id="link-create-formation">Créer une formation</a>
|
||||||
|
</li>
|
||||||
|
<li><a class="stdlink" href="formation_import_xml_form">Importer une formation (xml)</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Référentiels de compétences</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a class="stdlink" href="{url_for('notes.refcomp_table', scodoc_dept=g.scodoc_dept)}">Liste des référentiels chargés</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -23,9 +23,11 @@ from app.models.but_refcomp import ApcReferentielCompetences
|
|||||||
from app.but.import_refcomp import orebut_import_refcomp
|
from app.but.import_refcomp import orebut_import_refcomp
|
||||||
from app.but.forms.refcomp_forms import FormationRefCompForm, RefCompLoadForm
|
from app.but.forms.refcomp_forms import FormationRefCompForm, RefCompLoadForm
|
||||||
from app.scodoc.gen_tables import GenTable
|
from app.scodoc.gen_tables import GenTable
|
||||||
|
from app.scodoc import html_sidebar
|
||||||
from app.scodoc.sco_exceptions import ScoFormatError
|
from app.scodoc.sco_exceptions import ScoFormatError
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
from app.views import notes_bp as bp
|
from app.views import notes_bp as bp
|
||||||
|
from app.views import ScoData
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/referentiel/comp/get/<int:refcomp_id>")
|
@bp.route("/referentiel/comp/get/<int:refcomp_id>")
|
||||||
@ -58,13 +60,20 @@ def refcomp_table():
|
|||||||
for ref in refs
|
for ref in refs
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
return render_template("but/refcomp_table.html", tab=tab)
|
return render_template(
|
||||||
|
"but/refcomp_table.html",
|
||||||
|
tab=tab,
|
||||||
|
title="Référentiels de compétences",
|
||||||
|
sco=ScoData(),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/refcomp_assoc/<int:formation_id>", methods=["GET", "POST"])
|
@bp.route(
|
||||||
|
"/referentiel/comp/assoc_formation/<int:formation_id>", methods=["GET", "POST"]
|
||||||
|
)
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.ScoChangeFormation)
|
@permission_required(Permission.ScoChangeFormation)
|
||||||
def refcomp_assoc(formation_id: int):
|
def refcomp_assoc_formation(formation_id: int):
|
||||||
"""Formulaire association ref. compétence"""
|
"""Formulaire association ref. compétence"""
|
||||||
formation = Formation.query.get_or_404(formation_id)
|
formation = Formation.query.get_or_404(formation_id)
|
||||||
form = FormationRefCompForm()
|
form = FormationRefCompForm()
|
||||||
@ -97,6 +106,7 @@ def refcomp_assoc(formation_id: int):
|
|||||||
form=form,
|
form=form,
|
||||||
referentiel_competence_id=formation.referentiel_competence_id,
|
referentiel_competence_id=formation.referentiel_competence_id,
|
||||||
formation=formation,
|
formation=formation,
|
||||||
|
title="Association réf. compétences",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -129,7 +139,7 @@ def refcomp_load(formation_id=None):
|
|||||||
if formation is not None:
|
if formation is not None:
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for(
|
url_for(
|
||||||
"notes.refcomp_assoc",
|
"notes.refcomp_assoc_formation",
|
||||||
scodoc_dept=g.scodoc_dept,
|
scodoc_dept=g.scodoc_dept,
|
||||||
formation_id=formation.formation_id,
|
formation_id=formation.formation_id,
|
||||||
)
|
)
|
||||||
@ -141,4 +151,5 @@ def refcomp_load(formation_id=None):
|
|||||||
"but/refcomp_load.html",
|
"but/refcomp_load.html",
|
||||||
form=form,
|
form=form,
|
||||||
formation=formation,
|
formation=formation,
|
||||||
|
title="Chargement réf. compétences",
|
||||||
)
|
)
|
||||||
|
@ -1150,7 +1150,7 @@ def etudident_edit_form():
|
|||||||
|
|
||||||
def _etudident_create_or_edit_form(edit):
|
def _etudident_create_or_edit_form(edit):
|
||||||
"Le formulaire HTML"
|
"Le formulaire HTML"
|
||||||
H = [html_sco_header.sco_header(init_jquery_ui=True)]
|
H = [html_sco_header.sco_header()]
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
vals = scu.get_request_args()
|
vals = scu.get_request_args()
|
||||||
etudid = vals.get("etudid", None)
|
etudid = vals.get("etudid", None)
|
||||||
|
@ -640,7 +640,7 @@ td.colcomment, span.colcomment {
|
|||||||
color: rgb(80,100,80);
|
color: rgb(80,100,80);
|
||||||
}
|
}
|
||||||
|
|
||||||
h2.formsemestre, .gtrcontent h2 {
|
h2.formsemestre, #gtrcontent h2 {
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
font-size: 130%;
|
font-size: 130%;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user