Skip to content

Instantly share code, notes, and snippets.

@andrewboltachev
Created September 26, 2014 13:17
Show Gist options
  • Save andrewboltachev/6179751e8ffc4d722e75 to your computer and use it in GitHub Desktop.
Save andrewboltachev/6179751e8ffc4d722e75 to your computer and use it in GitHub Desktop.
django viewsets (people need CRUD too)
from django.conf.urls import url
def viewsets(model_class, template_list, template_item, overrides={}, base_view_classes=()):
if base_view_classes is None:
base_view_classes = ()
if not isinstance(base_view_classes, tuple):
base_view_classes = (base_view_classes, )
views = {
'create': {
'base': CreateView,
'attrs': {
'template_name': template_item,
},
},
'list': {
'base': ListView,
'attrs': {
'template_name': template_list,
},
},
'update': {
'base': UpdateView,
'attrs': {
'template_name': template_item,
},
},
'delete': {
'base': DeleteView,
'attrs': {},
},
}
for verb in views:
if verb in overrides:
views[verb].update(overrides[verb])
return [url(
r'^' + x.name['plural'] + r'/$',
type(
name['capitalized'],
base_view_classes + (x['base'], ),
{
'model': model_class,
'template_name': x['template_name']
}
),
x['name']['singular'] + '_' + x['verb']
) for x in views]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment