billing address form fixed
This commit is contained in:
		
					parent
					
						
							
								daba6ae2fb
							
						
					
				
			
			
				commit
				
					
						de1895d2a0
					
				
			
		
					 5 changed files with 113 additions and 103 deletions
				
			
		|  | @ -8,7 +8,7 @@ msgid "" | |||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2017-09-07 19:54+0530\n" | ||||
| "POT-Creation-Date: 2017-09-08 20:44+0530\n" | ||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | ||||
|  | @ -262,7 +262,7 @@ msgid "" | |||
| msgstr "" | ||||
| 
 | ||||
| msgid "Log in" | ||||
| msgstr "" | ||||
| msgstr "Anmelden" | ||||
| 
 | ||||
| msgid "" | ||||
| "Already signed up?<br>By logging in you can retrieve saved billing " | ||||
|  | @ -270,16 +270,16 @@ msgid "" | |||
| msgstr "" | ||||
| 
 | ||||
| msgid "LOGIN" | ||||
| msgstr "" | ||||
| msgstr "ANMELDEN" | ||||
| 
 | ||||
| msgid "Don't have an account yet?" | ||||
| msgstr "" | ||||
| msgstr "Besitzt du kein Benutzerkonto?" | ||||
| 
 | ||||
| msgid "You can sign up by filling in the information below." | ||||
| msgstr "" | ||||
| 
 | ||||
| msgid "Forgot password?" | ||||
| msgstr "" | ||||
| msgstr "Passwort vergessen?" | ||||
| 
 | ||||
| msgid "Your Order" | ||||
| msgstr "Deine Bestellung" | ||||
|  | @ -306,38 +306,22 @@ msgid "Month" | |||
| msgstr "Monat" | ||||
| 
 | ||||
| msgid "Sign up" | ||||
| msgstr "" | ||||
| msgstr "Registrieren" | ||||
| 
 | ||||
| #, fuzzy | ||||
| #| msgid "Billing Address" | ||||
| msgid "Billing Address" | ||||
| msgstr "Rechnungsadresse" | ||||
| 
 | ||||
| #, fuzzy | ||||
| #| msgid "Billing Address" | ||||
| msgid "Email Address" | ||||
| msgstr "Rechnungsadresse" | ||||
| msgstr "E-Mail-Adresse" | ||||
| 
 | ||||
| msgid "Credit Card" | ||||
| msgstr "Kreditkarte" | ||||
| 
 | ||||
| #, fuzzy | ||||
| #| msgid "" | ||||
| #| "\n" | ||||
| #| "                                Please fill in your credit card " | ||||
| #| "information below. We are using <a\n" | ||||
| #| "                                    href=\"https://stripe.com\" target=" | ||||
| #| "\"_blank\">Stripe</a> for payment and do not store\n" | ||||
| #| "                                your information in our database.\n" | ||||
| #| "                                " | ||||
| msgid "" | ||||
| "\n" | ||||
| "                        Please fill in your credit card information below. " | ||||
| "We are using <a href=\"https://stripe.com\" target=\"_blank\">Stripe</a> for " | ||||
| "payment and do not store your information in our database.\n" | ||||
| "                        " | ||||
| "Please fill in your credit card information below. We are using <a href=" | ||||
| "\"https://stripe.com\" target=\"_blank\">Stripe</a> for payment and do not " | ||||
| "store your information in our database." | ||||
| msgstr "" | ||||
| "\n" | ||||
| "Bitte füll Deine Kreditkarteninformationen unten aus. Wir nutzen <a href=" | ||||
| "\"https://stripe.com\" target=\"_blank\">Stripe</a> für die Bezahlung und " | ||||
| "speichern keine Informationen in unserer Datenbank." | ||||
|  | @ -364,10 +348,6 @@ msgstr "" | |||
| msgid "Card Type" | ||||
| msgstr "Kartentyp" | ||||
| 
 | ||||
