scinder agenda.pt en agenda et planning
This commit is contained in:
@@ -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')
|
||||||
|
|
||||||
|
|||||||
@@ -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}')
|
||||||
|
|
||||||
|
|||||||
@@ -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> <span class="label label-warning">RDV Menuiserie</span>
|
<span class="label label-danger">RDV Peinture</span> <span class="label label-warning">RDV Menuiserie</span>
|
||||||
|
|||||||
59
mondumas/templates/agenda/planning.pt
Normal file
59
mondumas/templates/agenda/planning.pt
Normal 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> <span class="label label-warning">RDV Menuiserie</span>
|
||||||
|
<span class="label label-success">RDV Plomberiee</span> <span class="label label-info">RDV Polynet</span>
|
||||||
|
</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>
|
||||||
|
|
||||||
|
|
||||||
@@ -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 -->
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user