def get(self, request, reporter_id, *args, **kwargs): create_data_sender = False manager = get_database_manager(request.user) reporter_entity = ReporterEntity( get_by_short_code(manager, reporter_id, [REPORTER])) entity_links = { 'registered_datasenders_link': reverse("all_datasenders") } datasender = {'short_code': reporter_id} get_datasender_user_detail(datasender, request.user) email = datasender.get( 'email') if datasender.get('email') != '--' else False name = reporter_entity.name phone_number = reporter_entity.mobile_number location = reporter_entity.location geo_code = reporter_entity.geo_code form = ReporterRegistrationForm( initial={ 'name': name, 'telephone_number': phone_number, 'location': location, 'geo_code': geo_code }) return self.render_to_response({ 'reporter_id': reporter_id, 'form': form, 'project_links': entity_links, 'email': email, 'create_data_sender': create_data_sender })
def update_datasender_on_open_submissions(database_name, reporter_id): logger = logging.getLogger('datawinners.tasks') try: dbm = get_db_manager(database_name) logger.error(reporter_id) reporter_entity = ReporterEntity(contact_by_short_code(dbm, reporter_id)) rows = dbm.load_all_rows_in_view("anonymous_submissions", key=reporter_entity.mobile_number) for row in rows: _update_survey_response(dbm, row, reporter_entity.entity.id) except Exception as e: logger.exception('Failed for db: %s ,reporter_id: %s' % (database_name, reporter_id)) logger.exception(e)
def post(self, request, reporter_id, *args, **kwargs): reporter_id = reporter_id.lower() manager = get_database_manager(request.user) reporter_entity = ReporterEntity(contact_by_short_code(manager, reporter_id)) email = reporter_entity.email org_id = request.user.get_profile().org_id form = EditReporterRegistrationForm(org_id=org_id, existing_email=email, data=request.POST) message = None if form.is_valid(): try: organization = Organization.objects.get(org_id=org_id) response = self._edit_contact(form, manager, organization, reporter_id) if response.success: email = form.cleaned_data['email'] if email: email = self._send_email_to_datasender(email, org_id, reporter_entity, reporter_id, request) self._update_mobile_number_if_trial_organization(form, org_id, organization, reporter_entity) data_sender_name = self._update_name_in_postgres_if_exists(form, reporter_entity) datasender_dict = {'name': data_sender_name, 'mobile_number': form.cleaned_data['telephone_number'], 'geo_code': form.cleaned_data['geo_code'].split(' '), 'location': response.processed_data['l']} update_submission_search_for_datasender_edition(manager, reporter_id, datasender_dict) message = _("Your changes have been saved.") self._update_user_activity_log(form, reporter_entity, reporter_id, request) else: form.update_errors(response.errors) except MangroveException as exception: message = exception.message entity_links = {'registered_datasenders_link': reverse("all_datasenders")} return render_to_response('edit_datasender_form.html', { 'form': form, 'message': message, 'reporter_id': reporter_id, 'email': email, 'project_links': entity_links }, context_instance=RequestContext(request))
def post(self, request, reporter_id, *args, **kwargs): reporter_id = reporter_id.lower() manager = get_database_manager(request.user) reporter_entity = ReporterEntity( get_by_short_code(manager, reporter_id, [REPORTER])) entity_links = { 'registered_datasenders_link': reverse("all_datasenders") } datasender = {'short_code': reporter_id} get_datasender_user_detail(datasender, request.user) email = datasender.get( 'email') if datasender.get('email') != '--' else False org_id = request.user.get_profile().org_id form = ReporterRegistrationForm(org_id=org_id, data=request.POST) message = None if form.is_valid(): try: org_id = request.user.get_profile().org_id current_telephone_number = reporter_entity.mobile_number current_name = reporter_entity.name organization = Organization.objects.get(org_id=org_id) web_player = WebPlayer( manager, LocationBridge(location_tree=get_location_tree(), get_loc_hierarchy=get_location_hierarchy)) response = web_player.accept( Request(message=_get_data(form.cleaned_data, organization.country_name(), reporter_id), transportInfo=TransportInfo( transport='web', source='web', destination='mangrove'), is_update=True)) if response.success: if organization.in_trial_mode: update_data_sender_from_trial_organization( current_telephone_number, form.cleaned_data["telephone_number"], org_id) if email and current_name != form.cleaned_data["name"]: update_user_name_if_exists(email, form.cleaned_data["name"]) message = _("Your changes have been saved.") detail_dict = {"Unique ID": reporter_id} current_lang = get_language() activate("en") field_mapping = dict(mobile_number="telephone_number") for field in [ "geo_code", "location", "mobile_number", "name" ]: if getattr(reporter_entity, field) != form.cleaned_data.get( field_mapping.get(field, field)): label = u"%s" % form.fields[field_mapping.get( field, field)].label detail_dict.update({ label: form.cleaned_data.get( field_mapping.get(field, field)) }) activate(current_lang) if len(detail_dict) > 1: detail_as_string = json.dumps(detail_dict) UserActivityLog().log(request, action=EDITED_DATA_SENDER, detail=detail_as_string) else: form.update_errors(response.errors) except MangroveException as exception: message = exception.message return render_to_response('edit_datasender_form.html', { 'form': form, 'message': message, 'reporter_id': reporter_id, 'email': email, 'project_links': entity_links }, context_instance=RequestContext(request))
def edit_data_sender(request, project_id, reporter_id): manager = get_database_manager(request.user) reporter_entity = ReporterEntity( get_by_short_code(manager, reporter_id, [REPORTER])) project, links = _get_project_and_project_link(manager, project_id, reporter_id) user_profile = get_user_profile_by_reporter_id(reporter_id, request.user) email = user_profile.user.email if user_profile else None if request.method == 'GET': location = reporter_entity.location geo_code = reporter_entity.geo_code form = ReporterRegistrationForm( initial={ 'project_id': project_id, 'name': reporter_entity.name, 'telephone_number': reporter_entity.mobile_number, 'location': location, 'geo_code': geo_code }) return render_to_response('project/edit_datasender.html', { 'project': project, 'reporter_id': reporter_id, 'form': form, 'project_links': links, 'in_trial_mode': _in_trial_mode(request), 'email': email }, context_instance=RequestContext(request)) if request.method == 'POST': org_id = request.user.get_profile().org_id form = ReporterRegistrationForm(org_id=org_id, data=request.POST) message = None if form.is_valid(): try: organization = Organization.objects.get(org_id=org_id) current_telephone_number = reporter_entity.mobile_number web_player = WebPlayer( manager, LocationBridge(location_tree=get_location_tree(), get_loc_hierarchy=get_location_hierarchy)) response = web_player.accept( Request(message=_get_data(form.cleaned_data, organization.country_name(), reporter_id), transportInfo=TransportInfo( transport='web', source='web', destination='mangrove'), is_update=True)) if response.success: if organization.in_trial_mode: update_data_sender_from_trial_organization( current_telephone_number, form.cleaned_data["telephone_number"], org_id) message = _("Your changes have been saved.") detail_dict = {"Unique ID": reporter_id} current_lang = get_language() activate("en") field_mapping = dict(mobile_number="telephone_number") for field in [ "geo_code", "location", "mobile_number", "name" ]: if getattr(reporter_entity, field) != form.cleaned_data.get( field_mapping.get(field, field)): label = u"%s" % form.fields[field_mapping.get( field, field)].label detail_dict.update({ label: form.cleaned_data.get( field_mapping.get(field, field)) }) activate(current_lang) if len(detail_dict) > 1: detail_as_string = json.dumps(detail_dict) UserActivityLog().log(request, action=EDITED_DATA_SENDER, detail=detail_as_string, project=project.name) else: form.update_errors(response.errors) except MangroveException as exception: message = exception.message return render_to_response('edit_datasender_form.html', { 'project': project, 'form': form, 'reporter_id': reporter_id, 'message': message, 'project_links': links, 'in_trial_mode': _in_trial_mode(request), 'email': email }, context_instance=RequestContext(request))