from django.shortcuts import render from django.http import HttpResponse from .forms import * from django.views.decorators.csrf import csrf_exempt import os from bpconverter.settings import MEDIA_ROOT import PyPDF2 import re import glob def handle_uploaded_file(f): print(dir(f.chunks)) counter = 0 with open(os.path.join(MEDIA_ROOT,f.name), 'wb+') as destination: counter = counter +1 print(counter) for chunk in f.chunks(): #print(chunk) ok. qualcosa carica destination.write(chunk) print("{}/out/*.pdf".format(MEDIA_ROOT)) listtoremove = glob.glob("{}/out/*.pdf".format(MEDIA_ROOT)) for ltr in listtoremove: print('removing:',ltr) os.remove(ltr) return os.path.join(MEDIA_ROOT,f.name) def esegue_conversione(inputfile): rec = re.compile('[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]',flags=re.I) print('apertura file') pdfr=None numpdfr=0 try: pdfr = PyPDF2.PdfReader(inputfile) except PyPDF2.errors.PdfReadError as pre: print('errore',pre) risultato = dict() if pdfr: print('numero di pagine',len(pdfr.pages)) numpdfr=len(pdfr.pages) codicefiscale=None listapagine={} #contiene il codice fiscale e le pagine in cui e' stato trovato for i in range(0,len(pdfr.pages)): pagina = pdfr.pages[i] testo = pagina.extract_text(0) # il testo estratto e' tutto carattere. trovato=re.search(rec,testo) if trovato: print('trovato',trovato[0]) if trovato[0] in listapagine: listapagine[trovato[0]].append(i) else: listapagine[trovato[0]] = list() listapagine[trovato[0]].append(i) risultato[trovato[0]] = '' for k in listapagine: # per ogni codice fiscale, genera le pagine che corrispondono (listapagine[k]) print(k,listapagine[k]) writer = PyPDF2.PdfWriter() for kk in listapagine[k]: print('pagine da salvare',kk) writer.add_page(pdfr.pages[kk]) r = open("{}/out/{}.pdf".format(MEDIA_ROOT,k),'wb') writer.write(r) r.close() risultato[k] = {'file':"{}/out/{}.pdf".format(MEDIA_ROOT,k),'pagine':listapagine[k]} ''' fino a qui e' tutto chiaro. il file elaborato viene salvato in out denetro la cartella MEDIA_ROOT ''' else: risultato['errore']=[] #rimozione del file os.remove(inputfile) print('risultato',risultato) return (risultato,numpdfr) @csrf_exempt def frontpage(request): print(__name__) listaccepted = list() if 'REMOTE' in os.environ: remote = os.environ['REMOTE'].split(',') listaccepted.append('127.0.0.1') for r in remote: listaccepted.append(r) print(request.META) if 'x_real_ip'.upper() in request.META: print('x_real_ip',request.META['HTTP_X_REAL_IP']) if 'http_host'.upper() in request.META: print('http_host',request.META['HTTP_HOST']) if 'remote_address'.upper() in request.META: print('remote_addrews',request.META['REMOTE_ADDR']) auth = False if 'HTTP_X_REAL_IP' in request.META: print('presente X_REAL_IP',request.META['HTTP_X_REAL_IP']) if request.META['HTTP_X_REAL_IP'] in listaccepted: print('found presente X_REAL_IP',request.META['HTTP_X_REAL_IP']) auth = True if 'HTTP_HOST' in request.META: if request.META['HTTP_HOST'] in listaccepted: print('found presente HTTP_HOST',request.META['HTTP_HOST']) auth = True if 'REMOTE_ADDR' in request.META: if request.META['REMOTE_ADDR'] in listaccepted: print('found presente REMOTE_ADDR',request.META['REMOTE_ADDR']) auth = True if not auth: return HttpResponse("Accesso Non Autorizzato", status=503, headers={}) data = {} print('request.method',request.method) if request.method == 'POST': form = UploadFileForm(request.POST,request.FILES) print('form is valid',form.is_valid()) if form.is_valid(): nomefile = request.FILES['filecaricato'] print('nome file',nomefile) filesalvato = handle_uploaded_file(nomefile) risultato = esegue_conversione(filesalvato) data['listafiles'] = risultato[0] data['numeropagine'] = risultato[1] print('dati passati al template',data) return render(request,'frontpage.html',data)