Ejemplo n.º 1
0
    def get_queryset(self):
        filters = Q()
        self.filter_form = FilterForm(self.request.GET)

        if self.filter_form.is_valid():
            rules = self.filter_form.cleaned_data["rule"]
            blacklists = self.filter_form.cleaned_data["blacklist"]
            earliest = self.filter_form.cleaned_data["earliest"]
            latest = self.filter_form.cleaned_data["latest"]

            if rules:
                filters = filters & Q(rule__in=rules)
            if blacklists:
                filters = filters & Q(rule__in=blacklists)
            if earliest:
                filters = filters & Q(start__gte=earliest)
            if latest:
                filters = filters & Q(finish__lte=latest)

        return (
            self.model.objects.filter(filters)
            .values("username")
            .annotate(
                Concatenate("blacklist__name"),
                Concatenate("rule__name"),
                Count("id"),
                packets=Sum("alerts"),
                earliest=Min("start"),
                latest=Max("finish"),
            )
            .order_by("-id__count")
        )
Ejemplo n.º 2
0
class UsersListView(ListView):
    model = Event
    template_name = "eduroam_snort/users.html"
    context_object_name = "users"
    paginate_by = 20

    def get_queryset(self):
        filters = Q()
        self.filter_form = FilterForm(self.request.GET)

        if self.filter_form.is_valid():
            rules = self.filter_form.cleaned_data["rule"]
            blacklists = self.filter_form.cleaned_data["blacklist"]
            earliest = self.filter_form.cleaned_data["earliest"]
            latest = self.filter_form.cleaned_data["latest"]

            if rules:
                filters = filters & Q(rule__in=rules)
            if blacklists:
                filters = filters & Q(rule__in=blacklists)
            if earliest:
                filters = filters & Q(start__gte=earliest)
            if latest:
                filters = filters & Q(finish__lte=latest)

        return (
            self.model.objects.filter(filters)
            .values("username")
            .annotate(
                Concatenate("blacklist__name"),
                Concatenate("rule__name"),
                Count("id"),
                packets=Sum("alerts"),
                earliest=Min("start"),
                latest=Max("finish"),
            )
            .order_by("-id__count")
        )

    def get_context_data(self, **kwargs):
        context = super(UsersListView, self).get_context_data(**kwargs)

        for obj in context["object_list"]:
            obj["blacklists"] = parse_concat(obj["blacklist__name__concatenate"])
            obj["rules"] = parse_concat(obj["rule__name__concatenate"])

        context["filter_form"] = self.filter_form
        query = self.request.GET.copy()
        query.pop("page", None)

        for key, value in query.items():
            if not value:
                del (query[key])

            if key not in set(("rule", "blacklist", "earliest", "latest")):
                del (query[key])

        context["querystring"] = "?"
        if query:
            context["querystring"] += query.urlencode() + "&"
        return context