Browse Source

Refactor crud build code to a simple function

pull/6/head
Marcio Mazza 10 years ago
parent
commit
7b5adc3f9b
  1. 4
      comissoes/views.py
  2. 146
      sapl/crud.py

4
comissoes/views.py

@ -1,5 +1,5 @@
from .forms import ComissaoForm
from sapl.crud import Crud
from sapl.crud import build_crud
comissao_crud = Crud(ComissaoForm)
comissao_crud = build_crud(ComissaoForm)

146
sapl/crud.py

@ -7,100 +7,100 @@ from django.views.generic import (
class Crud(object):
pass
def __init__(self, model_form):
self.model_form = model_form
def build_crud(model_form):
crud = Crud()
crud.model = model_form._meta.model
crud.namespace = crud.model._meta.model_name
self.model = model_form._meta.model
def in_namespace(url_name):
return '%s:%s' % (crud.namespace, url_name)
# urls names
self.namespace = self.model._meta.model_name
def make_form_invalid_message(msg):
return '%s %s' % (_('Formulário inválido.'), msg)
def in_namespace(url_name):
return '%s:%s' % (self.namespace, url_name)
class BaseMixin(object):
model = crud.model
def make_form_invalid_message(msg):
return '%s %s' % (_('Formulário inválido.'), msg)
verbose_name = crud.model._meta.verbose_name
verbose_name_plural = crud.model._meta.verbose_name_plural
class BaseMixin(object):
model = self.model
list_url = reverse_lazy(in_namespace('list'))
create_url = reverse_lazy(in_namespace('create'))
help_url = '/comissoes/ajuda' # FIXME
verbose_name = self.model._meta.verbose_name
verbose_name_plural = self.model._meta.verbose_name_plural
def get_url_for_this_object(self, url_name):
return reverse(in_namespace(url_name), args=(self.object.id,))
list_url = reverse_lazy(in_namespace('list'))
create_url = reverse_lazy(in_namespace('create'))
help_url = '/comissoes/ajuda' # FIXME
@property
def detail_url(self):
return self.get_url_for_this_object('detail')
def get_url_for_this_object(self, url_name):
return reverse(in_namespace(url_name), args=(self.object.id,))
@property
def update_url(self):
return self.get_url_for_this_object('update')
@property
def detail_url(self):
return self.get_url_for_this_object('detail')
@property
def delete_url(self):
return self.get_url_for_this_object('delete')
@property
def update_url(self):
return self.get_url_for_this_object('update')
class CrudListView(BaseMixin, ListView):
title = BaseMixin.verbose_name_plural
@property
def delete_url(self):
return self.get_url_for_this_object('delete')
class CrudCreateView(BaseMixin, FormMessagesMixin, CreateView):
form_class = model_form
title = _('Adicionar %(verbose_name)s') % {
'verbose_name': BaseMixin.verbose_name}
form_valid_message = _('Registro criado com sucesso!')
form_invalid_message = make_form_invalid_message(
_('O registro não foi criado.'))
class CrudListView(BaseMixin, ListView):
title = BaseMixin.verbose_name_plural
def get_success_url(self):
return self.detail_url
class CrudCreateView(BaseMixin, FormMessagesMixin, CreateView):
form_class = model_form
title = _('Adicionar %(verbose_name)s') % {
'verbose_name': BaseMixin.verbose_name}
form_valid_message = _('Registro criado com sucesso!')
form_invalid_message = make_form_invalid_message(
_('O registro não foi criado.'))
class CrudDetailView(BaseMixin, DetailView):
def get_success_url(self):
return self.detail_url
@property
def title(self):
return self.get_object()
class CrudDetailView(BaseMixin, DetailView):
class CrudUpdateView(BaseMixin, FormMessagesMixin, UpdateView):
form_class = model_form
form_valid_message = _('Registro alterado com sucesso!')
form_invalid_message = make_form_invalid_message(
_('Suas alterações não foram salvas.'))
@property
def title(self):
return self.get_object()
@property
def title(self):
return self.get_object()
class CrudUpdateView(BaseMixin, FormMessagesMixin, UpdateView):
form_class = model_form
form_valid_message = _('Registro alterado com sucesso!')
form_invalid_message = make_form_invalid_message(
_('Suas alterações não foram salvas.'))
def get_success_url(self):
return self.detail_url
@property
def title(self):
return self.get_object()
class CrudDeleteView(BaseMixin, FormMessagesMixin, DeleteView):
form_valid_message = _('Registro excluído com sucesso!')
form_invalid_message = make_form_invalid_message(
_('O registro não foi excluído.'))
def get_success_url(self):
return self.detail_url
def get_success_url(self):
return self.list_url
class CrudDeleteView(BaseMixin, FormMessagesMixin, DeleteView):
form_valid_message = _('Registro excluído com sucesso!')
form_invalid_message = make_form_invalid_message(
_('O registro não foi excluído.'))
crud.CrudListView = CrudListView
crud.CrudCreateView = CrudCreateView
crud.CrudDetailView = CrudDetailView
crud.CrudUpdateView = CrudUpdateView
crud.CrudDeleteView = CrudDeleteView
def get_success_url(self):
return self.list_url
crud.urls = [
url(r'^$', CrudListView.as_view(), name='list'),
url(r'^create$', CrudCreateView.as_view(), name='create'),
url(r'^(?P<pk>\d+)$', CrudDetailView.as_view(), name='detail'),
url(r'^(?P<pk>\d+)/edit$',
CrudUpdateView.as_view(), name='update'),
url(r'^(?P<pk>\d+)/delete$',
CrudDeleteView.as_view(), name='delete'),
], crud.namespace, crud.namespace
self.CrudListView = CrudListView
self.CrudCreateView = CrudCreateView
self.CrudDetailView = CrudDetailView
self.CrudUpdateView = CrudUpdateView
self.CrudDeleteView = CrudDeleteView
self.urls = [
url(r'^$', CrudListView.as_view(), name='list'),
url(r'^create$', CrudCreateView.as_view(), name='create'),
url(r'^(?P<pk>\d+)$', CrudDetailView.as_view(), name='detail'),
url(r'^(?P<pk>\d+)/edit$',
CrudUpdateView.as_view(), name='update'),
url(r'^(?P<pk>\d+)/delete$',
CrudDeleteView.as_view(), name='delete'),
], self.namespace, self.namespace
return crud

Loading…
Cancel
Save