Skip to content

Instantly share code, notes, and snippets.

@spout
Created December 30, 2013 08:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spout/8179573 to your computer and use it in GitHub Desktop.
Save spout/8179573 to your computer and use it in GitHub Desktop.
from django.db import models
from django.core.urlresolvers import reverse
from django.conf.urls import url, patterns
from common.views import AutomagicListView, AutomagicDetailView, AutomagicCreateView, AutomagicUpdateView,\
AutomagicDeleteView
class AutomagicModel(models.Model):
class Meta:
abstract = True
def get_absolute_url(self):
return reverse(self.get_absolute_url_alias(), kwargs={'pk': self.pk})
def get_create_url(self):
return reverse(self.get_create_url_alias())
def get_index_url(self):
return "/%s/%s/" % (self._meta.app_label, self._meta.module_name)
def get_delete_url(self):
return reverse(self.get_delete_url_alias(), kwargs={'pk': self.pk})
def get_update_url(self):
return reverse(self.get_update_url_alias(), kwargs={'pk': self.pk})
def get_absolute_url_regexp(self):
return "^%s/(?P<pk>\d+)-(?P<slug>[-\w\d]+)/$" % (self._meta.module_name)
def get_create_url_regexp(self):
return '^%s/create/$' % (self._meta.module_name)
def get_index_url_regexp(self):
return "^%s/$" % (self._meta.module_name)
def get_delete_url_regexp(self):
return "^%s/delete/(?P<pk>\d+)/$" % (self._meta.module_name)
def get_update_url_regexp(self):
return "^%s/update/(?P<pk>\d+)/$" % (self._meta.module_name)
def get_absolute_url_alias(self):
return "%s_%s_absolute" % (self._meta.app_label, self._meta.module_name)
def get_create_url_alias(self):
return '%s_%s_create' % (self._meta.app_label, self._meta.module_name)
def get_index_url_alias(self):
return "%s_%s_index" % (self._meta.app_label, self._meta.module_name)
def get_delete_url_alias(self):
return "%s_%s_delete" % (self._meta.app_label, self._meta.module_name)
def get_update_url_alias(self):
return "%s_%s_update" % (self._meta.app_label, self._meta.module_name)
def build_generic_CRUD_urls(self, model_class):
return patterns(
'django.views.generic',
url(
self.get_index_url_regexp(),
AutomagicListView.as_view(model=model_class),
name=self.get_index_url_alias()
),
url(
self.get_absolute_url_regexp(),
AutomagicDetailView.as_view(model=model_class),
name=self.get_absolute_url_alias()
),
url(
self.get_create_url_regexp(),
AutomagicCreateView.as_view(model=model_class),
name=self.get_create_url_alias()
),
url(
self.get_update_url_regexp(),
AutomagicUpdateView.as_view(model=model_class),
name=self.get_update_url_alias()
),
url(
self.get_delete_url_regexp(),
AutomagicDeleteView.as_view(model=model_class),
name=self.get_delete_url_alias()
),
)
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
class AutomagicListView(ListView):
pass
class AutomagicDetailView(DetailView):
pass
class AutomagicCreateView(CreateView):
pass
class AutomagicUpdateView(UpdateView):
pass
class AutomagicDeleteView(DeleteView):
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment