Various Django utility functions
Project description
Boxine - bx_django_utils
Various Python / 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.
models utilities
approve_workflow
- Base model/admin/form classes to implement a model with draft/approve versions workflowmanipulate.create_or_update()
- Similar to django'screate_or_update()
with benefitstimetracking.TimetrackingBaseModel()
- Base model with "create" and "last update" date time
data types
data_types.gtin
- ModelField, FormField and validators for GTIN/UPC/EAN numbers, more info: data_types/gtin/README.md
test utilities
datetime.MockDatetimeGenerator()
- Mock djangotimezone.now()
with generic time stampsdatetime.parse_dt()
- Handydatetime.strptime()
converthtml_assertion.HtmlAssertionMixin
- Unittest mixin class with usefull assertments around Django test client testsmodel_clean_assert.CleanMock()
- Context manager to track if modelfull_clean()
was calledusers
- Utilities around user/permission setup for teststime.MockTimeMonotonicGenerator()
- Mocktime.monotonic()
with generic time stampsAssertQueries()
- Context manager with different checks of made database queriesassert_json_requests_mock()
- Check the requests history ofrequests_mock.mock()
assert_equal()
- Compare objects with a nice diff using pformatassert_text_equal()
- Compare text strings with a nice diffassert_snapshot
- Helper for quick snapshot test functionality (comparing value with one stored in a file using json)assert_text_snapshot
- Same asassert_snapshot
comparing text stringsassert_py_snapshot
- Snapshot test usingPrettyPrinter()
performance analysis
dbperf.query_recorder.SQLQueryRecorder
- Context Manager that records SQL queries executed via the Django ORM
humanize
humanize.time.human_timedelta()
- Converts a time duration into a friendly text representation. (X ms
,sec
,minutes
etc.)templatetags.humanize_time.human_duration()
- Verbose time since template tag, e.g.:<span title="Jan. 1, 2000, noon">2.0 seconds</span>
filename.filename2human_name()
- Convert filename to a capitalized namefilename.clean_filename()
- Convert filename to ASCII only via slugifypformat()
- Betterpretty-print-format
using JSON with fallback topprint.pformat()
view utilities
view_utils.dynamic_menu_urls.DynamicViewMenu()
- Register views to build a simple menu with sections
AWS stuff
bx_django_utils.aws.secret_manager.SecretsManager
- Get values from AWS Secrets Managerbx_django_utils.test_utils.mock_aws_secret_manager.SecretsManagerMock
- Mock ourSecretsManager()
helper in testsbx_django_utils.test_utils.mock_boto3session.MockedBoto3Session
- Mockboto3.session.Session()
(Currently onlyget_secret_value()
)bx_django_utils.aws.client_side_cert_manager.ClientSideCertManager
- Helper to manage client-side TLS certificate via AWS Secrets Manager
GraphQL
graphql_introspection.introspection_query
Generate an introspection query to get an introspection doc.graphql_introspection.complete_query
Generate a full query for all fields from an introspection doc.
misc
dict_utils.dict_get()
- nested dictget()
dict_utils.pluck()
- Extract values from a dict, if they are presentenviron.cgroup_memory_usage()
- Get the memory usage of the current cgrouperror_handling.print_exc_plus()
- Print traceback information with a listing of all the local variables in each frameiteration.chunk_iterable()
- Create chunks off of any iterableprocessify.processify()
- Will execute the decorated function in a separate processstacktrace.get_stacktrace()
- Returns a filterable and easy-to-process stacktraceanonymize.anonymize()
- Anonymize a string (With special handling of email addresses)hash_utils.url_safe_hash()
- Generate URL safe hashescompat.removeprefix()
- Backport ofstr.removeprefix
from PEP-616compat.removesuffix()
- Backport ofstr.removesuffix
from PEP-616
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
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
tox-py36 Run pytest via tox with *python v3.6*
tox-py37 Run pytest via tox with *python v3.7*
tox-py38 Run pytest via tox with *python v3.8*
tox-py39 Run pytest via tox with *python v3.9*
pytest Run pytest
pytest-ci Run pytest with CI settings
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 (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 ;)
License
MIT. Patches welcome!
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
bx_django_utils-1a0.tar.gz
(37.0 kB
view hashes)
Built Distribution
Close
Hashes for bx_django_utils-1a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95892cb76de1993318b6444f0582a9aa565baf1de272dfdeeaa94419ddb7bb21 |
|
MD5 | 94c2f3330c6d487c8a3ace2204fc4b57 |
|
BLAKE2b-256 | a424627293a6129b412d51bc329539c37c16471b5415406e63092c7c7469c57d |