Skip to main content

SmoothGlue Django Core

Overview

SmoothGlue Django Core provides a robust foundation for creating extendable and secure application features, optimized for highly regulated environments. This project includes reusable Django apps designed to streamline development for applications requiring stringent security and compliance measures.

Key Features

  • Abstract Models: Includes abstract models like AuditModel and TimeAuditModel for audit trail functionality in your models.
  • Reusable Serializers: A set of base serializers for consistent API development.
  • Custom User Model: Extensible user model adaptable to various authentication requirements.
  • Environment-specific Configuration: Designed for easy configuration in different environments (development, staging, production).
  • Authentication Frameworks: Authentication backends for JWT auth, and creating bootstrap superusers.
  • Duplication Utilities: A duplication utility that allows field selection, field mapping and recursive child duplication.
  • Dynamic API Compression: Configurable middleware for compressing API responses with Brotli or Zstandard.

Installation

Prerequisites

  • Python 3.12+
  • Django 5.2+
  • Django REST Framework 3.15.2+

Install SmoothGlue Django Core From PyPI (Official Use)

  1. Use pip and the following command inside the Django project:

    pip install smoothglue_django_core
    
  2. Enable Smoothglue Django Core's apps in your settings.py:

INSTALLED_APPS = [
    # ... other installed apps ...
    'smoothglue.core',
    'smoothglue.authentication',
    'smoothglue.tracker',
    # ... other installed apps ...
]
  1. Database Migrations:

Run the migrations to create the necessary database tables:

python manage.py migrate
  1. Optional: Enable bootstrap user:

Update settings.py to enable the RootAdminBackend, and set the username and password

AUTHENTICATION_BACKENDS = [
    # ...
    "smoothglue.authentication.auth.RootAdminBackend",
    # ...
]
ROOT_ADMIN_USERNAME = "my_admin_user"
ROOT_ADMIN_PASSWORD = "my_admin_password"

You will be able to authenticate with username my_admin_user and password my_admin_password.

  1. Optional: Enable JWT Authentication:

Update settings.py to enable the JWT middleware. This allows users to authenticate with a JWT to all views.

MIDDLEWARE = [
    # ...
    "smoothglue.authentication.auth.platform_authentication_middleware"
    # ...
]
  1. Optional: Enable Dynamic API Compression:

To enable dynamic API compression, complete these steps:

  1. Add the App: Ensure "smoothglue.core" is in your INSTALLED_APPS.

  2. Enable via Settings: Set COMPRESSION_ALGORITHM_ENABLED = True (or a case-insensitive string like "True" or "true") in your settings.py. This ensures no DB hits when disabled. By default, this is set to False.

    COMPRESSION_ALGORITHM_ENABLED = True
    
    MIDDLEWARE = [
        "smoothglue.core.middleware.DynamicCompressionMiddleware",
        # ...
    ]
    
  3. Configure via Admin or Fixtures: Create an ApplicationConfig record in the database where the key is exactly compression_algorithm and the value is your desired algorithm (BR for Brotli, or ZSTD for Zstandard). The default option is NONE (compression disabled). This can be managed via the Django admin or loaded via data fixtures by the consuming application.

  4. Run the development server to confirm the project continues to work.

API Usage

This package exposes several API endpoints to manage users, organizations, and other related data.

Authentication

This package uses JWT-based authentication. The JWT is decoded from the Authorization or Jwt header of the request. In a development environment, ENABLE_SINGLE_USER_MODE can be set to True to bypass JWT authentication and use a default " UnknownUser".

Endpoints

Users

  • GET /users/: Retrieves a list of all users.

  • POST /users/: Creates a new user.

  • GET /users/{id}/: Retrieves a specific user by their ID.

  • PUT /users/{id}/: Updates a specific user.

  • PATCH /users/{id}/: Partially updates a user.

  • DELETE /users/{id}/: Deletes a user.

Organizations

  • GET /organizations/: Retrieves a list of all organizations.

  • POST /organizations/: Creates a new organization.

  • GET /organizations/{id}/: Retrieves a specific organization by its ID.

  • PUT /organizations/{id}/: Updates an organization.

  • PATCH /organizations/{id}/: Partially updates an organization.

  • DELETE /organizations/{id}/: Deletes an organization.

Organization Members

  • GET /org-members/: Retrieves a list of all organization members.

Organization Categories

  • GET /org-categories/: Retrieves a list of all organization categories.

  • POST /org-categories/: Creates a new organization category.

  • GET /org-categories/{id}/: Retrieves a specific organization category by its ID.

  • PUT /org-categories/{id}/: Updates an organization category.

  • PATCH /org-categories/{id}/: Partially updates an organization category.

  • DELETE /org-categories/{id}/: Deletes an organization category.

Active User

  • GET /active_user/: Retrieves the currently authenticated user's information.

Duplication Example

test_item = APIChangeLog.objects.create(
            username="tester1", data={"foo": "bar"}, timestamp=datetime.now()
        )

new_test_item = duplicate_object(
            test_item,
            include_children=False,
            included_fields=["data", "timestamp"],
            field_mapper={"username": "tester45"},
        )

print(len(APIChangeLog.objects.all())) // 2
print(test_item.data == new_test_item.data) // True, since field was included
print(test_item.username == new_test_item.username) // False, since we overrode with mapper

License

This project is licensed under a Proprietary License. See the LICENSE file for more details.

Metadata

Release files for smoothglue_django_core 1.8.3

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

Source distribution (sdist)

Source distribution for smoothglue_django_core 1.8.3
File Size Uploaded Provenance Actions
smoothglue_django_core-1.8.3.tar.gz 67.3 kB Without provenance Details for smoothglue_django_core-1.8.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for smoothglue_django_core 1.8.3
File Interpreter ABI Platform Actions
smoothglue_django_core-1.8.3-py3-none-any.whl Python 3 none any Details for smoothglue_django_core-1.8.3-py3-none-any.whl

Total release size: 168.4 kB

Release files / smoothglue_django_core-1.8.3.tar.gz

Download URL smoothglue_django_core-1.8.3.tar.gz
Size 67.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a6152d4b1c43c51a7bbd8b599469ef8cc5a2d36016b9b5add9f0710822d88033
BLAKE2b-256 checksum
How to use checksums
a8fb5fa4b51513710d82dc4e88e2fee3112020f0635d7290e71a11f36d0e8961
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.4 CPython/3.12.14 Linux/4.18.0-553.115.1.el8_10.x86_64

Release files / smoothglue_django_core-1.8.3-py3-none-any.whl

Download URL smoothglue_django_core-1.8.3-py3-none-any.whl
Size 101.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c29fede76882fb1af14e87d2296b32410773c45861f82ab8e09ac8066bb7158b
BLAKE2b-256 checksum
How to use checksums
f841dbe945e3c86565df5c4282ab4bb7782054736d80521f65d0f39607a5ee4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.4 CPython/3.12.14 Linux/4.18.0-553.115.1.el8_10.x86_64

Security for smoothglue_django_core 1.8.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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