Пример #1
0
def index(request,
          add_view='appointmentbook:add',
          remove_view='appointmentbook:remove',
          add_form_class=forms.AddAppointmentStep0Form,
          remove_form_class=forms.LoginForm,
          check_credentials=checks.check_credentials,
          check_new_appointment=checks.check_new_appointment,
          template='index.html'):
    add_form = None
    remove_form = None
    if request.method == 'POST':
        cookie_test = request.session.test_cookie_worked()
        if add_form_class.submit in request.POST:
            add_form = add_form_class(request.POST)
            if add_form.is_valid() and cookie_test:
                try:
                    check_new_appointment(add_form.cleaned_data)
                except checks.UserAlreadyHaveAnAppointment as e:
                    add_form.append_non_field_error(e)
                else:
                    request.session.delete_test_cookie()
                    request.session.set_expiry(settings.SESSION_COOKIE_AGE)
                    session.save_form_data(request, add_form)
                    return redirect(add_view)

            elif not cookie_test:
                add_form.append_non_field_error(MESSAGE_DICT['enable_cookies'])

        elif remove_form_class.submit in request.POST:
            remove_form = remove_form_class(request.POST)
            if remove_form.is_valid() and cookie_test:
                person_id = remove_form.cleaned_data['person_id']
                key = remove_form.cleaned_data['key']
                try:
                    check_credentials(person_id, key)
                except checks.AppointmentDoesNotExist as e:
                    remove_form.append_non_field_error(e)
                else:
                    request.session.delete_test_cookie()
                    request.session.set_expiry(settings.SESSION_COOKIE_AGE)
                    session.save_form_data(request, remove_form)
                    return redirect(remove_view, key)

            elif not cookie_test:
                remove_form.append_non_field_error(
                    MESSAGE_DICT['enable_cookies'])

    if add_form is None:
        add_form = add_form_class()
    if remove_form is None:
        remove_form = remove_form_class()

    request.session.set_test_cookie()
    return render_to_response(
        template, {
            'add_form': add_form,
            'remove_form': remove_form,
        },
        context_instance=RequestContext(request))
Пример #2
0
def login(request,
          login_view='appointmentbook:login',
          show_view='appointmentbook:show',
          form_class=forms.LoginForm,
          checks_credentials=checks.checks_credentials,
          template='login.html'):
    form = None
    if request.method == 'POST':
        cookie_test = request.session.test_cookie_worked()
        request_post = request.POST
        if 'continue' in request.GET:
            view, args, kwargs = urlresolvers.resolve(request.GET['continue'])
            if 'key' in kwargs:
                request_post['key'] = kwargs['key']
        form = form_class(request_post)
        if form.is_valid() and cookie_test:
            person_id = form.cleaned_data['person_id']
            key = form.cleaned_data['key']
            try:
                checks_credentials(person_id, key)
            except checks.AppointmentDoesNotExist as e:
                form.append_non_field_error(e)
            else:
                request.session.delete_test_cookie()
                request.session.set_expiry(settings.SESSION_COOKIE_AGE)
                session.save_form_data(request, form)
                if 'continue' in request.GET:
                    return redirect(request.GET['continue'])
                else:
                    return redirect(show_view, key)

        elif not cookie_test:
            form.append_non_field_error(MESSAGE_DICT['enable_cookies'])

    elif 'continue' in request.GET:
        view, args, kwargs = urlresolvers.resolve(request.GET['continue'])
        if 'key' in kwargs:
            form = form_class(hiden_fields=['key'])

    if form is None:
        form = form_class()

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