Skip to content

Commit

Permalink
feat: added request to filterset class
Browse files Browse the repository at this point in the history
  • Loading branch information
marcosgabarda committed Sep 27, 2021
1 parent 2e331f4 commit 7ccfeac
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 10 deletions.
8 changes: 8 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,24 @@
History
-------

2.1.1 (2021-9-27)
+++++++++++++++++

* Feat: added request to filterset class

2.1.0 (2021-9-23)
+++++++++++++++++

* Feat: add get_queryset to (almost) all base views

2.0.2 (2021-5-18)
+++++++++++++++++

* Fix: sidebar groups permissions

2.0.1 (2021-5-17)
+++++++++++++++++

* Fix: consistent alignment of data in detail view

2.0.0 (2021-4-28)
Expand Down
1 change: 0 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
============================
Django Backoffice Extensions
============================

Expand Down
2 changes: 1 addition & 1 deletion backoffice_extensions/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Django app made to create backoffices to help the administration of a site, like
the Django Admin site, but for final users.
"""
__version__ = "2.1.0"
__version__ = "2.1.1"


default_app_config = "backoffice_extensions.apps.BackofficeAppConfig"
2 changes: 1 addition & 1 deletion backoffice_extensions/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def get_queryset(self) -> "QuerySet":
def get(self, request, *args, **kwargs):
items: "QuerySet" = self.get_queryset()
if self.filterset_class:
_filter = self.filterset_class(request.GET, queryset=items)
_filter = self.filterset_class(request.GET, queryset=items, request=request)
items = _filter.qs
fields: List = [
field[0] if isinstance(field, tuple) else field for field in self.fields
Expand Down
10 changes: 4 additions & 6 deletions backoffice_extensions/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db import models
from django.db.models import ProtectedError
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.translation import gettext_lazy as _
from django.views import View
Expand Down Expand Up @@ -82,12 +81,10 @@ def get_redirect_response(self, instance):
def get(self, request, pk):
model_class = self.get_model_class()
queryset = self.get_queryset()

if queryset:
instance = get_object_or_404(queryset, pk=pk)
else:
instance = get_object_or_404(model_class, pk=pk)

form = self.form_class(instance=instance)
context = {"form": form, "instance": instance}
context.update(self.get_extra_context())
Expand All @@ -113,7 +110,7 @@ class BackOfficeListView(LoginRequiredMixin, BackOfficeViewMixin, ListView):

queryset: Optional[models.QuerySet] = None
list_display: List = []
filterset_class = None
filterset_class: Optional[Type] = None

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
Expand All @@ -123,7 +120,9 @@ def get_queryset(self):
"""Uses the FilterSet class to filter the query."""
queryset = super().get_queryset()
if self.filterset_class:
self.filter = self.filterset_class(self.request.GET, queryset=queryset)
self.filter = self.filterset_class(
self.request.GET, queryset=queryset, request=self.request
)
queryset = self.filter.qs
return queryset

Expand Down Expand Up @@ -190,7 +189,6 @@ def perform_delete(self, instance):
def get_object(self, pk: int) -> models.Model:
"""Gets the object, using the queryset if provided to add annotation fields."""
queryset = self.get_queryset()

if queryset:
instance = get_object_or_404(queryset, pk=pk)
else:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "django-backoffice-extensions"
version = "2.1.0"
version = "2.1.1"
description = "A set of views, tools and helpers to create a backoffice using Django."
readme = "README.rst"
authors = ["Marcos Gabarda <marcos@dekalabs.com>"]
Expand Down

0 comments on commit 7ccfeac

Please sign in to comment.