Skip to main content

Various Django utility functions

Project description

Boxine - bx_django_utils

Various Django utility functions

unittests Coverage Status on codecov.io

bx_django_utils @ PyPi Python Versions License MIT

Quickstart

pip install bx_django_utils

Supported Django versions

bx_django_utils generally follows the support schedule of Django. The project is tested against officially supported Django versions and their respective supported CPython versions.

However, under special circumstances we may decide to pull support for a specific version early, e.g. if development of the library would be severely limited. Check our tox test matrix for a definitive answer.

Existing stuff

Here only a simple list about existing utilities. Please take a look into the sources and tests for deeper informations.

bx_django_utils.admin_extra_views

Django Admin extra views: https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/admin_extra_views/README.md

bx_django_utils.admin_extra_views.admin_config

Activate "ExtraViewAdminSite" by set this as default admin site

bx_django_utils.admin_extra_views.apps

bx_django_utils.admin_extra_views.conditions

  • only_staff_user() - Pass only active staff users. The default condition for all admin extra views.

bx_django_utils.admin_extra_views.datatypes

  • AdminExtraMeta() - Stores information for pseudo app and pseudo models.
  • PseudoApp() - Represents information about a Django App. Instance must be pass to @register_admin_view()
bx_django_utils.admin_extra_views.management.commands.admin_extra_views
  • Command() - Manage command "admin_extra_views": Info about registered admin extra views

bx_django_utils.admin_extra_views.registry

bx_django_utils.admin_extra_views.site

  • ExtraViewAdminSite() - An AdminSite object encapsulates an instance of the Django admin application, ready
bx_django_utils.admin_extra_views.tests.test_admin_extra_views

bx_django_utils.admin_extra_views.utils

bx_django_utils.admin_extra_views.views

bx_django_utils.admin_utils.admin_urls

Helpers to build Admin URLs

  • admin_change_url() - Shortcut to generate Django admin "change" url for a model instance.
  • admin_changelist_url() - Shortcut to generate Django admin "changelist" url for a model or instance.
  • admin_delete_url() - Shortcut to generate Django admin "delete" url for a model instance.
  • admin_history_url() - Shortcut to generate Django admin "history" url for a model instance.
  • admin_model_url() - Build Admin change, add, changelist, etc. links with optional filter parameters.

bx_django_utils.admin_utils.filters

bx_django_utils.admin_utils.log_entry

Helper functions around Django's admin LogEntry model.

bx_django_utils.approve_workflow

Base model/admin/form classes to implement a model with draft/approve versions workflow

bx_django_utils.approve_workflow.admin

bx_django_utils.approve_workflow.forms

bx_django_utils.approve_workflow.models

bx_django_utils.cached_dataclasses

bx_django_utils.data_types.gtin

ModelField, FormField and validators for GTIN/UPC/EAN numbers

bx_django_utils.data_types.gtin.form_fields
bx_django_utils.data_types.gtin.model_fields
bx_django_utils.data_types.gtin.validators

bx_django_utils.dbperf.cursor

bx_django_utils.dbperf.query_recorder

  • SQLQueryRecorder() - A context manager that allows recording SQL queries executed during its lifetime.

bx_django_utils.feature_flags

Feature flags: https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/feature_flags/README.md

bx_django_utils.feature_flags.admin_views

bx_django_utils.feature_flags.data_classes

  • FeatureFlag() - A feature flag that persistent the state into django cache/database.

bx_django_utils.feature_flags.test_utils

bx_django_utils.feature_flags.utils

  • if_feature() - A decorator that only executes the decorated function if the given feature flag is enabled.

bx_django_utils.filename

bx_django_utils.generic_model_filter.admin_views

Generic "AdminExtraView" view to filter accessible model by any field value.

bx_django_utils.http

bx_django_utils.humanize.pformat

  • pformat() - Better pretty-print-format using DjangoJSONEncoder with fallback to pprint.pformat()

bx_django_utils.humanize.time

  • human_timedelta() - Converts a time duration into a friendly text representation. (X ms, sec, minutes etc.)

bx_django_utils.json_utils

  • make_json_serializable() - Convert value to a JSON serializable value, with convert callback for special objects.
  • to_json() - Convert value to JSON via make_json_serializable() and DjangoJSONEncoder()

