Example #1
0
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
Example #2
0
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")