mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
#16 to be continued... layout upgrade, still some work.
This commit is contained in:
@@ -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})
|
||||
|
||||
@@ -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
@@ -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})
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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'),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user