scinder agenda.pt en agenda et planning

This commit is contained in:
2017-05-20 09:15:53 +02:00
parent a9b57890d8
commit fb01cd1437
6 changed files with 131 additions and 44 deletions

View File

@@ -20,13 +20,13 @@ def execute_query(request, query, params):
mark_changed(request.dbsession) mark_changed(request.dbsession)
transaction.commit() transaction.commit()
def get_agendas(request,code): def get_users_actifs(request,cd_uti):
if code =='': if cd_uti =='':
query = "SELECT * FROM p_agenda where actif = 1 order by code;" query = "SELECT * FROM p_users WHERE agenda IS NOT NULL ORDER BY NOM"
results = request.dbsession.execute(query).fetchall() results = request.dbsession.execute(query).fetchall()
else: else:
query = "SELECT * FROM p_agenda where code = :code;" query = "SELECT * FROM p_users WHERE cd_uti = :cd_uti;"
results = request.dbsession.execute(query, {'code': code}).first() results = request.dbsession.execute(query, {'cd_uti': cd_uti}).first()
return results return results
def get_table(code): def get_table(code):
@@ -75,7 +75,7 @@ def get_dossier_rdv_by_no(request,nodossier, nolig):
def get_rendez_vous(request, itc): def get_rendez_vous(request, itc):
d = datetime.now() d = datetime.now()
d = d - dateutil.relativedelta.relativedelta(months=2) d = d - dateutil.relativedelta.relativedelta(months=3)
# début du mois M-2 # début du mois M-2
datedeb = d.strftime('%Y-%m-01') datedeb = d.strftime('%Y-%m-01')

View File

@@ -9,5 +9,6 @@ def includeme(config):
config.add_route('last_connected', '/last_connected') config.add_route('last_connected', '/last_connected')
config.add_route('login', '/login') config.add_route('login', '/login')
config.add_route('logout', '/logout') config.add_route('logout', '/logout')
config.add_route('planning', '/planning')
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}') config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')

View File

@@ -8,18 +8,6 @@
<a class="btn btn-primary" role="button" href="/"> <a class="btn btn-primary" role="button" href="/">
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a> <span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
</div> </div>
<form method="POST" id="frm">
<div class="col-md-3" tal:condition="access >= 5">
<select class="form-control" id="agenda" name="agenda" onChange="$('#frm').submit()">
<optgroup tal:repeat="item agendas">
<option value="${item.code}" tal:attributes="selected agenda==item.code and 'selected' or None">${item.nom}</option>
</optgroup>
</select>
</div>
<div class="col-md-3" tal:condition="access < 5">
<input type="hidden" name="agenda" value="${agenda}"/>
</div>
</form>
<div class="col-md-5"> <div class="col-md-5">
<p> <p>
<span class="label label-danger">RDV Peinture</span>&nbsp;<span class="label label-warning">RDV Menuiserie</span>&nbsp; <span class="label label-danger">RDV Peinture</span>&nbsp;<span class="label label-warning">RDV Menuiserie</span>&nbsp;

View File

@@ -0,0 +1,59 @@
<metal:block use-macro="main_template">
<div metal:fill-slot="content">
<div class="container">
<div class="form-group">
<div class="row">
<div class="col-md-2">
<a class="btn btn-primary" role="button" href="/">
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
</div>
<form method="POST" id="frm">
<div class="col-md-3" tal:condition="access >= 5">
<select class="form-control" id="agenda" name="agenda" onChange="$('#frm').submit()">
<optgroup tal:repeat="item agendas">
<option value="${item.CD_UTI}" tal:attributes="selected agenda==item.CD_UTI and 'selected' or None">${item.NOM}</option>
</optgroup>
</select>
</div>
<div class="col-md-3" tal:condition="access < 5">
<input type="hidden" name="agenda" value="${agenda}"/>
</div>
</form>
<div class="col-md-5">
<p>
<span class="label label-danger">RDV Peinture</span>&nbsp;<span class="label label-warning">RDV Menuiserie</span>&nbsp;
<span class="label label-success">RDV Plomberiee</span>&nbsp;<span class="label label-info">RDV Polynet</span>&nbsp;
</p>
</div>
</div>
</div>
</div>
<br />
<div class="container">
<div id="calendar"></div>
</div>
<br />
<br />
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
locale: 'fr',
header: {
left: 'agendaDay agendaWeek month listMonth',
center: 'prev title next',
right: 'today'
},
defaultView: 'agendaWeek',
minTime: "07:00:00",
maxTime: "21:00:00",
events:${fullcalendar_events},
});
});
</script>
</div><!-- content -->
</metal:block>

