Skip to main content

A collection of classes built on Django to make it easier to build web applications.

Project description

DjangoFoundry

DjangoFoundry is a Python library which intends to expedite the development process by creating a few classes your code can inherit from.

Do I need another framework?

No. You don't. This is entirely unnecessary for your project, but it includes tools that help me bootstrap my work, so I'm releasing it. Feel free to modify it to your needs, or ignore this project altogether.

Installation

To install DjangoFoundry, use pip:

pip install djangofoundry

Features

DjangoFoundry includes classes to manage aspects of a Django application, such as:

  • Generic controllers to inherit from including JSON and memory monitoring.
  • A library of exceptions.
  • Progress tracking with the ProgressStates, ProgressBar, and ChildProgressBar classes.
  • Hook and waypoint management.
  • Template rendering for specific use-cases, such as creating db models.
  • Matching engine for handling tasks like OCR.
  • Utility mixins for dealing with dirty fields, hookable objects, and param handling.
  • Simplified JSON encoding with the JSONEncoder class.
  • Model, queryset, and serializer management for data handling.
  • Readthedocs documentation
  • Finish pylint / prospector cleanup
  • Github actions
  • Easy access to various apis

Sample Cases

Consider a scenario where you are processing a set of items, and you want to display a progress bar to indicate the progress of the task.

    total_items = items_to_process.count()
    processed_items = 0
    for item in items_to_process:
        processed_items += 1
        progress = (processed_items / total_items) * 100
        # Now you have to manually handle this progress information

With DjangoFoundry, we can remove some of the boilerplate:

    progress_bar = ProgressBar(total=items_to_process.count())
    for item in items_to_process:
        progress_bar.advance()
        # DjangoFoundry handles the progress tracking for you.

We can use querysets to calculate statistics like the median:

median_value = Model.objects.values_list('field_name', flat=True).median()
filtered = Model.objects.filter(field_name__gte=median_value - deviation, field_name__lte=median_value + deviation)

With DjangoFoundry, most of that goes away:

filtered = Model.objects.filter_median('field_name', deviation)

We can find correlations in the data as well:

correlated_fields = Model.objects.find_correlated_fields('field_name', threshold)

Scripts are included to start up, monitor, and manage various processes, including django and a postgres db.

python scripts/db.py start

It also includes an alpha version of a "GPT-4 linter", which scans your python files, sends them to the openai api to ask for feedback, and saves that feedback to a diff file. No embeddings are passed, so this will only be of so much help. An openai api key is needed: a sample-settings.yaml is provided to copy

python scripts/lint.py --help

About the Author

DjangoFoundry is developed by Jess Mann. For any queries, suggestions, or feedback, feel free to reach out.

Contributing

Contributions to DjangoFoundry are always welcome. If you find a bug or have a suggestion for improvement, please open an issue. Pull requests are also welcome.

Testing

The unit tests work in my environment, but haven't been adapted to work without django. This will be done when I have a moment.

TODO

  • Script to bootstrap django/angular project with a single command.
  • Unit tests should work independent of django env
  • Expand app startup script to check for common env problems
  • requirements.txt and other setup
  • Opinionated dependencies fail gracefully
  • Script to create new controller/url/angular components with a single command
  • Standard pages (memory management, etc)
  • Standard way to tie in jinja generated code into admin ui

License

DjangoFoundry is released under the BSD 3-Clause License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djangofoundry-0.0.8.tar.gz (89.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

djangofoundry-0.0.8-py3-none-any.whl (117.3 kB view details)

Uploaded Python 3

File details

Details for the file djangofoundry-0.0.8.tar.gz.

File metadata

  • Download URL: djangofoundry-0.0.8.tar.gz
  • Upload date:
  • Size: 89.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for djangofoundry-0.0.8.tar.gz
Algorithm Hash digest
SHA256 a21b88b5e116d0602f60993138eda826e5fa0b308cedb1d88f298cff277c70ba
MD5 f88c36a7f8da2df6d47c79d8dde9b67f
BLAKE2b-256 ff222b4b098682c3738fc84d0601a643dedcdaea1c10e38d4fc5b780790ed988

See more details on using hashes here.

File details

Details for the file djangofoundry-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: djangofoundry-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 117.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for djangofoundry-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 5997788287c181b3d7fdd1194411918915a9804023a43c74dd79de4a0ff4f9ed
MD5 a59e12ffe9d0fe87a0f6708454eafe15
BLAKE2b-256 5f60b3f2c2fb1c2f8d65421d90fa395b16c3ec69a35499354526eecb5f455d36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page