Completed
Push — master ( 21b94f...0c3366 )
by Asif
01:28
created

TableBuilder   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 2
c 2
b 0
f 1
dl 0
loc 31
rs 10
1
import django_tables2 as tables
2
from django_tables2.utils import A
3
4
from crudbuilder.abstract import BaseBuilder
5
from crudbuilder.helpers import model_class_form, plural
6
7
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