예제 #1
0
    def generate_list_view(self):
        """Generate class based view for ListView"""

        name = model_class_form(self.model + 'ListView')
        list_args = dict(
            model=self.get_model_class,
            context_object_name=plural(self.model),
            template_name=self.get_template('list'),
            table_class=self.get_actual_table(),
            context_table_name='table_objects',
            crud=self.crud,
            permissions=self.view_permission('list'),
            permission_required=self.check_permission_required,
            login_required=self.check_login_required,
            table_pagination={'per_page': self.tables2_pagination or 10},
            custom_queryset=self.custom_queryset,
            custom_context=self.custom_context,
            custom_postfix_url=self.custom_postfix_url)

        parent_classes = [BaseListViewMixin, SingleTableView]
        if self.custom_list_view_mixin:
            parent_classes.insert(0, self.custom_list_view_mixin)

        list_class = type(name, tuple(parent_classes), list_args)

        self.classes[name] = list_class
        return list_class
예제 #2
0
    def generate_list_view(self):
        """Generate class based view for ListView"""

        name = model_class_form(self.model + 'ListView')
        list_args = dict(
            model=self.get_model_class,
            context_object_name=plural(self.model),
            template_name=self.get_template('list'),
            table_class=self.get_actual_table(),
            context_table_name='table_objects',
            crud=self.crud,
            permissions=self.view_permission('list'),
            permission_required=self.check_permission_required,
            login_required=self.check_login_required,
            table_pagination={'per_page': self.tables2_pagination or 10},
            custom_queryset=self.custom_queryset,
            custom_context=self.custom_context,
            custom_postfix_url=self.custom_postfix_url
        )

        list_class = type(
            name,
            (BaseListViewMixin, SingleTableView),
            list_args
        )
        self.classes[name] = list_class
        return list_class
예제 #3
0
    def generate_table(self):
        model_class = self.get_model_class()

        detail_url_name = '{}-{}-detail'.format(
            self.app, custom_postfix_url(self.crud(), self.model)
        )

        main_attrs = dict(
            id=tables.LinkColumn(detail_url_name, args=[A('pk')])
        )

        meta_attrs = dict(
            model=model_class,
            fields=('id',) + self.tables2_fields if self.tables2_fields else ('id',),
            attrs={
                "class": self.tables2_css_class,
                "empty_text": "No {} exist".format(plural(self.model))
            })

        main_attrs['Meta'] = type('Meta', (), meta_attrs)
        klass = type(
            model_class_form(self.model + 'Table'),
            (tables.Table,),
            main_attrs
        )
        return klass
예제 #4
0
    def generate_table(self):
        model_class = self.get_model_class()

        detail_url_name = '{}-{}-detail'.format(
            self.app, custom_postfix_url(self.crud(), self.model))

        main_attrs = dict(
            id=tables.LinkColumn(detail_url_name, args=[A('pk')])
            # uuid=tables.LinkColumn(detail_url_name, args=[A('uuid')]) #'uuid' replaced 'id'
        )

        meta_attrs = dict(
            model=model_class,
            fields=('id', ) + self.tables2_fields if self.tables2_fields else
            ('id', ),
            # fields=self.tables2_fields, #Exclude 'id' in table field
            attrs={
                "class": self.tables2_css_class,
                "empty_text": "No {} exist".format(plural(self.model))
            })

        main_attrs['Meta'] = type('Meta', (), meta_attrs)
        klass = type(model_class_form(self.model + 'Table'), (tables.Table, ),
                     main_attrs)
        return klass
예제 #5
0
 def get_context_data(self, **kwargs):
     context = super(CrudBuilderMixin, self).get_context_data(**kwargs)
     model = context['view'].model
     context['app_label'] = model._meta.app_label
     context['actual_model_name'] = model.__name__.lower()
     context['pluralized_model_name'] = plural(model.__name__.lower())
     context['project_name'] = getattr(
         settings, 'PROJECT_NAME', 'CRUDBUILDER')
     return context
예제 #6
0
파일: mixins.py 프로젝트: amraoua/djangodev
 def get_context_data(self, **kwargs):
     context = super(CrudBuilderMixin, self).get_context_data(**kwargs)
     model = context['view'].model
     context['app_label'] = model._meta.app_label
     context['actual_model_name'] = model.__name__.lower()
     context['pluralized_model_name'] = plural(model.__name__.lower())
     context['project_name'] = getattr(settings, 'PROJECT_NAME',
                                       'CRUDBUILDER')
     return context
