settings page design
This commit is contained in:
		
					parent
					
						
							
								c87e2cd36b
							
						
					
				
			
			
				commit
				
					
						daa50d4672
					
				
			
		
					 3 changed files with 225 additions and 14 deletions
				
			
		|  | @ -6,6 +6,11 @@ | ||||||
|   max-width: 768px; |   max-width: 768px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .dashboard-container.wide { | ||||||
|  |   padding-top: 90px; | ||||||
|  |   max-width: 980px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .content-dashboard{ | .content-dashboard{ | ||||||
| 	min-height: calc(100vh - 70px); | 	min-height: calc(100vh - 70px); | ||||||
| 	width: 80%; | 	width: 80%; | ||||||
|  | @ -234,3 +239,26 @@ | ||||||
|   -ms-transform: translate(-50%,-50%); |   -ms-transform: translate(-50%,-50%); | ||||||
|   transform: translate(-50%,-50%); |   transform: translate(-50%,-50%); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .settings-container { | ||||||
|  |   padding: 8px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .settings-container h4 { | ||||||
|  |   margin-bottom: 15px; | ||||||
|  |   color: #999; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .settings-container .card-expiry-element, | ||||||
|  | .settings-container .card-cvc-element { | ||||||
|  |   padding: 0 15px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .settings-container .stripe-payment-btn { | ||||||
|  |   float: none; | ||||||
|  |   position: static; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .credit-card-form { | ||||||
|  |   max-width: 360px; | ||||||
|  | } | ||||||
							
								
								
									
										151
									
								
								hosting/templates/hosting/settings.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								hosting/templates/hosting/settings.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,151 @@ | ||||||
|  | {% extends "hosting/base_short.html" %} | ||||||
|  | {% load staticfiles bootstrap3 i18n %} | ||||||
|  | 
 | ||||||
|  | {% block content %} | ||||||
|  |     <div class="dashboard-container wide"> | ||||||
|  |         <div class="dashboard-container-head"> | ||||||
|  |             <h1 class="dashboard-title-thin">{% trans "My Settings" %}</h1> | ||||||
|  |         </div> | ||||||
|  |         <!-- Credit card form --> | ||||||
|  |         <div class="settings-container"> | ||||||
|  |             <div class="row"> | ||||||
|  |                 <div class="col-sm-5 col-md-6  billing dcl-billing"> | ||||||
|  |                     <h3>{%trans "Billing Address"%}</h3> | ||||||
|  |                     <hr> | ||||||
|  |                     <form role="form" id="billing-form" method="post" action="" novalidate> | ||||||
|  |                         {% for field in form %} | ||||||
|  |                             {% csrf_token %} | ||||||
|  |                             {% bootstrap_field field show_label=False type='fields'%} | ||||||
|  |                         {% endfor %} | ||||||
|  |                     </form> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="col-sm-7 col-md-6 creditcard-box dcl-creditcard"> | ||||||
|  |                     <h3>{%trans "Credit Card"%}</h3> | ||||||
|  |                     <hr> | ||||||
|  |                     <div> | ||||||
|  |                         <div> | ||||||
|  |                             {% if credit_card_data.last4 %} | ||||||
|  |                                 <form role="form" id="payment-form-with-creditcard" novalidate> | ||||||
|  |                                     <h5 class="billing-head">Credit Card</h5> | ||||||
|  |                                     <h5 class="membership-lead">Last 4: *****{{credit_card_data.last4}}</h5> | ||||||
|  |                                     <h5 class="membership-lead">Type: {{credit_card_data.cc_brand}}</h5> | ||||||
|  |                                     <input type="hidden" name="credit_card_needed" value="false"/> | ||||||
|  |                                 </form> | ||||||
|  |                                 <div class="row"> | ||||||
|  |                                     <div class="col-xs-12"> | ||||||
|  |                                             {% if not messages and not form.non_field_errors %} | ||||||
|  |                                                 <p class="card-warning-content card-warning-addtional-margin"> | ||||||
|  |                                                     {% blocktrans %}You are not making any payment yet. After submitting your card information, you will be taken to the Confirm Order Page.{% endblocktrans %} | ||||||
|  |                                                 </p> | ||||||
|  |                                             {% endif %} | ||||||
|  |                                             <div id='payment_error'> | ||||||
|  |                                                 {% for message in messages %} | ||||||
|  |                                                     {% if 'failed_payment' or 'make_charge_error' in message.tags %} | ||||||
|  |                                                      <ul class="list-unstyled"><li> | ||||||
|  |                                                          <p class="card-warning-content card-warning-error">{{ message|safe }}</p> | ||||||
|  |                                                     </li></ul> | ||||||
|  |                                                     {% endif %} | ||||||
|  |                                                 {% endfor %} | ||||||
|  |                                                 {% for error in form.non_field_errors %} | ||||||
|  |                                                     <p class="card-warning-content card-warning-error"> | ||||||
|  |                                                         {{ error|escape }} | ||||||
|  |                                                     </p> | ||||||
|  |                                                 {% endfor %} | ||||||
|  |                                             </div> | ||||||
|  |                                         </div> | ||||||
|  |                                     <div class="col-xs-12"> | ||||||
|  |                                         <div class="col-xs-6 pull-right"> | ||||||
|  |                                             <button id="payment_button_with_creditcard" class="btn btn-success stripe-payment-btn" | ||||||
|  |                                                     type="submit"> | ||||||
|  |                                                 {%trans "Submit" %} | ||||||
|  |                                             </button> | ||||||
|  |                                         </div> | ||||||
|  |                                     </div> | ||||||
|  |                                 </div> | ||||||
|  |                             {% endif %} | ||||||
|  |                             <h4>{% trans "Add new Card" %}</h4> | ||||||
|  |                             <form action="" id="payment-form-new" class="credit-card-form" method="POST"> | ||||||
|  |                                 <input type="hidden" name="token"/> | ||||||
|  |                                 <div class="credit-card-goup"> | ||||||
|  |                                    <div class="card-element card-number-element"> | ||||||
|  |                                        <label>{%trans "Card Number" %}</label> | ||||||
|  |                                        <div id="card-number-element" class="field my-input"></div> | ||||||
|  |                                    </div> | ||||||
|  |                                    <div class="row"> | ||||||
|  |                                        <div class="col-xs-6 col-sm-4 card-element card-expiry-element"> | ||||||
|  |                                            <label>{%trans "Expiry Date" %}</label> | ||||||
|  |                                            <div id="card-expiry-element" class="field my-input"></div> | ||||||
|  |                                        </div> | ||||||
|  |                                        <div class="col-xs-6 col-sm-4 col-sm-offset-4 card-element card-cvc-element"> | ||||||
|  |                                            <label>{%trans "CVC" %}</label> | ||||||
|  |                                            <div id="card-cvc-element" class="field my-input"></div> | ||||||
|  |                                        </div> | ||||||
|  |                                    </div> | ||||||
|  |                                    <div class="card-element brand"> | ||||||
|  |                                        <label>{%trans "Card Type" %}</label> | ||||||
|  |                                        <i class="pf pf-credit-card" id="brand-icon"></i> | ||||||
|  |                                    </div> | ||||||
|  |                                 </div> | ||||||
|  |                                 <div id="card-errors" role="alert"></div> | ||||||
|  |                                 <div> | ||||||
|  |                                     {% if not messages and not form.non_field_errors %} | ||||||
|  |                                         <p class="card-warning-content"> | ||||||
|  |                                             {% blocktrans %}You are not making any payment here. After submitting your card information, you will be taken to the Confirm Order Page.{% endblocktrans %} | ||||||
|  |                                         </p> | ||||||
|  |                                     {% endif %} | ||||||
|  |                                     <div id='payment_error'> | ||||||
|  |                                         {% for message in messages %} | ||||||
|  |                                             {% if 'failed_payment' or 'make_charge_error' in message.tags %} | ||||||
|  |                                              <ul class="list-unstyled"><li> | ||||||
|  |                                                  <p class="card-warning-content card-warning-error">{{ message|safe }}</p> | ||||||
|  |                                             </li></ul> | ||||||
|  |                                             {% endif %} | ||||||
|  |                                         {% endfor %} | ||||||
|  | 
 | ||||||
|  |                                         {% for error in form.non_field_errors %} | ||||||
|  |                                             <p class="card-warning-content card-warning-error"> | ||||||
|  |                                                 {{ error|escape }} | ||||||
|  |                                             </p> | ||||||
|  |                                         {% endfor %} | ||||||
|  |                                     </div> | ||||||
|  |                                     <div class="row"> | ||||||
|  |                                         <div class="col-xs-6 col-xs-offset-6 text-right"> | ||||||
|  |                                             <button class="btn btn-success stripe-payment-btn" type="submit">{%trans "Submit" %} | ||||||
|  |                                             </button> | ||||||
|  |                                         </div> | ||||||
|  |                                     </div> | ||||||
|  |                                 </div> | ||||||
|  | 
 | ||||||
|  |                                 <div style="display:none;"> | ||||||
|  |                                     <p class="payment-errors"></p> | ||||||
|  |                                 </div> | ||||||
|  |                             </form> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <!-- stripe key data --> | ||||||
|  |     {% if stripe_key %} | ||||||
|  |         {% get_current_language as LANGUAGE_CODE %} | ||||||
|  |         <script type="text/javascript"> | ||||||
|  |             window.processing_text = '{%trans "Processing" %}'; | ||||||
|  |             window.enter_your_card_text = '{%trans "Enter your credit card number" %}'; | ||||||
|  | 
 | ||||||
|  |             (function () { | ||||||
|  |                 window.stripeKey = "{{stripe_key}}"; | ||||||
|  |                 window.current_lan = "{{LANGUAGE_CODE}}"; | ||||||
|  |             })(); | ||||||
|  |         </script> | ||||||
|  |     {%endif%} | ||||||
|  | 
 | ||||||
|  |     {% if credit_card_data.last4 and credit_card_data.cc_brand %} | ||||||
|  |         <script type="text/javascript"> | ||||||
|  |             (function () { | ||||||
|  |                 window.hasCreditcard = true; | ||||||
|  |             })(); | ||||||
|  |         </script> | ||||||
|  |     {%endif%} | ||||||
|  | {%endblock%} | ||||||
|  | @ -40,20 +40,6 @@ CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend | ||||||
|                     connection error. please try again in a few minutes." |                     connection error. please try again in a few minutes." | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SettingsView(View): |  | ||||||
|     template_name = "hosting/settings.html" |  | ||||||
| 
 |  | ||||||
|     def get_context_data(self, **kwargs): |  | ||||||
|         context = { |  | ||||||
| 
 |  | ||||||
|         } |  | ||||||
|         return context |  | ||||||
| 
 |  | ||||||
|     def get(self, request, *args, **kwargs): |  | ||||||
|         context = self.get_context_data() |  | ||||||
|         return render(request, self.template_name, context) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class DjangoHostingView(ProcessVMSelectionMixin, View): | class DjangoHostingView(ProcessVMSelectionMixin, View): | ||||||
|     template_name = "hosting/django.html" |     template_name = "hosting/django.html" | ||||||
| 
 | 
 | ||||||
|  | @ -489,6 +475,52 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): | ||||||
|             return self.form_invalid(form) |             return self.form_invalid(form) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class SettingsView(LoginRequiredMixin, FormView): | ||||||
|  |     template_name = "hosting/settings.html" | ||||||
|  |     login_url = reverse_lazy('hosting:login') | ||||||
|  |     form_class = BillingAddressForm | ||||||
|  | 
 | ||||||
|  |     def get_form_kwargs(self): | ||||||
|  |         current_billing_address = self.request.user.billing_addresses.first() | ||||||
|  |         form_kwargs = super(SettingsView, self).get_form_kwargs() | ||||||
|  |         if not current_billing_address: | ||||||
|  |             return form_kwargs | ||||||
|  | 
 | ||||||
|  |         form_kwargs.update({ | ||||||
|  |             'initial': { | ||||||
|  |                 'cardholder_name': current_billing_address.cardholder_name, | ||||||
|  |                 'street_address': current_billing_address.street_address, | ||||||
|  |                 'city': current_billing_address.city, | ||||||
|  |                 'postal_code': current_billing_address.postal_code, | ||||||
|  |                 'country': current_billing_address.country, | ||||||
|  |             } | ||||||
|  |         }) | ||||||
|  |         return form_kwargs | ||||||
|  | 
 | ||||||
|  |     def get_context_data(self, **kwargs): | ||||||
|  |         context = super(SettingsView, self).get_context_data(**kwargs) | ||||||
|  |         # Get user | ||||||
|  |         user = self.request.user | ||||||
|  | 
 | ||||||
|  |         # Get user last order | ||||||
|  |         last_hosting_order = HostingOrder.objects.filter( | ||||||
|  |             customer__user=user).last() | ||||||
|  | 
 | ||||||
|  |         # If user has already an hosting order, get the credit card data from | ||||||
|  |         # it | ||||||
|  |         if last_hosting_order: | ||||||
|  |             credit_card_data = last_hosting_order.get_cc_data() | ||||||
|  |             context.update({ | ||||||
|  |                 'credit_card_data': credit_card_data if credit_card_data else None, | ||||||
|  |             }) | ||||||
|  | 
 | ||||||
|  |         context.update({ | ||||||
|  |             'stripe_key': settings.STRIPE_API_PUBLIC_KEY | ||||||
|  |         }) | ||||||
|  | 
 | ||||||
|  |         return context | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class PaymentVMView(LoginRequiredMixin, FormView): | class PaymentVMView(LoginRequiredMixin, FormView): | ||||||
|     template_name = 'hosting/payment.html' |     template_name = 'hosting/payment.html' | ||||||
|     login_url = reverse_lazy('hosting:login') |     login_url = reverse_lazy('hosting:login') | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue