Various Django utility functions
Project description
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.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.filename
clean_filename()
- Convert filename to ASCII only via slugify.filename2human_name()
- Convert filename to a capitalized name.
bx_django_utils.humanize.pformat
pformat()
- Betterpretty-print-format
usingDjangoJSONEncoder
with fallback topprint.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.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.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
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.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 filesautodiscover()
- 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 Pytest and Unittest + Fast Django user login
PlaywrightConfig()
- PlaywrightTestCase config from environment (PWBROWSER, PWHEADLESS, PWSKIP, PWSLOWMO)PlaywrightTestCase()
- StaticLiveServerTestCase with helpers for writing frontend tests using Playwright.PyTestPlaywrightBaseTestCase()
- DEPRECATED: Will be removed in the future! Use new "PlaywrightTestCase"UnittestRunnerMixin()
- DEPRECATED: Will be removed in the future! Use new "PlaywrightTestCase"fast_login()
- DEPRECATED: Will be removed in the future! Use new "PlaywrightTestCase"setup_browser_context_args()
- DEPRECATED: Will be removed in the future! Use new "PlaywrightTestCase"
bx_django_utils.test_utils.users
assert_permissions()
- Check user permissions.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.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 or update poetry via pip
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 pytest via tox with all environments
pytest Run pytest
pytest-ci Run pytest with CI settings
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)
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 ;)
update this README
This README will be updated via tests ;) But currently this is only done with Python 3.9 ! If your system Python version is not 3.9: Install this Python version and switch to it, e.g.:
~/bx_django_utils$ poetry env use python3.9
~/bx_django_utils$ make install
~/bx_django_utils$ make pytest
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bx_django_utils-34-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d0bc3fc9834e5f90242e5d1310524479f8be7b3a2af143808c1a53291263f15 |
|
MD5 | 96ddfd80d61fb85b652a7542f63e5502 |
|
BLAKE2b-256 | 50d7a192c1ddcaf6d0268d53da2ac982c4c82d26da00b71f46f0cf035d6dcd9f |