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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dashboard-container.wide {
 | 
			
		||||
  padding-top: 90px;
 | 
			
		||||
  max-width: 980px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.content-dashboard{
 | 
			
		||||
	min-height: calc(100vh - 70px);
 | 
			
		||||
	width: 80%;
 | 
			
		||||
| 
						 | 
				
			
			@ -234,3 +239,26 @@
 | 
			
		|||
  -ms-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."
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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):
 | 
			
		||||
    template_name = "hosting/django.html"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -489,6 +475,52 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
 | 
			
		|||
            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):
 | 
			
		||||
    template_name = 'hosting/payment.html'
 | 
			
		||||
    login_url = reverse_lazy('hosting:login')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue