selection multiple des photos à uploader

This commit is contained in:
2020-08-06 11:03:04 +02:00
parent aa19d3f936
commit ae498a9bc4
5 changed files with 104 additions and 86 deletions

View File

@@ -131,7 +131,7 @@ def insert_suivi(request, nodossier, comment):
query = """ query = """
INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES
(:societe, :no_id, CURRENT_DATE(), :comment, 'MAIL');""" (:societe, :no_id, CURRENT_DATE(), :comment, 'EMAIL');"""
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'comment': comment}) execute_query(request, query, {'societe': societe, 'no_id': no_id, 'comment': comment})
def get_similaires_byChantier(request, societe, C_NOM, C_ADR, C_CP, C_VILLE): def get_similaires_byChantier(request, societe, C_NOM, C_ADR, C_CP, C_VILLE):

View File

@@ -12,7 +12,7 @@
<h3 class="text-primary">ADRESSE</h3> <h3 class="text-primary">ADRESSE</h3>
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-4" for="C_ADR">Adresse</label> <label class="col-xs-3 control-label" for="C_ADR">Adresse</label>
<div class="col-xs-8"> <div class="col-xs-8">
<input class="form-control" type="text" id="C_ADR" name="C_ADR" value="${dossier.C_ADR}" <input class="form-control" type="text" id="C_ADR" name="C_ADR" value="${dossier.C_ADR}"
placeholder="40 caractères maximum" placeholder="40 caractères maximum"
@@ -22,7 +22,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-4" for="C_ADR2">Adresse 2</label> <label class="col-xs-3 control-label" for="C_ADR2">Adresse 2</label>
<div class="col-xs-8"> <div class="col-xs-8">
<input class="form-control" type="text" id="C_ADR2" name="C_ADR2" value="${dossier.C_ADR2}" <input class="form-control" type="text" id="C_ADR2" name="C_ADR2" value="${dossier.C_ADR2}"
placeholder="40 caractères maximum" placeholder="40 caractères maximum"
@@ -32,7 +32,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-4" for="code_postal">Code postal</label> <label class="col-xs-3 control-label" for="code_postal">Code postal</label>
<div class="col-xs-8"> <div class="col-xs-8">
<input class="form-control" type="text" id="code_postal" name="code_postal" value="${code_postal}" <input class="form-control" type="text" id="code_postal" name="code_postal" value="${code_postal}"
placeholder="5 caractères maximum" placeholder="5 caractères maximum"
@@ -41,23 +41,23 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Etage</label> <label class="col-xs-3 control-label">Etage</label>
<div class="col-sm-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="C_ETAGE" <input class="form-control" type="text" name="C_ETAGE"
value="${dossier.C_ETAGE}" placeholder="10 caractères maximum" value="${dossier.C_ETAGE}" placeholder="10 caractères maximum"
data-fv-stringlength="true" data-fv-stringlength="true"
data-fv-stringlength-max="10" data-fv-stringlength-max="10"
data-fv-stringlength-message="10 caractères maximum" /> data-fv-stringlength-message="10 caractères maximum" />
</div> </div>
<div class="col-sm-3 checkbox"> <div class="col-xs-3 checkbox">
<label><input type="checkbox" name="ascenseur" value="dossier.c_ascenseur" id="ascenseur" <label><input type="checkbox" name="ascenseur" value="dossier.c_ascenseur" id="ascenseur"
tal:attributes="checked dossier.c_ascenseur != 0 and 'checked' or None">Ascenceur tal:attributes="checked dossier.c_ascenseur != 0 and 'checked' or None">Ascenseur
</label> </label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Code d'accès</label> <label class="col-xs-3 control-label">Code d'accès</label>
<div class="col-sm-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="C_CODE" <input class="form-control" type="text" name="C_CODE"
value="${dossier.C_CODE}" placeholder="20 caractères maximum" value="${dossier.C_CODE}" placeholder="20 caractères maximum"
data-fv-stringlength="true" data-fv-stringlength="true"
@@ -68,8 +68,8 @@
<h3 class="text-primary">EMAIL et TELEPHONES</h3> <h3 class="text-primary">EMAIL et TELEPHONES</h3>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Adresse email</label> <label class="col-xs-3 control-label">Adresse email</label>
<div class="col-sm-8"> <div class="col-xs-8">
<input class="form-control" type="text" name="C_EMAIL" <input class="form-control" type="text" name="C_EMAIL"
value="${dossier.C_EMAIL}" placeholder="50 caractères maximum" value="${dossier.C_EMAIL}" placeholder="50 caractères maximum"
data-fv-emailaddress="true" data-fv-emailaddress="true"
@@ -77,8 +77,8 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Téléphone fixe</label> <label class="col-xs-3 control-label">Téléphone fixe</label>
<div class="col-sm-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="C_TEL1" <input class="form-control" type="text" name="C_TEL1"
value="${dossier.C_TEL1}" placeholder="20 caractères maximum" value="${dossier.C_TEL1}" placeholder="20 caractères maximum"
data-fv-phone="true" data-fv-phone="true"
@@ -87,8 +87,8 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Téléphone prof.</label> <label class="col-xs-3 control-label">Téléphone prof.</label>
<div class="col-sm-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="C_TEL2" <input class="form-control" type="text" name="C_TEL2"
value="${dossier.C_TEL2}" placeholder="20 caractères maximum" value="${dossier.C_TEL2}" placeholder="20 caractères maximum"
data-fv-phone="true" data-fv-phone="true"
@@ -97,8 +97,8 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Téléphone mobile</label> <label class="col-xs-3 control-label">Portable 1</label>
<div class="col-sm-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="C_TELP" <input class="form-control" type="text" name="C_TELP"
value="${dossier.C_TELP}" placeholder="20 caractères maximum" value="${dossier.C_TELP}" placeholder="20 caractères maximum"
data-fv-phone="true" data-fv-phone="true"
@@ -107,26 +107,30 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">Téléphone fax</label> <label class="col-xs-3 control-label">Portable 2</label>
<div class="col-sm-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="C_FAX" <input class="form-control" type="text" name="C_FAX"
value="${dossier.C_FAX}" placeholder="20 caractères maximum" value="${dossier.C_FAX}" placeholder="20 caractères maximum"
data-fv-phone="true" data-fv-phone="true"
data-fv-phone-country="FR" data-fv-phone-country="FR"
data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" /> data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" />
</div> </div>
<div class="col-xs-4">
<input class="form-control" type="text" name="C_FAX_CMT"
value="${dossier.C_FAX_CMT}" placeholder="20 caractères maximum" />
</div>
</div> </div>
<h3 class="text-primary">CABINET / EXPERT</h3> <h3 class="text-primary">CABINET / EXPERT</h3>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-4">Cabinet</label> <label class="col-xs-3 control-label">Cabinet</label>
<div class="col-sm-8"> <div class="col-xs-8">
<p class="form-control-static">${dossier.nom_cabinet}</p> <p class="form-control-static">${dossier.nom_cabinet}</p>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-4" for="EXPERT">Expert</label> <label class="col-xs-3 control-label" for="EXPERT">Expert</label>
<div class="col-sm-8"> <div class="col-xs-8">
<select class="form-control" id="EXPERT" name="EXPERT"> <select class="form-control" id="EXPERT" name="EXPERT">
<div tal:repeat="item experts"> <div tal:repeat="item experts">
<option value="${item.CODE_EXP}" tal:attributes="selected dossier.EXPERT==item.CODE_EXP and 'selected' or None">${item.NOM}</option> <option value="${item.CODE_EXP}" tal:attributes="selected dossier.EXPERT==item.CODE_EXP and 'selected' or None">${item.NOM}</option>
@@ -136,7 +140,7 @@
</div> </div>
<br /> <br />
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-4 col-sm-8"> <div class="col-xs-offset-3 col-xs-8">
<a class="btn btn-default" href="${request.application_url}/dossier_view/${nodossier}"> <a class="btn btn-default" href="${request.application_url}/dossier_view/${nodossier}">
<span class="glyphicon glyphicon-chevron-left"></span> Annuler</a> <span class="glyphicon glyphicon-chevron-left"></span> Annuler</a>
<button class="btn btn-primary" type="submit" name="form.submitted"> <button class="btn btn-primary" type="submit" name="form.submitted">

