Boxine - bx_django_utils
Various Django utility functions
Quickstart
pip install bx_django_utils
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
CustomAdminConfig()- Change Django Admin Site to ExtraViewAdminSite for the extra views.
bx_django_utils.admin_extra_views.apps
AdminExtraViewsAppConfig()- App config to auto discover all extra views.
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
AdminExtraViewRegistry()- Hold all information about all admin extra views to expand urls and admin app list.register_admin_view()- Decorator to add a normal view as pseudo App/Model to the admin.
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
AdminExtraViewsTestCase()- Integrations tests for Admin Extra Views.
bx_django_utils.admin_extra_views.utils
iter_admin_extra_views_urls()- Iterate over all registered admin extra view urls.reverse_admin_extra_view()- Get the URL of a Admin Extra View, e.g.: url=reverse_admin_extra_view(YouAdminExtraView)
bx_django_utils.admin_extra_views.views
Redirect2AdminExtraView()- Redirect to a Admin Extra 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
ExistingCountedListFilter()- Advanced SimpleListFilter that list only existing filter values with counts.NotAllSimpleListFilter()- Similar to SimpleListFilter, but don't add "All" choice.
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
BaseApproveModelAdmin()- Base admin class for a draft/approve Model
bx_django_utils.approve_workflow.forms
PublishAdminForm()- Activate models REQUIRED_FIELDS_PUBLIC on approve
bx_django_utils.approve_workflow.models
BaseApproveModel()- Base model class for approve models and this relation models.BaseApproveWorkflowModel()- Base model for approve workflow models.
bx_django_utils.cached_dataclasses
CachedDataclassBase()- A Base dataclass that can be easy store/restore to Django cache.
bx_django_utils.data_types.gtin
ModelField, FormField and validators for GTIN/UPC/EAN numbers
bx_django_utils.data_types.gtin.form_fields
GtinFormField()- Form field with GTIN validator.
bx_django_utils.data_types.gtin.model_fields
GtinModelField()- GTIN model field
bx_django_utils.data_types.gtin.validators
GtinValidator()- Validate GTIN numbervalidate_gtin()- It's the same as stdnum.ean.validate() but also accept ISBN-10
bx_django_utils.dbperf.cursor
RecordingCursorWrapper()- An implementation of django.db.backends.utils.CursorWrapper.
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
ManageFeatureFlagsBaseView()- Base admin extra view to manage all existing feature flags in admin.
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
FeatureFlagTestCaseMixin()- Mixin forTestCasethat will changeFeatureFlagentries. To make the tests atomic.get_feature_flag_states()- Collects information about all registered feature flags and their current state.
bx_django_utils.filename
clean_filename()- Convert filename to ASCII only via slugify.filename2human_name()- Convert filename to a capitalized name.
bx_django_utils.http
build_url_parameters()- Return an encoded string of all given parameters.
bx_django_utils.humanize.pformat
pformat()- Betterpretty-print-formatusingDjangoJSONEncoderwith fallback topprint.pformat()
bx_django_utils.humanize.time
human_timedelta()- Converts a time duration into a friendly text representation. (X ms,sec,minutesetc.)
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.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_infoInvalidStoreBehavior()- 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 instanceupdate_model_field()- Default callback for create_or_update2() to set a changed model field value and expand CreateOrUpdateResult
bx_django_utils.models.queryset_utils
remove_filter()- Remove an applied .filter() from a QuerySetremove_model_filter()- Remove an applied .filter() from a QuerySet if it contains references to the specified model
bx_django_utils.models.timetracking
TimetrackingBaseModel()- Abstract base model that will automaticly set create/update Datetimes.
bx_django_utils.stacktrace
StackTrace()- Built-in mutable sequence.StacktraceAfter()- Generate a stack trace after a package was visited.get_stacktrace()- Returns a StackTrace object, which is a list of FrameInfo objects.
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/tearDownMockCache()- Mock Django cache backend, so it's easy to check/manipulate the cache content
bx_django_utils.test_utils.content_types
ContentTypeCacheFixMixin()- TestCase mixin to fill the ContentType cache to avoid flaky database queries.
bx_django_utils.test_utils.datetime
MockDatetimeGenerator()- Mock djangotimezone.now()with generic time stamps in tests.
bx_django_utils.test_utils.fixtures
Utilities to manage text fixtures in JSON files.
BaseFixtures()- Base class for JSON dump fixtures.FixturesRegistry()- Registry to collect a list of all existing fixture classes.RenewAllFixturesBaseCommand()- A base Django manage command to renew all existing fixture JSON dump filesSerializerFixtures()- Helper to store/restore model instances serialized into a JSON file.autodiscover()- Register all fixtures by import all /fixtures//*.py files
bx_django_utils.test_utils.forms
AssertFormFields()- Helper to check the existing form fields.
bx_django_utils.test_utils.html_assertion
HtmlAssertionMixin()- Unittest mixin class with useful assertments around Django test client testsassert_html_response_snapshot()- Assert a HttpResponse via snapshot file using assert_html_snapshot() from bx_py_utils.
bx_django_utils.test_utils.model_clean_assert
AssertModelCleanCalled()- Context manager for assert that full_clean() was called for every model instance.CleanMock()- Track if full_clean() was called.
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
assert_permissions()- Check user permissions.assert_user_properties()- Check a user instance with all properties and password (optional)filter_permission_names()- Generate a Permission model query filtered by names, e.g.: ['<app_label>.', ...]make_max_test_user()- Create a test user with all permissions except the {exclude_permissions} ones.make_minimal_test_user()- Create a test user and set given permissions.make_test_user()- Create a test user and set given permissions.
bx_django_utils.translation
FieldTranslation()- Dict-like container that maps language codes to a translated string.TranslationField()- A field designed to hold translations for a given set of language codes.TranslationFieldAdmin()- Provides drop-in support for ModelAdmin classes that want to display TranslationFieldsTranslationFormField()- Default form field for TranslationField.create_or_update_translation_callback()- Callback for create_or_update2() for TranslationField, that will never remove existing 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
UserTimezoneAppConfig()- Django app to set the user local time zone.
bx_django_utils.user_timezone.humanize
human_timezone_datetime()- Render a datetime with timezone information.
bx_django_utils.user_timezone.middleware
UserTimezoneMiddleware()- Activate Timezone by "UserTimeZone" cookie
bx_django_utils.user_timezone.templatetags.user_timezone
humane_timezone_dt()- Template filter to render a datetime with timezone information.
bx_django_utils.view_utils.dynamic_menu_urls
DynamicViewMenu()- Simple storage for store information about views/urls to build a menu.
developing
To start developing e.g.:
~$ git clone https://github.com/boxine/bx_django_utils.git
~$ cd bx_django_utils
~/bx_django_utils$ make
help List all commands
install-poetry install poetry
install install via poetry
update Update the dependencies as according to the pyproject.toml file
lint Run code formatters and linter
fix-code-style Fix code formatting
tox-listenvs List all tox test environments
tox Run unittests via tox with all environments
test Run unittests
publish Release new version to PyPi
docker-test Run tests in docker
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 (e.g.: SQlite, static files)
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 ;)
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
Metadata
Release files for bx-django-utils 50
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bx_django_utils-50.tar.gz | 111.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bx_django_utils-50-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 285.4 kB
Release files / bx_django_utils-50.tar.gz
| Download URL | bx_django_utils-50.tar.gz |
|---|---|
| Size | 111.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a08332fe2e0a75b7611d0f66e37373bb4c3cd82400925c29a05b63e57be50616
|
|
BLAKE2b-256 checksum How to use checksums |
a3d674176deed1980fb0877858d23e633aff70c9a6e295039b547b328c13449b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / bx_django_utils-50-py3-none-any.whl
| Download URL | bx_django_utils-50-py3-none-any.whl |
|---|---|
| Size | 174.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb51e403117ac6679a499243b4da0ef6ee247659b1ba0877b85ebdb3a77a64f4
|
|
BLAKE2b-256 checksum How to use checksums |
7189002ae49206932e5331ba38c5ae2d4e0d4c927fb555c9b5bf2514116979ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|