Skip to main content

Reusable Django models, utils and storages

Project description

DjangoEssentials

Join Our Community - Kampus

DjangoEssentials is a Python library designed to streamline and enhance the development process of Django applications. It offers a collection of commonly used Django models and deployment settings, encapsulating repetitive patterns and configurations into a reusable package. The library is intended to evolve with contributions from the community, making it a collaborative project.

Features

  • TimeBasedStampModel: An abstract model providing time-based fields for tracking creation, update, and deletion times of model instances.
  • MyS3Storage: A custom storage class for Django, facilitating integration with Amazon S3 for media storage, with features such as non-overwriting of files with the same name and public read access by default.

Getting Started

Below are instructions on how to install DjangoEssentials and examples of how to use its features in your Django projects.

Installation

Install DjangoEssentials using pip:

pip install DjangoEssentials

Usage

  • TimeBasedStampModel

Inherit from TimeBasedStampModel to add automatic creation, update, and soft deletion timestamps to your models.

from django.db import models
from djangoessentials import TimeBasedStampModel

class YourModel(TimeBasedStampModel):
    name = models.CharField(max_length=255)
    # Add your fields here
  • MyS3Storage

Configure your Django project to use MyS3Storage for handling media files with Amazon S3. Example:

# settings.py
USE_S3 = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/

if USE_S3:
    # aws settings
    AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")  ## get your aws access key
    AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")  ## get your aws secret access key
    AWS_STORAGE_BUCKET_NAME = os.getenv("AWS_STORAGE_BUCKET_NAME")  ## Your bucket name
    AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
    AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
    # s3 public media settings
    PUBLIC_MEDIA_LOCATION = 'media'
    MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'
else:
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static/'),
]

Than

from django.db import models
from djangoessentials import MyS3Storage

class MyModel(models.Model):
    document = models.FileField(upload_to='documents/', storage=MyS3Storage)
    # Add your fields here
  • CustomUser Model Usages:
#settings.py
AUTH_USER_MODEL = 'yourapp.CustomUser'
#example
from django import forms
from djangoessentials import CustomUser

class YourModelForm(forms.ModelForm):
    password1 = forms.CharField()
    password2 = forms.CharField()
    class Meta:
        model = CustomUser
        fields = ('username', 'phone_number', 'date_of_birth')

Advanced Usage

DjangoEssentials aims to provide more utilities and helpers over time, driven by community contributions and the evolving needs of Django developers.

Contributing

We welcome contributions from the community, whether it's adding new features, improving documentation, or reporting bugs. Please follow these steps to contribute:

Fork the repository.

  • Create your feature branch (git checkout -b feature/AmazingFeature).
  • Commit your changes (git commit -am 'Add some AmazingFeature').
  • Push to the branch (git push origin feature/AmazingFeature).
  • Open a Pull Request.

Contact

For questions or additional information, please reach out to codermungan@gmail.com

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

DjangoEssentials-0.1.9.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

DjangoEssentials-0.1.9-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file DjangoEssentials-0.1.9.tar.gz.

File metadata

  • Download URL: DjangoEssentials-0.1.9.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.0

File hashes

Hashes for DjangoEssentials-0.1.9.tar.gz
Algorithm Hash digest
SHA256 3fb51bda42e2baf23464cfd523ff15fdb435cc86af5b3966554b42319c303ca7
MD5 0f800c54d1c3543a41bc04ac0e2b3901
BLAKE2b-256 2f4d78a3047b9cdf0bc314e73aeb0a7c1827f37da6d21fc308a218151f165e79

See more details on using hashes here.

File details

Details for the file DjangoEssentials-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for DjangoEssentials-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 d75df7bb1d05bcf1faee1365822b97c6fa2290da0d99abe72ae19d8c65b507fd
MD5 293ffad386399035b88c9250ea2c16a8
BLAKE2b-256 3a35852d229fd83355c8d883f9580d94e652f9367b0f9e3727ba261506157e5b

See more details on using hashes here.

Supported by

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