~nmu-sscheel/gtg/rework-task-editor

« back to all changes in this revision

Viewing changes to GTG/core/datastore.py

  • Committer: Bertrand Rousseau
  • Date: 2012-05-09 22:33:25 UTC
  • mfrom: (1178 trunk)
  • mto: This revision was merged to the branch mainline in revision 1179.
  • Revision ID: bertrand.rousseau@gmail.com-20120509223325-a53d8nwo0x9g93bc
Merge nimit branch and trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
from GTG.backends.genericbackend import GenericBackend
40
40
from GTG.tools                   import cleanxml
41
41
from GTG.backends.backendsignals import BackendSignals
42
 
from GTG.tools.synchronized      import synchronized
43
42
from GTG.tools.borg              import Borg
44
43
from GTG.core.search             import parse_search_query, search_filter, InvalidQuery
45
44
 
123
122
        self.__tagstore.add_node(tag, parent_id=parent_id)
124
123
        tag.set_save_callback(self.save)
125
124
 
126
 
    def new_tag(self, name):
 
125
    def new_tag(self, name, attributes={}):
127
126
        """ Create a new tag and return it """
128
127
 
129
128
        name = name.encode("UTF-8")
130
129
        parameters = {'tag': name}
131
 
        tag = Tag(name, req=self.requester)
 
130
        tag = Tag(name, req=self.requester, attributes=attributes)
132
131
 
133
132
        self._add_new_tag(name, tag, self.treefactory.tag_filter, parameters)
134
133
        Log.debug("*** tag added %s ***" % name)
135
134
        return tag
136
135
 
137
 
    def new_search_tag(self, name, query):
 
136
    def new_search_tag(self, name, query, attributes={}):
138
137
        """ Create a new search tag """
139
138
        try:
140
139
            parameters = parse_search_query(query)
144
143
            return None
145
144
 
146
145
        name = name.encode("UTF-8")
147
 
        tag = Tag(name, req=self.requester)
148
 
        tag.set_attribute("label","%s" % name)
149
 
        tag.set_attribute("query", query)
 
146
 
 
147
        # Create own copy of attributes and add special attributes label, query
 
148
        init_attr = dict(attributes)
 
149
        init_attr["label"] = name
 
150
        init_attr["query"] = query
 
151
 
 
152
        tag = Tag(name, req=self.requester, attributes=init_attr)
150
153
 
151
154
        self._add_new_tag(name, tag, search_filter,
152
155
            parameters, parent_id = CoreConfig.SEARCH_TAG)
216
219
            tagname = t.getAttribute("name")
217
220
            parent = t.getAttribute("parent")
218
221
 
 
222
            tag_attr = {}
 
223
            attr = t.attributes
 
224
            for i in range(attr.length):
 
225
                at_name = attr.item(i).name
 
226
                if at_name not in ["name", "parent"]:
 
227
                    at_val = t.getAttribute(at_name)
 
228
                    tag_attr[at_name] = at_val
 
229
 
219
230
            if parent == CoreConfig.SEARCH_TAG:
220
 
                self.new_search_tag(tagname, t.getAttribute("query"))
 
231
                query = t.getAttribute("query")
 
232
                tag = self.new_search_tag(tagname, query, tag_attr)
221
233
            else:
222
 
                tag = self.new_tag(tagname)
223
 
                attr = t.attributes
224
 
                for i in range(attr.length):
225
 
                    at_name = attr.item(i).name
226
 
                    if at_name not in ["name", "parent"]:
227
 
                        at_val = t.getAttribute(at_name)
228
 
                        tag.set_attribute(at_name, at_val)
229
 
 
 
234
                tag = self.new_tag(tagname, tag_attr)
230
235
                if parent:
231
236
                    tag.set_parent(parent)
 
237
 
232
238
        self.tagfile = tagfile
233
239
 
234
240
    def save_tagtree(self):
327
333
        self.__tasks.add_node(task)
328
334
        return task
329
335
 
330
 
    @synchronized
331
336
    def push_task(self, task):
332
337
        '''
333
338
        Adds the given task object to the task tree. In other words, registers
555
560
        '''
556
561
        try:
557
562
            self.start_get_tasks_thread.join()
558
 
        except Exception, e:
 
563
        except Exception:
559
564
            pass
560
565
        doc, xmlconfig = cleanxml.emptydoc("config")
561
566
        #we ask all the backends to quit first.
640
645
        self.to_set_timer = None
641
646
 
642
647
    def start_get_tasks(self):
643
 
        ''''
644
 
        Maps the TaskSource to the backend and starts threading.
645
 
        '''
646
 
        self.start_get_tasks_thread = \
647
 
             threading.Thread(target=self.__start_get_tasks)
648
 
        self.start_get_tasks_thread.setDaemon(True)
649
 
        self.start_get_tasks_thread.start()
650
 
 
651
 
    def __start_get_tasks(self):
652
 
        '''
653
 
        Loads all task from the backend and connects its signals afterwards.
654
 
        Launched as a thread by start_get_tasks
655
 
        '''
 
648
        """ Loads all task from the backend and connects its signals
 
649
        afterwards. """
656
650
        self.backend.start_get_tasks()
657
651
        self._connect_signals()
658
652
        if self.backend.is_default():
810
804
        '''
811
805
        try:
812
806
            self.to_set_timer.cancel()
813
 
        except Exception, e:
 
807
        except Exception:
814
808
            pass
815
809
        try:
816
810
            self.to_set_timer.join(3)
817
 
        except Exception, e:
 
811
        except Exception:
818
812
            pass
819
813
        try:
820
814
            self.start_get_tasks_thread.join(3)
821
 
        except:
 
815
        except Exception:
822
816
            pass
823
817
        self.launch_setting_thread(bypass_please_quit=True)
824
818