Statistics plugin update.
This commit is contained in:
tonio
2011-01-05 09:52:38 +01:00
parent 370cec7723
commit e0263794eb
7 changed files with 137 additions and 158 deletions
+3
View File
@@ -3,3 +3,6 @@
static/tmp
static/js/ckeditor
settings.py
doc/.build
doc/.static
doc/.templates
-8
View File
@@ -39,14 +39,6 @@ def urls(prefix):
include('modoboa.extensions.stats.urls'))
def menu(**kwargs):
if kwargs["target"] == "admin_menu_bar":
domain_id = kwargs['domain']
return [
{"label" : _("Statistics"),
"name" : "stats",
"url" : reverse('domindex', args=[domain_id]),
"img" : static_url("pics/graph.png")}
]
if kwargs["target"] == "admin_menu_box":
return [
{"name" : "stats",
@@ -1,8 +0,0 @@
{% extends "nlayout.html" %}
{% load i18n %}
{% load admin_extras %}
{% block middletitle %}{% trans "Global statistics" %}{% endblock %}
{% block menu %}{% domains_menu "stats" user %}{% endblock %}
{% block content %}
{% include "stats/content.html" %}
{% endblock %}
@@ -1,114 +0,0 @@
{% load i18n %}
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/calendar.css" />
<style type="text/css">
#selectors {
}
#periodbox, #domainbox {
float: left;
margin-right: 20px;
}
#graphs {
margin-top: 15px;
float: none;
}
#customperiod {
display: none;
border: 1px solid #dddddd;
float: left;
padding: 3px;
margin-top: -3px;
}
</style>
<script type="text/javascript">
window.addEvent("domready", function() {
var myCal = new Calendar({
dateTravelStart: 'Y-m-d',
dateTravelEnd : 'Y-m-d'
}, {
direction: 0, // -1 past, 0 past + future, 1 future
pad: 1,
offset: 1, // first day of the week: 0 = sunday, 1 = monday, etc..
tweak: {x: -147, y: 18} // tweak calendar positioning
});
getgraph_callback = function(resp) {
if (resp.status == "ok") {
$("graphs").set("html", resp.content);
} else {
infobox.error(resp.error);
}
}
get_period = function() {
if ($("period").value != "custom") {
$("customperiod").setStyle("display", "none");
return "period=" + $("period").value;
}
$("customperiod").setStyle("display", "block");
if ($("dateTravelStart").value == "" || $("dateTravelEnd").value == "") {
return "";
}
return "period=custom"
+ "&start=" + $("dateTravelStart").value
+ "&end=" + $("dateTravelEnd").value;
}
get_graph = function(evt) {
{% if admin %}
var url = "{% url getgraph_root %}" + $("domain").value + "/";
{% else %}
var url = "{% url getgraph domain.id %}";
{% endif %}
var p = get_period();
if (p == "") {
return;
}
new Request.JSON({url : url + "?" + p, noCache: true,
onSuccess : getgraph_callback}).get();
}
{% if admin %}
$("domain").addEvent("change", get_graph);
{% endif %}
$("period").addEvent("change", get_graph);
$("customsend").addEvent("click", get_graph);
});
</script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/calendar.js"></script>
<div id="selectors">
{% if admin %}
<div id="domainbox">
<label for="domain">{% trans "Domain:" %}</label>
<select id="domain" name="domain">
<option value="global" {% ifequal domain "global" %}selected{% endifequal %}>{% trans "Global" %}</option>
{% for d in domains %}
<option value="{{ d.id }}" {% ifequal d.name domain %}selected{% endifequal %}>{{ d.name }}</option>
{% endfor %}
</select>
</div>
{% endif %}
<div id="periodbox">
<label for="period">{% trans "Period:" %}</label>
<select id="period" name="period">
{% for p in periods %}
<option value="{{ p.name }}" {% ifequal p.name period %}selected{% endifequal %}>{{ p.label }}</option>
{% endfor %}
</select>
</div>
<div id="customperiod">
{% url extensions.stats.main.custom_period as c_stats_url %}
{% trans "Start" %}: <input id="dateTravelStart" name="start"
value="{{ start }}" type="text"/>
{% trans "End" %}: <input id="dateTravelEnd" name="end"
value="{{ end }}" type="text" />
<input type="button" id="customsend" value="ok">
</div>
</div>
<div class="spacer"></div>
<div id="graphs">
{% include "stats/graphs.html" %}
</div>
+118 -6
View File
@@ -1,8 +1,120 @@
{% extends "admin/domain_header.html" %}
{% block menu %}
{% load admin_extras %}
{% domain_menu domain.id "stats" user %}
{% extends "admin/domains_header.html" %}
{% load i18n %}
{% block html_head %}
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/calendar.css" />
<style type="text/css">
#selectors {
}
#periodbox, #domainbox {
float: left;
margin-right: 20px;
}
#graphs {
margin-top: 15px;
float: none;
}
#customperiod {
display: none;
border: 1px solid #dddddd;
float: left;
padding: 3px;
margin-top: -3px;
}
</style>
<script type="text/javascript" src="{{ MEDIA_URL }}js/calendar.js"></script>
<script type="text/javascript">
window.addEvent("domready", function() {
var myCal = new Calendar({
dateTravelStart: 'Y-m-d',
dateTravelEnd : 'Y-m-d'
}, {
direction: 0, // -1 past, 0 past + future, 1 future
pad: 1,
offset: 1, // first day of the week: 0 = sunday, 1 = monday, etc..
tweak: {x: -147, y: 18} // tweak calendar positioning
});
getgraph_callback = function(resp) {
if (resp.status == "ok") {
$("graphs").set("html", resp.content);
} else {
infobox.error(resp.error);
}
}
get_period = function() {
if ($("period").value != "custom") {
$("customperiod").setStyle("display", "none");
return "period=" + $("period").value;
}
$("customperiod").setStyle("display", "block");
if ($("dateTravelStart").value == "" || $("dateTravelEnd").value == "") {
return "";
}
return "period=custom"
+ "&start=" + $("dateTravelStart").value
+ "&end=" + $("dateTravelEnd").value;
}
get_graph = function(evt) {
{% if user.is_superuser %}
var url = "{% url getgraph_root %}" + $("domain").value + "/";
{% else %}
var url = "{% url getgraph domain.id %}";
{% endif %}
var p = get_period();
if (p == "") {
return;
}
new Request.JSON({url : url + "?" + p, noCache: true,
onSuccess : getgraph_callback}).get();
}
{% if user.is_superuser %}
$("domain").addEvent("change", get_graph);
{% endif %}
$("period").addEvent("change", get_graph);
$("customsend").addEvent("click", get_graph);
});
</script>
{% endblock %}
{% block domcontent %}
{% include "stats/content.html" %}
{% block pagetitle %}{% trans "Statistics" %}{% endblock %}
{% block subcontent %}
<div id="selectors">
{% if user.is_superuser %}
<div id="domainbox">
<label for="domain">{% trans "Domain:" %}</label>
<select id="domain" name="domain">
<option value="global" {% ifequal domain "global" %}selected{% endifequal %}>{% trans "Global" %}</option>
{% for d in domains %}
<option value="{{ d.id }}" {% ifequal d.name domain %}selected{% endifequal %}>{{ d.name }}</option>
{% endfor %}
</select>
</div>
{% endif %}
<div id="periodbox">
<label for="period">{% trans "Period:" %}</label>
<select id="period" name="period">
{% for p in periods %}
<option value="{{ p.name }}" {% ifequal p.name period %}selected{% endifequal %}>{{ p.label }}</option>
{% endfor %}
</select>
</div>
<div id="customperiod">
{% trans "Start" %}: <input id="dateTravelStart" name="start"
value="{{ start }}" type="text"/>
{% trans "End" %}: <input id="dateTravelEnd" name="end"
value="{{ end }}" type="text" />
<input type="button" id="customsend" value="ok">
</div>
</div>
<div class="spacer"></div>
<div id="graphs">
{% include "stats/graphs.html" %}
</div>
{% endblock %}
+1 -2
View File
@@ -1,8 +1,7 @@
from django.conf.urls.defaults import *
urlpatterns = patterns('modoboa.extensions.stats.views',
url(r'^$', 'adminindex', name='fullindex'),
url(r'^(?P<dom_id>\d+)/$', 'index', name='domindex'),
url(r'^$', 'index', name='fullindex'),
url(r'^graph/$', "getgraph", name="getgraph_root"),
url(r'^graph/(?P<dom_id>\w+)/$', "getgraph", name="getgraph"),
)
+15 -20
View File
@@ -21,33 +21,28 @@ periods = [{"name" : "day", "label" : _("Day")},
{"name" : "year", "label" : _("Year")},
{"name" : "custom", "label" : _("Custom")}]
@login_required
@user_passes_test(lambda u: u.is_superuser)
def adminindex(request):
domains = Domain.objects.all()
return _render(request, 'stats/adminindex.html', {
"admin" : True,
"domain" : "global",
"domains" : domains,
"graphs" : graph_list,
"periods" : periods,
"period" : "day"})
@login_required
@good_domain
@permission_required("admin.view_mailboxes")
def index(request, dom_id=None):
def index(request):
domain = None
domains = None
period = request.GET.has_key("period") and request.GET["period"] or "day"
if request.user.has_perm("admin.view_mailboxes"):
domain = Domain.objects.get(pk=dom_id)
domid = request.GET.has_key("domid") and request.GET["domid"] or ""
if request.user.is_superuser:
domains = Domain.objects.all()
else:
domain = Domain.objects.get(pk=domid)
return _render(request, 'stats/index.html', {
"domain" : domain,
"graphs" : graph_list,
"periods" : periods,
"period" : period
})
"domains" : domains,
"domain" : domain,
"graphs" : graph_list,
"periods" : periods,
"period" : period,
"selection" : "stats",
"domid" : domid
})
@login_required
@good_domain