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