Example #1
0
def set_location_do(request):
    if 'person_id' in request.POST and len(request.POST.get('person_id')) > 0\
        and _has_group(request.user, 'ADMIN'):
        user_profile = Person.objects.get(pk__exact=request.POST.get('person_id'))
    else:
        user_profile = request.user.get_profile()
    edit_location_form = mysite.account.forms.EditLocationForm(
        request.POST,
        instance=user_profile, prefix='edit_location')
    if edit_location_form.is_valid():
        address = edit_location_form.cleaned_data['location_display_name']
        as_string = mysite.base.view_helpers.cached_geocoding_in_json(address)
        as_dict = json.loads(as_string)
        if 'latitude' and 'longitude' in as_dict:
            user_profile.latitude = as_dict['latitude']
            user_profile.longitude = as_dict['longitude']
        else:
            user_profile.location_display_name = mysite.profile.models.DEFAULT_LOCATION
            user_profile.latitude = mysite.profile.models.DEFAULT_LATITUDE
            user_profile.longitude = mysite.profile.models.DEFAULT_LONGITUDE
        user_profile.location_confirmed = True
        user_profile.save()
        edit_location_form.save()

        return HttpResponseRedirect(reverse(set_location) +
                                    '?notification_id=success&person_id=%s' % user_profile.id)
    else:
        return set_location(request,
                edit_location_form=edit_location_form)
Example #2
0
def set_location(request, edit_location_form = None):
    # {{{

    person = None
    user_id = None
    if 'person_id' in request.GET and _has_group(request.user, 'ADMIN'):
        person = Person.objects.get(pk__exact=request.GET.get('person_id'))
    else:
        person = request.user.get_profile()

    data = {}
    initial = {}
    data['person_id'] = person.id

    # If the user's location is the default one, then we create a guess.
    if (not person.location_display_name) or (person.location_display_name == mysite.profile.models.DEFAULT_LOCATION):
        geoip_guess = mysite.profile.view_helpers.get_geoip_guess_for_ip(
            mysite.base.middleware.get_user_ip(request))[1]
        initial['location_display_name'] = geoip_guess
    else:
        initial['location_display_name'] = person.location_display_name

    # Initialize edit location form
    if edit_location_form is None:
        edit_location_form = mysite.account.forms.EditLocationForm(
                prefix='edit_location', instance=person, initial=initial)

    data['edit_location_form'] = edit_location_form

    if request.GET.get('notification_id', None) == 'success':
        data['account_notification'] = 'Saved.'
    else:
        data['account_notification'] = ''

    return (request, 'account/set_location.html', data)
Example #3
0
def edit_fields(request, edit_fields_form = None, edit_displayed_fields_cards_form = None,
                edit_displayed_fields_list_form = None, edit_view_type_form=None):
    if not _has_group(request.user, 'ADMIN') and not _has_group(request.user, 'PROJECT_PARTNER'):
        return (request, 'account/settings.html', {})

    if edit_fields_form is None:
        edit_fields_form = EditFieldsForm()
    if edit_displayed_fields_cards_form is None:
        edit_displayed_fields_cards_form = EditFieldsDisplayedInSearchForm(user=request.user, type=u'cards')
    if edit_displayed_fields_list_form is None:
        edit_displayed_fields_list_form = EditFieldsDisplayedInSearchForm(user=request.user, type=u'list')
    if edit_view_type_form is None:
        edit_view_type_form = EditViewTypeForm(initial={"view_list": request.user.get_profile().view_list})

    return (request, 'account/edit_fields.html', {'edit_fields_form': edit_fields_form,
                                                  'edit_displayed_fields_cards_form': edit_displayed_fields_cards_form,
                                                  'edit_displayed_fields_list_form': edit_displayed_fields_list_form,
                                                  'edit_view_type_form': edit_view_type_form})
Example #4
0
def people_export(request):
    query = request.POST.get('q', '')
    parsed_query = mysite.profile.view_helpers.parse_string_query(query)

    if parsed_query['q'].strip():
        people = parsed_query['callable_searcher']().people
    else:
        people = Person.objects.all().order_by('user__username')

    people = mysite.profile.view_helpers.filter_people(people, request.POST)

    questions_to_export = [field.question.display_name for field in CardDisplayedQuestion.objects.filter(person__user__pk=request.user.id)]

    format = request.GET.get('format', 'csv')
    if format in ['csv', 'json', 'html', 'xml']:
        return globals()["export_to_" + format](people, questions_to_export, request.user.id, _has_group(request.user, 'ADMIN'))
def people_export(request):
    query = request.POST.get('q', '')
    parsed_query = mysite.profile.view_helpers.parse_string_query(query)

    if parsed_query['q'].strip():
        people = parsed_query['callable_searcher']().people
    else:
        people = Person.objects.all().order_by('user__username')

    people = mysite.profile.view_helpers.filter_people(people, request.POST)

    if 'selected_people' in request.POST:
        selected_people = [int(id) for id in str(request.POST.get('selected_people')).split(',')]
        people = [person for person in people if person.id in [int(id) for id in selected_people]]

    if 'date_range' in request.POST:
        date_from = None
        date_to = None
        date_range = str(request.POST.get('date_range')).split(' - ')
        if len(date_range) > 1:
            date_from = parser.parse(date_range[0])
            date_to = parser.parse(date_range[1])
        else:
            date_from = parser.parse(date_range[0])
            date_to = date_from
        if date_from == date_to:
            date_to += datetime.timedelta(days=1)
        people = [person for person in people if person.date_added >= date_from and person.date_added <= date_to]

    questions_to_export = [field.question.display_name for field in ExportQuestion.objects.filter(person__user__pk=request.user.id)]

    format = request.GET.get('format', 'csv')
    if format in ['csv', 'json', 'html', 'xml']:
        return globals()["export_to_" + format](people, questions_to_export, request.user.id, _has_group(request.user, 'ADMIN'))