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