| #, fuzzy | ||||
| #| msgid "" | ||||
| #| "You are not making any payment yet. After submitting your card " | ||||
| #| "information, you will be taken to the Confirm Order Page." | ||||
| msgid "" | ||||
| "You are not making any payment yet. After placing your order, you will be " | ||||
| "taken to the Submit Payment Page." | ||||
|  |  | |||
|  | @ -48,15 +48,15 @@ | |||
|                     <h3>{%trans "Your Order" %}</h3> | ||||
|                     <hr class="top-hr"> | ||||
|                     <div class="dcl-payment-order"> | ||||
|                         <p>{% trans "Cores"%} <strong class="pull-right">{{vm.cores}}1</strong></p> | ||||
|                         <p>{% trans "Cores"%} <strong class="pull-right">{{vm.cores}}</strong></p> | ||||
|                         <hr> | ||||
|                         <p>{% trans "Memory"%} <strong class="pull-right">{{vm.memory}}2 GB</strong></p> | ||||
|                         <p>{% trans "Memory"%} <strong class="pull-right">{{vm.memory}} GB</strong></p> | ||||
|                         <hr> | ||||
|                         <p>{% trans "Disk space"%} <strong class="pull-right">{{vm.disk_size}}2 GB</strong></p> | ||||
|                         <p>{% trans "Disk space"%} <strong class="pull-right">{{vm.disk_size}} GB</strong></p> | ||||
|                         <hr> | ||||
|                         <p>{% trans "Configuration"%} <strong class="pull-right">{{request.session.template.name}}CentOS 7</strong></p> | ||||
|                         <p>{% trans "Configuration"%} <strong class="pull-right">{{request.session.template.name}}</strong></p> | ||||
|                         <hr> | ||||
|                         <p class="last-p"><strong>{%trans "Total" %}</strong>  <small>({%trans "including VAT" %})</small> <strong class="pull-right">{{request.session.specs.price}}15 CHF/{% trans "Month" %}</strong></p> | ||||
|                         <p class="last-p"><strong>{%trans "Total" %}</strong>  <small>({%trans "including VAT" %})</small> <strong class="pull-right">{{request.session.specs.price}} CHF/{% trans "Month" %}</strong></p> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|  | @ -69,18 +69,8 @@ | |||
|                     {% endif %} | ||||
|                     <hr class="top-hr"> | ||||
|                     <form role="form" id="billing-form" method="post" action="" novalidate> | ||||
|                         {% if not request.user.is_authenticated %} | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="sr-only" for="id_signup_name">{% trans "Name" %}</label> | ||||
|                                 <input type="text" id="id_signup_name" class="form-control" name="signup_name" placeholder="{% trans 'Name' %}"> | ||||
|                             </div> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="sr-only" for="id_signup_email">{% trans "Email Address" %}</label> | ||||
|                                 <input type="email" id="id_signup_email" class="form-control" name="signup_email" placeholder="{% trans 'Email Address' %}"> | ||||
|                             </div> | ||||
|                         {% endif %} | ||||
|                         {% for field in form %} | ||||
|                         {% csrf_token %} | ||||
|                         {% for field in form %} | ||||
|                         {% bootstrap_field field show_label=False type='fields'%} | ||||
|                         {% endfor %} | ||||
|                     </form> | ||||
|  | @ -91,9 +81,7 @@ | |||
|                     <h3><b>{%trans "Credit Card"%}</b></h3> | ||||
|                     <hr class="top-hr"> | ||||
|                     <p> | ||||
|                         {% blocktrans %} | ||||
|                         Please fill in your credit card information below. We are using <a href="https://stripe.com" target="_blank">Stripe</a> for payment and do not store your information in our database. | ||||
|                         {% endblocktrans %} | ||||
|                         {% blocktrans %}Please fill in your credit card information below. We are using <a href="https://stripe.com" target="_blank">Stripe</a> for payment and do not store your information in our database.{% endblocktrans %} | ||||
|                     </p> | ||||
|                     <div> | ||||
|                         {% if credit_card_data.last4 %} | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ from membership.models import CustomUser, StripeCustomer | |||
| from opennebula_api.models import OpenNebulaManager | ||||
| from opennebula_api.serializers import VirtualMachineTemplateSerializer, \ | ||||
|     VMTemplateSerializer | ||||
| from utils.forms import BillingAddressForm | ||||
| from utils.forms import BillingAddressForm, BillingAddressFormSignup | ||||
| from utils.mailer import BaseEmail | ||||
| from utils.stripe_utils import StripeUtils | ||||
| from utils.tasks import send_plain_email_task | ||||
|  | @ -281,10 +281,10 @@ class IndexView(CreateView): | |||
|             opennebula_vm_template_id=template_id).first() | ||||
|         template_data = VMTemplateSerializer(template).data | ||||
| 
 | ||||