bx_django_utils.models.color_field

  • ColorModelField() - Hex color model field, e.g.: "#0055ff" (It's not a html color picker widget)
  • HexColorValidator() - Hex color validator (seven-character hexadecimal notation, e.g.: "#0055ff")

bx_django_utils.models.get_models4user

bx_django_utils.models.manipulate

Utilities to manipulate objects in database via models:

  • CreateOrUpdateResult() - Result object returned by create_or_update2() with all information about create/save a model.
  • FieldUpdate() - Information about updated model field values. Used for CreateOrUpdateResult.update_info
  • InvalidStoreBehavior() - Exception used in create_or_update() if "store_behavior" contains not existing field names.
  • create() - Create a new model instance with optional validate before create.
  • create_or_update() - Create a new model instance or update a existing one. Deprecated! Use: create_or_update2()
  • create_or_update2() - Create a new model instance or update a existing one and returns CreateOrUpdateResult instance
  • update_model_field() - Default callback for create_or_update2() to set a changed model field value and expand CreateOrUpdateResult

bx_django_utils.models.meta

  • get_field_choices() - Build choices to select model fields. Use the verbose name of the field and handle related fields, too.

bx_django_utils.models.queryset_utils

  • remove_filter() - Remove an applied .filter() from a QuerySet
  • remove_model_filter() - Remove an applied .filter() from a QuerySet if it contains references to the specified model

bx_django_utils.models.timetracking

bx_django_utils.stacktrace

bx_django_utils.templatetags.accessors

  • dict_get() - Returns the wanted member of a dict-like container, or an empty string

bx_django_utils.templatetags.humanize_time

  • human_duration() - Verbose time since template tag, e.g.: <span title="Jan. 1, 2000, noon">2.0 seconds</span>

bx_django_utils.test_utils

Utilities / helper for writing tests.

bx_django_utils.test_utils.assert_queries

  • AssertQueries() - Assert executed database queries: Check table names, duplicate/similar Queries.

bx_django_utils.test_utils.cache

  • ClearCacheMixin() - TestCase mixin to clear the Django cache in setUp/tearDown
  • MockCache() - Mock Django cache backend, so it's easy to check/manipulate the cache content

bx_django_utils.test_utils.content_types

bx_django_utils.test_utils.datetime

bx_django_utils.test_utils.fixtures

Utilities to manage text fixtures in JSON files.

bx_django_utils.test_utils.forms

bx_django_utils.test_utils.html_assertion

bx_django_utils.test_utils.log_entry

bx_django_utils.test_utils.model_clean_assert

bx_django_utils.test_utils.model_primary_key

bx_django_utils.test_utils.playwright

Use Playwright in Unittest + Fast Django user login

  • PlaywrightConfig() - PlaywrightTestCase config from environment (PWBROWSER, PWHEADLESS, PWSKIP, PWSLOWMO)
  • PlaywrightTestCase() - StaticLiveServerTestCase with helpers for writing frontend tests using Playwright.

bx_django_utils.test_utils.users

bx_django_utils.translation

bx_django_utils.user_timezone

Automatic local user timezone: https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/user_timezone/README.md

bx_django_utils.user_timezone.apps

bx_django_utils.user_timezone.humanize

bx_django_utils.user_timezone.middleware

bx_django_utils.user_timezone.templatetags.user_timezone

bx_django_utils.version

  • DetermineVersionCommand() - Write application version determined from git as a command
  • get_version() - Get version of this application. First try to read it from file, then determine from git.

bx_django_utils.view_utils.dynamic_menu_urls

  • DynamicViewMenu() - Simple storage for store information about views/urls to build a menu.

start development

At least uv is needed. Install e.g.: via pipx:

apt-get install pipx
pipx install uv

you should be able to then do

make install
make playwright-install

and validate everything works with make test

For other options, you can check out our makefile:

~$ git clone https://github.com/boxine/bx_django_utils.git
~$ cd bx_django_utils
~/bx_django_utils$ make
help                       List all commands
install                    Install via "uv" (Used system installed "uv" tool, e.g.: "pipx install uv")
update-requirements        Update requirements
lint                       Check/fix code style by run: "ruff check --fix"
nox-list                   List all available nox sessions
nox                        Run tests via nox with all environments and create coverage report
test                       Run tests
coverage-report            Creates coverage report
coverage                   Run tests with coverage (Use better "nox" target)
update-test-snapshot-files Update all snapshot files (by remove and recreate all snapshot files)
update-test-migrations     Update migration files from the test project by recreating them
update-readme              Update README.md (will be also done in tests)
mypy                       Run mypy
docker-test                Run tests in docker
pip-audit                  Run https://github.com/pypa/pip-audit
publish                    Release new version to PyPi
makemessages               Make and compile locales message files
start-dev-server           Start Django dev. server with the test project
clean                      Remove created files from the test project
playwright-install         Install test browser for Playwright tests
playwright-inspector       Run Playwright inspector
playwright-tests           Run only the Playwright tests

You can start the test project with the Django developing server, e.g.:

~/bx_django_utils$ make start-dev-server

This is a own manage command, that will create migrations files from our test app, migrate, collectstatic and create a super user if no user exists ;)

If you like to start from stretch, just delete related test project files with:

~/bx_django_utils$ make clean

...and start the test server again ;)

Create a release

  • Increase verion number in bx_django_utils/__init__.py
  • Create pull request
  • After merge, call: make publish

License

MIT. Patches welcome!

About us

We’ve been rethinking the listening experience for kids and have created an ecosystem where haptic and listening experience are combined via smart technology - the Toniebox.

We are constantly looking for engineers to join our team in different areas. If you’d be interested in contributing to our platform, have a look at: https://tonies.com/jobs/

Links

Project details


Release history Release notifications | RSS feed

This version

94

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bx_django_utils-94.tar.gz (214.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bx_django_utils-94-py3-none-any.whl (119.2 kB view details)

Uploaded Python 3

File details

Details for the file bx_django_utils-94.tar.gz.

File metadata

  • Download URL: bx_django_utils-94.tar.gz
  • Upload date:
  • Size: 214.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for bx_django_utils-94.tar.gz
Algorithm Hash digest
SHA256 4953619054461d080e4e4caf8cd7447db64fad61e31984422a5402ae9b64eb27
MD5 f1afd446ef565c51258f98dfca9c4bbc
BLAKE2b-256 57a1f897d689a15e8fbcaef1efbae0d2282ec64d1e161b8be639676014a8167d

See more details on using hashes here.

File details

Details for the file bx_django_utils-94-py3-none-any.whl.

File metadata

  • Download URL: bx_django_utils-94-py3-none-any.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for bx_django_utils-94-py3-none-any.whl
Algorithm Hash digest
SHA256 fc16bff77f6c2869426122a2e1bb063b0a641d646b0b3f729204163da028ae67
MD5 96d6b9c30fff63263a502f2b584ea554
BLAKE2b-256 daf3e4e4e66ce6998302951ca3a8f125c423604d18a0e5e724cb15efd1ce86c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page