Пример #1
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'] = mixedToUnder(model.__name__)
     context['pluralized_model_name'] = plural(model.__name__.lower())
     return context
Пример #2
0
    def generate_urls(self):
        urls = []

        pluralized = text.plural(self.model)

        list_view = self.viewbuilder.generate_list_view()
        update_view = self.viewbuilder.generate_update_view()
        detail_view = self.viewbuilder.generate_detail_view()
        create_view = self.viewbuilder.generate_create_view()
        delete_view = self.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'),
        ]

        for entry in entries:
            address = entry[0].format(self.app, pluralized)
            url_name = entry[2].format(self.app, self.model)

            urls.append(
                url(address, entry[1], name=url_name),
            )
        return urls
Пример #3
0
    def generate_list_view(self):
        name = model_class_form(self.model + 'ListView')
        list_args = dict(
            model=self.get_model_class,
            context_object_name=plural(self.model),
            template_name='object_list.html',
            table_class=self.get_actual_table(),
            context_table_name='table_objects',
            table_pagination=self.tables2_pagination or 10
            )

        list_class = type(
            name,
            (BaseListViewMixin, SingleTableView),
            list_args
            )
        self.classes[name] = list_class
        return list_class
Пример #4
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