예제 #1
0
 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 _get_all_datasenders(self, manager, projects, user):
     all_data_senders, fields, labels = import_module.load_all_entities_of_type(manager)
     project_association = self._get_project_association(projects)
     remove_system_datasenders(all_data_senders)
     for datasender in all_data_senders:
         get_datasender_user_detail(datasender, user)
         datasender['projects'] = project_association.get(datasender['short_code'])
     return all_data_senders
예제 #3
0
    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))