Skip to main content

A simple Django CRUD builder

Project description

Build CodeHealth coverage pypi CodeQuality

django-crudbuilder

Generic CRUD implementation in Django which uses django tables2 to list objects.

Documentation

https://django-crudbuilder.readthedocs.org/en/latest/index.html

Features:

  • Generates class based views for CRUD

  • Uses django-tables2 to display objects in ListView

  • Define multiple crud builders for same model with separate URL

  • Allows custom forms/tables as additional arguments

  • Context provides additional template variables APP_LABEL and MODEL for all CRUD templates

  • Enable/disable login required option for CRUD views

  • Enable/disable permission required option for CRUD views

  • All the generated views/tables/forms/url are extendable.

  • post_create and post_update signals to handle specific actions in Create and Update views

  • Add your own custom templates for List/Create/Detail/Update/Delete views

  • Separate CREATE and UPDATE forms

  • Define your own custom queryset for list view

  • Inline Formset support for parent child models

  • Default Bootstrap3 CSS

  • All the generated views are extendable.

Prerequisites

  • Django 1.10+

  • Python 2.7+, 3.3+

  • Django Tables2 < 2.0

Installation

pip install django-crudbuilder

Usage

Add “crudbuilder” to INSTALLED_APPS

INSTALLED_APPS = {
        ...
        'django_tables2',
        'crudbuilder'
}

LOGIN_REQUIRED_FOR_CRUD = True/False
PERMISSION_REQUIRED_FOR_CRUD = True/False
PROJECT_NAME = 'YOUR PROJECT NAME'

Create models in yourapp/models.py

class Person(models.Model):
        """ an actual singular human being """
        name = models.CharField(blank=True, max_length=100)
        email = models.EmailField()
        created_at = models.DateTimeField(auto_now=True)
        created_by = models.ForeignKey(User, blank=True, null=True)

        def __unicode__(self):
                return self.name

Create CRUD for Person model in yourapp/crud.py

from crudbuilder.abstract import BaseCrudBuilder
from yourapp.models import Person

class PersonCrud(BaseCrudBuilder):
        model = Person
        search_fields = ['name']
        tables2_fields = ('name', 'email')
        tables2_css_class = "table table-bordered table-condensed"
        tables2_pagination = 20  # default is 10
        modelform_excludes = ['created_by', 'updated_by']
        login_required=True
        permission_required=True
        # permissions = {
        #   'list': 'example.person_list',
        #       'create': 'example.person_create'
        # }

Open yourapp/urls.py and add the following

from crudbuilder import urls

urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'^crud/',  include(urls)),
]

View All your registered CRUDS

http://127.0.0.1:8000/crud/

Now you can access the below CRUD URLS

- http://127.0.0.1:8000/crud/yourappname/yourmodelname
- http://127.0.0.1:8000/crud/yourappname/yourmodelname/create/
- http://127.0.0.1:8000/crud/yourappname/yourmodelname/<pk>/detail/
- http://127.0.0.1:8000/crud/yourappname/yourmodelname/<pk>/update/
- http://127.0.0.1:8000/crud/yourappname/yourmodelname/<pk>/delete/

LOGIN REQUIRED

To enable global login required for all the models CRUD views, add the following to settings file

LOGIN_REQUIRED_FOR_CRUD = True

If you want to enable login required only for specific model crud, then you need to add following to crud class

# myapp/crud.py
login_required = True

PERMISSION REQUIRED

To enable global permission required for all the models CRUD views, add the following to settings file

PERMISSION_REQUIRED_FOR_CRUD = True

If you want to enable permission required only for specific model crud, then you need to add following to crud class

# myapp/crud.py
permission_required = True

By enabling either of above flag, crudbuilder by default checks for following permissions:

- For ListView   : <your app_name>.<your model>_list
- For CreateView : <your app_name>.<your model>_create
- For DetailView : <your app_name>.<your model>_detail
- For UpdateView : <your app_name>.<your model>_update
- For DeleteView : <your app_name>.<your model>_delete

If you want to add your own permissions, then define your own permission required dictionary explicitly in CRUD class.

permissions = {
        'list'  : 'example.permission1',
        'create': 'example.permission2'
        'detail': 'example.permission3',
        'update': 'example.permission4',
        'delete': 'example.permission5',
        }

EXTRA TEMPLATE VARIABLES

Added mixin which allows access to additional template variables like app lable and model name in every template.

APP : {{app_label}}
MODEL : {{actual_model_name}}
PLURIZED MODEL : {{pluralized_model_name}}

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-crudbuilder-0.2.8.tar.gz (413.5 kB view details)

Uploaded Source

Built Distribution

django_crudbuilder-0.2.8-py3-none-any.whl (411.6 kB view details)

Uploaded Python 3

File details

Details for the file django-crudbuilder-0.2.8.tar.gz.

File metadata

  • Download URL: django-crudbuilder-0.2.8.tar.gz
  • Upload date:
  • Size: 413.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for django-crudbuilder-0.2.8.tar.gz
Algorithm Hash digest
SHA256 c1406f7a4db29bc36e931ae61a2a2bdfb00622a8e4adc5ea6217f349656ee78f
MD5 c653e6f7e7f75581619582f8c4998349
BLAKE2b-256 8d65a214c67e3b5b8db6f24d85c643d59c35c4347270b0dd53d03bdcdceccc7b

See more details on using hashes here.

File details

Details for the file django_crudbuilder-0.2.8-py3-none-any.whl.

File metadata

File hashes

Hashes for django_crudbuilder-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 08415bbfc2f56549eb0acf7bfc32f9889d7df1644e31a59fcfe6d200b41e3ac0
MD5 c560e1654cf6e1fcb93ffc1edaee03c0
BLAKE2b-256 49278229fa4fbe8ae8cfe63a77b83cf7b9870a0eb6e40e328568f1f0c22499c8

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