def credit_save(request): """Save credit""" from decimal import Decimal phoneuser_id = int(request.POST.get("data[phoneuser_id]", "0")) recharge = request.POST.get('data[recharge]', "0") reason = request.POST.get('data[reason]', "") recharge = recharge.replace(",", ".") credit = Credit() credit.phoneuser_id = phoneuser_id credit.recharge = Decimal(recharge) credit.reason = reason try: #credit.save(user_id=request.user.id, phoneuser_id=phoneuser_id) credit.save() phoneuser = PhoneUser.objects.get(pk=phoneuser_id) # eliminiamo eventuali valori residui negativi if phoneuser.balance > 0: phoneuser.balance += Decimal(recharge) else: phoneuser.balance = Decimal(recharge) phoneuser.save() audit = Audit() audit.log(user=request.user, what="Effettuata ricarica di importo %s a favore di %s" % (credit.recharge, credit.phoneuser)) return credit_items(request, phoneuser_id) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json')
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 phoneuser_save(request): """Save or update user""" phoneuser_id = int(request.POST.get("data[phoneuser_id]", "0")) enabled = int(request.POST.get("data[enabled]", "0")) first_name = request.POST.get("data[first_name]", "") last_name = request.POST.get("data[last_name]", "") serial_no = request.POST.get("data[serial_no]", "") pincode = request.POST.get("data[pincode]", "") four_bis_limited = int(request.POST.get("data[four_bis_limited]", "0")) listening_enabled = int(request.POST.get("data[listening_enabled]", "0")) recording_enabled = int(request.POST.get("data[recording_enabled]", "0")) language = request.POST.get("data[language]", "") vipaccount = int(request.POST.get("data[vipaccount]", "0")) variables = Acl.get_permissions_for_user(request.user.id, request.user.is_staff) is_new = False action = "Creazione" try: if phoneuser_id: phoneuser = PhoneUser.objects.get(pk=phoneuser_id) action = "Modifica" else: phoneuser = PhoneUser() is_new = True phoneuser.enabled = enabled phoneuser.first_name = first_name.title() phoneuser.last_name = last_name.title() phoneuser.serial_no = serial_no phoneuser.pincode = pincode phoneuser.four_bis_limited = four_bis_limited phoneuser.listening_enabled = listening_enabled phoneuser.recording_enabled = recording_enabled phoneuser.language = language phoneuser.vipaccount = vipaccount phoneuser.save() # log azione audit = Audit() audit.log(user=request.user, what="%s anagrafica: %s" % (action, phoneuser)) if is_new: return phoneuser_items(request) variables['phoneuser'] = phoneuser return render_to_response( 'phoneusers/phoneuser_data.html', RequestContext(request, variables)) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json')
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 whitelist_remove(request): whitelist_id = int(request.POST.get("data[whitelist_id]", "0")) phoneuser_id = int(request.POST.get("data[phoneuser_id]", "0")) if(whitelist_id): try: phoneuser = PhoneUser.objects.get(pk=phoneuser_id) Whitelist.objects.get(pk=whitelist_id).delete() # log azione audit = Audit() audit.log(user=request.user, what="Rimozione autorizzazione: %s" % phoneuser) return whitelist_items(request, phoneuser_id) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json') else: raise Http404
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 phoneuser_change_status(request): phoneuser_id = int(request.POST.get("data[phoneuser_id]", "0")) newstatus = request.POST.get("data[newstatus]", "") ret = newstatus action = "Disattivazione" if int(newstatus): action = "Attivazione" try: phoneuser = PhoneUser.objects.get(pk=phoneuser_id) phoneuser.enabled = int(newstatus) phoneuser.save() # log azione audit = Audit() audit.log(user=request.user, what="%s scheda anagrafica: %s" % (action, phoneuser)) return phoneuser_data(request, phoneuser_id) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json')
def whitelist_save(request): """Save or update whitelist""" whitelist_id = int(request.POST.get("data[whitelist_id]", "0")) phoneuser_id = int(request.POST.get("data[phoneuser_id]", "0")) label = request.POST.get("data[label]", "") phonenumber = request.POST.get("data[phonenumber]", "") duration = int(request.POST.get("data[duration]", "0")) frequency = int(request.POST.get("data[frequency]", "0")) real_mobile = int(request.POST.get("data[real_mobile]", "0")) # la maschera consente di inserire i minuti duration = duration * 60 action = "Creazione" try: if whitelist_id: whitelist = Whitelist.objects.get(pk=whitelist_id) action = "Modifica" else: whitelist = Whitelist() if frequency == 0: whitelist.enabled = True whitelist.phoneuser_id = phoneuser_id whitelist.label = label whitelist.phonenumber = phonenumber whitelist.duration = duration whitelist.frequency = frequency whitelist.real_mobile = real_mobile whitelist.save() # log azione audit = Audit() audit.log(user=request.user, what="%s autorizzazione: %s" % (action, whitelist.phoneuser)) return whitelist_items(request, phoneuser_id) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json')
def whitelist_change_ordinary(request): whitelist_id = int(request.POST.get("data[whitelist_id]", "0")) phoneuser_id = int(request.POST.get("data[phoneuser_id]", "0")) newstatus = int(request.POST.get("data[newstatus]", "0")) ret = newstatus action = "Abilitazione ordinaria" if int(newstatus): action = "Abilitazione straordinaria" if(whitelist_id): try: whitelist = Whitelist.objects.get(pk=whitelist_id) whitelist.extraordinary = newstatus whitelist.save() audit = Audit() audit.log(user=request.user, what="%s autorizzazione: %s" % (action, whitelist.phoneuser)) return whitelist_items(request, phoneuser_id) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json') else: raise Http404
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 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 profile_save(request): """Save or update user""" user_id = int(request.POST.get("data[profile_id]", "0")) first_name = request.POST.get("data[first_name]", "") last_name = request.POST.get("data[last_name]", "") username = request.POST.get("data[username]", "") password = request.POST.get("data[password]", "") is_admin = request.POST.get("data[is_admin]", "0") == "1" priv_anagrafica = int(request.POST.get("data[priv_anagrafica]", "1")) priv_whitelist = int(request.POST.get("data[priv_whitelist]", "0")) priv_credit = int(request.POST.get("data[priv_credit]", "0")) priv_cdr = int(request.POST.get("data[priv_cdr]", "0")) priv_record = int(request.POST.get("data[priv_record]", "0")) action = "Creazione" try: if user_id: user = User.objects.get(pk=user_id) user.first_name = first_name.title() user.last_name = last_name.title() user.username = username if password: user.set_password(password) action = "Modifica" else: user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name, password=password) user.is_staff = is_admin user.save() # log azione audit = Audit() audit.log(user=request.user, what="%s utente: %s" % (action, user.get_full_name())) if not user.is_staff: # cancelliamo tutte le acl utente e # (ri)creiamo le acl corrispondenti Acl.objects.filter(user_id=user.id).delete() # userid function permission Acl.objects.create( user_id=user.id, function=0, permission=priv_anagrafica) if priv_whitelist: Acl.objects.create( user_id=user.id, function=1, permission=priv_whitelist) if priv_credit: Acl.objects.create( user_id=user.id, function=2, permission=priv_credit) if priv_cdr: Acl.objects.create( user_id=user.id, function=3, permission=priv_cdr) if priv_record: Acl.objects.create( user_id=user.id, function=4, permission=priv_record) return profile_items(request) except Exception as e: return HttpResponse(status=400, content=json.dumps({'err_msg': format(e)}), content_type='application/json')
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