Skip to main content

Django Generic Contact

PyPI version Run linter and tests Codecov

Django module to store contact request in a structured yet generic manner within the database.

Supported versions (from endoflife.date):

  • Python: 3.10, 3.11, 3.12, 3.13, 3.14
  • Django: 4.2 (LTS), 5.2 (LTS), 6.0

Installation

  1. Install using pip:
pip install django-generic-contact
  1. Integrate django_generic_contact into your settings.py
INSTALLED_APPS = [
    # ...
    'django_generic_contact',
    # ...
]

Usage

The package provides you with a Contact model which expects data (dict) and the name of the requester, an optional message can be added:

from django_generic_contact.models import Contact

contact = Contact.objects.create(
    name="Mr. Tester",
    message="Please contact me via email or phone.",
    data={
        "email": "mr@tester.com",
        "phone": "123456",
    }
)

JSON Schema validation

The contents of data will be validated against a json schema defined in your project's settings.py (if provided). If needed you can define GENERIC_CONTACT_DATA_SCHEMA to check all relevant input according to the expected structure, e.g.:

GENERIC_CONTACT_DATA_SCHEMA = {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
        "email": {"type": "string", "format": "email"},
        "phone": {"type": "integer"},
    },
}

See more examples of GENERIC_CONTACT_DATA_SCHEMA in tests/testapp/tests/test_model.py.

Customizing the Contact model

The base model GenericContact only requires the data. Thus, you can let your own models inherit from this and extend it according to your project's needs, e.g.:

from django_generic_contact.models import GenericContact

class CustomContact(GenericContact):
    birth_date = models.Datetime(_("birth date"))
    zip = models.CharField(_("zip"))

Unit Tests

See folder tests/. The provided tests cover these criteria:

  • success:
    • Contact model instance creation
    • project's jsonschema validation
  • failure:
    • project's jsonschema validation
    • exemplary custom jsonschema validation

Follow below instructions to run the tests. You may exchange the installed Django and DRF versions according to your requirements. ⚠️ Depending on your local environment settings you might need to explicitly call python3 instead of python.

# install dependencies
python -m pip install --upgrade pip
pip install -e .[dev]

# run tests
cd tests && python manage.py test

Contributing

Contributions are welcomed! Read the Contributing Guide for more information.

Licensing

See LICENSE for more information.

Metadata

Release files for django-generic-contact 1.2.2

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

Source distribution (sdist)

Source distribution for django-generic-contact 1.2.2
File Size Uploaded
django_generic_contact-1.2.2.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-generic-contact 1.2.2
File Interpreter ABI Platform
django_generic_contact-1.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 20.7 kB

Release files / django_generic_contact-1.2.2.tar.gz

Download URL django_generic_contact-1.2.2.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
55821e56f4a879874895622c4161f2e43be65aaf06fe7f333f0106b259460565
BLAKE2b-256 checksum
How to use checksums
8abf07b32ab53185252065a80d28021097b9bc5393e6ca92a8f7cf1837d41ef0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / django_generic_contact-1.2.2-py3-none-any.whl

Download URL django_generic_contact-1.2.2-py3-none-any.whl
Size 8.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efdc6586daa558c42932afef75fef2913bca0b29687a0e515aabfa7da280072a
BLAKE2b-256 checksum
How to use checksums
b766c41f4a370149aea02e7f92c9f455d5742c7dc936db52d62b93aa4db29b75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

1.2.2 This release

2 release files

1.1.0

2 release files

1.0.0

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