upload_csv.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. def admin(request):
  2. data=dict()
  3. u = Utenti.objects.all().filter(admin=0)
  4. data['u'] = u
  5. print('numero record presenti',len(u))
  6. if request.method == 'POST':
  7. filecaricati = AdminUpload(request.POST,request.FILES)
  8. if filecaricati.is_valid():
  9. print('record filecaricati validi')
  10. if filecaricati.cleaned_data.get('indice'):
  11. print('presente file indice')
  12. fileindice = filecaricati.cleaned_data.get('indice')
  13. print('nome indice caricato',fileindice.name)
  14. upload_file(fileindice,request.FILES['indice'],True)
  15. fl_path = settings.MEDIA_ROOT
  16. risultato = None
  17. with open(''.join((fl_path,'/',fileindice.name)),'rb') as ind:
  18. risultato = ind.read()
  19. risultato = risultato.decode('utf-8',errors='replace')
  20. if isinstance(risultato,str):
  21. risultato = risultato.encode('utf8')
  22. with open(''.join((fl_path,'/',fileindice.name,'.cvtd')),'wb') as ind:
  23. ind.write(risultato)
  24. print('una volta convertito, passiamo oltre')
  25. with open(''.join((fl_path,'/',fileindice.name,'.cvtd')),'rt') as ind:
  26. spamreader = csv.reader(ind,delimiter=';')
  27. errori = list()
  28. count = 0
  29. for sr in spamreader:
  30. salvare = False
  31. count +=1
  32. if count==1: continue
  33. print(count,'sr',sr,len(sr))
  34. '''
  35. rispetto a Farma, il record inviato e' diverso:
  36. 0: 0308 - BOX3 S.R.L.;
  37. 1: Elaborazioni - Lul Libro Unico del Lavoro lavoratore;
  38. 2: ALESSE ANTONIO - LSSNTN63A25H501Y;
  39. 3: DA0308_L.U.L._LAVORATORE_#_ALESSE_ANTONIO_#_LSSNTN63A25H501Y_#_06.2024_12.07.2024_10.18.43.pdf;
  40. 4: ="06.2024";
  41. 5: 12.07.2024 10:34:17;
  42. 6: Cliente;
  43. 7: 2024.07.15 11:40:33;
  44. 8: 12.07.2024;
  45. 9: 12.07.2024;
  46. '''
  47. if len(sr) > 1:
  48. utente = Utenti()
  49. utente.nome = sr[2].capitalize()
  50. try:
  51. data_convertita = datetime.datetime.strptime(sr[8], "%d.%m.%Y")
  52. print('data convertita',data_convertita)
  53. utente.datanascita = data_convertita
  54. except ValueError as ve:
  55. print(ve)
  56. utente.codicefiscale = sr[2].split(' - ')[1].strip().upper()
  57. #utente.luogonascita = sr[4].lower()
  58. utente.azienda = sr[0].lower()
  59. utente.password = str(randint(100000,999999))
  60. try:
  61. codicefiscale.decode(utente.codicefiscale)
  62. salvare = True
  63. except ValueError as ve:
  64. print('errore',ve)
  65. salvare = False
  66. try:
  67. if salvare: utente.save()
  68. except IntegrityError as ie:
  69. print('errore',sr[2])
  70. errori.append((sr[1],sr[2]))
  71. data['IntegrityErrorList'] = errori
  72. data['u'] = Utenti.objects.all()
  73. if filecaricati.cleaned_data.get('allegati'):
  74. print('presenti documenti da allegare')
  75. listadocumenti = filecaricati.cleaned_data['allegati']
  76. print(listadocumenti)
  77. u = Utenti.objects.all()
  78. for singolodocumento in listadocumenti:
  79. print('singolodocumento',singolodocumento)
  80. for utente in u:
  81. if utente.codicefiscale.strip() in singolodocumento.name:
  82. print('match utente-documento')
  83. risultato = upload_file(singolodocumento,utente)
  84. utente.documento = singolodocumento.name
  85. utente.storage = risultato
  86. utente.dataupload = datetime.datetime.now()
  87. print('utente.storage',utente.storage)
  88. utente.save()
  89. data['u'] = Utenti.objects.all()
  90. return render(request,'welcome.admin.html',data)
  91. def edit(request,uid=None):
  92. print('uid',uid)
  93. if uid:
  94. uid = int(uid)
  95. data = dict()
  96. utente = None
  97. if uid==0:
  98. utente = Utenti()
  99. utente.password = str(randint(100000,999999))
  100. else:
  101. try:
  102. utente = Utenti.objects.get(pk=uid)
  103. except Utenti.DoesNotExist as dne:
  104. print(dne)
  105. return HttpResponseRedirect(reverse('welcome:admin'))
  106. if request.method == 'POST':
  107. result = AdminUser(request.POST,request.FILES)
  108. print('analisi richiesta',result.is_valid())
  109. if result.is_valid():
  110. print('risultato valido')
  111. utente.nome = result.cleaned_data.get('nome')
  112. utente.codicefiscale = result.cleaned_data.get('codicefiscale')
  113. utente.luogonascita = result.cleaned_data.get('luogonascita')
  114. utente.datanascita = result.cleaned_data.get('datanascita')
  115. print('data letta da web',result.cleaned_data.get('datanascita'))
  116. print('data time',dir(result.cleaned_data.get('datanascita')))
  117. print('assegnato',utente.datanascita)
  118. utente.password = result.cleaned_data.get('password')
  119. utente.azienda = result.cleaned_data.get('azienda')
  120. print('utentedocumento',result.cleaned_data.get('documento'))
  121. if result.cleaned_data.get('documento'):
  122. risultato = upload_file(result.cleaned_data.get('documento'),request.FILES['documento'])
  123. utente.documento = result.cleaned_data.get('documento')
  124. utente.storage = risultato
  125. utente.dataupload = datetime.datetime.now()
  126. try:
  127. utente.save()
  128. except IntegrityError as ie:
  129. print('errore',ie)
  130. data['utente'] = AdminUser(request.POST)
  131. data['IntegrityError'] = True
  132. return render(request,'welcome.edit.html',data)
  133. print('data salvata',utente.datanascita)
  134. return HttpResponseRedirect(reverse('welcome:admin'))
  135. else:
  136. print('risultato NON valido')
  137. print(result.cleaned_data.get('datanascita'))
  138. data['utente'] = AdminUser(request.POST)
  139. else:
  140. tmp = dict()
  141. tmp['nome']=utente.nome
  142. tmp['luogonascita'] = utente.luogonascita
  143. tmp['datanascita'] = utente.datanascita
  144. print('utente data',utente.datanascita)
  145. print(type(utente.datanascita))
  146. tmp['codicefiscale'] = utente.codicefiscale
  147. tmp['password'] = utente.password
  148. tmp['azienda'] = utente.azienda
  149. tmp['documento'] = utente.documento
  150. data['utente'] = AdminUser(tmp)
  151. data['edit_single_user'] = True
  152. return render(request,'welcome.edit.html',data)
  153. '''