from django import forms from vendor.zebra.forms import StripePaymentForm from django.utils.safestring import mark_safe PLANS = [ (1, mark_safe("$12 / year ($1/month)")), (2, mark_safe("$24 / year ($2/month)")), (3, mark_safe("$36 / year ($3/month)")), ] class HorizRadioRenderer(forms.RadioSelect.renderer): """ this overrides widget method to put radio buttons horizontally instead of vertically. """ def render(self): """Outputs radios""" choices = '\n'.join(['%s\n' % w for w in self]) return mark_safe('
%s
' % choices) class StripePlusPaymentForm(StripePaymentForm): def __init__(self, *args, **kwargs): email = kwargs.pop('email') plan = kwargs.pop('plan', '') super(StripePlusPaymentForm, self).__init__(*args, **kwargs) self.fields['email'].initial = email if plan: self.fields['plan'].initial = int(plan) email = forms.EmailField(widget=forms.TextInput(attrs=dict(maxlength=75)), label='Email address', required=False) plan = forms.ChoiceField(required=False, widget=forms.RadioSelect(renderer=HorizRadioRenderer), choices=PLANS, label='Plan')