示例#1
0
def remove(request,
           key,
           login_view='appointmentbook:login',
           success_view='appointmentbook:logout',
           cancel_view='appointmentbook:logout',
           template='remove.html'):
    if session.has_person_id(request):
        appointment = get_list_or_404(models.Appointment, key=key)
        if not appointment.person_id == session.get_person_id(request):
            return HttpResponseForbidden()
        if request.method == 'POST':
            if 'ok' in request.POST:
                appointment.delete()
                messages.success(request, MESSAGE_DICT['remove_succeed'])
                return redirect(success_view)
            else:
                messages.success(request, MESSAGE_DICT['operation_cancelled'])
                return redirect(cancel_view)
        else:
            return render_to_response(
                template, {'appointment': appointment},
                context_instance=RequestContext(request))
    else:
        query = {'continue': request.get_full_path()}
        return HttpResponseRedirect(
            urlresolvers.reverse(login_view) + urlencode(query))
示例#2
0
def show(request, key, login_view='appointmentbook:login', 
                       template='show.html',
                       logout_after=False):
    if session.has_person_id(request):
        appointment = get_list_or_404(models.Appointment, key=key)
        if not appointment.person_id == session.get_person_id(request):
            return HttpResponseForbidden()
        if logout_after:
            request.session.flush()
        return render_to_response(template, {
            'appointment': appointment
            }, context_instance=RequestContext(request))
    else:
        query = {'continue': request.get_full_path()}
        return HttpResponseRedirect(urlresolvers.reverse(login_view) +
                                    urlencode(query))
示例#3
0
def add(request,
        success_view='appointmentbook:show',
        form_class=forms.AddAppointmentForm,
        checks_new_appointment=checks.checks_new_appointment,
        template='add.html'):
    if request.method == 'POST':
        cookie_test = request.session.test_cookie_worked()
        form = form_class(request.POST)
        if form.is_valid() and cookie_test:
            form_data = form.cleaned_data
            try:
                checks_new_appointment(form_data)
            except checks.UserAlreadyHaveAnAppointment as e:
                form.append_non_field_error(e)
            else:
                if not 'person_id' in form_data:
                    if session.has_person_id(request):
                        form_data['person_id'] = session.get_person_id(request)
                elif not session.has_person_id(request):
                    session.set_person_id(request, form_data['person_id'])

                appointment = models.Appointment(form_data)
                try:
                    appointment.save(request=request)
                except models.ResourceExhaustedError:
                    form.append_non_field_error(
                        MESSAGE_DICT['resource_exhausted'])
                else:
                    request.session.delete_test_cookie()
                    messages.success(request, MESSAGE_DICT['add_succeed'])
                    return redirect(success_view, appointment.key)

        elif not cookie_test:
            form.append_non_field_error(MESSAGE_DICT['enable_cookies'])
    elif session.has_person_id(request):
        form = form_class(request.session)
    else:
        form = form_class()

    request.session.set_test_cookie()
    return render_to_response(
        template, {'form': form}, context_instance=RequestContext(request))