shinneider/django-admin-search

Modal filter for django admin

django
django-admin
filter
filters
modal
search

Django Admin Search

Downloads Downloads Downloads

Coverage Quality Gate Status PyPI version
The "Django Admin Search" is a advanced search modal for django admin.

If you use or like the project, click Star and Watch to generate metrics and i evaluate project continuity.

Install:

pip install django-admin-search

Usage:

  1. Add to your INSTALLED_APPS, in settings.py: INSTALLED_APPS = [ ... 'django_admin_search', ... ]

  2. Create a search form for model: ``` from .models import Area from django.forms import ModelForm, Form from django.forms import DateField, CharField, ChoiceField, TextInput

    class YourFormSearch(Form): name = CharField(required=False) date = DateField(required=False, widget=TextInput( attrs={ 'filter_method': '__gte', } )) ```

  3. In your admin: ``` from django_admin_search.admin import AdvancedSearchAdmin from .models import YourModel from .form import YourForm, YourFormSearch

    @register(YourModel) class YourAdmin(AdvancedSearchAdmin): form = YourForm search_form = YourFormSearch ```

Advanced:

  1. to multiple filters in same field: class YourFormSearch(Form): ... name = CharField(required=False) begin = DateField(required=False, widget=TextInput( attrs={ 'filter_field': 'date', 'filter_method': '__gte', } )) end = DateField(required=False, widget=TextInput( attrs={ 'filter_field': 'date', 'filter_method': '__lte', } ))

  2. add placeholder and mask class YourFormSearch(Form): ... date = DateField(required=False, widget=TextInput( attrs={ 'data-mask': "00/00/0000", 'placeholder': 'MM/DD/YYYY' } ))

  3. Custom filter query for a field ``` from django_admin_search.admin import AdvancedSearchAdmin from .models import YourModel from .form import YourForm, YourFormSearch

    @register(YourModel) class YourAdmin(AdvancedSearchAdmin): def search_FieldNameHere(request, field_value, param_values): """ intercept query filter for description field """ query = Q() # your Q logic here return query ```

Images:

Button in admin list: input

Modal opened: modal

Development and Running the Tests

To do development work for Django Admin Search, clone it locally, make and activate a virtualenv for it, then from within the project directory:

pip install -e ".[dev]"

To run the tests:

pytest

If your work in high difficult test, and need to re run the test every time, use pytest-watch:

ptw  # this see file change and re run a test

when you need to see passed lines by test, run

pytest --cov-report html

after this, will be created a htmlcov folder in the root

To run sonar

pytest --cov-report xml
pylint ./django_admin_search/ --msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" | tee pylint.txt
sonar-scanner

See your code quality in Sonar (in testing, no metrics to approve yet)

https://sonarcloud.io/dashboard?id=shinneider_django-admin-search

For future i want to run test's in Travis CI, to check if PR is Ok, but to be effective, i need to cover 80% or more of the code, help-me creating a test case, see this issue PR - 20

Need a Maintainer

In the last months i don't have much time, health problemas, change of country and others problems.
i have some surgeries for first part of 2022, and all of my current project don't use django-admin.
for these reasons, i need a help for a project continuation!!

Stars
80
100.00% more than last month
Forks
25
Open Issues
8