def _multi_record_export_as_zip_file(request): "Esportazione multifile in formato zip""" import os import contextlib import zipfile d = request.GET.dict() start_date = request.GET.get("start_date", "") end_date = request.GET.get("end_date", "") start_time = request.GET.get("start_time", "00:00") end_time = request.GET.get("end_time", "23:59") pincode = request.GET.get("pincode", "") q_obj = Q(pincode__icontains=pincode) if start_date != '': start_date = Helper.convert_datestring_format( start_date, "%d-%m-%Y", "%Y-%m-%d") start_date = "%s %s:00" % (start_date, start_time) q_obj.add(Q(calldate__gte=start_date), Q.AND) if end_date != '': end_date = Helper.convert_datestring_format( end_date, "%d-%m-%Y", "%Y-%m-%d") end_date = "%s %s:59" % (end_date, end_time) q_obj.add(Q(calldate__lte=end_date), Q.AND) items_list = Record.objects.filter(q_obj).order_by('-calldate') filename = 'registrazioni' if pincode != '': phoneuser = PhoneUser.get_from_pincode(pincode) filename = 'registrazioni %s' % phoneuser zipname = "%s.zip" % filename tmpzippath = os.path.join(settings.TMP_ZIP_ROOT, zipname) file_counter = 0 with contextlib.closing(zipfile.ZipFile(tmpzippath, 'w')) as myzip: for item in items_list: detail = Detail.objects.get(uniqueid=item.uniqueid) if detail.custom_valid and (detail.dcontext == 'cabs-dial-number' or detail.dcontext == 'outgoing-operator-dial-number' or detail.dcontext == 'incoming-operator-dial-number'): file_counter += 1 path = os.path.join(settings.RECORDS_ROOT, item.filename) myzip.write(path, arcname = item.filename) if not file_counter: return redirect("/records/?err=1&err_msg=Nessuno dei file soddisfa i criteri per l'esportazione&%s" % urlencode(d)) response = Helper.file_export(tmpzippath) # logghiamo azione audit = Audit() audit.user_id = request.user.id detail = Helper.get_filter_detail(d) audit.what = "Esportazione registrazioni corrispondenti ai seguenti criteri: %s" \ % (detail) audit.save() return response
def _single_record_export(request, record_id="0"): """Esportazione singolo file""" import os record_id = int(record_id) try: record = Record.objects.get(pk=record_id) except ObjectDoesNotExist: pass path = os.path.join(settings.RECORDS_ROOT, record.filename) response = Helper.file_export(path) # logghiamo azione audit = Audit() audit.user = request.user audit.what = "L'utente %s ha scaricato il seguente file: %s" \ % (request.user.username, record.filename) audit.save() return response