From ed8abf016412ed8b0594b775530f6eaefef69eb5 Mon Sep 17 00:00:00 2001 From: Andrea Lepori Date: Sat, 6 Aug 2022 22:11:59 +0200 Subject: unified approve doc page --- server/views.py | 103 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 82 insertions(+), 21 deletions(-) (limited to 'server/views.py') diff --git a/server/views.py b/server/views.py index 35fb232..96b8d9f 100644 --- a/server/views.py +++ b/server/views.py @@ -180,40 +180,101 @@ def docapprove(request): context = {} data = [] - # if user not staff of primary has only controll of non primary groups + # if user not staff of primary has only control of non primary groups if request.user.is_staff: groups = request.user.groups.values_list('name', flat=True) else: groups = request.user.groups.values_list('name', flat=True)[1:] + # setup variables for error text and success text + error = False + success = False + error_text = "" + success_text = "" + + document = None + messages = [] + if request.method == "POST": - # parse text in array - data = request.POST["codes"] - data = split_codes(data) - # check if code valid - for i in range(len(data)): - if not data[i].isdigit(): - data[i] = data[i] + " - Formato errato" - elif int(data[i]) < 100000 or int(data[i]) > 999999: - data[i] = data[i] + " - Formato errato" - elif Document.objects.filter(code=data[i]).count() == 0: - data[i] = data[i] + " - Invalido" - elif Document.objects.filter(code=data[i])[0].group.name not in groups: - # check if user has permission to approve document - data[i] = data[i] + " - Invalido" + # check if bulk approve or single + if "codes" in request.POST: + # parse text in array + data = request.POST["codes"] + data = split_codes(data) + # check if code valid + for i in range(len(data)): + if not data[i].isdigit(): + messages.append(data[i] + " - Formato errato") + elif int(data[i]) < 100000 or int(data[i]) > 999999: + messages.append(data[i] + " - Formato errato") + elif Document.objects.filter(code=data[i]).count() == 0: + messages.append(data[i] + " - Invalido") + elif Document.objects.filter(code=data[i])[0].group.name not in groups: + # check if user has permission to approve document + messages.append(data[i] + " - Invalido") + else: + document = Document.objects.filter(code=data[i])[0] + if document.status == 'ok': + # do nothing document already approved + messages.append(data[i] + " - Già approvato") + else: + document.status = 'ok' + document.save() + messages.append(data[i] + " - Ok") + + elif "code" in request.POST: + print("doing this") + data = request.POST["code"] + if not data.isdigit(): + error_text = "Formato codice errato" + error = True + elif int(data) < 100000 or int(data) > 999999: + error_text = "Formato codice errato" + error = True + elif Document.objects.filter(code=data).count() == 0: + error_text = "Codice invalido" + error = True + elif Document.objects.filter(code=data)[0].group.name not in groups: + error_text = "Codice invalido" + error = True else: - document = Document.objects.filter(code=data[i])[0] + # get document + document = Document.objects.filter(code=data)[0] + + # prepare success message if document.status == 'ok': - # do nothing document already approved - data[i] = data[i] + " - Già approvato" + success_text = "File caricato" + success = True else: document.status = 'ok' document.save() - data[i] = data[i] + " - Ok" + success_text = "Documento approvato e file caricato" + success = True + + # check for errors and upload files + if "doc_sign" in request.FILES and not error: + myfile = request.FILES['doc_sign'] + try: + im = Image.open(myfile) + im_io = BytesIO() + # compress image in WEBP + im.save(im_io, 'WEBP', quality=50) + document.signed_doc.save(data+"_"+myfile.name, im_io) + document.save() + except UnidentifiedImageError: + error = True + error_text = "Il file non è un immagine valida" + else: + error = True + error_text = "Prego caricare un file" context = { - 'messages': data, - 'empty': len(data) == 0, + 'messages': messages, + 'empty': len(messages) == 0, + "error": error, + "error_text": error_text, + "success": success, + "success_text": success_text, } return render(request, 'server/approve_doc.html', context) -- cgit v1.2.1