From 8c2e675d1166c3eea709012c26062cd1fd4eedd5 Mon Sep 17 00:00:00 2001 From: fd Date: Fri, 30 Oct 2009 14:53:28 +0100 Subject: [PATCH] #16 to be continued... layout upgrade, still some work. --- admin/templatetags/admin_extras.py | 2 +- extensions/stats/mailrrd.py | 17 +++++----- extensions/stats/main.py | 49 +++++++++++++++------------ extensions/stats/templates/index.html | 11 ++++-- extensions/stats/urls.py | 4 +-- 5 files changed, 47 insertions(+), 36 deletions(-) diff --git a/admin/templatetags/admin_extras.py b/admin/templatetags/admin_extras.py index fe9a5f067..99ca98f98 100644 --- a/admin/templatetags/admin_extras.py +++ b/admin/templatetags/admin_extras.py @@ -39,7 +39,7 @@ def domain_menu(domain_id, selection, perms): "class" : "boxed", "rel" : "{handler:'iframe',size:{x:300,y:180}}"} ] - entries += events.raiseQueryEvent("AdminMenuDisplay", target="admin_menu_bar") + entries += events.raiseQueryEvent("AdminMenuDisplay", target="admin_menu_bar" , domain=domain_id) return render_to_string('main/menu.html', {"selection" : selection, "entries" : entries, "perms" : perms}) diff --git a/extensions/stats/mailrrd.py b/extensions/stats/mailrrd.py index 00ce79505..b65f92afe 100755 --- a/extensions/stats/mailrrd.py +++ b/extensions/stats/mailrrd.py @@ -64,9 +64,14 @@ class parser(): create=False,year=None,debug=False,verbose=False,graph=None): """constructor """ + self.logfile = logfile + try: + self.f = open(logfile) + except IOError as (errno, strerror): + print "[rrd] I/O error({0}): {1} ".format(errno, strerror)+logfile + return None self.domain = str(domain) #.replace(".","_") self.enable_year_decrement = None - self.logfile = logfile self.rrdfile = tmp_path + self.domain+"_"+rrdfile self.create = create self.year = year @@ -78,10 +83,7 @@ class parser(): self.natures = ['sent_recv','boun_reje'] self.legend = {'sent_recv' : ['sent messages','received messages'], 'boun_reje' : ['bounced messages','rejected messages']} - try: - self.f = open(logfile) - except IOError as (errno, strerror): - print "I/O error({0}): {1} ".format(errno, strerror)+logfile + self.data = {} self.last_month = None if not self.year: @@ -335,10 +337,7 @@ class parser(): path = '%s%s_%s_%s'%(tmp_path,n,t,os.path.basename(self.imgFile)) ds1 = n.split('_')[0] ds2 = n.split('_')[1] - print 'DEF:%s=%s:%s:%s:' %(ds1,ds1, self.rrdfile,t) - print 'DEF:%s=%s:%s:%s:' %(ds2,ds2, self.rrdfile,t) - print 'LINE:%s%s:%s messages' %(ds1,color1,self.legend[n][0]) - print 'LINE:%s%s:%s messages' %(ds2,color2,self.legend[n][1]) + rrdtool.graph( path, '--imgformat','PNG', diff --git a/extensions/stats/main.py b/extensions/stats/main.py index 67cfea8e0..9efe617f6 100644 --- a/extensions/stats/main.py +++ b/extensions/stats/main.py @@ -16,7 +16,6 @@ from mailng.admin.models import Domain, Mailbox from mailng.extensions.stats.mailrrd import parser from django.contrib.auth.decorators \ import login_required -#from models import Stats import pdb graph_nature = ["sent_recv","boun_reje"] @@ -24,7 +23,7 @@ graph_types = ["AVERAGE","MAX"] tmp_path = "static/tmp" def init(): - events.register("UserMenuDisplay", menu) + events.register("AdminMenuDisplay", menu) def urls(): return (r'^mailng/stats/', @@ -32,14 +31,18 @@ def urls(): def menu(**kwargs): - if kwargs["target"] != "user_menu_box": + print kwargs + domain_id = kwargs['domain'] + if kwargs["target"] == "admin_menu_bar": + return [ + {"label" : _("Statistics"), + "name" : "stats", + "url" : reverse('domindex', args=[domain_id]), + "img" : "/static/pics/graph.png"} + ] + else: return [] - return [ - {"name" : _("Statistics"), - "url" : reverse(index), - "img" : "/static/pics/graph.png"} - ] @login_required def domain(request,dom_id): @@ -47,11 +50,12 @@ def domain(request,dom_id): errors = [] return graph_display(request,dom_id,graph_types) -#@login_required -def graph_display(request,dom_id,graph_t): +@login_required +def graph_display(request,dom_id,graph_t=graph_types): domains = [] errors = [] graph_type = None + domain=None if type(graph_t) == type([]): graph_type = graph_t else : @@ -68,26 +72,29 @@ def graph_display(request,dom_id,graph_t): for d in domains: P = parser(d.name) - P.plot_rrd() + if type(P) == type('err'): + errors.append(P) + else: + P.plot_rrd() return _render(request, 'stats/index.html', { "page" : "Domain statistics", "graph" : graph_nature, - "domains" : domains, "messages" : "graph display" , + "domain":domain,"domains" : domains, "messages" : errors , "types" : graph_type, "tmp_path" : tmp_path}) @login_required -def index(request, message=None): +def index(request, dom_id=None): domains = [] errors = [] + domain = None if not is_superuser(request.user): - if not request.user.has_perm("admin.view_domains"): - if request.user.has_perm("admin.view_mailboxes"): - mb = Mailbox.objects.get(user=request.user.id) - dom_id=mb.domain.id - domain = Domain.objects.get(pk=dom_id) - if domain: - domains.append(domain) + if request.user.has_perm("admin.view_mailboxes"): + domain = Domain.objects.get(pk=dom_id) + if domain: + domains.append(domain) + else: + print "pas de dom" else: domains = Domain.objects.all() @@ -95,4 +102,4 @@ def index(request, message=None): errors.append(_("No Domain defined")) return _render(request, 'stats/index.html', { "page" : "Statistics", - "domains" : domains, "messages" : errors ,"types" : graph_types}) + "domain" : domain, "domains": domains, "messages" : errors ,"types" : graph_types}) diff --git a/extensions/stats/templates/index.html b/extensions/stats/templates/index.html index ce160cadf..d5e0efb24 100644 --- a/extensions/stats/templates/index.html +++ b/extensions/stats/templates/index.html @@ -32,12 +32,17 @@ {% endblock %} +{% block menu %} +{% if domain %} +{% load admin_extras %} +{% domain_menu domain.id "stats" perms %} +{% endif %} +{% endblock %} + {% block middletitle %} {{ page }} {% endblock %} -{% block menu %} -{% endblock %} {% block content %}
@@ -50,7 +55,7 @@ {% endfor %} diff --git a/extensions/stats/urls.py b/extensions/stats/urls.py index ce6759077..bb2ee66dd 100644 --- a/extensions/stats/urls.py +++ b/extensions/stats/urls.py @@ -1,8 +1,8 @@ from django.conf.urls.defaults import * urlpatterns = patterns('mailng.extensions.stats.main', - (r'^$', 'index'), - (r'^index.html$', 'index'), + url(r'^$', 'index', name='fullindex'), + url(r'^(?P\d+)/$', 'index', name='domindex'), (r'^display/(?P\d+)/(?P\w+)/$', 'graph_display'), (r'^domain/(?P\d+)/$', 'domain'), )
- /{{ tmp_path }}/{{ g }}_{{ t }}_{{ d }}_postfix.png + No statistics available