View File

@@ -7,14 +7,19 @@
<div class="col-sm-3"> <div class="col-sm-3">
<a href="${request.application_url}/agenda"> <a href="${request.application_url}/agenda">
<span class="glyphicon glyphicon-calendar logo-small"></span><br /> <span class="glyphicon glyphicon-calendar logo-small"></span><br />
<h4>AGENDA</h4></a> <h4>MON AGENDA</h4></a>
</div>
<div class="col-sm-3">
<a href="${request.application_url}/planning">
<span class="glyphicon glyphicon-calendar logo-small"></span><br />
<h4>PLANNING</h4></a>
</div> </div>
</div> <!-- row 1 --> </div> <!-- row 1 -->
<br /> <br />
<div class="row well" tal:condition="layout.isAdmin"> <div class="row well" tal:condition="layout.isAdmin">
<div class="col-sm-3"> <div class="col-sm-3">
<a href="${request.application_url}/last_connected"> <a href="${request.application_url}/last_connected">
<span class="glyphicon glyphicon-user logo-small"></span><br /> <span class="glyphicon glyphicon-log-in logo-small"></span><br />
<h4>Derniers connectés</h4></a> <h4>Derniers connectés</h4></a>
</div> </div>
</div> <!-- row 2 --> </div> <!-- row 2 -->

View File

@@ -98,35 +98,16 @@ def dossier_view(request):
'details': details, 'details': details,
} }
@view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt') @view_config(route_name='agenda', renderer='../templates/agenda/agenda.pt', permission='view')
def agenda(request): def agenda(request):
logged_in = authenticated_userid(request) logged_in = authenticated_userid(request)
agenda = 'J'
access = 0
member = get_member_by_id(request, logged_in) member = get_member_by_id(request, logged_in)
if member: if not member:
access = member.access
# determiner l'agenda du user
agenda = member.agenda
if not agenda:
agenda = 'J'
else:
request.session.flash(u"Identifiant %s introuvable" % (logged_in), 'danger') request.session.flash(u"Identifiant %s introuvable" % (logged_in), 'danger')
return HTTPFound(location=request.route_url("/")) return HTTPFound(location=request.route_url("/home"))
if access >= 5: rows = get_rendez_vous(request, logged_in)
# si gestionnaire, lire les différents AGENDAS page_title = u"Agenda de %s" % member.NOM
agendas = get_agendas(request,'')
else:
agendas = []
# prendre en compte les paramètres de saisie
if 'agenda' in request.params:
agenda = request.params["agenda"]
personne = get_agendas(request,agenda)
rows = get_rendez_vous(request, agenda)
page_title = u"Agenda de %s" % personne.nom
# construire la liste des events # construire la liste des events
events = [] events = []
@@ -159,6 +140,59 @@ def agenda(request):
return { return {
'page_title': page_title, 'page_title': page_title,
'fullcalendar_events': json.dumps(events), 'fullcalendar_events': json.dumps(events),
}
@view_config(route_name='planning', renderer='../templates/agenda/planning.pt', permission='view')
def planning(request):
logged_in = authenticated_userid(request)
member = get_member_by_id(request, logged_in)
if not member:
request.session.flash(u"Identifiant %s introuvable" % (logged_in), 'danger')
return HTTPFound(location=request.route_url("/home"))
agenda = 'JMD'
# determiner le rôle du user
access = member.access
agendas = get_users_actifs(request,'')
# prendre en compte les paramètres de saisie
if 'agenda' in request.params:
agenda = request.params["agenda"]
personne = get_users_actifs(request,agenda)
rows = get_rendez_vous(request, agenda)
# construire la liste des events
events = []
for row in rows:
event_url = 'dossier_view/%s' % (row.nodossier)
event_title = row.c_nom
# déterminer la couleur de l'event selon la societe
societe = row.nodossier[0:2]
if societe == "PE":
color = "#d9534f" # rouge danger
elif societe == "PL":
color = "#5cb85c" # vert success
elif societe == "PL":
color = "#5bc0de" # bleu info
else:
color = "#f0ad4e" # orange warning
json_event = {
'title': event_title,
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
'allDay': False,
'color': color,
'url': event_url,
}
events.append(json_event)
return {
'page_title': 'Planning',
'fullcalendar_events': json.dumps(events),
'agendas': agendas, 'agendas': agendas,
'agenda': agenda, 'agenda': agenda,
'access': access, 'access': access,