Пример #1
0
    def __init__(self, name, **kw):
        type_list = kw.get('pattern').type if kw.get('pattern').type in \
                                                Pattern.list_types else None
        kw.setdefault('type_list', type_list)

        Base.__init__(self, name, class_item=Document, **kw)
        self.parse_kwargs(**kw)
Пример #2
0
    def __init__(self, name, **kw):
        type_list = kw.get('pattern').type if kw.get('pattern').type in \
                                                Pattern.list_types else None
        kw.setdefault('type_list', type_list)

        Base.__init__(self, name, class_item=Document, **kw)
        self.parse_kwargs(**kw)
Пример #3
0
    def __init__(self, name='', **kw):
        Base.__init__(self, name, class_item=Pattern, **kw)
        self.project = kw.get('project')
        data = kw.get('data')

        if data:
            self.parse_data(data)

        else:
            self.parse_kwargs(**kw)
Пример #4
0
    def __init__(self, name='', **kw):
        Base.__init__(self, name, class_item=Pattern, **kw)
        self.project = kw.get('project')
        data = kw.get('data')

        if data:
            self.parse_data(data)

        else:
            self.parse_kwargs(**kw)
Пример #5
0
 def add(self, name, **kw):
     if self.type == Pattern.DICT:
         common = kw.pop('common', '')
         if common:
             return self.add_common(name, common, **kw)
         else:
             return Base.add(self, name, project=self.project, **kw)
     else:
         raise PatternError()
Пример #6
0
 def add(self, name, **kw):
     if self.type == Pattern.DICT:
         common = kw.pop('common', '')
         if common:
             return self.add_common(name, common, **kw)
         else:
             return Base.add(self, name, project=self.project, **kw)
     else:
         raise PatternError()
Пример #7
0
    def data(self):
        data = {'properties': Base.data(self)} if self.type == Pattern.DICT \
                                                                        else {}

        for key in ['type', 'min', 'max', 'default', 'text', 'values',
                    'option', 'incr']:
            value = getattr(self, key)
            if value:
                data.setdefault(key, value)

        if self.type in Pattern.list_types:
            data.setdefault('items', self.items.data())

        return data
Пример #8
0
    def data(self):
        data = {'properties': Base.data(self)} if self.type == Pattern.DICT \
                                                                        else {}

        for key in [
                'type', 'min', 'max', 'default', 'text', 'values', 'option',
                'incr'
        ]:
            value = getattr(self, key)
            if value:
                data.setdefault(key, value)

        if self.type in Pattern.list_types:
            data.setdefault('items', self.items.data())

        return data
Пример #9
0
 def stats(self):
     return Base.stats(self, {'document': self.length()})
Пример #10
0
 def stats(self):
     return Base.stats(self, {'table': self.length()})
Пример #11
0
 def __init__(self, name='', **kw):
     self.values = Values()
     self.manager = ManagerPattern(project=self)
     Base.__init__(self, name, class_item=Table, **kw)
Пример #12
0
 def close(self):
     self.pattern.signal.remove(self.pattern_signal)
     Base.close(self)
Пример #13
0
 def stats(self):
     return Base.stats(self, {'document': self.length()})
Пример #14
0
 def stats(self):
     return Base.stats(self, {'table': self.length()})
Пример #15
0
 def add(self, name, **kw):
     if 'common' in kw:
         pattern = self.manager.get(kw.get('common'))
     else:
         pattern = Pattern(project=self, **kw)
     return Base.add(self, name, pattern=pattern)
Пример #16
0
 def __init__(self, name='', **kw):
     self.values = Values()
     self.manager = ManagerPattern(project=self)
     Base.__init__(self, name, class_item=Table, **kw)
Пример #17
0
 def __init__(self, **kw):
     Base.__init__(self, class_item=Pattern)
     self.project = kw.get('project')
Пример #18
0
 def add(self, name, **kw):
     return Base.add(self, name, project=self.project, **kw)
Пример #19
0
 def data(self):
     return {'table': Base.data(self), 'values': dict(self.values)}
Пример #20
0
 def __init__(self, name, pattern=Pattern(), **kw):
     Base.__init__(self, name, class_item=Document, **kw)
     self.pattern = pattern
Пример #21
0
 def add(self, name, data=None):
     return Base.add(self, name, data=data or {}, pattern=self.pattern)
Пример #22
0
 def data(self):
     return {'table': Base.data(self), 'values': dict(self.values)}
