Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/harikvpy/django-popupcrud

A CRUD framework that implements CRUD operations through HTML popups.
https://github.com/harikvpy/django-popupcrud

bootstrap3 crud crud-generator django django-application python python3

Last synced: 3 months ago
JSON representation

A CRUD framework that implements CRUD operations through HTML popups.

Awesome Lists containing this project

README

        

================
django-popupcrud
================

A CRUD framework leveraging Django's generic views that implements CRUD
operations through HTML popups.

.. image:: https://img.shields.io/pypi/v/django-popupcrud.svg
:target: https://pypi.python.org/pypi/django-popupcrud
:alt: Latest PyPI version

.. image:: https://img.shields.io/pypi/dm/django-popupcrud.svg
:target: https://pypi.python.org/pypi/django-popupcrud
:alt: Number of PyPI downloads per month

Requirements
------------

- Python >= 3.4
- Django >= 2.2.8
- django-bootstrap3
- django-pure-pagination

Documentation
-------------

Available at `django-popupcrud.readthedocs.io
`_.

Quickstart
----------

1. Install ``django-popupcrud`` using pip:

``pip install django-popupcrud``

Or install it directly from the source repository:

``pip install git+https://github.com/harikvpy/django-popupcrud.git``

Yet another way would be to clone this repository and install from the cloned
root folder via ``pip install -e .``.

2. Install the dependencies - ``django-bootstrap3`` and
``django-pure-pagination``. Add the dependencies and ``popupcrud`` to
``INSTALLED_APPS`` in your project's ``settings.py``::

INSTALLED_APPS = [
...
'bootstrap3',
'pure_pagination',
'popupcrud',
...
]

3. Let ``PopupCrudViewSet`` know of your base template file name. This defaults
to ``base.html``, but if your project uses a different base template
filename, inform ``PopupCrudViewSet`` about it in ``settings.py``::

POPUPCRUD = {
'base_template': 'mybase.html',
}

Include Bootstrap CSS & JS resources in this base template.
If you were to use ``django-bootstrap3`` tags for these, your base
template should look something like this::


{% bootstrap_css %}

{% bootstrap_javascript %}
{% block extrahead %}{% endblock extrahead %}

Also, define a block named ``extrahead`` within the ```` element.
``PopupCrudViewSet`` views use a few custom CSS styles to show column
sorting options and sort priority. These styles are defined in
``static/popupcrud/css/popupcrud.css`` which is inserted into
the ``extrahead`` block. If you don't declare this block,
you will have to explicitly load the stylesheet into your base template.

4. In your app's ``views.py``, create a ``ViewSet`` for each model for which you
want to support CRUD operations.

Models.py::

from django.db import models

class Author(models.Model):
name = models.CharField("Name", max_length=128)
penname = models.CharField("Pen Name", max_length=128)
age = models.SmallIntegerField("Age", null=True, blank=True)

class Meta:
ordering = ('name',)
verbose_name = "Author"
verbose_name_plural = "Authors"

def __str__(self):
return self.name

Views.py::

from django.core.urlresolvers import reverse_lazy, reverse
from popupcrud.views import PopupCrudViewSet

class AuthorViewSet(PopupCrudViewSet):
model = Author
fields = ('name', 'penname', 'age')
list_display = ('name', 'penname', 'age')
list_url = reverse_lazy("library:authors:list")
new_url = reverse_lazy("library:authors:create")

def get_edit_url(self, obj):
return reverse("library:authors:update", kwargs={'pk': obj.pk})

def get_delete_url(self, obj):
return reverse("library:authors:delete", kwargs={'pk': obj.pk})

5. Wire up the CRUD views generated by the viewset to the URLconf::

urlpatterns= [
url(r'^authors/', views.AuthorCrudViewset.urls()),
]

This will register the following urls:

* ``authors/`` - list view
* ``authors/create/`` - create view
* ``authors//`` - detail view
* ``authors//update/`` - update view
* ``authors//delete/`` - delete view

The urls are registered under its own namespace, which defaults to the
model's ``verbose_name_plural`` meta value.

6. Thats it! Your modern HTML popup based CRUD for your table is up and running.

PopupCrudViewSet has many options to customize the fields displayed in list
view, form used for create/update operations, permission control and more.
Refer to the Reference and How-to sections of the documentation for more
details.

License
-------
Distributed under BSD 3-Clause License. See `LICENSE
`_ file for details.