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))
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 })
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)
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))
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)
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 })