Skip to main content

Django app for forms chaining with some features

Project description

https://img.shields.io/pypi/v/django_namek https://img.shields.io/pypi/pyversions/django_namek

Django Namek is a Django app for forms chaining with some features :

  • Manage Django forms in Django session

  • Reuse generic views : IndexView, ValidationView and ResultsView

  • Perform an action with the results of the forms

  • Tests written with Selenium

https://d271q0ph7te9f8.cloudfront.net/www/documents/django_namek_preview.gif

Setup

1 - Install with pip :

pip install django_namek

2 - Create your forms

from django import forms
from django_namek import abstract


class LocationForm(abstract.Form):
    display_name = "Location"
    slug = "location"

    address_line = forms.CharField(
        label='Adresse',
        max_length=100
    )
    zip_code = forms.CharField(
        label='Postal Code',
        max_length=5
    )
    city = forms.CharField(
        label='City',
        max_length=100
    )

3 - Create your workflows

from django_namek import abstract
from . import forms


class PersonWorkflow(abstract.WorkflowView):
    display_name = 'Person'
    slug = 'person'
    forms = [
        forms.LocationForm,
        forms.ActivityForm,
    ]


class CompanyWorkflow(abstract.WorkflowView):
    display_name = 'Company'
    slug = 'company'
    forms = [
        forms.LocationForm,
        forms.ActivityForm,
    ]

4 - Create an action :

import hashlib
from django_namek.actions import Action


class Md5(Action):

    def run(self):
        address_line = self.session.get_field('address_line', '')
        zip_code = self.session.get_field('zip_code', '')
        city = self.session.get_field('city', '')
        activity = self.session.get_field('activity', ['empty'])

        md5 = hashlib.md5()

        md5.update(address_line.encode())
        md5.update(zip_code.encode())
        md5.update(city.encode())
        md5.update(activity[0].encode())

        self.res['md5'] = md5

5 - Change your Django settings.py. For more customization, take a look at constants.py :

INSTALLED_APPS = [
    ...
    'django_namek',
]
...
SESSION_ENGINE = "django_namek.session"
DN_WORKFLOWS = [
    'tests.views.PersonWorkflow',
    'tests.views.CompanyWorkflow',
]
DN_BASE_URL = "http://localhost:4243"
DN_ACTION_CLASS = "tests.actions.Md5"

6 - Add Django Namek urls :

from django.urls import include, path

urlpatterns = [
    ...
    path('', include('django_namek.urls', namespace='django_namek'))
]

Optional : configure an email backend with django for validation view (example with anymail[sendgrid]) :

ANYMAIL = {
    "SENDGRID_API_KEY": xxxxxx,
}
EMAIL_BACKEND = "anymail.backends.sendgrid.EmailBackend"
DEFAULT_FROM_EMAIL = "mail@example.com"
SERVER_EMAIL = "mail@example.com"

Development env

git clone git@github.com:Aleksi44/django-namek.git
pip install -r requirements.txt

Run Django Server

python manage.py migrate
python manage.py init
python manage.py runserver 0.0.0.0:4243

Tests

This test allows you to test all workflows with selenium :

python manage.py test django_namek.tests

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

django_namek-0.0.3.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

django_namek-0.0.3-py3-none-any.whl (35.1 kB view details)

Uploaded Python 3

File details

Details for the file django_namek-0.0.3.tar.gz.

File metadata

  • Download URL: django_namek-0.0.3.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.9

File hashes

Hashes for django_namek-0.0.3.tar.gz
Algorithm Hash digest
SHA256 7b0e1b87a2fcd1bd34ac0adb7c06422749a42ea281614216df39067c264e5652
MD5 773904b4b9722f382e400eaf41734b2d
BLAKE2b-256 718fb5c34d886c09fb0ad03d36fad0645af03396386d2b0fa19e48597947d174

See more details on using hashes here.

File details

Details for the file django_namek-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: django_namek-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 35.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.9

File hashes

Hashes for django_namek-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 88e1163ad4993aec27f29d37c84db380711dd1bf606dd2678d12cc80b35ccae5
MD5 638656882cccc358b3e7fe70ea0337dd
BLAKE2b-256 b3c96d4225b25446f052a369be94fca07d2d19ec198f2443bd334753debcb830

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