~bryce/arsenal/lpltk-filtered-attachments

« back to all changes in this revision

Viewing changes to lpltk/tags.py

Merge Brad's rework of the lpltk base classes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
class BugTags(object):
 
4
    # __init__
 
5
    #
 
6
    def __init__(self, tkbug):
 
7
        self.__tkbug          = tkbug
 
8
        self.__tags           = None
 
9
        self.__commit_changes = tkbug.commit_changes
 
10
 
 
11
    # __len__
 
12
    #
 
13
    def __len__(self):
 
14
        self.__fetch_if_needed()
 
15
        return len(self.__tags)
 
16
 
 
17
    # __getitem__
 
18
    #
 
19
    def __getitem__(self, key):
 
20
        self.__fetch_if_needed()
 
21
        return self.__tags[key]
 
22
 
 
23
    # __setitem__
 
24
    #
 
25
    def __setitem__(self, key, value):
 
26
        self.__fetch_if_needed()
 
27
        self.__tags[key] = value
 
28
        self.__save_tags()
 
29
 
 
30
    # __delitem__
 
31
    #
 
32
    def __delitem__(self, key):
 
33
        self.__fetch_if_needed()
 
34
        del self.__tags[key]
 
35
        self.__save_tags()
 
36
 
 
37
    # __iter__
 
38
    #
 
39
    def __iter__(self):
 
40
        self.__fetch_if_needed()
 
41
        for tag in self.__tags:
 
42
            yield tag
 
43
 
 
44
    # __contains__
 
45
    #
 
46
    def __contains__(self, item):
 
47
        self.__fetch_if_needed()
 
48
        return item in self.__tags
 
49
 
 
50
    # __save_tags
 
51
    #
 
52
    def __save_tags(self):
 
53
        if self.__commit_changes:
 
54
            self.__tkbug.lpbug.tags = self.__tags
 
55
            self.__tkbug.lpbug.lp_save()
 
56
 
 
57
    # __fetch_if_needed
 
58
    #
 
59
    def __fetch_if_needed(self):
 
60
        if self.__tags == None:
 
61
            self.__tags = self.__tkbug.lpbug.tags
 
62
 
 
63
    # append
 
64
    #
 
65
    def append(self, item):
 
66
        self.__fetch_if_needed()
 
67
        if not isinstance(item, str):
 
68
            raise TypeError("Must be a string")
 
69
        self.__tags.append(item)
 
70
        self.__save_tags()
 
71
 
 
72
    # extend
 
73
    #
 
74
    def extend(self, items):
 
75
        self.__fetch_if_needed()
 
76
        if not isinstance(items, list):
 
77
            raise TypeError("Must be a list")
 
78
        self.__tags.extend(items)
 
79
        self.__save_tags()
 
80
 
 
81
    # remove
 
82
    #
 
83
    def remove(self, item):
 
84
        self.__fetch_if_needed()
 
85
        if not isinstance(item, str):
 
86
            print("type: %s" % (type(item)))
 
87
            raise TypeError("Must be a string")
 
88
        self.__tags.remove(item)
 
89
        self.__save_tags()
 
90
 
 
91
# vi:set ts=4 sw=4 expandtab: