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.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 forTestCase
that will changeFeatureFlag
entries. 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-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.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.TranslationSlugField()
- A unique translation slug field, useful in combination with TranslationField()create_or_update_translation_callback()
- Callback for create_or_update2() for TranslationField, that will never remove existing translation.merge_translations()
- Merge two FieldTranslation and ignore all empty/None values, e.g.:remove_empty_translations()
- Remove all empty/None from a FieldTranslation, e.g.:validate_unique_translations()
- Deny creating non-unique translation: Creates ValidationError with change list search for doubled entries.
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
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-56-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5fadae1f78b3b5b29ed9040e98cf0afd9d2615a07e6ac35b1b998eb6990b9e3 |
|
MD5 | f6085b1c3ff4695d6cd002be9d821cf3 |
|
BLAKE2b-256 | 3ddabe43b2be0da7606b9cd2b9d117e96a5802eeb02751adea878ab31bae8dc4 |