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
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
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
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