Exemple #1
0
def date_add (request, topic_map, entity_id, assertion_id):
    entity = get_topic_or_404(Entity, entity_id)
    assertion = entity.get_assertion(assertion_id)
    if assertion is None:
        raise Http404
    authority = assertion.authority
    if authority != request.user.eats_user.get_current_authority():
        raise Http404
    calendar_choices = create_choice_list(
        topic_map, Calendar.objects.filter_by_authority(authority))
    date_period_choices = create_choice_list(
        topic_map, DatePeriod.objects.filter_by_authority(authority))
    date_type_choices = create_choice_list(
        topic_map, DateType.objects.filter_by_authority(authority))
    if request.method == 'POST':
        form = DateForm(topic_map, calendar_choices, date_period_choices,
                        date_type_choices, request.POST)
        if form.is_valid():
            date_id = form.save(assertion)
            if '_continue' in form.data:
                redirect_ids = {'assertion_id': assertion_id,
                                'date_id': date_id, 'entity_id': entity_id}
                redirect_url = reverse('date-change', kwargs=redirect_ids)
            else:
                redirect_ids = {'entity_id': entity_id}
                redirect_url = reverse('entity-change', kwargs=redirect_ids)
            return redirect(redirect_url)
    else:
        form = DateForm(topic_map, calendar_choices, date_period_choices,
                        date_type_choices)
    context_data = {'form': form}
    return render(request, 'eats/edit/date_add.html', context_data)
Exemple #2
0
def edit_date(request, date, editable_authorities):
    """View to edit an existing Date object."""
    # QAZ: display errors on the template.
    context_data = {'date': date, 'entity': date.assertion.entity}
    if request.method == 'POST':
        post_data = request.POST.copy()
        post_data['assertion'] = date.assertion.id
        if post_data.get('submit_delete'):
            return HttpResponseRedirect(reverse(delete_object,
                                                kwargs={'model_name': 'date',
                                                        'object_id': date.id}))
        form = DateForm(instance=date, data=post_data)
        if form.is_valid():
            form.save()
            kw_args = {}
            if post_data.get('submit_continue'):
                kw_args['model_name'] = 'date'
                kw_args['object_id'] = date.id
            else:
                # Redirect to the page for the assertion this date is
                # associated with.
                property_type = date.assertion.get_type()
                if property_type == 'name':
                    kw_args['model_name'] = 'name'
                    kw_args['object_id'] = date.assertion.name.id
                else:
                    kw_args['model_name'] = 'entity'
                    kw_args['object_id'] = date.assertion.entity.id
            return HttpResponseRedirect(reverse(edit_model_object,
                                                kwargs=kw_args))
    else:
        form = DateForm(instance=date)
    context_data['form'] = form
    return render(request, 'eats/edit/edit_date.html', context_data)
Exemple #3
0
def date_add (request, topic_map, entity_id, assertion_id):
    entity = get_topic_or_404(Entity, entity_id)
    assertion = entity.get_assertion(assertion_id)
    if assertion is None:
        raise Http404
    authority = assertion.authority
    if authority != request.user.eats_user.get_current_authority():
        raise Http404
    calendar_choices = create_choice_list(
        topic_map, Calendar.objects.filter_by_authority(authority))
    date_period_choices = create_choice_list(
        topic_map, DatePeriod.objects.filter_by_authority(authority))
    date_type_choices = create_choice_list(
        topic_map, DateType.objects.filter_by_authority(authority))
    if request.method == 'POST':
        form = DateForm(topic_map, calendar_choices, date_period_choices,
                        date_type_choices, request.POST)
        if form.is_valid():
            date_id = form.save(assertion)
            if '_continue' in form.data:
                redirect_ids = {'assertion_id': assertion_id,
                                'date_id': date_id, 'entity_id': entity_id}
                redirect_url = reverse('date-change', kwargs=redirect_ids)
            else:
                redirect_ids = {'entity_id': entity_id}
                redirect_url = reverse('entity-change', kwargs=redirect_ids)
            return HttpResponseRedirect(redirect_url)
    else:
        form = DateForm(topic_map, calendar_choices, date_period_choices,
                        date_type_choices)
    context_data = {'form': form}
    return render_to_response('eats/edit/date_add.html', context_data,
                              context_instance=RequestContext(request))
Exemple #4
0
def create_date(request, assertion_id):
    """View to create a date for an assertion."""
    assertion = get_object_or_404(PropertyAssertion, pk=assertion_id)
    authority = assertion.authority_record.authority
    try:
        profile, editable_authorities = get_editable_authorities(request.user,
                                                                 authority)
    except EATSAuthenticationException as e:
        return HttpResponseRedirect(e.get_url())
    calendar_id = profile.calendar.id
    date_type_id = profile.date_type.id
    initial_data = {'start_date_calendar': calendar_id,
                    'start_date_type': date_type_id,
                    'end_date_calendar': calendar_id,
                    'end_date_type': date_type_id,
                    'point_date_calendar': calendar_id,
                    'point_date_type': date_type_id,
                    'start_terminus_post_calendar': calendar_id,
                    'start_terminus_post_type': date_type_id,
                    'start_terminus_ante_calendar': calendar_id,
                    'start_terminus_ante_type': date_type_id,
                    'point_terminus_post_calendar': calendar_id,
                    'point_terminus_post_type': date_type_id,
                    'point_terminus_ante_calendar': calendar_id,
                    'point_terminus_ante_type': date_type_id,
                    'end_terminus_post_calendar': calendar_id,
                    'end_terminus_post_type': date_type_id,
                    'end_terminus_ante_calendar': calendar_id,
                    'end_terminus_ante_type': date_type_id,
                    'date_period': profile.date_period.id}
    if request.method == 'POST':
        post_data = request.POST.copy()
        post_data['assertion'] = assertion_id
        form = DateForm(data=post_data)
        if form.is_valid():
            date = form.save()
            kw_args = {}
            if post_data.get('submit_continue'):
                kw_args['model_name'] = 'date'
                kw_args['object_id'] = date.id
            else:
                # Redirect to the page for the assertion this date is
                # associated with.
                property_type = date.assertion.get_type()
                if property_type == 'name':
                    kw_args['model_name'] = 'name'
                    kw_args['object_id'] = date.assertion.name.id
                else:
                    kw_args['model_name'] = 'entity'
                    kw_args['object_id'] = date.assertion.entity.id
            return HttpResponseRedirect(reverse(edit_model_object,
                                                kwargs=kw_args))
    else:
        form = DateForm(initial=initial_data)
    context_data = {'form': form}
    return render(request, 'eats/edit/add_date.html', context_data)
Exemple #5
0
def date_change (request, topic_map, entity_id, assertion_id, date_id):
    entity = get_topic_or_404(Entity, entity_id)
    assertion = entity.get_assertion(assertion_id)
    if assertion is None:
        raise Http404
    date = assertion.get_date(date_id)
    if date is None:
        raise Http404
    authority = assertion.authority
    if authority != request.user.eats_user.get_current_authority():
        raise Http404
    calendar_choices = create_choice_list(
        topic_map, Calendar.objects.filter_by_authority(authority))
    date_period_choices = create_choice_list(
        topic_map, DatePeriod.objects.filter_by_authority(authority))
    date_type_choices = create_choice_list(
        topic_map, DateType.objects.filter_by_authority(authority))
    if request.method == 'POST':
        form = DateForm(topic_map, calendar_choices, date_period_choices,
                        date_type_choices, request.POST, instance=date)
        redirect_ids = {'entity_id': entity_id}
        redirect_url = reverse('entity-change', kwargs=redirect_ids)
        if '_delete' in form.data:
            form.delete()
            return HttpResponseRedirect(redirect_url)
        if form.is_valid():
            date_id = form.save()
            if '_continue' in form.data:
                redirect_ids['assertion_id'] = assertion_id
                redirect_ids['date_id'] = date_id
                redirect_url = reverse('date-change', kwargs=redirect_ids)
            return HttpResponseRedirect(redirect_url)
    else:
        form = DateForm(topic_map, calendar_choices, date_period_choices,
                        date_type_choices, instance=date)
    context_data = {'form': form}
    return render_to_response('eats/edit/date_change.html', context_data,
                              context_instance=RequestContext(request))