class ViewBuilderTestCase(TestCase): def setUp(self): self.builder = ViewBuilder('tests', 'testmodel', TestModelCrud) def test_get_model_class(self): model_class = self.builder.get_model_class self.assertEqual(model_class.__name__, "TestModel") def test_list_view(self): list_view = self.builder.generate_list_view() self.assertEqual(list_view.__name__, "TestmodelListView") self.assertEqual(list_view.table_pagination, {'per_page': self.builder.tables2_pagination}) def test_create_view(self): create_view = self.builder.generate_create_view() self.assertEqual(create_view.__name__, 'TestmodelCreateView') def test_detail_view(self): detail_view = self.builder.generate_detail_view() self.assertEqual(detail_view.__name__, 'TestmodelDetailView') def test_update_view(self): update_view = self.builder.generate_update_view() self.assertEqual(update_view.__name__, 'TestmodelUpdateView') def test_table_pagination(self): tables2_pagination = self.builder.tables2_pagination self.assertEqual(tables2_pagination, 20) # test the default pagination self.builder.tables2_pagination = None list_view = self.builder.generate_list_view() self.assertEqual(list_view.table_pagination, {'per_page': 10}) def test_tables2_fields(self): tables2_fields = self.builder.tables2_fields self.assertEqual(tables2_fields, ('name', 'email')) def test_custom_list_view_permission(self): # test custom permission self.builder.permissions = dict(list='mycustom_list_perm') self.assertEqual(self.builder.view_permission('list'), 'mycustom_list_perm') def test_default_list_view_permission(self): # test auto generated (default) permission self.assertEqual(self.builder.view_permission('list'), 'tests.testmodel_list') def test_check_crud_views(self): self.builder.generate_crud() generated_views = [ view_type for view_type in self.builder.classes.keys() ] expected_views = [ 'TestmodelCreateView', 'TestmodelListView', 'TestmodelDetailView', 'TestmodelUpdateView', 'TestmodelDeleteView' ] self.assertEqual(sorted(generated_views), sorted(expected_views))
from django.http import HttpResponse from crudbuilder.views import ViewBuilder from django.db.utils import OperationalError from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.enums import TA_CENTER, TA_LEFT from usuarios.models import Usuarios from io import BytesIO from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4, cm from django.http import HttpResponse from datetime import datetime try: builder = ViewBuilder('usuarios', 'usuarios', UsuarioCrud) builder.generate_crud() except OperationalError: pass # happens when db doesn't exist yet, views.py should be # importable without this side effect def report(request): response = HttpResponse(content_type='application/pdf') response[ 'Content-Disposition'] = 'attachment; filename=reporte_clientes.pdf' buffer = BytesIO() c = canvas.Canvas(buffer, pagesize=A4) x = datetime.now() # Header
class ViewBuilderTestCase(TestCase): def setUp(self): self.builder = ViewBuilder('tests', 'testmodel', TestModelCrud) def test_get_model_class(self): model_class = self.builder.get_model_class self.assertEqual(model_class.__name__, "TestModel") def test_list_view(self): list_view = self.builder.generate_list_view() self.assertEqual(list_view.__name__, "TestmodelListView") self.assertEqual(list_view.table_pagination, {'per_page': self.builder.tables2_pagination}) def test_create_view(self): create_view = self.builder.generate_create_view() self.assertEqual(create_view.__name__, 'TestmodelCreateView') def test_detail_view(self): detail_view = self.builder.generate_detail_view() self.assertEqual(detail_view.__name__, 'TestmodelDetailView') def test_update_view(self): update_view = self.builder.generate_update_view() self.assertEqual(update_view.__name__, 'TestmodelUpdateView') def test_table_pagination(self): tables2_pagination = self.builder.tables2_pagination self.assertEqual(tables2_pagination, 20) # test the default pagination self.builder.tables2_pagination = None list_view = self.builder.generate_list_view() self.assertEqual(list_view.table_pagination, {'per_page': 10}) def test_tables2_feilds(self): tables2_feilds = self.builder.tables2_fields self.assertEqual(tables2_feilds, ('name', 'email')) def test_custom_list_view_permission(self): # test custom permission self.builder.permissions = dict(list='mycustom_list_perm') self.assertEqual( self.builder.view_permission('list'), 'mycustom_list_perm') def test_default_list_view_permission(self): # test auto generated (default) permission self.assertEqual( self.builder.view_permission('list'), 'tests.testmodel_list') def test_check_crud_views(self): self.builder.generate_crud() generated_views = [ view_type for view_type in self.builder.classes.keys()] expected_views = [ 'TestmodelCreateView', 'TestmodelListView', 'TestmodelDetailView', 'TestmodelUpdateView', 'TestmodelDeleteView' ] self.assertEqual(sorted(generated_views), sorted(expected_views))
from django.http import HttpResponseRedirect from crudbuilder.views import ViewBuilder from crudbuilder.helpers import reverse from example.crud import PersonCrud builder = ViewBuilder('example', 'person', PersonCrud) builder.generate_crud() PersonListView = builder.classes['PersonListView'] PersonCreateView = builder.classes['PersonCreateView'] PersonUpdateView = builder.classes['PersonUpdateView'] PersonDetailView = builder.classes['PersonDetailView'] class MyCustomPersonListView(PersonListView): def get_context_data(self, **kwargs): context = super(MyCustomPersonListView, self).get_context_data(**kwargs) context['your_template_variable'] = 'Your new template variable' return context def get_queryset(self): # return super(MyCustomPersonListView, self).get_queryset() return self.model.objects.none() class MyCustomPersonDetailView(PersonDetailView): def get_context_data(self, **kwargs): context = super(MyCustomPersonDetailView, self).get_context_data(**kwargs) # context['form'] = YourAnotherForm return context