diff --git a/hosting/models.py b/hosting/models.py index 49932f69..04f3ae30 100644 --- a/hosting/models.py +++ b/hosting/models.py @@ -1,7 +1,9 @@ import os import logging +from dateutil.relativedelta import relativedelta from django.db import models +from django.utils import timezone from django.utils.functional import cached_property from Crypto.PublicKey import RSA from membership.models import StripeCustomer, CustomUser @@ -172,3 +174,9 @@ class VMDetail(models.Model): ipv6 = models.TextField(default='') created_at = models.DateTimeField(auto_now_add=True) terminated_at = models.DateTimeField(null=True) + + def end_date(self): + end_date = self.terminated_at if self.terminated_at else timezone.now() + months = relativedelta(end_date, self.created_at).months or 1 + end_date = self.created_at + relativedelta(months=months, days=-1) + return end_date diff --git a/hosting/static/hosting/css/commons.css b/hosting/static/hosting/css/commons.css index 317caabc..cdf078a0 100644 --- a/hosting/static/hosting/css/commons.css +++ b/hosting/static/hosting/css/commons.css @@ -375,4 +375,12 @@ outline: none; color: #999; fill: #999; +} + +.locale_date { + opacity: 0; +} + +.locale_date.done{ + opacity: 1; } \ No newline at end of file diff --git a/hosting/templates/hosting/order_detail.html b/hosting/templates/hosting/order_detail.html index c81a893f..fe200f6e 100644 --- a/hosting/templates/hosting/order_detail.html +++ b/hosting/templates/hosting/order_detail.html @@ -32,11 +32,11 @@ {% endif %} <p> <strong>{% trans "Date" %}:</strong> - <span id="order-created_at"> + <span class="locale_date"> {% if order %} - {{order.created_at|date:'Y-m-d H:i'}} + {{order.created_at|date:'Y-m-d h:i a'}} {% else %} - {% now "Y-m-d H:i" %} + {% now "Y-m-d h:i a" %} {% endif %} </span> </p> @@ -107,7 +107,9 @@ {% if vm.created_at %} <p> <span>{% trans "Period" %}: </span> - <span>{{ vm.created_at|date:'Y/m/d' }} - {% if vm.terminated_at %}{{ vm.terminated_at|date:'Y/m/d' }}{% else %}{% now 'Y/m/d' %}{% endif %}</span> + <span> + <span class="locale_date" data-format="YYYY/MM/DD">{{ vm.created_at|date:'Y-m-d h:i a' }}</span> - <span class="locale_date" data-format="YYYY/MM/DD">{{ subscription_end_date|date:'Y-m-d h:i a' }}</span> + </span> </p> {% endif %} <p> @@ -194,12 +196,16 @@ <script type="text/javascript"> {% trans "Some problem encountered. Please try again later." as err_msg %} var create_vm_error_message = '{{err_msg|safe}}'; - window.onload = function () { - var locale_date = moment.utc(document.getElementById("order-created_at").textContent, 'YYYY-MM-DD HH:mm').toDate(); - locale_date = moment(locale_date).format("YYYY-MM-DD h:mm:ss a"); - document.getElementById('order-created_at').innerHTML = locale_date; - + var locale_dates = document.getElementsByClassName("locale_date"); + var formats = ['YYYY-MM-DD hh:mm a'] + var i; + for (i = 0; i < locale_dates.length; i++) { + var oldDate = moment.utc(locale_dates[i].textContent, formats); + var outputFormat = locale_dates[i].getAttribute('data-format') || oldDate._f; + locale_dates[i].innerHTML = oldDate.local().format(outputFormat); + locale_dates[i].className += ' done'; + } }; </script> {%endblock%} diff --git a/hosting/views.py b/hosting/views.py index 6b314f5b..f6d0f0eb 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -703,6 +703,7 @@ class OrdersHostingDetailView(LoginRequiredMixin, disk_size=context['vm']['disk_size'], memory=context['vm']['memory'] ) + context['subscription_end_date'] = vm_detail.end_date() except VMDetail.DoesNotExist: try: manager = OpenNebulaManager(