Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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 workflow
  • manipulate.create_or_update() - Similar to django's create_or_update() with benefits
  • timetracking.TimetrackingBaseModel() - Base model with "create" and "last update" date time

data types

test utilities

  • datetime.MockDatetimeGenerator() - Mock django timezone.now() with generic time stamps
  • datetime.parse_dt() - Handy datetime.strptime() convert
  • html_assertion.HtmlAssertionMixin - Unittest mixin class with usefull assertments around Django test client tests
  • model_clean_assert.CleanMock() - Context manager to track if model full_clean() was called
  • users - Utilities around user/permission setup for tests
  • time.MockTimeMonotonicGenerator() - Mock time.monotonic() with generic time stamps
  • AssertQueries() - Context manager with different checks of made database queries
  • assert_json_requests_mock() - Check the requests history of requests_mock.mock()
  • assert_equal() - Compare objects with a nice diff using pformat
  • assert_text_equal() - Compare text strings with a nice diff
  • assert_snapshot - Helper for quick snapshot test functionality (comparing value with one stored in a file using json)
  • assert_text_snapshot - Same as assert_snapshot comparing text strings
  • assert_py_snapshot - Snapshot test using PrettyPrinter()

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 name
  • filename.clean_filename() - Convert filename to ASCII only via slugify
  • pformat() - Better pretty-print-format using JSON with fallback to pprint.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 Manager
  • bx_django_utils.test_utils.mock_aws_secret_manager.SecretsManagerMock - Mock our SecretsManager() helper in tests
  • bx_django_utils.test_utils.mock_boto3session.MockedBoto3Session - Mock boto3.session.Session() (Currently only get_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 dict get()
  • dict_utils.pluck() - Extract values from a dict, if they are present
  • environ.cgroup_memory_usage() - Get the memory usage of the current cgroup
  • error_handling.print_exc_plus() - Print traceback information with a listing of all the local variables in each frame
  • iteration.chunk_iterable() - Create chunks off of any iterable
  • processify.processify() - Will execute the decorated function in a separate process
  • stacktrace.get_stacktrace() - Returns a filterable and easy-to-process stacktrace
  • anonymize.anonymize() - Anonymize a string (With special handling of email addresses)
  • hash_utils.url_safe_hash() - Generate URL safe hashes
  • compat.removeprefix() - Backport of str.removeprefix from PEP-616
  • compat.removesuffix() - Backport of str.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!

Metadata

Release files for bx-django-utils 1a0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bx-django-utils 1a0
File Size Uploaded
bx_django_utils-1a0.tar.gz 37.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bx-django-utils 1a0
File Interpreter ABI Platform
bx_django_utils-1a0-py3-none-any.whl Python 3 none any Details

Total release size: 87.9 kB

Release files / bx_django_utils-1a0.tar.gz

Download URL bx_django_utils-1a0.tar.gz
Size 37.0 kB
Tags Source
SHA-256 checksum
How to use checksums
62242ff87b8f28217f8b2df5f8c1507d5186853fd5fcf02fe757451815469a09
BLAKE2b-256 checksum
How to use checksums
e0e196233795aa4f722e1bdad941e4fb80581abab336d1bac77e478e99f45529
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

Release files / bx_django_utils-1a0-py3-none-any.whl

Download URL bx_django_utils-1a0-py3-none-any.whl
Size 50.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95892cb76de1993318b6444f0582a9aa565baf1de272dfdeeaa94419ddb7bb21
BLAKE2b-256 checksum
How to use checksums
a424627293a6129b412d51bc329539c37c16471b5415406e63092c7c7469c57d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

Release history Release notifications | RSS feed

101

2 release files

100

2 release files

99

2 release files

98

2 release files

97

2 release files

96

2 release files

95

2 release files

94

2 release files

93

2 release files

92

2 release files

91

2 release files

90

2 release files

89

2 release files

88

2 release files

87

2 release files

86

2 release files

85

2 release files

84

2 release files

83

2 release files

82

2 release files

81

2 release files

79

2 release files

78

2 release files

77

2 release files

76

2 release files

75

2 release files

74

2 release files

72

2 release files

71

2 release files

70

2 release files

69

2 release files

68

2 release files

67

2 release files

66

2 release files

65

2 release files

64

2 release files

63

2 release files

62

2 release files

61

2 release files

60

2 release files

59

2 release files

58

2 release files

57

2 release files

56

2 release files

55

2 release files

54

2 release files

53

2 release files

52

2 release files

51

2 release files

50

2 release files

49

2 release files

48

2 release files

47

2 release files

46

2 release files

45

2 release files

44

2 release files

43

2 release files

42

2 release files

41

2 release files

40

2 release files

39

2 release files

38

2 release files

37

2 release files

36

2 release files

35

2 release files

34

2 release files

33

2 release files

32

2 release files

31

2 release files

30

2 release files

29

2 release files

28

2 release files

27

2 release files

26

2 release files

25

2 release files

24

2 release files

23

2 release files

22

2 release files

21

2 release files

20

2 release files

19

2 release files

18

2 release files

17

2 release files

16

2 release files

15

2 release files

14

2 release files

13

2 release files

12

2 release files

11

2 release files

10

2 release files

9

2 release files

8

2 release files

7

2 release files

6

2 release files

5

2 release files

4

2 release files

3

2 release files

2

2 release files

1

2 release files

This release

1a0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page