def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if gset not in gsets: raise NotFound(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs={}, period=period) domain = check_domain_access(request.user, searchq) if domain is None: return render_to_json_response({}) tplvars["domain"] = domain if period == "custom": if "start" not in request.GET or "end" not in request.GET: raise BadRequest(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] expr = re.compile(r'[:\- ]') period_name = "%s_%s" % (expr.sub('', start), expr.sub('', end)) start = date_to_timestamp(expr.split(start)) end = date_to_timestamp(expr.split(end)) else: end = int(time.mktime(time.localtime())) start = "-1%s" % period period_name = period tplvars['graphs'] = gsets[gset].export(tplvars["domain"], start, end) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end return render_to_json_response(tplvars)
def index(request): """ FIXME: how to select a default graph set ? """ deflocation = "graphs/?gset=mailtraffic" if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): raise NotFound(_("No statistics available")) graph_sets = events.raiseDictEvent('GetGraphSets') periods = [{ "name": "day", "label": _("Day") }, { "name": "week", "label": _("Week") }, { "name": "month", "label": _("Month") }, { "name": "year", "label": _("Year") }] return render( request, 'stats/index.html', { "periods": periods, "selection": "stats", "deflocation": deflocation, "graph_sets": graph_sets })
def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if gset not in gsets: raise NotFound(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs={}, period=period) domain = check_domain_access(request.user, searchq) if domain is None: return render_to_json_response({}) tplvars["domain"] = domain if period == "custom": if "start" not in request.GET or "end" not in request.GET: raise BadRequest(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] expr = re.compile(r'[:\- ]') period_name = "%s_%s" % (expr.sub('', start), expr.sub('', end)) start = date_to_timestamp(expr.split(start)) end = date_to_timestamp(expr.split(end)) else: end = int(time.mktime(time.localtime())) start = "-1%s" % period period_name = period tplvars["graphs"] = gsets[gset].export(tplvars["domain"], start, end) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end return render_to_json_response(tplvars)
def domain_modify_link(domain): linkdef = {"label": domain.name, "modal": True} if domain.__class__.__name__ == "Domain": linkdef["url"] = reverse("admin:domain_change", args=[domain.id]) linkdef["modalcb"] = "admin.domainform_cb" else: tmp = events.raiseDictEvent('GetDomainModifyLink', domain) for key in ['url', 'modalcb']: linkdef[key] = tmp[key] return render_link(linkdef)
def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if not gset in gsets: raise NotFound(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs=[], period=period) if searchq in [None, "global"]: if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): return render_to_json_response({}) tplvars.update( domain=Domain.objects.get_for_admin(request.user)[0].name ) else: tplvars.update(domain="global") else: domain = Domain.objects.filter(name__contains=searchq) if domain.count() != 1: return render_to_json_response({}) if not request.user.can_access(domain[0]): raise PermDeniedException tplvars.update(domain=domain[0].name) if period == "custom": if not "start" in request.GET or not "end" in request.GET: raise BadRequest(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] G = Grapher() expr = re.compile(r'[:\- ]') period_name = "%s_%s" % (expr.sub('', start), expr.sub('', end)) for tpl in gsets[gset].get_graphs(): tplvars['graphs'].append(tpl.display_name) G.process( tplvars["domain"], period_name, str2Time(*expr.split(start)), str2Time(*expr.split(end)), tpl ) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end else: tplvars['graphs'] = gsets[gset].get_graph_names() return render_to_json_response({ 'content': _render_to_string(request, "stats/graphs.html", tplvars) })
def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if not gset in gsets: raise ModoboaException(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs=[], period=period) if searchq in [None, "global"]: if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): return ajax_simple_response({"status": "ok"}) tplvars.update( domain=Domain.objects.get_for_admin(request.user)[0].name ) else: tplvars.update(domain="global") else: domain = Domain.objects.filter(name__contains=searchq) if domain.count() != 1: return ajax_simple_response({"status": "ok"}) if not request.user.can_access(domain[0]): raise PermDeniedException tplvars.update(domain=domain[0].name) if period == "custom": if not "start" in request.GET or not "end" in request.GET: raise ModoboaException(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] G = Grapher() period_name = "%s_%s" % (start.replace('-', ''), end.replace('-', '')) for tpl in gsets[gset].get_graphs(): tplvars['graphs'].append(tpl.display_name) G.process( tplvars["domain"], period_name, str2Time(*start.split('-')), str2Time(*end.split('-')), tpl ) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end else: tplvars['graphs'] = gsets[gset].get_graph_names() return ajax_simple_response(dict( status="ok", content=_render_to_string(request, "stats/graphs.html", tplvars) ))
def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if not gset in gsets: raise NotFound(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs=[], period=period) if searchq in [None, "global"]: if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): return render_to_json_response({}) tplvars.update( domain=Domain.objects.get_for_admin(request.user)[0].name) else: tplvars.update(domain="global") else: domain = Domain.objects.filter(name__contains=searchq) if domain.count() != 1: return render_to_json_response({}) if not request.user.can_access(domain[0]): raise PermDeniedException tplvars.update(domain=domain[0].name) if period == "custom": if not "start" in request.GET or not "end" in request.GET: raise BadRequest(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] G = Grapher() expr = re.compile(r'[:\- ]') period_name = "%s_%s" % (expr.sub('', start), expr.sub('', end)) for tpl in gsets[gset].get_graphs(): tplvars['graphs'].append(tpl.display_name) G.process(tplvars["domain"], period_name, str2Time(*expr.split(start)), str2Time(*expr.split(end)), tpl) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end else: tplvars['graphs'] = gsets[gset].get_graph_names() return render_to_json_response( {'content': _render_to_string(request, "stats/graphs.html", tplvars)})
def index(request): """ FIXME: how to select a default graph set ? """ deflocation = "graphs/?gset=mailtraffic" if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): raise NotFound(_("No statistics available")) period = request.GET.get("period", "day") graph_sets = events.raiseDictEvent('GetGraphSets') return render(request, 'stats/index.html', { "periods": periods, "period": period, "selection": "stats", "deflocation": deflocation, "graph_sets": graph_sets })
def index(request): """ FIXME: how to select a default graph set ? """ deflocation = "graphs/?gset=mailtraffic" if not request.user.is_superuser: if not len(request.user.get_domains()): raise ModoboaException(_("No statistics available")) period = request.GET.get("period", "day") graph_sets = events.raiseDictEvent('GetGraphSets') return _render(request, 'stats/index.html', { "periods" : periods, "period" : period, "selection" : "stats", "deflocation" : deflocation, "graph_sets" : graph_sets })
def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if not gset in gsets: raise NotFound(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs={}, period=period) if searchq in [None, "global"]: if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): return render_to_json_response({}) tplvars.update( domain=Domain.objects.get_for_admin(request.user)[0].name ) else: tplvars.update(domain="global") else: domain = Domain.objects.filter(name__contains=searchq) if domain.count() != 1: return render_to_json_response({}) if not request.user.can_access(domain[0]): raise PermDeniedException tplvars.update(domain=domain[0].name) if period == "custom": if not "start" in request.GET or not "end" in request.GET: raise BadRequest(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] expr = re.compile(r'[:\- ]') period_name = "%s_%s" % (expr.sub('', start), expr.sub('', end)) start = date_to_timestamp(expr.split(start)) end = date_to_timestamp(expr.split(end)) else: end = int(time.mktime(time.localtime())) start = "-1%s" % period period_name = period tplvars['graphs'] = gsets[gset].export(tplvars["domain"], start, end) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end return render_to_json_response(tplvars)
def index(request): """ FIXME: how to select a default graph set ? """ deflocation = "graphs/?gset=mailtraffic" if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): raise NotFound(_("No statistics available")) period = request.GET.get("period", "day") graph_sets = events.raiseDictEvent('GetGraphSets') return render( request, 'stats/index.html', { "periods": periods, "period": period, "selection": "stats", "deflocation": deflocation, "graph_sets": graph_sets })
def graphs(request): gset = request.GET.get("gset", None) gsets = events.raiseDictEvent("GetGraphSets") if not gset in gsets: raise NotFound(_("Unknown graphic set")) searchq = request.GET.get("searchquery", None) period = request.GET.get("period", "day") tplvars = dict(graphs={}, period=period) if searchq in [None, "global"]: if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): return render_to_json_response({}) tplvars.update( domain=Domain.objects.get_for_admin(request.user)[0].name) else: tplvars.update(domain="global") else: domain = Domain.objects.filter(name__contains=searchq) if domain.count() != 1: return render_to_json_response({}) if not request.user.can_access(domain[0]): raise PermDeniedException tplvars.update(domain=domain[0].name) if period == "custom": if not "start" in request.GET or not "end" in request.GET: raise BadRequest(_("Bad custom period")) start = request.GET["start"] end = request.GET["end"] expr = re.compile(r'[:\- ]') period_name = "%s_%s" % (expr.sub('', start), expr.sub('', end)) start = date_to_timestamp(expr.split(start)) end = date_to_timestamp(expr.split(end)) else: end = int(time.mktime(time.localtime())) start = "-1%s" % period period_name = period tplvars['graphs'] = gsets[gset].export(tplvars["domain"], start, end) tplvars["period_name"] = period_name tplvars["start"] = start tplvars["end"] = end return render_to_json_response(tplvars)
def index(request): """ FIXME: how to select a default graph set ? """ deflocation = "graphs/?gset=mailtraffic" if not request.user.is_superuser: if not Domain.objects.get_for_admin(request.user).count(): raise NotFound(_("No statistics available")) graph_sets = events.raiseDictEvent('GetGraphSets') periods = [{"name": "day", "label": _("Day")}, {"name": "week", "label": _("Week")}, {"name": "month", "label": _("Month")}, {"name": "year", "label": _("Year")}] return render(request, 'stats/index.html', { "periods": periods, "selection": "stats", "deflocation": deflocation, "graph_sets": graph_sets })
def get_domains(user, domfilter=None, searchquery=None, **extrafilters): """Return all the domains the user can access. :param ``User`` user: user object :param str searchquery: filter :rtype: list :return: a list of domains and/or relay domains """ domains = Domain.objects.get_for_admin(user) if domfilter: domains = domains.filter(type=domfilter) if searchquery is not None: q = Q(name__contains=searchquery) q |= Q(domainalias__name__contains=searchquery) domains = domains.filter(q).distinct() qset_filters = events.raiseDictEvent("ExtraDomainQsetFilters", domfilter, extrafilters) if qset_filters: domains = domains.filter(**qset_filters) return domains
def get_domains(user, domfilter=None, searchquery=None, **extrafilters): """Return all the domains the user can access. :param ``User`` user: user object :param str searchquery: filter :rtype: list :return: a list of domains and/or relay domains """ domains = Domain.objects.get_for_admin(user) if domfilter: domains = domains.filter(type=domfilter) if searchquery is not None: q = Q(name__contains=searchquery) q |= Q(domainalias__name__contains=searchquery) domains = domains.filter(q).distinct() qset_filters = events.raiseDictEvent( "ExtraDomainQsetFilters", domfilter, extrafilters ) if qset_filters: domains = domains.filter(**qset_filters) return domains
def index(request): """ FIXME: how to select a default graph set ? """ deflocation = "graphs/?gset=mailtraffic" if not request.user.is_superuser: if not len(request.user.get_domains()): raise ModoboaException(_("No statistics available")) period = request.GET.get("period", "day") graph_sets = events.raiseDictEvent("GetGraphSets") return _render( request, "stats/index.html", { "periods": periods, "period": period, "selection": "stats", "deflocation": deflocation, "graph_sets": graph_sets, }, )
def _load_extra_parameters(self, level): params = events.raiseDictEvent('GetExtraParameters', self.app, level) for pname, pdef in params.items(): self.fields[pname] = pdef