diff --git a/abonapp/templates/abonapp/charts.html b/abonapp/templates/abonapp/charts.html index 052a0a5..58bfbc0 100644 --- a/abonapp/templates/abonapp/charts.html +++ b/abonapp/templates/abonapp/charts.html @@ -11,14 +11,6 @@
{% if charts_data %}
-
- - - - -
{% else %}

{% trans 'Static info was Not found' %}

{% endif %} +
+ + + + +
+
diff --git a/abonapp/views.py b/abonapp/views.py index 35792d0..018f31e 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -579,21 +579,18 @@ def charts(request, gid, uid): abon.group = Group.objects.get(pk=gid) abon.save(update_fields=['group']) - if abon.ip_address is None: - charts_data = None - else: - charts_data = StatElem.objects.chart( - abon.username, - count_of_parts=30, - want_date=wandate - ) - - abontariff = abon.active_tariff() - if abontariff is not None: - trf = abontariff.tariff - high = trf.speedIn + trf.speedOut - if high > 100: - high = 100 + charts_data = StatElem.objects.chart( + abon.username, + count_of_parts=30, + want_date=wandate + ) + + abontariff = abon.active_tariff() + if abontariff is not None: + trf = abontariff.tariff + high = trf.speedIn + trf.speedOut + if high > 100: + high = 100 except models.Abon.DoesNotExist: messages.error(request, _('Abon does not exist')) diff --git a/statistics/models.py b/statistics/models.py index 5e772c0..7ce1f3b 100644 --- a/statistics/models.py +++ b/statistics/models.py @@ -1,6 +1,6 @@ import math from datetime import datetime, timedelta, date, time -from django.db import models, connection +from django.db import models, connection, ProgrammingError from django.utils.timezone import now from mydefs import MyGenericIPAddressField @@ -28,24 +28,29 @@ class StatManager(models.Manager): def avarage(elements): return sum(elements) / len(elements) - charts_data = self.filter(uname=username) - charts_times = [cd.cur_time.timestamp()*1000 for cd in charts_data] - charts_octets = [cd.octets for cd in charts_data] - if len(charts_octets) > 0 and len(charts_octets) == len(charts_times): - charts_octets = split_list(charts_octets, count_of_parts) - charts_octets = [byte_to_mbit(avarage(c)) for c in charts_octets] - - charts_times = split_list(charts_times, count_of_parts) - charts_times = [avarage(t) for t in charts_times] - - charts_data = zip(charts_times, charts_octets) - charts_data = ["{x: new Date(%d), y: %.2f}" % (cd[0], cd[1]) for cd in charts_data] - midnight = datetime.combine(want_date, time.min) - charts_data.append("{x:new Date(%d),y:0}" % (int(charts_times[-1:][0]) + 1)) - charts_data.append("{x:new Date(%d),y:0}" % (int((midnight + timedelta(days=1)).timestamp()) * 1000)) - return charts_data - else: - return + try: + charts_data = self.filter(uname=username) + charts_times = [cd.cur_time.timestamp()*1000 for cd in charts_data] + charts_octets = [cd.octets for cd in charts_data] + if len(charts_octets) > 0 and len(charts_octets) == len(charts_times): + charts_octets = split_list(charts_octets, count_of_parts) + charts_octets = [byte_to_mbit(avarage(c)) for c in charts_octets] + + charts_times = split_list(charts_times, count_of_parts) + charts_times = [avarage(t) for t in charts_times] + + charts_data = zip(charts_times, charts_octets) + charts_data = ["{x: new Date(%d), y: %.2f}" % (cd[0], cd[1]) for cd in charts_data] + midnight = datetime.combine(want_date, time.min) + charts_data.append("{x:new Date(%d),y:0}" % (int(charts_times[-1:][0]) + 1)) + charts_data.append("{x:new Date(%d),y:0}" % (int((midnight + timedelta(days=1)).timestamp()) * 1000)) + return charts_data + else: + return + except ProgrammingError as e: + if "Table 'djing_db_n.flowstat" in str(e): + return + class StatElem(models.Model): diff --git a/templates/site_base.html b/templates/site_base.html new file mode 100644 index 0000000..6585817 --- /dev/null +++ b/templates/site_base.html @@ -0,0 +1 @@ +{% include 'all_base.html' %}