Django module to store contact request in a structured yet generic manner.
Project description
Django Generic Contact
Django module to store contact request in a structured yet generic manner within the database.
Installation
- Install using pip:
pip install django-generic-contact
- Integrate
django_generic_contact
into yoursettings.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.
:warning: 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 -r requirements.txt
# setup environment
pip install -e .
# 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-generic-contact-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bfbf97205a91432fa6eea8cab754a3beb1b091c06b4d70a59b0d3ae598c35a7 |
|
MD5 | 09567c322dc47388c91175568585beec |
|
BLAKE2b-256 | 615477ee6e8d474ab0c0855645427f68e52d2f2c40629b86b99d851ecfa402d4 |
Hashes for django_generic_contact-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 859479b7757f6161ff5486d956c4816a5a847971de3d22e59039f9f39b61650a |
|
MD5 | 9e0a4f6828f64503785db673fae4c133 |
|
BLAKE2b-256 | b881574d6ecd080168160999ebe4263120f7221f59affdc05af0672474aa683d |