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