Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/asifpy/django-crudbuilder
Generic CRUD implementation in Django
https://github.com/asifpy/django-crudbuilder
asifpy bootstrap3 crud crud-builder crud-generator crud-maker django django-crudbuilder python
Last synced: about 1 month ago
JSON representation
Generic CRUD implementation in Django
- Host: GitHub
- URL: https://github.com/asifpy/django-crudbuilder
- Owner: asifpy
- License: apache-2.0
- Created: 2015-10-20T15:18:50.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2023-08-28T15:13:03.000Z (about 1 year ago)
- Last Synced: 2024-04-14T08:02:40.126Z (7 months ago)
- Topics: asifpy, bootstrap3, crud, crud-builder, crud-generator, crud-maker, django, django-crudbuilder, python
- Language: Python
- Homepage: https://django-crudbuilder.readthedocs.org/en/latest/index.html
- Size: 601 KB
- Stars: 188
- Watchers: 20
- Forks: 67
- Open Issues: 8
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.txt
Awesome Lists containing this project
README
|Build|_ |CodeHealth|_ |coverage|_ |pypi|_ |CodeQuality|_
.. |Build| image:: https://travis-ci.org/asifpy/django-crudbuilder.svg?branch=master
.. _Build: https://travis-ci.org/asifpy/django-crudbuilder.. |CodeHealth| image:: https://landscape.io/github/asifpy/django-crudbuilder/master/landscape.svg?style=flat
.. _CodeHealth: https://landscape.io/github/asifpy/django-crudbuilder/master.. |pypi| image:: https://img.shields.io/pypi/v/django-crudbuilder.svg
.. _pypi: https://pypi.python.org/pypi/django-crudbuilder.. |CodeQuality| image:: https://scrutinizer-ci.com/g/asifpy/django-crudbuilder/badges/build.png?b=master
.. _CodeQuality: https://scrutinizer-ci.com/g/asifpy/django-crudbuilder/?branch=master.. |coverage| image:: https://coveralls.io/repos/github/asifpy/django-crudbuilder/badge.svg?branch=master
.. _coverage: https://coveralls.io/github/asifpy/django-crudbuilder?branch=master==================
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](https://django-tables2.readthedocs.io/)Installation
------------.. code-block:: python
pip install django-crudbuilder
Usage
-----**Add "crudbuilder" to INSTALLED_APPS**
.. code-block:: python
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**
.. code-block:: python
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**
.. code-block:: python
from crudbuilder.abstract import BaseCrudBuilder
from yourapp.models import Personclass 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**
.. code-block:: python
from crudbuilder import urlsurlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^crud/', include(urls)),
]**View All your registered CRUDS**
.. code-block:: python
http://127.0.0.1:8000/crud/
**Now you can access the below CRUD URLS**
.. code-block:: python
- 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//detail/
- http://127.0.0.1:8000/crud/yourappname/yourmodelname//update/
- http://127.0.0.1:8000/crud/yourappname/yourmodelname//delete/LOGIN REQUIRED
--------------To enable global login required for all the models CRUD views, add the following to settings file
.. code-block:: python
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
.. code-block:: python
# myapp/crud.py
login_required = TruePERMISSION REQUIRED
-------------------To enable global permission required for all the models CRUD views, add the following to settings file
.. code-block:: python
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
.. code-block:: python
# myapp/crud.py
permission_required = TrueBy enabling either of above flag, crudbuilder by default checks for following permissions:
.. code-block:: python
- For ListView : ._list
- For CreateView : ._create
- For DetailView : ._detail
- For UpdateView : ._update
- For DeleteView : ._deleteIf you want to add your own permissions, then define your own permission required dictionary explicitly in CRUD class.
.. code-block:: python
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... code-block:: python
APP : {{app_label}}
MODEL : {{actual_model_name}}
PLURIZED MODEL : {{pluralized_model_name}}