예제 #7
0
 def get_context_data(self, **kwargs):
     context = super(CrudBuilderMixin, self).get_context_data(**kwargs)
     model = context['view'].model
     context['app_label'] = model._meta.app_label
     try:
         context['exclude'] = self.detailview_excludes
     except:
         context['exclude'] =None
     context['actual_model_name'] = model.__name__.lower()
     context['pluralized_model_name'] = plural(model.__name__.lower())
     context['verbose_model_name'] = model._meta.verbose_name
     context['verbose_model_name_plural'] = model._meta.verbose_name_plural
     context['project_name'] = getattr(
         settings, 'PROJECT_NAME', 'CRUDBUILDER')
     return context
예제 #8
0
 def get_context_data(self, **kwargs):
     context = super(CrudBuilderMixin, self).get_context_data(**kwargs)
     model = context['view'].model
     context['app_label'] = model._meta.app_label
     try:
         context['exclude'] = self.detailview_excludes
     except:
         context['exclude'] = None
     context['actual_model_name'] = model.__name__.lower()
     context['pluralized_model_name'] = plural(model.__name__.lower())
     context['verbose_model_name'] = model._meta.verbose_name
     context['custom_postfix_url'] = self.custom_postfix_url
     context['verbose_model_name_plural'] = model._meta.verbose_name_plural
     context['project_name'] = getattr(settings, 'PROJECT_NAME',
                                       'CRUDBUILDER')
     return context
예제 #9
0
from crudbuilder.registry import registry
from crudbuilder.views import ViewBuilder
from crudbuilder import helpers
helpers.auto_discover()

urlpatterns = []

tables = connection.introspection.table_names()

if tables:
    for app_model, base_crud in registry.items():
        app, model = app_model.split('-')
        viewbuilder = ViewBuilder(app, model, base_crud)

        urls = []
        pluralized = helpers.plural(model)

        list_view = viewbuilder.generate_list_view()
        update_view = viewbuilder.generate_update_view()
        detail_view = viewbuilder.generate_detail_view()
        create_view = viewbuilder.generate_create_view()
        delete_view = viewbuilder.generate_delete_view()

        entries = [
            (r'^{}/{}/$', list_view.as_view(), '{}-{}-list'),
            (r'^{}/{}/(?P<pk>\d+)/$', detail_view.as_view(), '{}-{}-detail'),
            (r'^{}/{}/create/$', create_view.as_view(), '{}-{}-create'),
            (r'^{}/{}/(?P<pk>\d+)/update/$',
                update_view.as_view(),
                '{}-{}-update'),
            (r'^{}/{}/(?P<pk>\d+)/delete/$',
예제 #10
0
파일: urls.py 프로젝트: amraoua/djangodev
from crudbuilder.registry import registry
from crudbuilder.views import ViewBuilder
from crudbuilder import helpers
helpers.auto_discover()

urlpatterns = []

tables = connection.introspection.table_names()

if tables:
    for app_model, base_crud in registry.items():
        app, model = app_model.split('-')
        viewbuilder = ViewBuilder(app, model, base_crud)

        urls = []
        pluralized = helpers.plural(model)

        list_view = viewbuilder.generate_list_view()
        update_view = viewbuilder.generate_update_view()
        detail_view = viewbuilder.generate_detail_view()
        create_view = viewbuilder.generate_create_view()
        delete_view = viewbuilder.generate_delete_view()

        entries = [
            (r'^{}/{}/$', list_view.as_view(), '{}-{}-list'),
            (r'^{}/{}/(?P<pk>\d+)/$', detail_view.as_view(), '{}-{}-detail'),
            (r'^{}/{}/create/$', create_view.as_view(), '{}-{}-create'),
            (r'^{}/{}/(?P<pk>\d+)/update/$', update_view.as_view(),
             '{}-{}-update'),
            (r'^{}/{}/(?P<pk>\d+)/delete/$', delete_view.as_view(),
             '{}-{}-delete'),
예제 #11
0
    def generate_table(self):
        model_class = self.get_model_class()
        detail_url_name = "{}-{}-detail".format(self.app, self.model)

        main_attrs = dict(id=tables.LinkColumn(detail_url_name, args=[A("pk")]))

        meta_attrs = dict(
            model=model_class,
            fields=("id",) + self.tables2_fields if self.tables2_fields else ("id",),
            attrs={"class": self.tables2_css_class, "empty_text": "No {} exist".format(plural(self.model))},
        )

        main_attrs["Meta"] = type("Meta", (), meta_attrs)
        klass = type(model_class_form(self.model + "Table"), (tables.Table,), main_attrs)
        return klass