From 2cf1428450ced91f38d5e09c96d5e825562f6f8f Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Thu, 21 Jul 2016 16:47:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B9=20"?= =?UTF-8?q?=D0=B2=D1=81=D0=B5=D0=B3=D0=BE"=20=D0=BF=D0=BE=20=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D1=8C=D0=BC=D0=B0=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../django/newsletter/views/admin_views.py | 21 +++++++++++-------- .../c_admin/newsletters/newsletter_stat.html | 8 +++---- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/emencia/django/newsletter/views/admin_views.py b/emencia/django/newsletter/views/admin_views.py index 1d1c5579..45b65d71 100644 --- a/emencia/django/newsletter/views/admin_views.py +++ b/emencia/django/newsletter/views/admin_views.py @@ -320,15 +320,18 @@ class NewsletterStatistics(DetailView): return context def get_stat_data(self, params={}): - sent = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.SENT, **params).count() - errors = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.ERROR, **params).count() - opened = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.OPENED, **params).\ + qs = self.object.contactmailingstatus_set + sent = qs.filter(status=ContactMailingStatus.SENT, **params).count() + errors = qs.filter(status=ContactMailingStatus.ERROR, **params).count() + _opened_qs = qs.filter(status=ContactMailingStatus.OPENED, **params).\ + values_list('contact', flat=True) + opened = _opened_qs.distinct().count() + opened_all = _opened_qs.count() + unsubscribed = qs.filter(status=ContactMailingStatus.UNSUBSCRIPTION, **params).\ values_list('contact', flat=True).distinct().count() - unsubscribed = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.UNSUBSCRIPTION, **params).\ - values_list('contact', flat=True).distinct().count() - no_data = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.ANNOUNCE_NO_DATA, **params).count() - links = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.LINK_OPENED, **params).count() - links_unique = self.object.contactmailingstatus_set.filter(status=ContactMailingStatus.LINK_OPENED, **params).\ + no_data = qs.filter(status=ContactMailingStatus.ANNOUNCE_NO_DATA, **params).count() + links = qs.filter(status=ContactMailingStatus.LINK_OPENED, **params).count() + links_unique = qs.filter(status=ContactMailingStatus.LINK_OPENED, **params).\ values_list('contact', flat=True).distinct().count() CMS = ContactMailingStatus opened_percent = 0 if opened or sent == 0 else (float(opened)/sent)*100 @@ -337,7 +340,7 @@ class NewsletterStatistics(DetailView): stat = { 'sent': {'data': sent, 'filter': ""}, 'errors': {'data': errors, 'filter': CMS.ERROR}, - 'opened': {'data': opened, 'filter': CMS.OPENED, 'percent': opened_percent}, + 'opened': {'data': opened, 'data_all': opened_all, 'filter': CMS.OPENED, 'percent': opened_percent}, 'unsub': {'data': unsubscribed, 'filter': CMS.UNSUBSCRIPTION, 'percent': unsub_percent}, 'no_data': {'data': no_data, 'filter': CMS.ANNOUNCE_NO_DATA}, 'links': {'data': links, 'filter': CMS.LINK_OPENED}, diff --git a/templates/c_admin/newsletters/newsletter_stat.html b/templates/c_admin/newsletters/newsletter_stat.html index 97aa4432..e9f399c3 100644 --- a/templates/c_admin/newsletters/newsletter_stat.html +++ b/templates/c_admin/newsletters/newsletter_stat.html @@ -37,10 +37,9 @@ {{ stat.errors.data }} Подробно - - Открыто(уникальных) - {{ stat.opened.data }} {% if stat.opened.percent %} ({{ stat.opened.percent|floatformat:"0" }}%) {% endif %} + Открыто(уникальных/всего) + {{ stat.opened.data }} {% if stat.opened.percent %} ({{ stat.opened.percent|floatformat:"0" }}%) {% endif %}/ {{ stat.opened.data_all }} Подробно @@ -48,8 +47,7 @@ {{ stat.unsub.data }} {% if stat.unsub.percent %} ({{ stat.unsub.percent|floatformat:"0" }}%) {% endif %} Подробно - - + Нет данных {{ stat.no_data.data }} Подробно