ajout bouton créer DRV dans le suivi du dossier
This commit is contained in:
@@ -20,10 +20,15 @@ def execute_query(request, query, params):
|
||||
mark_changed(request.dbsession)
|
||||
transaction.commit()
|
||||
|
||||
def get_users_agenda(request):
|
||||
""" lire la liste des users ayant un agenda"""
|
||||
query = "SELECT * FROM p_users WHERE cd_uti != 'N' and agenda != 0 AND actif != 0 ORDER BY nom;"
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
def get_users_agenda(request, user):
|
||||
if user == '':
|
||||
""" lire la liste des users ayant un agenda"""
|
||||
query = "SELECT * FROM p_users WHERE cd_uti != 'N' and agenda != 0 AND actif != 0 ORDER BY nom;"
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
else:
|
||||
""" lire le user ayant un agenda"""
|
||||
query = "SELECT * FROM p_users WHERE cd_uti = :user and agenda != 0 AND actif != 0 ORDER BY nom;"
|
||||
results = request.dbsession.execute(query, {'user': user}).first()
|
||||
return results
|
||||
|
||||
def get_types_rdv(request):
|
||||
@@ -39,7 +44,7 @@ def get_rendez_vous(request, itc):
|
||||
datedeb = d.strftime('%Y-%m-01')
|
||||
|
||||
# lire les rdv de l'ITC
|
||||
query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.nolig, l.rdv_debut, l.rdv_fin, e.c_qualite, e.c_nom, e.c_ville FROM dem_lig l
|
||||
query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.nolig, l.rdv_debut, l.rdv_fin, e.c_qualite, e.c_nom, e.c_ville, e.c_cp FROM dem_lig l
|
||||
INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id
|
||||
WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi
|
||||
"""
|
||||
|
||||
@@ -145,3 +145,17 @@ def get_docs_attaches(request, nomrep, nodossier):
|
||||
|
||||
return results
|
||||
|
||||
def update_dossier(request, nodossier, new_values):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
new_values['societe'] = societe
|
||||
new_values['nochantier'] = nochantier
|
||||
query = u"UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
@@ -13,6 +13,7 @@ def includeme(config):
|
||||
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
|
||||
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
||||
# dossier
|
||||
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
|
||||
config.add_route('dossier_lookup', '/chantier_lookup')
|
||||
config.add_route('dossier_select', '/dossier_select/{date}')
|
||||
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
|
||||
|
||||
@@ -110,7 +110,7 @@ $(document).ready(function() {
|
||||
weekends: false,
|
||||
height: 'auto',
|
||||
minTime: "07:00:00",
|
||||
maxTime: "21:00:00",
|
||||
maxTime: "20:00:00",
|
||||
events:${fullcalendar_events},
|
||||
eventRender: function(event, element){
|
||||
element.find('.fc-title').append("<br/>" + event.description);
|
||||
|
||||
103
mondumas/templates/dossier/dossier_edit.pt
Normal file
103
mondumas/templates/dossier/dossier_edit.pt
Normal file
@@ -0,0 +1,103 @@
|
||||
<metal:block use-macro="main_template">
|
||||
<div metal:fill-slot="content">
|
||||
|
||||
<div class="row">
|
||||
<form id="change-dossier-details-form" class="form-horizontal" action="${url}" method="post" tal:condition="dossier"
|
||||
data-fv-framework="bootstrap"
|
||||
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||||
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Adresse email élève</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_EMAIL"
|
||||
value="${dossier.C_EMAIL}" placeholder="50 caractères maximum"
|
||||
data-fv-emailaddress="true"
|
||||
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Etage</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_ETAGE"
|
||||
value="${dossier.C_ETAGE}" placeholder="10 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="10"
|
||||
data-fv-stringlength-message="10 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Code d'accès</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_CODE"
|
||||
value="${dossier.C_CODE}" placeholder="20 caractères maximum"
|
||||
data-fv-stringlength="true"
|
||||
data-fv-stringlength-max="20"
|
||||
data-fv-stringlength-message="20 caractères maximum" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Téléphone fixe</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_TEL1"
|
||||
value="${dossier.C_TEL1}" placeholder="20 caractères maximum"
|
||||
data-fv-phone="true"
|
||||
data-fv-phone-country="FR"
|
||||
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Téléphone prof.</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_TEL2"
|
||||
value="${dossier.C_TEL2}" placeholder="20 caractères maximum"
|
||||
data-fv-phone="true"
|
||||
data-fv-phone-country="FR"
|
||||
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Téléphone mobile</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_TELP"
|
||||
value="${dossier.C_TELP}" placeholder="20 caractères maximum"
|
||||
data-fv-phone="true"
|
||||
data-fv-phone-country="FR"
|
||||
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-4 control-label">Téléphone fax</label>
|
||||
<div class="col-xs-8">
|
||||
<input class="form-control" type="text" name="C_FAX"
|
||||
value="${dossier.C_FAX}" placeholder="20 caractères maximum"
|
||||
data-fv-phone="true"
|
||||
data-fv-phone-country="FR"
|
||||
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-4 col-xs-8">
|
||||
<a class="btn btn-default" href="${request.application_url}/dossier_view/${nodossier}">
|
||||
<span class="glyphicon glyphicon-chevron-left"></span> Annuler</a>
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted">
|
||||
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div> <!-- row -->
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#change-dossier-details-form').formValidation();
|
||||
$('form input').on('keypress', function(e) {
|
||||
return e.which !== 13;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
@@ -7,7 +7,11 @@
|
||||
<div class="col-md-6">
|
||||
<table class="table table-condensed ">
|
||||
<tr>
|
||||
<td><h4>CHANTIER</h4></td>
|
||||
<td>
|
||||
<h4>CHANTIER</h4>
|
||||
<a href="${request.application_url}/dossier_edit/${nodossier}" class="btn btn-primary" role="button">
|
||||
<span class="glyphicon glyphicon-pencil"></span> Modifier</a>
|
||||
</td>
|
||||
<td>
|
||||
<h4>${dossier.C_QUALITE} ${dossier.C_NOM}</h4>
|
||||
${dossier.C_ADR}<br />
|
||||
@@ -116,8 +120,12 @@
|
||||
</div>
|
||||
<div id="panel-suivi" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<p><a class="btn btn-success" role="button" href="${request.route_url('suivi_edit', nodossier=nodossier, nolig='0')}">
|
||||
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a></p>
|
||||
<p>
|
||||
<a class="btn btn-success" role="button" href="${request.route_url('suivi_edit', nodossier=nodossier, nolig='0')}">
|
||||
<span class="glyphicon glyphicon-plus"></span> Nouvelle ligne</a>
|
||||
<a class="btn btn-warning" role="button" href="${request.route_url('rdv_edit', nodossier=nodossier, nolig='0')}">
|
||||
<span class="glyphicon glyphicon-calendar"></span> Nouveau rendez-vous</a>
|
||||
</p>
|
||||
<table class="table table-bordered table-condensed">
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
@@ -127,10 +135,14 @@
|
||||
<th class="text-center">Par</th>
|
||||
</tr>
|
||||
<tr tal:repeat="detail details">
|
||||
<td>
|
||||
<td tal:condition="detail.DATEVI==None">
|
||||
<a href="${request.route_url('suivi_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
||||
${detail.DATE.strftime('%d-%m-%Y')}</a>
|
||||
</td>
|
||||
<td tal:condition="detail.DATEVI!=None">
|
||||
<a href="${request.route_url('rdv_edit', nodossier=nodossier, nolig=detail.NOLIG)}">
|
||||
${detail.DATE.strftime('%d-%m-%Y')}</a>
|
||||
</td>
|
||||
<td tal:condition="detail.COMMENT.startswith('!!')" class="text-danger">
|
||||
<b>${detail.COMMENT} ${detail.COMMENTVI}</b>
|
||||
</td>
|
||||
|
||||
@@ -27,9 +27,22 @@ from ..models.dossier import *
|
||||
@view_config(route_name='rdv_edit', renderer='../templates/agenda/rdv_edit.pt', permission='view')
|
||||
def rdv_edit(request):
|
||||
|
||||
logged_in = request.authenticated_userid
|
||||
logged_in = request.authenticated_userid.upper()
|
||||
nodossier = request.matchdict['nodossier']
|
||||
nolig = request.matchdict['nolig']
|
||||
|
||||
# creation d'un rdv ?
|
||||
if nolig == '0':
|
||||
# lire le user avec agenda
|
||||
agenda = get_users_agenda(request, logged_in)
|
||||
if agenda:
|
||||
aujourdhui = datetime.now()
|
||||
create_rdv(request, nodossier, aujourdhui.strftime("%Y-%m-%d"), aujourdhui.strftime("%H:00"), 'RDV DEVIS', logged_in, logged_in)
|
||||
request.session.flash(u"Le rendez-vous a été CREE avec succès.", 'success')
|
||||
else:
|
||||
request.session.flash(u"Vous ne pouvez pas créer de rendez-vous.", 'danger')
|
||||
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
|
||||
|
||||
url = request.route_url("rdv_edit", nodossier=nodossier, nolig=nolig)
|
||||
|
||||
message = ''
|
||||
@@ -99,7 +112,7 @@ def agenda(request):
|
||||
type_rdv = u'RDV DEVIS'
|
||||
|
||||
# liste des users avec agenda
|
||||
agendas = get_users_agenda(request)
|
||||
agendas = get_users_agenda(request, '')
|
||||
|
||||
# le user a-t-il un agenda ?
|
||||
agenda = 'JMD'
|
||||
@@ -141,7 +154,7 @@ def agenda(request):
|
||||
|
||||
json_event = {
|
||||
'title': '%s %s' % (row.c_qualite, row.c_nom),
|
||||
'description': row.c_ville.capitalize(),
|
||||
'description': '%s %s' % (row.c_cp, row.c_ville.capitalize()),
|
||||
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'allDay': False,
|
||||
@@ -174,7 +187,7 @@ def planning(request):
|
||||
# {"id":"a","title":"Auditorium A"}
|
||||
ressources = []
|
||||
# liste des users avec agenda
|
||||
users = get_users_agenda(request)
|
||||
users = get_users_agenda(request, '')
|
||||
for row in users:
|
||||
json_ressources = {
|
||||
'id': row.CD_UTI,
|
||||
@@ -203,7 +216,7 @@ def planning(request):
|
||||
json_event = {
|
||||
'resourceId': user.CD_UTI,
|
||||
'title': row.c_nom,
|
||||
'description': row.c_ville.capitalize(),
|
||||
'description': '%s %s' % (row.c_cp, row.c_ville.capitalize()),
|
||||
'start': row.rdv_debut.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'end': row.rdv_fin.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'allDay': False,
|
||||
|
||||
@@ -218,3 +218,33 @@ def suivi_edit(request):
|
||||
'suivi': suivi,
|
||||
'message': message,
|
||||
}
|
||||
|
||||
@view_config(route_name='dossier_edit', renderer='../templates/dossier/dossier_edit.pt', permission='view')
|
||||
def dossier_edit(request):
|
||||
logged_in = request.authenticated_userid
|
||||
nodossier = request.matchdict['nodossier']
|
||||
url = request.route_url('dossier_edit', nodossier=nodossier)
|
||||
|
||||
dossier = get_dossier_by_no(request, nodossier)
|
||||
if not dossier:
|
||||
request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger')
|
||||
return HTTPFound(location=request.route_url('dossier_lookup'))
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
new_values = {}
|
||||
for param, db_value in dossier.items():
|
||||
if param in request.params and request.params[param] != db_value:
|
||||
new_values[param] = request.params[param]
|
||||
|
||||
if new_values:
|
||||
update_dossier(request, nodossier, new_values)
|
||||
request.session.flash(u"Le dossier a été mis à jour avec succès.", 'success')
|
||||
return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier))
|
||||
|
||||
return {
|
||||
'page_title': u"Modifier le dossier : %s" % nodossier,
|
||||
'url': url,
|
||||
'dossier': dossier,
|
||||
'nodossier': nodossier,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user