|         name = request.POST.get('name') | ||||
|         email = request.POST.get('email') | ||||
|         name_field = forms.CharField() | ||||
|         email_field = forms.EmailField() | ||||
|         # name = request.POST.get('name') | ||||
|         # email = request.POST.get('email') | ||||
|         # name_field = forms.CharField() | ||||
|         # email_field = forms.EmailField() | ||||
| 
 | ||||
|         try: | ||||
|             cores = cores_field.clean(cores) | ||||
|  | @ -313,23 +313,23 @@ class IndexView(CreateView): | |||
|             return HttpResponseRedirect( | ||||
|                 reverse('datacenterlight:index') + "#order_form") | ||||
| 
 | ||||
|         try: | ||||
|             name = name_field.clean(name) | ||||
|         except ValidationError as err: | ||||
|             msg = '{} {}.'.format(name, _('is not a proper name')) | ||||
|             messages.add_message(self.request, messages.ERROR, msg, | ||||
|                                  extra_tags='name') | ||||
|             return HttpResponseRedirect( | ||||
|                 reverse('datacenterlight:index') + "#order_form") | ||||
|         # try: | ||||
|         #     name = name_field.clean(name) | ||||
|         # except ValidationError as err: | ||||
|         #     msg = '{} {}.'.format(name, _('is not a proper name')) | ||||
|         #     messages.add_message(self.request, messages.ERROR, msg, | ||||
|         #                          extra_tags='name') | ||||
|         #     return HttpResponseRedirect( | ||||
|         #         reverse('datacenterlight:index') + "#order_form") | ||||
| 
 | ||||
|         try: | ||||
|             email = email_field.clean(email) | ||||
|         except ValidationError as err: | ||||
|             msg = '{} {}.'.format(email, _('is not a proper email')) | ||||
|             messages.add_message(self.request, messages.ERROR, msg, | ||||
|                                  extra_tags='email') | ||||
|             return HttpResponseRedirect( | ||||
|                 reverse('datacenterlight:index') + "#order_form") | ||||
|         # try: | ||||
|         #     email = email_field.clean(email) | ||||
|         # except ValidationError as err: | ||||
|         #     msg = '{} {}.'.format(email, _('is not a proper email')) | ||||
|         #     messages.add_message(self.request, messages.ERROR, msg, | ||||
|         #                          extra_tags='email') | ||||
|         #     return HttpResponseRedirect( | ||||
|         #         reverse('datacenterlight:index') + "#order_form") | ||||
| 
 | ||||
|         specs = { | ||||
|             'cpu': cores, | ||||
|  | @ -338,14 +338,14 @@ class IndexView(CreateView): | |||
|             'price': price | ||||
|         } | ||||
| 
 | ||||
|         this_user = { | ||||
|             'name': name, | ||||
|             'email': email | ||||
|         } | ||||
|         # this_user = { | ||||
|         #     'name': name, | ||||
|         #     'email': email | ||||
|         # } | ||||
| 
 | ||||
|         request.session['specs'] = specs | ||||
|         request.session['template'] = template_data | ||||
|         request.session['user'] = this_user | ||||
|         # request.session['user'] = this_user | ||||
|         return HttpResponseRedirect(reverse('datacenterlight:payment')) | ||||
| 
 | ||||
