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 _multi_record_remove(request): import os d = request.POST.dict() start_date = request.POST.get("data[start_date]", "") end_date = request.POST.get("data[end_date]", "") start_time = request.POST.get("data[start_time]", "00:00") end_time = request.POST.get("data[end_time]", "23:59") dst = request.POST.get("data[dst]", "") pincode = request.POST.get("data[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') if dst != '': filtered_item_list = [] for item in items_list: try: detail = Detail.objects.get(uniqueid=item.uniqueid) if dst in detail.custom_dst: filtered_item_list.append(item) except: pass items_list = filtered_item_list for item in items_list: path = os.path.join(settings.RECORDS_ROOT, item.filename) try: os.remove(path) item.delete() # logghiamo azione audit = Audit() audit.user_id = request.user.id detail = Helper.get_filter_detail(d) audit.what = "Eliminazione registrazioni corrispondenti ai seguenti criteri: %s" \ % (detail) audit.save() except Exception as e: return redirect("/records/?err=1&err_msg=ELiminazione registrazioni non avvenuta") return redirect("/records/?ok=1&msg=ELiminazione registrazioni avvenuta con successo")
def save(self, user, *args, **kwargs): """Override funzione save per loggare azione""" try: super(Pref, self).save(*args, **kwargs) audit = Audit() audit.user = user audit.what = "L'utente %s ha modificato la preferenza %s impostandola al valore %s" % ( user.username, self.key, str(self.value), ) audit.save() except Exception as e: print "%s (%s)" % (e.message, type(e))
def request_all_audits(): pages = Page.objects.filter(project__is_active=True).iterator() for page in pages: audit_parameters_list = page.project.audit_parameters_list.all() for audit_parameters in audit_parameters_list: audit = Audit(page=page, parameters=audit_parameters) audit.save() request_audit.delay(audit.uuid) scripts = Script.objects.filter(project__is_active=True).iterator() for script in scripts: audit_parameters_list = script.project.audit_parameters_list.all() for audit_parameters in audit_parameters_list: audit = Audit(script=script, parameters=audit_parameters) audit.save() request_audit.delay(audit.uuid)
def save(self, user, *args, **kwargs): """Override della funzione save per impostare correttamente le espressioni regolari e loggare azione""" self._create_regexp_from_prefix_list() try: super(Fare, self).save(*args, **kwargs) audit = Audit() audit.user = user detail = "Scatto: %s - Tariffa: %s - Lista Prefissi: %s" % ( self.connection_charge, self.fee_per_second, self.prefix_list, ) audit.what = "Modifica direttrice %s : %s" % (self.direction, detail) audit.save() except Exception as e: print "%s (%s)" % (e.message, type(e)) # TODO gestire errore
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
def submit_form(self, project, user): try: check_if_member_of_project(user.id, project.uuid) page_or_script_to_audit_uuid = self.data["page_or_script_to_audit"] audit_parameters_uuid = self.data["audit_parameters_to_use"] if "__all__" == page_or_script_to_audit_uuid: pages_to_audit = project.pages.all() scripts_to_audit = project.scripts.all() else: pages_to_audit = project.pages.filter( uuid=page_or_script_to_audit_uuid) scripts_to_audit = project.scripts.filter( uuid=page_or_script_to_audit_uuid) if "__all__" == audit_parameters_uuid: audit_parameters_list = project.audit_parameters_list.all() else: audit_parameters_list = project.audit_parameters_list.filter( uuid=audit_parameters_uuid) for audit_parameters in audit_parameters_list: for page_to_audit in pages_to_audit: new_page_audit = Audit(page=page_to_audit, parameters=audit_parameters) new_page_audit.save() request_audit.delay(new_page_audit.uuid) for script_to_audit in scripts_to_audit: new_script_audit = Audit(script=script_to_audit, parameters=audit_parameters) new_script_audit.save() request_audit.delay(new_script_audit.uuid) except Exception as e: error_message = str(e) self.add_error(None, error_message) raise return True
def archive_cdrs_export_excel(request): import time import xlwt book = xlwt.Workbook(encoding='utf8') sheet = book.add_sheet('Esportazione') default_style = xlwt.Style.default_style datetime_style = xlwt.easyxf(num_format_str='dd/mm/yyyy hh:mm') 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") accountcode = request.GET.get("accountcode", "") dst = request.GET.get("dst", "") q_obj = Q(accountcode__icontains=accountcode) q_obj.add(Q(custom_dst__icontains=dst), Q.AND) q_obj.add(Q(dcontext='cabs-dial-number')|Q(dcontext='outgoing-operator-dial-number')|Q(dcontext='incoming-operator-dial-number'), Q.AND) q_obj.add(Q(custom_valid=1), Q.AND) # esportiamo solo le chiamate ritenute valide 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) details = ArchivedDetail.objects.filter(q_obj).order_by('-calldate') sheet.write(0, 0, "Data e ora", style=default_style) sheet.write(0, 1, "Codice", style=default_style) sheet.write(0, 2, "Matricola", style=default_style) sheet.write(0, 3, "Cognome e Nome", style=default_style) sheet.write(0, 4, "Sorgente", style=default_style) sheet.write(0, 5, "Destinazione", style=default_style) sheet.write(0, 6, "Numero Autorizzato", style=default_style) sheet.write(0, 7, "Durata", style=default_style) sheet.write(0, 8, "Costo", style=default_style) for row, rowdata in enumerate(details): try: archived_phoneuser = ArchivedPhoneUser.objects.get(pincode=rowdata.accountcode) fullname = archived_phoneuser.get_full_name() matricola = archived_phoneuser.serial_no whitelist = ArchivedWhitelist.objects.get(phonenumber=rowdata.custom_dst, archived_phoneuser_id=archived_phoneuser.id) whitelist_label = whitelist.label except: fullname = '-' matricola = '-' whitelist_label = '-' calldate = time.strftime("%d-%m-%Y %H:%M:%S", time.strptime(str(rowdata.calldate), "%Y-%m-%d %H:%M:%S")) billsec = "%sm %ss" % (int(rowdata.billsec / 60), rowdata.billsec % 60) rowdata.price = rowdata.price > 0 and rowdata.price or 0 sheet.write(row + 1, 0, calldate, style=datetime_style) sheet.write(row + 1, 1, rowdata.accountcode, style=default_style) sheet.write(row + 1, 2, matricola, style=default_style) sheet.write(row + 1, 3, fullname, style=default_style) sheet.write(row + 1, 4, rowdata.custom_src, style=default_style) sheet.write(row + 1, 5, rowdata.custom_dst, style=default_style) sheet.write(row + 1, 6, whitelist_label, style=default_style) sheet.write(row + 1, 7, billsec, style=default_style) sheet.write(row + 1, 8, rowdata.price, style=default_style) response = HttpResponse(content_type='application/vnd.ms-excel') filename = 'Dettaglio_chiamate_archiviate.xls' response[ 'Content-Disposition'] = 'attachment; filename=%s' % filename book.save(response) # logghiamo azione audit = Audit() audit.user = request.user d = request.GET.dict() audit.what = "Esportazione lista chiamate archiviate corrispondenti ai seguenti criteri: %s" \ % (urlencode(d)) audit.save() return response