Ejemplo n.º 1
0
def validate_uploaded_file(file_path):
    """
    Parse the file to see if it's a valid bulk sms message upload file.

    If not, raises ValidationError

    """
    with open(file_path, "rb") as f:
        reader = UnicodeReader(f)

        line_number = 0
        for row in reader:
            line_number += 1
            if any(row):
                try:
                    line = Line._make(row)
                except TypeError:
                    raise ValidationError(
                        PARSING_ERROR.format(line_number=line_number,
                                             columns=", ".join(FIELDS)))
                if not is_phone_number_valid(line.number):
                    raise ValidationError(
                        INVALID_PHONE_ERROR.format(number=line.number,
                                                   line_number=line_number))
                if not line.message.strip():
                    raise ValidationError(
                        BLANK_MESSAGE_ERROR.format(line_number=line_number))
Ejemplo n.º 2
0
def phone_history(request):
    if 'phone' not in request.GET:
        return get_bogus_arg_error(request)

    phone_number = request.GET['phone']
    if not is_phone_number_valid(phone_number):
        return get_bogus_arg_error(request)  # user bypassed form validation

    try:
        staff_phone = StaffPhone.objects.get(phone_number=phone_number)
    except StaffPhone.DoesNotExist:
        # This feature is only for staff phones, but we need to be able to
        # find messages from would-be staff phones that haven't been
        # successfully linked.
        staff_phone = None

    try:
        whitelist = Whitelist.objects.get(phone_number=phone_number)
    except Whitelist.DoesNotExist:
        whitelist = None

    either_number = Q(from_number=phone_number) | Q(to_number=phone_number)
    sms_messages = SMS.objects.filter(either_number).order_by('-creation_date')
    for message in sms_messages:
        message.msg_type_string = MESSAGE_TYPES.get(message.msg_type, message.msg_type)

    return render(request, 'vr_dashboard/phone_tool/message_list.html', {
        'phone_tool_page': True,
        'staff_page': True,
        'sms_messages': sms_messages,
        'whitelist': whitelist,
        'phone': staff_phone,
        'phone_number': phone_number  # whether or not it is a staff phone
    })
Ejemplo n.º 3
0
def whitelist_phone(request):
    phone_number = request.POST.get('phone')
    if not phone_number or not is_phone_number_valid(phone_number):
        return get_bogus_arg_error(request)  # user bypassed form validation

    center_id = request.POST.get('center_id')
    if center_id:
        if not is_center_id_valid(center_id):
            return get_bogus_arg_error(
                request)  # user bypassed form validation

    white_list = Whitelist(creation_date=now(),
                           modification_date=now(),
                           phone_number=phone_number)
    white_list.full_clean()
    white_list.save()

    # refresh the page that sent us here, now with the phone white-listed
    if center_id:
        query_args = '?center_id=%s' % center_id
        return HttpResponseRedirect(
            reverse('vr_dashboard:search-phones') + query_args)
    else:
        query_args = '?phone=%s' % phone_number
        return HttpResponseRedirect(
            reverse('vr_dashboard:phone-history') + query_args)
Ejemplo n.º 4
0
def validate_uploaded_file(file_path):
    """
    Parse the file to see if it's a valid bulk sms message upload file.

    If not, raises ValidationError

    """
    with open(file_path, "rb") as f:
        reader = UnicodeReader(f)

        line_number = 0
        for row in reader:
            line_number += 1
            if any(row):
                try:
                    line = Line._make(row)
                except TypeError:
                    raise ValidationError(
                        PARSING_ERROR.format(
                            line_number=line_number,
                            columns=", ".join(FIELDS)))
                if not is_phone_number_valid(line.number):
                    raise ValidationError(
                        INVALID_PHONE_ERROR.format(
                            number=line.number, line_number=line_number))
                if not line.message.strip():
                    raise ValidationError(
                        BLANK_MESSAGE_ERROR.format(line_number=line_number))
Ejemplo n.º 5
0
def whitelist_phone(request):
    phone_number = request.POST.get('phone')
    if not phone_number or not is_phone_number_valid(phone_number):
        return get_bogus_arg_error(request)  # user bypassed form validation

    center_id = request.POST.get('center_id')
    if center_id:
        if not is_center_id_valid(center_id):
            return get_bogus_arg_error(request)  # user bypassed form validation

    white_list = Whitelist(creation_date=now(), modification_date=now(), phone_number=phone_number)
    white_list.full_clean()
    white_list.save()

    # refresh the page that sent us here, now with the phone white-listed
    if center_id:
        query_args = '?center_id=%s' % center_id
        return HttpResponseRedirect(reverse('vr_dashboard:search-phones') + query_args)
    else:
        query_args = '?phone=%s' % phone_number
        return HttpResponseRedirect(reverse('vr_dashboard:phone-history') + query_args)
Ejemplo n.º 6
0
def phone_history(request):
    if 'phone' not in request.GET:
        return get_bogus_arg_error(request)

    phone_number = request.GET['phone']
    if not is_phone_number_valid(phone_number):
        return get_bogus_arg_error(request)  # user bypassed form validation

    try:
        staff_phone = StaffPhone.objects.get(phone_number=phone_number)
    except StaffPhone.DoesNotExist:
        # This feature is only for staff phones, but we need to be able to
        # find messages from would-be staff phones that haven't been
        # successfully linked.
        staff_phone = None

    try:
        whitelist = Whitelist.objects.get(phone_number=phone_number)
    except Whitelist.DoesNotExist:
        whitelist = None

    either_number = Q(from_number=phone_number) | Q(to_number=phone_number)
    sms_messages = SMS.objects.filter(either_number).order_by('-creation_date')
    for message in sms_messages:
        message.msg_type_string = MESSAGE_TYPES.get(message.msg_type,
                                                    message.msg_type)

    return render(
        request,
        'vr_dashboard/phone_tool/message_list.html',
        {
            'phone_tool_page': True,
            'staff_page': True,
            'sms_messages': sms_messages,
            'whitelist': whitelist,
            'phone': staff_phone,
            'phone_number': phone_number  # whether or not it is a staff phone
        })