Metadata-Version: 2.1
Name: django-crudviewset
Version: 0.1.2
Summary: Django CRUDViewSet
Home-page: https://github.com/yusk/django-crudviewset
Author: yusk
Author-email: tdfagamdb@yahoo.co.jp
License: MIT License
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
Requires-Dist: django

# Django CRUDViewSet

# Requirements

* Python 3.6.*
* Django 2.*

# Installation

Install using `pip` ...

```bash
pip install django-crudviewset
```

Add `'crudviewset'` to your `INSTALLED_APPS` setting.

```python
INSTALLED_APPS = (
    ...
    'crudviewset',
)
```

# Example

## Simple Example

`example/views.py`

```python
from crudviewset import CRUDViewSet

from example.models import Board

BoardCRUDViewSet = CRUDViewSet('board', Board)
```

`example/urls.py`

```python
from . import views

urlpatterns = []
urlpatterns.extend(views.BoardCRUDViewSet.get_urlpatterns())
```

## Custom Example

`example/views.py`

```python
from django.contrib.auth.mixins import UserPassesTestMixin

from crudviewset import CRUDViewSet, ViewParams, VIEWKIND

from example.models import Board
from example.forms import BoardForm


class BoardFormViewMixin:
    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs['user'] = self.request.user
        return kwargs


BoardCRUDViewSet = CRUDViewSet(
    'board', Board, app_name='example',
    base_superclasses=[UserPassesTestMixin],
    base_variables={
        'test_func': lambda self: self.request.user.is_authenticated,
        'get_queryset': lambda self: Board.objects.filter(user=self.request.user).order_by('-created_at'),
    },
    list_vp=ViewParams(
        role=VIEWKIND.LIST,
        variables={
            'paginate_by': 10,
        }
    ),
    detail_vp=ViewParams(
        role=VIEWKIND.DETAIL,
        superclasses=[],
        variables={
            'get_queryset': lambda self: Board.objects.all().order_by('-created_at'),
        }
    ),
    create_vp=ViewParams(
        role=VIEWKIND.CREATE,
        superclasses=[UserPassesTestMixin, BoardFormViewMixin],
        variables={
            'form_class': BoardForm,
            'template_name': 'example/example_form.html',
        }
    ),
    update_vp=ViewParams(
        role=VIEWKIND.UPDATE,
        superclasses=[UserPassesTestMixin, BoardFormViewMixin],
        variables={
            'form_class': BoardForm,
            'template_name': 'example/example_form.html',
        }
    ),
    delete_vp=ViewParams(
        role=VIEWKIND.DELETE,
        variables={
            'success_url': reverse_lazy('main:example_list'),
        }
    ),
    vp_list=[
        ViewParams(
            role=VIEWKIND.LIST,
            route='latest/',
            route_name='latest',
            variables={
                'paginate_by': 10,
                'template_name': 'example/latest.html',
                'get_queryset': lambda self: Board.objects.all().order_by('-created_at'),
            }
        ),
    ]
)
```

`example/urls.py`

```python
from . import views

app_name = 'example'
urlpatterns = []
urlpatterns.extend(views.BoardCRUDViewSet.get_urlpatterns())
```



