|
|
@@ -28,8 +28,9 @@ import os
|
|
|
# inoltre devo aver fatto qualche casino oggi 9.8.24 con i copia e incolla. ho dovuto rivedere tutto il file
|
|
|
# il terrore si impossessa di me. sta storia del cvs non e' esattamente chiara
|
|
|
|
|
|
+
|
|
|
+# questo blocco rimuove fisicamente il file prima della sua rimozione logica nel db
|
|
|
def delete_file(documento):
|
|
|
- # questo blocco rimuove fisicamente il file prima della sua rimozione logica nel db
|
|
|
file_path = os.path.join(settings.BASE_DIR,getConfig('DocPath'),documento.utente.azienda.partitaiva,documento.utente.codicefiscale,documento.storage)
|
|
|
print('Path completa:',file_path)
|
|
|
if os.path.isfile(file_path):
|
|
|
@@ -39,6 +40,7 @@ def delete_file(documento):
|
|
|
except OSError as ose:
|
|
|
print('errore nella rimozione del file:',ose)
|
|
|
|
|
|
+# impacchetta il file e procede a fornire il file via web
|
|
|
def download_file(request,uid):
|
|
|
utente = Utenti.objects.get(pk=uid)
|
|
|
file_path = os.path.join(settings.BASE_DIR,getConfig('DocPath'),documento.utente.azienda.partitaiva,documento.utente.codicefiscale,utente.storage)
|
|
|
@@ -64,16 +66,18 @@ def download_file(request,uid):
|
|
|
response = FileResponse(open(file_path,'rb'),content_type='application/pdf',as_attachment=False)
|
|
|
#response['Content-Disposition'] = "attachment; filename=%s" % u.documento
|
|
|
return response
|
|
|
-
|
|
|
+
|
|
|
+# upload file
|
|
|
+# procedura singolo file per singolo utente
|
|
|
def upload_file(uploaded_file,utente,originale=False):
|
|
|
- '''
|
|
|
- caricamento files
|
|
|
- '''
|
|
|
stored_file = ''.join((str(time.time()),'.saved'))
|
|
|
fl_path = os.path.join(settings.BASE_DIR,getConfig('DocPath'))
|
|
|
print('nome file',uploaded_file.name,stored_file)
|
|
|
|
|
|
+ #modifico il file per dire alla funzione superiore se il file e' stato caricato o meno
|
|
|
+
|
|
|
nomefile=None
|
|
|
+
|
|
|
if originale:
|
|
|
nomefile = uploaded_file.name
|
|
|
else:
|
|
|
@@ -87,26 +91,32 @@ def upload_file(uploaded_file,utente,originale=False):
|
|
|
# utente.codicefiscale (prima era "record" e mi sono deciso a cambiarlo)
|
|
|
|
|
|
try:
|
|
|
- print(os.path.join(fl_path,utente.azienda.partitaiva))
|
|
|
+ print('posizione partitaiva',os.path.join(fl_path,utente.azienda.partitaiva))
|
|
|
os.mkdir(os.path.join(fl_path,utente.azienda.partitaiva))
|
|
|
except FileExistsError as fee:
|
|
|
- print(os.path.join(fl_path,utente.azienda.partitaiva),"esistente")
|
|
|
+ print('posizione partitaiva',os.path.join(fl_path,utente.azienda.partitaiva),"esistente")
|
|
|
+
|
|
|
try:
|
|
|
+ print("posizione partitaiva codicefiscale",os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale))
|
|
|
os.mkdir(os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale))
|
|
|
except FileExistsError as fee:
|
|
|
- print(os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale),"esistente")
|
|
|
+ print("posizione partitaiva codicefiscale",os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale),"esistente")
|
|
|
|
|
|
with open(os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale,nomefile),'wb+') as d:
|
|
|
for chunk in uploaded_file.chunks():
|
|
|
d.write(chunk)
|
|
|
|
|
|
if originale:
|
|
|
+ # viene richiesto il file originale piuttosto cheil file codificato con il timing
|
|
|
+ print("viene restituito il file originale",os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale,nomefile))
|
|
|
return os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale,nomefile)
|
|
|
+
|
|
|
+ print("viene restituito il file rinominato",os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale,nomefile))
|
|
|
return stored_file
|
|
|
|
|
|
+# caricamento file indice (gestito in modo diverso)
|
|
|
def upload_file_indice(uploaded_file):
|
|
|
- # caricamento file indice (gestito in modo diverso)
|
|
|
-
|
|
|
+
|
|
|
stored_file = ''.join((str(time.time()),'.saved'))
|
|
|
fl_path = os.path.join(settings.BASE_DIR,getConfig('DocPath'),getConfig('DocPathIndex'))
|
|
|
print('nome file',uploaded_file.name,stored_file)
|
|
|
@@ -125,11 +135,16 @@ def upload_file_indice(uploaded_file):
|
|
|
|
|
|
return stored_file
|
|
|
|
|
|
-def associafile_a_utente(singolodocumento,request,utente,azienda=None,sede=None,descrizione=None,amministratore=None,listaok=None,listanotok=None,pertutti=False):
|
|
|
+# il file caricato viene associato a un utente specifico
|
|
|
+def associafile_a_utente(singolodocumento,request,utente,azienda=None,sede=None,descrizione=None,amministratore=None,pertutti=False):
|
|
|
+
|
|
|
risultato = upload_file(singolodocumento,utente)
|
|
|
documento = Documento()
|
|
|
documento.dataupload = datetime.datetime.now()
|
|
|
documento.utente = utente
|
|
|
+ listaok = None
|
|
|
+ listanotok = None
|
|
|
+ associato = False
|
|
|
|
|
|
if pertutti:
|
|
|
documento.documento = "".join((utente.codicefiscale.strip(),"_",singolodocumento.name))
|
|
|
@@ -142,46 +157,70 @@ def associafile_a_utente(singolodocumento,request,utente,azienda=None,sede=None,
|
|
|
try:
|
|
|
documento.save()
|
|
|
setLog(8,azienda=azienda,sede=sede,utente=utente,documento=documento,amministratore=amministratore)
|
|
|
- listaok.append(documento)
|
|
|
+ listaok = documento
|
|
|
+ associato = True
|
|
|
+
|
|
|
except IntegrityError as ie:
|
|
|
print("problema di integrita', il file esiste",ie)
|
|
|
- listanotok.append(documento)
|
|
|
+ listanotok = documento
|
|
|
+
|
|
|
+ if not associato:
|
|
|
+ print('documento da rimuovere di nuovo',associato)
|
|
|
+
|
|
|
+ return(listaok,listanotok)
|
|
|
|
|
|
##################################################################################
|
|
|
# carica file multipli. Utilizzato prevalentemente dalla gestione documenti.
|
|
|
-def save_and_load_file_multiple(listadocumenti,request,utente,azienda=None,sede=None,descrizione=None,amministratore=None,pertutti=False,ignoraAzienda=False):
|
|
|
+def save_and_load_file_multiple(listadocumenti,request,utente,azienda=None,sede=None,descrizione=None,amministratore=None,pertutti=False,ignoraAzienda=False,ignoraSede=False):
|
|
|
listaok = list()
|
|
|
listanotok = list()
|
|
|
|
|
|
if azienda: print('Caricamento Multiplo,azienda',azienda.nome)
|
|
|
if sede: print('Caricamento Multiplo,sede',sede.nome)
|
|
|
- if ignoraAzienda: print("Ignora le aziende",ignoraAzienda)
|
|
|
+ print("Ignora le aziende",ignoraAzienda)
|
|
|
+ print("Ignora le sedi",ignoraSede)
|
|
|
+ print("Per tutti",pertutti)
|
|
|
|
|
|
for singolodocumento in listadocumenti:
|
|
|
- print('singolodocumento',singolodocumento)
|
|
|
+ print('singolodocumento:',singolodocumento)
|
|
|
+
|
|
|
for ut in utente:
|
|
|
+ print('utente:',ut.nome)
|
|
|
+ lok = None
|
|
|
+ nok = None
|
|
|
+
|
|
|
+ # si deve individuare il codice fiscale dell'utente
|
|
|
if not pertutti:
|
|
|
if ut.codicefiscale.strip() in singolodocumento.name:
|
|
|
print('associa documento CON riferimento a codice fiscale')
|
|
|
if ignoraAzienda:
|
|
|
print("Effettua ricerca in tutte le aziende")
|
|
|
- associafile_a_utente(singolodocumento,request,ut,ut.azienda,sede,descrizione,amministratore,listaok,listanotok)
|
|
|
+ lok,nok = associafile_a_utente(singolodocumento,request,ut,ut.azienda,sede,descrizione,amministratore)
|
|
|
+ elif ignoraSede:
|
|
|
+ print("Effettua ricerca in tutte le Sedi dell'azienda")
|
|
|
+ lok,nok = associafile_a_utente(singolodocumento,request,ut,ut.azienda,sede,descrizione,amministratore)
|
|
|
else:
|
|
|
print("Caricamento solo per l'azienda corrente")
|
|
|
- associafile_a_utente(singolodocumento,request,ut,azienda,sede,descrizione,amministratore,listaok,listanotok)
|
|
|
+ lok,nok = associafile_a_utente(singolodocumento,request,ut,azienda,sede,descrizione,amministratore)
|
|
|
else:
|
|
|
print('il codice fiscale',ut.codicefiscale.strip()," non si trova in ",singolodocumento.name)
|
|
|
else:
|
|
|
print('associo documento SENZA riferimento a codice fiscale')
|
|
|
- associafile_a_utente(singolodocumento,request,ut,azienda,sede,descrizione,amministratore,listaok,listanotok,pertutti)
|
|
|
+ lok,nok = associafile_a_utente(singolodocumento,request,ut,azienda,sede,descrizione,amministratore,pertutti)
|
|
|
+
|
|
|
+ if lok:
|
|
|
+ listaok.append(lok)
|
|
|
+ if nok:
|
|
|
+ listanotok.append(nok)
|
|
|
|
|
|
- print('liste',listaok,listanotok)
|
|
|
+ print('lista',listaok,listanotok)
|
|
|
return (listaok,listanotok)
|
|
|
|
|
|
#carica un singolofile - utilizzato prevalentemente nella pagina utente
|
|
|
def save_and_load_file_single(listadocumenti,request,utente,azienda=None,sede=None,descrizione=None,amministratore=None):
|
|
|
listaok = list()
|
|
|
listanotok = list()
|
|
|
+
|
|
|
for singolodocumento in listadocumenti:
|
|
|
print('singolodocumento',singolodocumento,descrizione)
|
|
|
risultato = upload_file(singolodocumento,utente)
|
|
|
@@ -198,6 +237,7 @@ def save_and_load_file_single(listadocumenti,request,utente,azienda=None,sede=No
|
|
|
except IntegrityError as ie:
|
|
|
print("problema di integrita', il file esiste",ie)
|
|
|
listanotok.append(documento)
|
|
|
+
|
|
|
return (listaok,listanotok)
|
|
|
|
|
|
#file_indice: contiene l'elenco dei nominativi da gestire.
|