|     def get_success_url(self): | ||||
|  | @ -408,11 +408,24 @@ class WhyDataCenterLightView(IndexView): | |||
| 
 | ||||
| class PaymentOrderView(FormView): | ||||
|     template_name = 'datacenterlight/landing_payment.html' | ||||
|     form_class = BillingAddressForm | ||||
| 
 | ||||
|     def get_form_class(self): | ||||
|         if self.request.user.is_authenticated(): | ||||
|             return BillingAddressForm | ||||
|         else: | ||||
|             return BillingAddressFormSignup | ||||
| 
 | ||||
|     def get_form_kwargs(self): | ||||
|         form_kwargs = super(PaymentOrderView, self).get_form_kwargs() | ||||
|         billing_address_data = self.request.session.get('billing_address_data') | ||||
|         # if user is signed in, get billing address | ||||
|         if self.request.user.is_authenticated(): | ||||
|             form_kwargs.update({ | ||||
|                 'instance': self.request.user.billing_addresses.first() | ||||
|             }) | ||||
|         else: | ||||
|             # if billing address in session, get data | ||||
|             billing_address_data = self.request.session.get( | ||||
|                 'billing_address_data') | ||||
|             if billing_address_data: | ||||
|                 form_kwargs.update({ | ||||
|                     'initial': { | ||||
|  | @ -436,30 +449,54 @@ class PaymentOrderView(FormView): | |||
| 
 | ||||
|     @cache_control(no_cache=True, must_revalidate=True, no_store=True) | ||||
|     def get(self, request, *args, **kwargs): | ||||
|         # user is no longer added to session in the index page | ||||
|         # if 'specs' not in request.session or 'user' not in request.session: | ||||
|         #     return HttpResponseRedirect(reverse('datacenterlight:index')) | ||||
|         if 'specs' not in request.session: | ||||
|             return HttpResponseRedirect(reverse('datacenterlight:index')) | ||||
|         return self.render_to_response(self.get_context_data()) | ||||
| 
 | ||||
|     def post(self, request, *args, **kwargs): | ||||
|         form = self.get_form() | ||||
|         if form.is_valid(): | ||||
|             # name = request.POST.get('name') | ||||
|             # email = request.POST.get('email') | ||||
|             # name_field = forms.CharField() | ||||
|             # email_field = forms.EmailField() | ||||
|             # try: | ||||
|             #     name = name_field.clean(name) | ||||
|             # except ValidationError as err: | ||||
|             #     msg = '{} {}.'.format(name, _('is not a proper name')) | ||||
|             #     messages.add_message(self.request, messages.ERROR, msg, | ||||
|             #                          extra_tags='name') | ||||
|             #     return HttpResponseRedirect( | ||||
|             #         reverse('datacenterlight:payment')) | ||||
| 
 | ||||
|             # try: | ||||
|             #     email = email_field.clean(email) | ||||
|             # except ValidationError as err: | ||||
|             #     msg = '{} {}.'.format(email, _('is not a proper email')) | ||||
|             #     messages.add_message(self.request, messages.ERROR, msg, | ||||
|             #                          extra_tags='email') | ||||
|             #     return HttpResponseRedirect( | ||||
|             #         reverse('datacenterlight:payment')) | ||||
|             # Get billing address data | ||||
|             # user = request.session.get('user') | ||||
|             billing_address_data = form.cleaned_data | ||||
|             token = form.cleaned_data.get('token') | ||||
|             user = request.session.get('user') | ||||
|             try: | ||||
|                 CustomUser.objects.get(email=user.get('email')) | ||||
|                 CustomUser.objects.get(email=form.cleaned_data.get('email')) | ||||
|             except CustomUser.DoesNotExist: | ||||
|                 password = CustomUser.get_random_password() | ||||
|                 # Register the user, and do not send emails | ||||
|                 CustomUser.register(user.get('name'), | ||||
|                 CustomUser.register(form.cleaned_data.get('name'), | ||||
|                                     password, | ||||
|                                     user.get('email'), | ||||
|                                     form.cleaned_data.get('email'), | ||||
|                                     app='dcl', | ||||
|                                     base_url=None, send_email=False) | ||||
| 
 | ||||
|             # Get or create stripe customer | ||||
|             customer = StripeCustomer.get_or_create(email=user.get('email'), | ||||
|             customer = StripeCustomer.get_or_create( | ||||
|                 email=form.cleaned_data.get('email'), | ||||
|                 token=token) | ||||
|             if not customer: | ||||
|                 form.add_error("__all__", "Invalid credit card") | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ msgid "" | |||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2017-09-07 19:54+0530\n" | ||||
| "POT-Creation-Date: 2017-09-08 20:44+0530\n" | ||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | ||||
|  | @ -365,12 +365,6 @@ msgstr "" | |||
| msgid "Type" | ||||
| msgstr "Kartentyp" | ||||
| 
 | ||||
| msgid "REMOVE CARD" | ||||
| msgstr "KARTE ENTFERNEN" | ||||
| 
 | ||||
| msgid "EDIT CARD" | ||||
| msgstr "BEARBEITEN" | ||||
| 
 | ||||
| msgid "No Credit Cards Added" | ||||
| msgstr "Es wurde keine Kreditkarte hinzugefügt" | ||||
| 
 | ||||
|  | @ -378,9 +372,8 @@ msgid "" | |||
| "We are using <a href=\"https://stripe.com\">Stripe</a> for payment and do " | ||||
| "not store your information in our database." | ||||
| msgstr "" | ||||
| "Wir nutzen <a href=" | ||||
| "\"https://stripe.com\" target=\"_blank\">Stripe</a> für die Bezahlung und " | ||||
| "speichern keine Informationen in unserer Datenbank." | ||||
| "Wir nutzen <a href=\"https://stripe.com\" target=\"_blank\">Stripe</a> für " | ||||
| "die Bezahlung und speichern keine Informationen in unserer Datenbank." | ||||
| 
 | ||||
| msgid "Add your public SSH key" | ||||
| msgstr "Füge deinen öffentlichen SSH-Key hinzu" | ||||
|  | @ -502,7 +495,7 @@ msgid "View Detail" | |||
| msgstr "Details anzeigen" | ||||
| 
 | ||||
| msgid "login" | ||||
| msgstr "Einloggen" | ||||
| msgstr "Anmelden" | ||||
| 
 | ||||
| msgid "" | ||||
| "Thank you for signing up. We have sent an email to you. Please follow the " | ||||
|  | @ -539,6 +532,12 @@ msgid "" | |||
| "contact Data Center Light Support." | ||||
| msgstr "Kontaktiere den Data Center Light Support." | ||||
| 
 | ||||
| #~ msgid "REMOVE CARD" | ||||
| #~ msgstr "KARTE ENTFERNEN" | ||||
| 
 | ||||
| #~ msgid "EDIT CARD" | ||||
| #~ msgstr "BEARBEITEN" | ||||
| 
 | ||||
| #~ msgid "Add a new Card." | ||||
| #~ msgstr "Neue Kreditkarte hinzufügen." | ||||
| 
 | ||||
|  |  | |||
|  | @ -113,6 +113,12 @@ class BillingAddressForm(forms.ModelForm): | |||
|         } | ||||
| 
 | ||||
| 
 | ||||
| class BillingAddressFormSignup(BillingAddressForm): | ||||
|     name = forms.CharField(label=_('Name')) | ||||
|     email = forms.EmailField(label=_('Email Address')) | ||||
|     field_order = ['name', 'email'] | ||||
| 
 | ||||
| 
 | ||||
| class UserBillingAddressForm(forms.ModelForm): | ||||
|     user = forms.ModelChoiceField(queryset=CustomUser.objects.all(), | ||||
|                                   widget=forms.HiddenInput()) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue