Skip to content

filters

log_panel.filters

CardListFilter(request)

Applies the card-level filter from the request.

Source code in log_panel/filters.py
def __init__(self, request: HttpRequest) -> None:
    filter: str = request.GET.get(key=self.parameter_name, default="")
    valid_values: set[str] = {f.value for f in CardFilter}

    if filter in valid_values:
        self.value: CardFilter = CardFilter(value=filter)
    else:
        self.value: Literal[CardFilter.ALL] = CardFilter.ALL
        if filter:
            messages.warning(
                request,
                message=f"Unknown filter '{filter}', fall back to 'All'.",
            )

apply(rows)

Return only the rows matching the selected filter.

Source code in log_panel/filters.py
def apply(self, rows: list[dict]) -> list[dict]:
    """Return only the rows matching the selected filter."""
    if self.value is CardFilter.ERRORS:
        return [r for r in rows if r.get("total_errors", 0) > 0]
    if self.value is CardFilter.WARNINGS:
        return [r for r in rows if r.get("total_warnings", 0) > 0]
    return rows

TableListFilter(request, app_timezone)

Applies the table-view filter from the request.

Source code in log_panel/filters.py
def __init__(self, request: HttpRequest, app_timezone) -> None:
    self.level: LogLevel | str = request.GET.get(key="level", default="")
    self.module: str = request.GET.get(key="module", default="")
    self.search: str = request.GET.get(key="search", default="")
    self.timestamp_from_str: str = request.GET.get(key="timestamp_from", default="")
    self.timestamp_to_str: str = request.GET.get(key="timestamp_to", default="")

    try:
        self.page: int = max(1, int(request.GET.get(key="page", default=1)))
    except (ValueError, TypeError):
        self.page = 1

    self.timestamp_from: datetime | None = self._parse_timestamp(
        value=self.timestamp_from_str, app_timezone=app_timezone
    )
    self.timestamp_to: datetime | None = self._parse_timestamp(
        value=self.timestamp_to_str, app_timezone=app_timezone
    )