mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
108 lines
2.8 KiB
Python
108 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
graph plugin do display rrd stats
|
|
|
|
This module provides rrdtool support to retreive statistics
|
|
from postfix log : sent, received, bounced, rejected
|
|
|
|
"""
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext as _
|
|
from django.conf.urls.defaults import *
|
|
from mailng.lib import events, _render
|
|
from mailng.admin.views import is_superuser
|
|
from mailng.admin.models import Domain, Mailbox
|
|
#from mailng.extensions.stats.mailrrd import parser
|
|
from django.contrib.auth.decorators \
|
|
import login_required
|
|
import pdb
|
|
|
|
graph_nature = ["sent_recv","boun_reje"]
|
|
graph_types = ["AVERAGE","MAX"]
|
|
tmp_path = "static/tmp"
|
|
|
|
def init():
|
|
events.register("AdminMenuDisplay", menu)
|
|
|
|
def urls():
|
|
return (r'^mailng/stats/',
|
|
include('mailng.extensions.stats.urls'))
|
|
|
|
|
|
def menu(**kwargs):
|
|
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 []
|
|
|
|
|
|
@login_required
|
|
def domain(request,dom_id):
|
|
domains = []
|
|
errors = []
|
|
return graph_display(request,dom_id,graph_types)
|
|
|
|
@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 :
|
|
graph_type = [graph_t]
|
|
|
|
if dom_id:
|
|
domain = Domain.objects.get(pk=dom_id)
|
|
if domain:
|
|
domains.append(domain)
|
|
|
|
if domains == []:
|
|
errors.append(_("No Domain defined"))
|
|
|
|
|
|
for d in domains:
|
|
P = parser(d.name)
|
|
if type(P) == type('err'):
|
|
errors.append(P)
|
|
else:
|
|
P.plot_rrd()
|
|
|
|
return _render(request, 'stats/index.html', {
|
|
"page" : "Domain statistics", "graph" : graph_nature,
|
|
"domain":domain,"domains" : domains, "messages" : errors ,
|
|
"types" : graph_type, "tmp_path" : tmp_path})
|
|
|
|
|
|
@login_required
|
|
def index(request, dom_id=None):
|
|
domains = []
|
|
errors = []
|
|
domain = None
|
|
if dom_id:
|
|
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()
|
|
|
|
if domains == []:
|
|
errors.append(_("No Domain defined"))
|
|
return _render(request, 'stats/index.html', {
|
|
"page" : "Statistics",
|
|
"domain" : domain, "domains": domains, "messages" : errors ,
|
|
"periods" : ["day", "week", "month", "year"]
|
|
})
|