View File

@@ -26,14 +26,14 @@
Etage - Code<br /> Etage - Code<br />
Ascenseur<br /> Ascenseur<br />
Tél. domicile - prof.<br /> Tél. domicile - prof.<br />
Tél. mobile - fax Portable 1 - Portable 2
</td> </td>
<td> <td>
${dossier.C_ETAGE} - ${dossier.C_CODE}<br /> ${dossier.C_ETAGE} - ${dossier.C_CODE}<br />
<span tal:condition="dossier.c_ascenseur==0">NON<br /></span> <span tal:condition="dossier.c_ascenseur==0">NON<br /></span>
<span tal:condition="dossier.c_ascenseur!=0">OUI<br /></span> <span tal:condition="dossier.c_ascenseur!=0">OUI<br /></span>
${dossier.C_TEL1} - ${dossier.C_TEL2}<br /> ${dossier.C_TEL1} - ${dossier.C_TEL2}<br />
${dossier.C_TELP} - ${dossier.C_FAX} ${dossier.C_TELP} - ${dossier.C_FAX} (${dossier.C_FAX_CMT})
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -16,8 +16,10 @@
data-fv-icon-validating="glyphicon glyphicon-refresh"> data-fv-icon-validating="glyphicon glyphicon-refresh">
<div class="form-group"> <div class="form-group">
<label for="uploadfile">Veuillez séléctionner un fichier</label> <label for="uploadfile">Veuillez séléctionner un ou plusieurs fichiers</label>
<input id="uploadfile" name="filename" type="file" value="" required /> <span class="btn btn-default btn-file">
<input class="file" id="uploadfile" name="files" type="file" required multiple />
</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<a class="btn btn-default" href="${url_retour}"> <a class="btn btn-default" href="${url_retour}">