Пример #23
0
 def __init__(self, name, pattern=Pattern(), **kw):
     Base.__init__(self, name, class_item=Document, **kw)
     self.pattern = pattern
Пример #24
0
class Test(BaseCase):

    def setUp(self):
        self.base = Base('')

    def test_get_item(self):
        item = self.base.add('1')

        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        self.base.remove_all()

        item = self.base.add(1)
        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        for doc in self.base:
            self.eq(doc, item)

    def test_remove_item(self):
        self.base.add('1')
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add('1')
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

    def test_len(self):
        self.eq(self.base.length(), 0)

        self.base.add(1)
        self.base.add('1')
        self.eq(self.base.length(), 1)

        self.base.add(2)
        self.base.add('3')
        self.eq(self.base.length(), 3)

        self.base.remove(2)
        self.eq(self.base.get(2), None)
        self.base.remove('2')
        self.eq(self.base.length(), 2)

        self.base.remove_all()
        self.eq(self.base.length(), 0)

    def test_data(self):
        self.base.add(1)
        self.base.add(2)
        self.eq(self.base.data(), {'1': {}, '2': {}})

        item_list = self.base.add(3, type_list='list')
        self.eq(item_list.data(), [])
        self.eq(self.base.data(), {'1': {}, '2': {}, '3': []})

    def test_nested_list_data(self):
        self.base.add(1)
        l = self.base.add('d', type_list='list')
        ll = l.add(type_list='list')
        lll = ll.add()
        lll.add('sub1')
        lll.add('sub2')
        item1 = l.add()
        item2 = l.add()
        item1.add('item1')
        item2.add('item2')
        self.eq(self.base.data(), {'1': {}, 'd': [[{'sub1': {}, \
                            'sub2': {}}], {'item1':{}}, {'item2':{}}]})

    def test_list(self):
        base_list = self.base.add(1, type_list='list')
        self.eq(base_list.name, '1')

        item0 = base_list.add()
        self.eq(base_list.length(), 1)
        self.eq(item0.name, '0')
        self.eq(base_list.get('0'), item0)
        self.eq(base_list.get(0), item0)

        item1 = base_list.add(list=True)
        self.eq(base_list.length(), 2)
        self.eq(item1.name, '1')
        self.eq(base_list.get('1'), item1)
        self.eq(base_list.get(1), item1)

        base_list.remove_all()
        self.eq(base_list.length(), 0)

        # remove
        item0 = base_list.add()
        item1 = base_list.add()
        item2 = base_list.add()
        item3 = base_list.add()
        self.eq(base_list.length(), 4)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item1)
        self.eq(item0.name, '0')
        self.eq(item2.name, '1')
        self.eq(item3.name, '2')
        self.eq(item0, base_list.get(0))
        self.eq(item2, base_list.get(1))
        self.eq(item3, base_list.get(2))
        self.eq(None, base_list.get(3))
        self.eq(base_list.length(), 3)

        remove_item = base_list.remove(0)
        self.eq(remove_item, item0)
        self.eq(item2.name, '0')
        self.eq(item3.name, '1')
        self.eq(item2, base_list.get(0))
        self.eq(item3, base_list.get(1))
        self.eq(None, base_list.get(2))
        self.eq(base_list.length(), 2)

        self.eq(base_list.remove(2), None)
        self.eq(base_list.length(), 2)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item3)
        self.eq(item2.name, '0')
        self.eq(item2, base_list.get(0))
        self.eq(None, base_list.get(1))
        self.eq(base_list.length(), 1)

        new_item = base_list.add()
        self.eq(new_item.name, '1')
        self.eq(base_list.get(1), new_item)
        self.eq(base_list.length(), 2)

    def test_parent(self):
        self.eq(self.base.parent, None)

        base1 = self.base.add('1')
        self.eq(base1.parent, self.base)

        base_list = base1.add('list', type_list='list')
        self.eq(base_list.parent, base1)

    def test_path(self):
        self.eq(self.base.path, '')

        base1 = self.base.add('1')
        self.eq(base1.path, '1')

        base1_field = base1.add('field')
        self.eq(base1_field.path, '1.field')

        base_list = base1_field.add('list', type_list='list')
        self.eq(base_list.path, '1.field.list')

        list_item1 = base_list.add()
        list_item1_field = list_item1.add('field')
        list_item2 = base_list.add()
        list_item2_list = list_item2.add('list', type_list='list')
        list_item2_list_item = list_item2_list.add()
        list_item3 = base_list.add(type_list='list')
        list_item3_item = list_item3.add()

        self.eq(list_item1.path, '1.field.list.0')
        self.eq(list_item1_field.path, '1.field.list.0.field')
        self.eq(list_item2.path, '1.field.list.1')
        self.eq(list_item2_list.path, '1.field.list.1.list')
        self.eq(list_item2_list_item.path, '1.field.list.1.list.0')
        self.eq(list_item3.path, '1.field.list.2')
        self.eq(list_item3_item.path, '1.field.list.2.0')

        # get
        self.eq(self.base.get('1'), base1)
        self.eq(self.base.get('1.field'), base1_field)
        self.eq(self.base.get('1.field.list.1.list.0'), list_item2_list_item)
        self.eq(self.base.get('1.field.list.2.0'), list_item3_item)

        self.eq(base1.get('field'), base1_field)
        self.eq(base1.get('field.list.1.list.0'), list_item2_list_item)
        self.eq(base1.get('field.list.2.0'), list_item3_item)

        self.eq(base_list.get('0'), list_item1)
        self.eq(base_list.get('1.list.0'), list_item2_list_item)
        self.eq(base_list.get('2.0'), list_item3_item)

    def test_keys(self):
        items_name = ['1', 12, 10, '3', '4', '5', '6', '7', '8', '9', '11', 'a', 'b']

        for i in xrange(0, len(items_name)):
            item = self.base.add(items_name[i])
            self.eq(item.name, str(items_name[i]))

        self.eq(self.base.keys(), [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'a', 'b'])
