Exemplo n.º 1
0
def list_hostiplog(request, filter_type=None, filter_key=None):
    """
    Affichage en liste des hostiplog remontés automatiquement par les
    postes disposant de l'utilitaire softupdate.py
    """
    sort_default = '-date'
    columns = ["date", "host", "log_hostname", "log_ip", "log_queryfrom"]

    qs = HostIPLog.objects.all()
    qs = qs.select_related('host')

    # Handle SearchForm filtering
    form = SearchHostIPLogForm(request.POST or
                 request.session.get("search_hostiplog_list", {}))
    if form.is_valid():
        request.session["search_hostiplog_list"] = form.cleaned_data
        qs = form.search(qs)

    # Update sorting
    sorting = sort_default
    sort_get = request.GET.get('sort',
                   request.session.get("sort_hostiplog_list", sort_default))
    if sort_get in columns:
        sorting = sort_get
    if sort_get.startswith('-') and sort_get[1:] in columns:
        sorting = sort_get
    request.session["sort_hostiplog_list"] = sorting

    # Set paginator
    paginator = DiggPaginator(qs.order_by(sorting),
                              settings.HOSTS_PER_PAGE,
                              body=5, tail=2, padding=2)

    # Get page
    page_num = 1
    page_asked = int(request.GET.get('page',
                         request.session.get('lastpage_hostiplog_list', 1)))
    if ((page_asked <= paginator.num_pages)):
        page_num = page_asked
    request.session["lastpage_hostiplog_list"] = page_num
    page = paginator.page(page_num)
    return render_to_response(
        'clariadmin/list_hostiplog.html',
        {"page": page,
         "columns": columns,
         "sorting": sorting,
         "form": form},
        context_instance=RequestContext(request))
Exemplo n.º 2
0
def list_logs(request, filter_type=None, filter_key=None):
    """
    Cette fonction gère le tri et l'affichage de l'historique des hotes
    Elle sert à garder une tracabilité des modifications et états.
    Variables de session:
        - lastpage_log_list: dernière page accédée
        - search_log_list: recherche courrante
        - sort_log_list: garde l'ordre courrent
    """
    sort_default = "-date"
    columns = ["host", "user", "date", "ip", "action", "message", "version"]
    new_search = False

    if request.GET.get("reset", "0") == "1":
        try:
            del request.session["lastpage_log_list"]
        except KeyError:
            pass
        try:
            del request.session["search_log_list"]
        except KeyError:
            pass
        try:
            del request.session["sort_log_list"]
        except KeyError:
            pass
        return redirect("list_logs")

    # Url filtering
    if filter_type:
        if filter_type == "host" and filter_key == "deleted":
            qs = HostEditLog.objects.filter(host__exact=None)
        elif filter_type == "host":
            try:
                hostid = int(filter_key)
            except ValueError:
                raise Http404("Host not found.")
            qs = get_object_or_404(Host, pk=hostid).hosteditlog_set
        else:
            raise Http404("Invalid query")
    else:
        qs = HostEditLog.objects.all()
    qs = qs.select_related("host", "hostrevision")

    # Handle SearchForm filtering
    form = SearchLogForm(request.user, request.POST or request.session.get("search_log_list", {}))
    if form.is_valid():
        request.session["search_log_list"] = form.cleaned_data
        qs = form.search(qs)

    # Update sorting
    sorting = sort_default
    sort_get = request.GET.get("sort", request.session.get("sort_log_list", sort_default))
    if sort_get in columns:
        sorting = sort_get
    if sort_get.startswith("-") and sort_get[1:] in columns:
        sorting = sort_get
    request.session["sort_log_list"] = sorting

    # Set paginator
    paginator = DiggPaginator(qs.order_by(sorting), settings.HOSTS_PER_PAGE, body=5, tail=2, padding=2)

    # Get page
    page_num = 1
    page_asked = int(request.GET.get("page", request.session.get("lastpage_log_list", 1)))
    if (page_asked <= paginator.num_pages) and not new_search:
        page_num = page_asked
    request.session["lastpage_log_list"] = page_num
    page = paginator.page(page_num)
    return render_to_response(
        "host_history/list.html",
        {"page": page, "columns": columns, "sorting": sorting, "form": form},
        context_instance=RequestContext(request),
    )
Exemplo n.º 3
0
def list_all(request, target_client=None, *args, **kw):
    """
    Vue permettant de lister les machines recherchées.
    Variables de session utilisées:
        search_host_form_fields : dernier formulaire de rechere
        additionnal_field_form_fields : dernier formulaire additionnel
        sort_adm_list : dernier tri
        lastpage_clariadmin : dernier numéreau de page
    """
    if request.GET.get("reset", "0") == "1":
        try:  # ordre de nettoyage de session logique.
            del request.session["lastpage_clariadmin"]
            del request.session["sort_adm_list"]
            del request.session["search_host_form_fields"]
            del request.session["additionnal_field_form_fields"]
        except KeyError:
            pass
        return redirect('list_hosts')

    if target_client:
        tmp = request.session.get("search_host_form_fields", {})
        tmp["site"] = target_client
        request.session["search_host_form_fields"] = tmp
        return redirect('list_hosts')

    POST = HostForm.filter_querydict(request.user, request.POST)
    new_search = False
    form_extra = False
    sort_default = settings.HOST_DEFAULT_ORDER
    columns = HostForm.filter_list(request.user, ("hostname", "ip", "site",
                      "type", "os", "model", "status", "additionnal_fields"))

    if POST:
        # Init forms
        form = SearchHostForm(request.user, POST)
        if form.is_valid():
            # récupère les éléments de POST propre à SearchHostForm
            post_filtred = dict((k, v) for k, v in POST.iteritems()
                                if k in form.cleaned_data.keys())

            # si recherche != dernière recherche,
            # retour page 1 et update session
            if request.session.get('search_host_form_fields', {}) != post_filtred:
                new_search = True
                request.session['search_host_form_fields'] = post_filtred
            host_type = request.session.get('search_host_form_fields', {}).get('type', False)

            if host_type:
                form_extra = AdditionnalFieldForm(POST,
                             host_type=HostType.objects.get(pk=host_type))
                # if search != last search => page 1 and update session
                post_filtred = dict([(k, v) for k, v in POST.iteritems()
                    if k in form_extra.fields.keys()])
                if request.session.get('additionnal_field_form_fields', {}) != post_filtred:
                    new_search = True
                    request.session['additionnal_field_form_fields'] = post_filtred
                form_extra.is_valid()
    else:
        host_type = request.session.get('search_host_form_fields', {}).get('type', False)
        form = SearchHostForm(request.user, request.session.get('search_host_form_fields', {}))
        if host_type:
            form_extra = AdditionnalFieldForm(
                    request.session.get('additionnal_field_form_fields', {}),
                    host_type=HostType.objects.get(pk=host_type))
            form_extra.is_valid()

    # filter SearchHostFrom
    form.fields = SearchHostForm.filter_querydict(request.user, form.fields)

    # get sorting
    sorting = sort_default
    sort_get = request.GET.get('sort',
                           request.session.get("sort_adm_list", sort_default))
    if sort_get in columns:
        sorting = sort_get
    if sort_get.startswith('-') and sort_get[1:] in columns:
        sorting = sort_get
    request.session["sort_adm_list"] = sorting

    # apply searchs if any.
    qs = Host.objects.none()
    if form.is_valid():
        search_args = form.cleaned_data
        if [v for v in search_args.itervalues() if v]:
            qs = Host.objects.filter_by_user(request.user)
            if form_extra:
                qs = filter_hosts(qs, request.user, sorting, form.cleaned_data,
                                  form_extra.get_data())
            else:
                qs = filter_hosts(qs, request.user, sorting, form.cleaned_data)
            form.update(qs)
    # fill paginator
    paginator = DiggPaginator(qs, settings.HOSTS_PER_PAGE,
                              body=5, tail=2, padding=2)

    # get page
    page_num = 1
    page_asked = int(request.GET.get('page',
                     request.session.get('lastpage_clariadmin', 1)))
    if ((page_asked <= paginator.num_pages) and not new_search):
        page_num = page_asked
    request.session["lastpage_clariadmin"] = page_num
    page = paginator.page(page_num)

    return render_to_response("clariadmin/list.html", {
        "page": page,
        "form": form,
        "columns": columns,
        "sorting": sorting,
        "form_extra": form_extra,
    }, context_instance=RequestContext(request))
Exemplo n.º 4
0
def get_pagination(queryset, request):
    """
        Mets en place la pagination via DiggPaginator.
    """
    paginator = DiggPaginator(queryset, settings.TICKETS_PER_PAGE, body=5, tail=2, padding=2)
    return paginator.page(request.GET.get("page", 1))