View File

@@ -380,9 +380,11 @@ def upload_img(request):
if 'form.submitted' in request.params: if 'form.submitted' in request.params:
# récupère le fichier download dans le dossier /tmp # récupère le(s) fichier(s) download dans le dossier /tmp
input_file = request.POST['filename'].file fileslist = request.POST.getall('files')
input_name = request.POST['filename'].filename for f in fileslist:
input_file = f.file
input_name = f.filename
ext_allowed = ['jpeg','jpg','png'] ext_allowed = ['jpeg','jpg','png']
temp_file = downloadFile2Temp(input_file, input_name, ext_allowed) temp_file = downloadFile2Temp(input_file, input_name, ext_allowed)
if temp_file[:8] == 'ERREUR: ': if temp_file[:8] == 'ERREUR: ':
@@ -967,8 +969,15 @@ def demandes(request):
return HTTPFound(location=request.route_url('home')) return HTTPFound(location=request.route_url('home'))
raw_email = msg_data[0][1] raw_email = msg_data[0][1]
import pdb;pdb.set_trace()
# converts byte literal to string removing b'' # converts byte literal to string removing b''
try:
raw_email_string = raw_email.decode('utf-8') raw_email_string = raw_email.decode('utf-8')
except:
# déplacer le message dans la poubelle
conn.store(num, '+FLAGS', '\\Deleted')
conn.expunge()
else:
email_message = email.message_from_string(raw_email_string) email_message = email.message_from_string(raw_email_string)
# get the message's body # get the message's body
@@ -996,6 +1005,7 @@ def demandes(request):
nbAnnules = nbAnnules + n nbAnnules = nbAnnules + n
# déplacer le message dans la poubelle # déplacer le message dans la poubelle
conn.store(num, '+FLAGS', '\\Deleted') conn.store(num, '+FLAGS', '\\Deleted')
conn.expunge()
elif 'ANNULATION ORDRE DE MISSION' in texte: elif 'ANNULATION ORDRE DE MISSION' in texte:
# genere ANNULATION mission DOMUS # genere ANNULATION mission DOMUS
nosin = str(body)[84:95] nosin = str(body)[84:95]
@@ -1004,6 +1014,7 @@ def demandes(request):
nbAnnules = nbAnnules + n nbAnnules = nbAnnules + n
# déplacer le message dans la poubelle # déplacer le message dans la poubelle
conn.store(num, '+FLAGS', '\\Deleted') conn.store(num, '+FLAGS', '\\Deleted')
conn.expunge()
else: else:
# genere le dossier d'après le mail # genere le dossier d'après le mail
n = generer_mission(request, societe, criteria, extracted_file, temp_file_path) n = generer_mission(request, societe, criteria, extracted_file, temp_file_path)
@@ -1011,6 +1022,7 @@ def demandes(request):
# déplacer le message dans la poubelle # déplacer le message dans la poubelle
conn.store(num, '+FLAGS', '\\Deleted') conn.store(num, '+FLAGS', '\\Deleted')
conn.expunge() conn.expunge()
conn.close() conn.close()
# deconnexion du serveur # deconnexion du serveur
conn.logout() conn.logout()