示例#1
0
文件: views.py 项目: simensma/sherpa
def confirm(request):
    if not 'gift_membership' in request.session:
        return redirect('enrollment.gift.views.index')
    if not 'giver' in request.session['gift_membership']:
        # Not quite sure how this can happen, but it has happened.
        return redirect('enrollment.gift.views.form')
    if 'order_sent' in request.session['gift_membership']:
        return redirect('enrollment.gift.views.receipt')

    giver = Giver(**request.session['gift_membership']['giver'])
    receivers = [Receiver(**r) for r in request.session['gift_membership']['receivers']]

    form_valid = giver.validate()
    for receiver in receivers:
        form_valid = form_valid and receiver.validate()

    if not form_valid:
        return redirect('enrollment.gift.views.form')

    context = {
        'giver': giver,
        'receivers': receivers,
        'display_christmas_warning': date.today() <= CHRISTMAS_WARNING_END
    }
    return render(request, 'central/enrollment/gift/confirm.html', context)
示例#2
0
文件: views.py 项目: simensma/sherpa
def validate(request):
    # TODO: Use the django form API
    if not 'gift_membership' in request.session:
        return redirect('enrollment.gift.views.index')
    if 'order_sent' in request.session['gift_membership']:
        return redirect('enrollment.gift.views.receipt')
    if request.method != 'POST' or not 'receivers' in request.POST:
        return redirect('enrollment.gift.views.form')

    giver = Giver(
        request.POST['giver_name'].strip(),
        request.POST['giver_address'].strip(),
        request.POST['giver_zipcode'].strip(),
        request.POST['giver_memberid'].strip(),
        request.POST['giver_phone'].strip(),
        request.POST['giver_email'].strip(),
    )

    receivers = []
    try:
        for r in json.loads(request.POST['receivers']):
            receivers.append(Receiver(
                r['type'].strip(),
                r['name'].strip(),
                r['dob'].strip(),
                r['address'].strip(),
                r['zipcode'].strip(),
                r['phone'].strip(),
                r['email'].strip(),
            ))
    except ValueError:
        # Something wrong with the json-formatted POST value. Not quite sure how this can happen, but it has happened.
        return redirect('enrollment.gift.views.form')

    request.session['gift_membership'] = {
        'giver': giver.to_dict(),
        'receivers': [r.to_dict() for r in receivers],
        'any_normal_memberships': any(r.type['code'] == 'normal' for r in receivers)
    }

    form_valid = giver.validate()
    for receiver in receivers:
        form_valid = form_valid and receiver.validate()
    if not form_valid:
        return redirect('enrollment.gift.views.form')

    return redirect('enrollment.gift.views.confirm')
示例#3
0
def form(request):
    if 'gift_membership' not in request.session:
        request.session['gift_membership'] = {}
    if 'order_sent' in request.session['gift_membership']:
        return redirect('enrollment.gift:receipt')

    giver = None
    if 'giver' in request.session['gift_membership']:
        giver = Giver(**request.session['gift_membership']['giver'])
        giver.validate(request, add_messages=True)

    receivers = []
    if 'receivers' in request.session['gift_membership']:
        receivers = [Receiver(**r) for r in request.session['gift_membership']['receivers']]
        for receiver in receivers:
            receiver.validate(request, add_messages=True)

    if 'type' in request.POST:
        # We had some error where type was set to the empty string. Not sure how
        # that can happen (it was with Firefox 20.0), but the type isn't that
        # important so just ignore this error.
        try:
            chosen_type = int(request.POST['type'])
        except ValueError:
            chosen_type = None
    else:
        chosen_type = None

    # Clone the list and add a 'price' key to each type dict
    membership_types_with_price = []
    for type in membership_types:
        type_with_price = type.copy()
        if type['code'] in ['normal', 'family']:
            type_with_price['price'] = None
            membership_types_with_price.append(type_with_price)
        else:
            type_with_price['price'] = PriceCode.get_gift_membership_price(type_with_price['code'])
            membership_types_with_price.append(type_with_price)

    context = {
        'types': membership_types_with_price,
        'giver': giver,
        'receivers': receivers,
        'chosen_type': chosen_type,
        'display_christmas_warning': date.today() <= CHRISTMAS_WARNING_END,
    }
    return render(request, 'central/enrollment/gift/form.html', context)
示例#4
0
文件: views.py 项目: simensma/sherpa
def form(request):
    if not 'gift_membership' in request.session:
        request.session['gift_membership'] = {}
    if 'order_sent' in request.session['gift_membership']:
        return redirect('enrollment.gift.views.receipt')

    giver = None
    if 'giver' in request.session['gift_membership']:
        giver = Giver(**request.session['gift_membership']['giver'])
        giver.validate(request, add_messages=True)

    receivers = []
    if 'receivers' in request.session['gift_membership']:
        receivers = [Receiver(**r) for r in request.session['gift_membership']['receivers']]
        for receiver in receivers:
            receiver.validate(request, add_messages=True)

    if 'type' in request.POST:
        # We had some error where type was set to the empty string. Not sure how
        # that can happen (it was with Firefox 20.0), but the type isn't that
        # important so just ignore this error.
        try:
            chosen_type = int(request.POST['type'])
        except ValueError:
            chosen_type = None
    else:
        chosen_type = None

    context = {
        'types': membership_types,
        'giver': giver,
        'receivers': receivers,
        'chosen_type': chosen_type,
        'display_christmas_warning': date.today() <= CHRISTMAS_WARNING_END,
    }
    return render(request, 'central/enrollment/gift/form.html', context)