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
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
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
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
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]