#16 to be continued... layout upgrade, still some work.

This commit is contained in:
fd
2009-10-30 14:53:28 +01:00
parent 35ffb59572
commit 8c2e675d11
5 changed files with 47 additions and 36 deletions
+1 -1
View File
@@ -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})
+8 -9
View File
@@ -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',
+28 -21
View File
@@ -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})
+8 -3
View File
@@ -32,12 +32,17 @@
</script>
{% 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 %}
<div id="graphcontent">
<table>
@@ -50,7 +55,7 @@
</tr>
<tr>
<td>
<img src="/{{ tmp_path }}/{{ g }}_{{ t }}_{{ d }}_postfix.png" alt="/{{ tmp_path }}/{{ g }}_{{ t }}_{{ d }}_postfix.png"/>
<img src="/{{ tmp_path }}/{{ g }}_{{ t }}_{{ d }}_postfix.png" alt="No statistics available"/>
</td>
</tr>
{% endfor %}
+2 -2
View File
@@ -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<dom_id>\d+)/$', 'index', name='domindex'),
(r'^display/(?P<dom_id>\d+)/(?P<graph_t>\w+)/$', 'graph_display'),
(r'^domain/(?P<dom_id>\d+)/$', 'domain'),
)