Пример #25
0
 def stats(self):
     return Base.stats(self,
             {'dict': 1} if self.pattern.type == Pattern.DICT else None)
Пример #26
0
 def setUp(self):
     self.base = Base('')
Пример #27
0
    def add(self, name=None, **kw):
        if not kw.get('pattern'):
            kw.setdefault('pattern', self.get_pattern_item(name))

        return Base.add(self, name=name, **kw)
Пример #28
0
 def stats(self):
     return Base.stats(
         self, {'dict': 1} if self.pattern.type == Pattern.DICT else None)
Пример #29
0
    def add(self, name=None, **kw):
        if not kw.get('pattern'):
            kw.setdefault('pattern', self.get_pattern_item(name))

        return Base.add(self, name=name, **kw)
Пример #30
0
 def add(self, name, data=None):
     return Base.add(self, name, data=data or {}, pattern=self.pattern)
Пример #31
0
class Test(BaseCase):
    def setUp(self):
        self.base = Base('')

    def test_get_item(self):
        item = self.base.add('1')

        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        self.base.remove_all()

        item = self.base.add(1)
        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        for doc in self.base:
            self.eq(doc, item)

    def test_remove_item(self):
        self.base.add('1')
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add('1')
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

    def test_len(self):
        self.eq(self.base.length(), 0)

        self.base.add(1)
        self.base.add('1')
        self.eq(self.base.length(), 1)

        self.base.add(2)
        self.base.add('3')
        self.eq(self.base.length(), 3)

        self.base.remove(2)
        self.eq(self.base.get(2), None)
        self.base.remove('2')
        self.eq(self.base.length(), 2)

        self.base.remove_all()
        self.eq(self.base.length(), 0)

    def test_data(self):
        self.base.add(1)
        self.base.add(2)
        self.eq(self.base.data(), {'1': {}, '2': {}})

        item_list = self.base.add(3, type_list='list')
        self.eq(item_list.data(), [])
        self.eq(self.base.data(), {'1': {}, '2': {}, '3': []})

    def test_nested_list_data(self):
        self.base.add(1)
        l = self.base.add('d', type_list='list')
        ll = l.add(type_list='list')
        lll = ll.add()
        lll.add('sub1')
        lll.add('sub2')
        item1 = l.add()
        item2 = l.add()
        item1.add('item1')
        item2.add('item2')
        self.eq(self.base.data(), {'1': {}, 'd': [[{'sub1': {}, \
                            'sub2': {}}], {'item1':{}}, {'item2':{}}]})

    def test_list(self):
        base_list = self.base.add(1, type_list='list')
        self.eq(base_list.name, '1')

        item0 = base_list.add()
        self.eq(base_list.length(), 1)
        self.eq(item0.name, '0')
        self.eq(base_list.get('0'), item0)
        self.eq(base_list.get(0), item0)

        item1 = base_list.add(list=True)
        self.eq(base_list.length(), 2)
        self.eq(item1.name, '1')
        self.eq(base_list.get('1'), item1)
        self.eq(base_list.get(1), item1)

        base_list.remove_all()
        self.eq(base_list.length(), 0)

        # remove
        item0 = base_list.add()
        item1 = base_list.add()
        item2 = base_list.add()
        item3 = base_list.add()
        self.eq(base_list.length(), 4)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item1)
        self.eq(item0.name, '0')
        self.eq(item2.name, '1')
        self.eq(item3.name, '2')
        self.eq(item0, base_list.get(0))
        self.eq(item2, base_list.get(1))
        self.eq(item3, base_list.get(2))
        self.eq(None, base_list.get(3))
        self.eq(base_list.length(), 3)

        remove_item = base_list.remove(0)
        self.eq(remove_item, item0)
        self.eq(item2.name, '0')
        self.eq(item3.name, '1')
        self.eq(item2, base_list.get(0))
        self.eq(item3, base_list.get(1))
        self.eq(None, base_list.get(2))
        self.eq(base_list.length(), 2)

        self.eq(base_list.remove(2), None)
        self.eq(base_list.length(), 2)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item3)
        self.eq(item2.name, '0')
        self.eq(item2, base_list.get(0))
        self.eq(None, base_list.get(1))
        self.eq(base_list.length(), 1)

        new_item = base_list.add()
        self.eq(new_item.name, '1')
        self.eq(base_list.get(1), new_item)
        self.eq(base_list.length(), 2)

    def test_parent(self):
        self.eq(self.base.parent, None)

        base1 = self.base.add('1')
        self.eq(base1.parent, self.base)

        base_list = base1.add('list', type_list='list')
        self.eq(base_list.parent, base1)

    def test_path(self):
        self.eq(self.base.path, '')

        base1 = self.base.add('1')
        self.eq(base1.path, '1')

        base1_field = base1.add('field')
        self.eq(base1_field.path, '1.field')

        base_list = base1_field.add('list', type_list='list')
        self.eq(base_list.path, '1.field.list')

        list_item1 = base_list.add()
        list_item1_field = list_item1.add('field')
        list_item2 = base_list.add()
        list_item2_list = list_item2.add('list', type_list='list')
        list_item2_list_item = list_item2_list.add()
        list_item3 = base_list.add(type_list='list')
        list_item3_item = list_item3.add()

        self.eq(list_item1.path, '1.field.list.0')
        self.eq(list_item1_field.path, '1.field.list.0.field')
        self.eq(list_item2.path, '1.field.list.1')
        self.eq(list_item2_list.path, '1.field.list.1.list')
        self.eq(list_item2_list_item.path, '1.field.list.1.list.0')
        self.eq(list_item3.path, '1.field.list.2')
        self.eq(list_item3_item.path, '1.field.list.2.0')

        # get
        self.eq(self.base.get('1'), base1)
        self.eq(self.base.get('1.field'), base1_field)
        self.eq(self.base.get('1.field.list.1.list.0'), list_item2_list_item)
        self.eq(self.base.get('1.field.list.2.0'), list_item3_item)

        self.eq(base1.get('field'), base1_field)
        self.eq(base1.get('field.list.1.list.0'), list_item2_list_item)
        self.eq(base1.get('field.list.2.0'), list_item3_item)

        self.eq(base_list.get('0'), list_item1)
        self.eq(base_list.get('1.list.0'), list_item2_list_item)
        self.eq(base_list.get('2.0'), list_item3_item)

    def test_keys(self):
        items_name = [
            '1', 12, 10, '3', '4', '5', '6', '7', '8', '9', '11', 'a', 'b'
        ]

        for i in xrange(0, len(items_name)):
            item = self.base.add(items_name[i])
            self.eq(item.name, str(items_name[i]))

        self.eq(self.base.keys(),
                [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'a', 'b'])
Пример #32
0
 def add(self, name, **kw):
     if 'common' in kw:
         pattern = self.manager.get(kw.get('common'))
     else:
         pattern = Pattern(project=self, **kw)
     return Base.add(self, name, pattern=pattern)
Пример #33
0
 def setUp(self):
     self.base = Base('')
Пример #34
0
 def close(self):
     self.pattern.signal.remove(self.pattern_signal)
     Base.close(self)