1. Python / Говнокод #18050

    −120

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    class Column(object):
        """
            Элемент конфигурации
        """
        def __init__(self, *args, **kwargs):
    
            hid = False
            filters = []
            sorters = []
    
            if len(args) == 3:
                inner_name, verbose_name, width = args
            elif len(args) == 2:
                inner_name, verbose_name = args
                width = 20
            elif len(args) == 4:
                inner_name, verbose_name, width, hid = args
            elif len(args) == 5:
                inner_name, verbose_name, width, hid, filters = args
            elif len(args) == 6:
                inner_name, verbose_name, width, hid, filters, sorters = args
    
            special_attrs = ['locked', 'editable']
    
            self.code = inner_name
            self.name = verbose_name
            self.width = width
            self.hidden = hid
            self.idx = 0
            if sorters:
                sorters.column = self
            if filters:
                filters.column = self
                filters.code = self.code
    
            #здесь хранятся экземпляры фильтров для колонок
            self.filters = filters
            #здесь хранятся экземпляры сортировщиков для колонок
            self.sorters = sorters
    
        def get_config(self):
            ''' ?
            '''
            config = dict()
            config['data_index'] = self.code
            config['header'] = self.name
            config['width'] = self.width
            config['hidden'] = self.hidden
    
            return config

    Разбор параметров

    Запостил: pycz, 23 Апреля 2015

    Комментарии (3) RSS

    • А в коде выше конфиг еще же как то трансформируется? Я хочу видеть как оно приходит сюда и вангую там продолжение банкета.
      Ответить
      • Ну так-то да, по всему проекту такие куски кода валяются. Но класс выше представлен полностью.
        #метод перестроения логики отображения
            def config_table(self):
        
                columns = [
                    Column(*("number",            _(u"№"),                      5)),
                    Column(*('type.name',         _(u"Тип"),                    20)),
                    Column(*('date_income',       _(u"Дата"),                   25,
                        False, Filter(*("", FilterType.DATE, None)),
                    )),
                    Column(*('number_ur',         _(u"№ разрешения"),           10)),
                    Column(*('applicant_display', _(u"Заявитель"),              35,
                        False, Filter(*("", FilterType.CUSTOM, self.filter_by))
                    )),
                    Column(*('cargo_type',        _(u"Вид продукции/животных"), 30,
                        False, Filter(*("", FilterType.STR, None)),
                    )),
                    Column(*('support_doc_display', _(u"Вет. свидетельство"),   20,
                        False, Filter(*("", FilterType.STR,
                              ("statements__support_doc__start",
                               "statements__support_doc__end",
                               "statements__support_doc__serial",)))
                    )),
                    Column(*('destination_str',   _(u"Пункт назначения"),       20,
                        False, Filter(*("", FilterType.STR, None)),
                    )),
                    Column(*('display',           u" ",                         10, True))
                ]
        Ответить

    Добавить комментарий