TableBuilder   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
c 1
b 0
f 0
dl 0
loc 34
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B generate_table() 0 26 2
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 (
6
    model_class_form,
7
    plural,
8
    custom_postfix_url
9
)
10
11
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
            pk=tables.LinkColumn(detail_url_name, args=[A('pk')])
29
        )
30
31
        meta_attrs = dict(
32
            model=model_class,
33
            fields=('pk',) + self.tables2_fields if self.tables2_fields else ('pk',),
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