Exemplo n.º 1
0
    def _import_data_sender(self, form_model, organization, values):
        try:
            mobile_number = case_insensitive_lookup(values, "m")

            if not mobile_number:
                raise MobileNumberMandatoryException()
            if organization.in_trial_mode:
                from accountmanagement.helper import is_mobile_number_unique_for_trial_account
                if not is_mobile_number_unique_for_trial_account(organization, mobile_number):
                    raise MultipleReportersForANumberException(mobile_number)
                else:
                    data_sender = DataSenderOnTrialAccount.objects.model(mobile_number=mobile_number,
                                                                     organization=organization)
                    data_sender.save(force_insert=True)
        except IntegrityError:
            raise MultipleReportersForANumberException(mobile_number)
        except Exception as ex:
            raise ex

        if len(",".join(values["l"])) > 500:
            raise MangroveException("Location Name cannot exceed 500 characters.")

        email = case_insensitive_lookup(values, "email")
        if email:
            if not email_re.match(email):
                raise InvalidEmailException(message="Invalid email address.")

            self._validate_duplicate_email_address(email)

            response = self.submit(form_model, values, [])

        else:
            response = self.submit(form_model, values, [])

        return response
Exemplo n.º 2
0
def find_reporter_entity(dbm, from_number):
    reporter_list = find_reporters_by_from_number(dbm, from_number)
    if len(reporter_list) > 1:
        raise MultipleReportersForANumberException(from_number)
    reporter_entity_id = reporter_list[0].keys()[0]
    reporter_name = reporter_list[0][reporter_entity_id].get(NAME_FIELD)
    return Entity.get(dbm, reporter_entity_id),reporter_name
Exemplo n.º 3
0
def _validate_post_data(dbm, request):
    form = ReporterRegistrationForm(request.POST)
    message = None
    success = False
    form_errors = []
    form_errors.extend(form.non_field_errors())
    if form.is_valid():
        form_errors = []
        form_data = {
            k: v
            for (k, v) in form.cleaned_data.items() if not is_empty(v)
        }
        try:
            entered_telephone_number = form_data.get("telephone_number")
            tel_number = _get_telephone_number(entered_telephone_number)
            if not helper.unique(dbm, tel_number):
                raise MultipleReportersForANumberException(
                    entered_telephone_number)

            web_player = WebPlayer(dbm, SubmissionHandler(dbm))
            response = web_player.accept(
                Request(message=_get_data(form_data),
                        transportInfo=TransportInfo(transport='web',
                                                    source='web',
                                                    destination='mangrove')))
            message = get_success_msg_for_registration_using(response, "web")
            success = True
        except MangroveException as exception:
            form_errors.append(exception.message)
            success = False
    return form, form_errors, message, success
Exemplo n.º 4
0
 def _validate_unique_phone_number_for_reporter(self, submission):
     if submission.cleaned_data.get(ENTITY_TYPE_FIELD_CODE) == [
             REPORTER
     ] and submission.form_model.is_registration_form():
         phone_number = submission.cleaned_data.get(
             MOBILE_NUMBER_FIELD_CODE)
         if is_empty(phone_number):
             raise MobileNumberMissing()
         actual_number = self._get_telephone_number(phone_number)
         try:
             find_reporter_entity(self.dbm, actual_number)
             raise MultipleReportersForANumberException(
                 from_number=phone_number)
         except NumberNotRegisteredException:
             submission.cleaned_data[
                 MOBILE_NUMBER_FIELD_CODE] = actual_number
Exemplo n.º 5
0
def find_reporter_entity(dbm, from_number):
    reporter_list = find_reporters_by_from_number(dbm, from_number)
    if len(reporter_list) > 1:
        raise MultipleReportersForANumberException(from_number)
    return reporter_list[0]