Total Complexity | 2 |
Total Lines | 34 |
Duplicated Lines | 0 % |
Changes | 2 | ||
Bugs | 0 | Features | 1 |
1 | import django_tables2 as tables |
||
12 | class TableBuilder(BaseBuilder): |
||
13 | """ |
||
14 | Table builder which returns django_tables2 instance |
||
15 | app : app name |
||
16 | model : model name for which table will be generated |
||
17 | table_fields : display fields for tables2 class |
||
18 | css_table : css class for generated tables2 class |
||
19 | """ |
||
20 | def generate_table(self): |
||
21 | model_class = self.get_model_class() |
||
22 | |||
23 | detail_url_name = '{}-{}-detail'.format( |
||
24 | self.app, custom_postfix_url(self.crud(), self.model) |
||
25 | ) |
||
26 | |||
27 | main_attrs = dict( |
||
28 | id=tables.LinkColumn(detail_url_name, args=[A('pk')]) |
||
29 | ) |
||
30 | |||
31 | meta_attrs = dict( |
||
32 | model=model_class, |
||
33 | fields=('id',) + self.tables2_fields if self.tables2_fields else ('id',), |
||
34 | attrs={ |
||
35 | "class": self.tables2_css_class, |
||
36 | "empty_text": "No {} exist".format(plural(self.model)) |
||
37 | }) |
||
38 | |||
39 | main_attrs['Meta'] = type('Meta', (), meta_attrs) |
||
40 | klass = type( |
||
41 | model_class_form(self.model + 'Table'), |
||
42 | (tables.Table,), |
||
43 | main_attrs |
||
44 | ) |
||
45 | return klass |
||
46 |