Package: bx-django-utils
Boxine - bx_django_utilsVarious Django utility functionsQuickstartpipinstallbx_django_utilsSupported Django versionsbx_django_utilsgenerally follows the support schedule of Django. The project is tested againstofficially supported Django versionsandtheir 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 stuffHere only a simple list about existing utilities.
Please take a look into the sources and tests for deeper informations.bx_django_utils.admin_extra_viewsDjango Admin extra views:https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/admin_extra_views/README.mdbx_django_utils.admin_extra_views.admin_configActivate "ExtraViewAdminSite" by set this as default admin siteCustomAdminConfig()- Change Django Admin Site to ExtraViewAdminSite for the extra views.bx_django_utils.admin_extra_views.appsAdminExtraViewsAppConfig()- App config to auto discover all extra views.bx_django_utils.admin_extra_views.conditionsonly_staff_user()- Pass only active staff users. The default condition for all admin extra views.bx_django_utils.admin_extra_views.datatypesAdminExtraMeta()- 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_viewsCommand()- Manage command "admin_extra_views": Info about registered admin extra viewsbx_django_utils.admin_extra_views.registryAdminExtraViewRegistry()- 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.siteExtraViewAdminSite()- An AdminSite object encapsulates an instance of the Django admin application, readybx_django_utils.admin_extra_views.tests.test_admin_extra_viewsAdminExtraViewsTestCase()- Integrations tests for Admin Extra Views.bx_django_utils.admin_extra_views.utilsiter_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.viewsRedirect2AdminExtraView()- Redirect to a Admin Extra Views.bx_django_utils.admin_utils.admin_urlsHelpers to build Admin URLsadmin_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.filtersExistingCountedListFilter()- Advanced SimpleListFilter that list only existing filter values with counts.NotAllSimpleListFilter()- Similar to SimpleListFilter, but don't add "All" choice.bx_django_utils.approve_workflowBase model/admin/form classes to implement a model with draft/approve versions workflowbx_django_utils.approve_workflow.adminBaseApproveModelAdmin()- Base admin class for a draft/approve Modelbx_django_utils.approve_workflow.formsPublishAdminForm()- Activate models REQUIRED_FIELDS_PUBLIC on approvebx_django_utils.approve_workflow.modelsBaseApproveModel()- Base model class for approve modelsandthis relation models.BaseApproveWorkflowModel()- Base model for approve workflow models.bx_django_utils.cached_dataclassesCachedDataclassBase()- A Base dataclass that can be easy store/restore to Django cache.bx_django_utils.data_types.gtinModelField, FormField and validators for GTIN/UPC/EAN numbersbx_django_utils.data_types.gtin.form_fieldsGtinFormField()- Form field with GTIN validator.bx_django_utils.data_types.gtin.model_fieldsGtinModelField()- GTIN model fieldbx_django_utils.data_types.gtin.validatorsGtinValidator()- Validate GTIN numbervalidate_gtin()- It's the same as stdnum.ean.validate() but also accept ISBN-10bx_django_utils.dbperf.cursorRecordingCursorWrapper()- An implementation of django.db.backends.utils.CursorWrapper.bx_django_utils.dbperf.query_recorderSQLQueryRecorder()- A context manager that allows recording SQL queries executed during its lifetime.bx_django_utils.feature_flagsFeature flags:https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/feature_flags/README.mdbx_django_utils.feature_flags.admin_viewsManageFeatureFlagsBaseView()- Base admin extra view to manage all existing feature flags in admin.bx_django_utils.feature_flags.data_classesFeatureFlag()- A feature flag that persistent the state into django cache/database.bx_django_utils.feature_flags.test_utilsFeatureFlagTestCaseMixin()- 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.filenameclean_filename()- Convert filename to ASCII only via slugify.filename2human_name()- Convert filename to a capitalized name.bx_django_utils.httpbuild_url_parameters()- Return an encoded string of all given parameters.bx_django_utils.humanize.pformatpformat()- Betterpretty-print-formatusingDjangoJSONEncoderwith fallback topprint.pformat()bx_django_utils.humanize.timehuman_timedelta()- Converts a time duration into a friendly text representation. (X ms,sec,minutesetc.)bx_django_utils.json_utilsmake_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_fieldColorModelField()- 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.manipulateUtilities 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 CreateOrUpdateResultbx_django_utils.models.queryset_utilsremove_filter()- Remove an applied .filter() from a QuerySetremove_model_filter()- Remove an applied .filter() from a QuerySet if it contains references to the specified modelbx_django_utils.models.timetrackingTimetrackingBaseModel()- Abstract base model that will automaticly set create/update Datetimes.bx_django_utils.stacktraceStackTrace()- 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.accessorsdict_get()- Returns the wanted member of a dict-like container, or an empty stringbx_django_utils.templatetags.humanize_timehuman_duration()- Verbose time since template tag, e.g.:<span title="Jan. 1, 2000, noon">2.0 seconds</span>bx_django_utils.test_utilsUtilities / helper for writing tests.bx_django_utils.test_utils.assert_queriesAssertQueries()- Assert executed database queries: Check table names, duplicate/similar Queries.bx_django_utils.test_utils.cacheClearCacheMixin()- TestCase mixin to clear the Django cache in setUp/tearDownMockCache()- Mock Django cache backend, so it's easy to check/manipulate the cache contentbx_django_utils.test_utils.content_typesContentTypeCacheFixMixin()- TestCase mixin to fill the ContentType cache to avoid flaky database queries.bx_django_utils.test_utils.datetimeMockDatetimeGenerator()- Mock djangotimezone.now()with generic time stamps in tests.bx_django_utils.test_utils.fixturesUtilities 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 filesbx_django_utils.test_utils.formsAssertFormFields()- Helper to check the existing form fields.bx_django_utils.test_utils.html_assertionHtmlAssertionMixin()- 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.get_django_name_suffix()- Returns a short Django version string, useable for snapshot "name_suffix" e.g.: "django42"bx_django_utils.test_utils.model_clean_assertAssertModelCleanCalled()- 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.playwrightUse Playwright in Unittest + Fast Django user loginPlaywrightConfig()- PlaywrightTestCase config from environment (PWBROWSER, PWHEADLESS, PWSKIP, PWSLOWMO)PlaywrightTestCase()- StaticLiveServerTestCase with helpers for writing frontend tests using Playwright.bx_django_utils.test_utils.usersassert_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 permissionsexceptthe {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.translationFieldTranslation()- 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.expand_languages_codes()- Build a complete list if language code with and without dialects.get_user_priorities()- Collect usable language codes the current usermake_unique()- Flat args and remove duplicate entries while keeping the order intact.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.:user_language_priorities()- Returns the order in which to attempt resolving translations of a FieldTranslation model field.validate_unique_translations()- Deny creating non-unique translation: Creates ValidationError with change list search for doubled entries.bx_django_utils.user_timezoneAutomatic local user timezone:https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/user_timezone/README.mdbx_django_utils.user_timezone.appsUserTimezoneAppConfig()- Django app to set the user local time zone.bx_django_utils.user_timezone.humanizehuman_timezone_datetime()- Render a datetime with timezone information.bx_django_utils.user_timezone.middlewareInvalidUserTimeZone()- Inappropriate argument value (of correct type).UserTimezoneMiddleware()- Activate Timezone by "UserTimeZone" cookievalidate()- Validate the UserTimeZone cookie value.bx_django_utils.user_timezone.templatetags.user_timezonehumane_timezone_dt()- Template filter to render a datetime with timezone information.bx_django_utils.versionDetermineVersionCommand()- Write application version determined from git as a commandbx_django_utils.view_utils.dynamic_menu_urlsDynamicViewMenu()- Simple storage for store information about views/urls to build a menu.developingTo start developing e.g.:~$gitclonehttps://github.com/boxine/bx_django_utils.git
~$cdbx_django_utils
~/bx_django_utils$makehelpListallcommands
install-poetryinstallpoetry
installinstallviapoetry
updateUpdatethedependenciesasaccordingtothepyproject.tomlfile
lintRuncodeformattersandlinter
fix-code-styleFixcodeformatting
tox-listenvsListalltoxtestenvironments
toxRununittestsviatoxwithallenvironmentstestRununittests
publishReleasenewversiontoPyPi
docker-testRuntestsindocker
makemessagesMakeandcompilelocalesmessagefiles
start-dev-serverStartDjangodev.serverwiththetestproject
cleanRemovecreatedfilesfromthetestproject(e.g.:SQlite,staticfiles)playwright-installInstalltestbrowserforPlaywrighttests
playwright-inspectorRunPlaywrightinspector
playwright-testsRunonlythePlaywrighttestsYou can start the test project with the Django developing server, e.g.:~/bx_django_utils$makestart-dev-serverThis 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$makeclean...and start the test server again ;)LicenseMIT. Patches welcome!About usWe’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/Linkshttps://pypi.org/project/bx-django-utils/