def setUp(self):
     self.settings = task.Task.settings = config.Settings(load=False)
     self.categories = category.CategoryList(self.createCategories())
     self.tasks = task.TaskList(self.createTasks())
     self.categorize()
     self.filter = category.filter.CategoryFilter(
         self.tasks, categories=self.categories, treeMode=self.treeMode)
Exemplo n.º 2
0
    def __init__(self, *args, **kwargs):
        self.__filename = self.__lastFilename = ''
        self.__needSave = self.__loading = False
        self.__tasks = task.TaskList()
        self.__categories = category.CategoryList()
        self.__notes = note.NoteContainer()
        self.__efforts = effort.EffortList(self.tasks())
        self.__guid = generate()
        self.__syncMLConfig = createDefaultSyncConfig(self.__guid)
        super(TaskFile, self).__init__(*args, **kwargs)
        # Register for tasks, categories, efforts and notes being changed so we
        # can monitor when the task file needs saving (i.e. is 'dirty'):
        for container in self.tasks(), self.categories(), self.notes():
            for eventType in container.modificationEventTypes():
                self.registerObserver(self.onDomainObjectAddedOrRemoved,
                                      eventType,
                                      eventSource=container)

        for eventType in (base.Object.markDeletedEventType(),
                          base.Object.markNotDeletedEventType()):
            self.registerObserver(self.onDomainObjectAddedOrRemoved, eventType)

        for eventType in task.Task.modificationEventTypes():
            self.registerObserver(self.onTaskChanged, eventType)
        for eventType in effort.Effort.modificationEventTypes():
            self.registerObserver(self.onEffortChanged, eventType)
        for eventType in note.Note.modificationEventTypes():
            self.registerObserver(self.onNoteChanged, eventType)
        for eventType in category.Category.modificationEventTypes():
            self.registerObserver(self.onCategoryChanged, eventType)
        for eventType in attachment.FileAttachment.modificationEventTypes() + \
                         attachment.URIAttachment.modificationEventTypes() + \
                         attachment.MailAttachment.modificationEventTypes():
            self.registerObserver(self.onAttachmentChanged, eventType)
Exemplo n.º 3
0
 def testViewerDoesNotReactToRemoveEventsFromOtherContainers(self):
     categories = base.filter.SearchFilter(category.CategoryList())
     categories.append(category.Category('Test'))
     try:
         categories.clear()
     except AttributeError: # pragma: no cover
         self.fail("Removing a category shouldn't affect the UpdatePerSecondViewer.")
Exemplo n.º 4
0
 def setUp(self):
     self.categories = category.CategoryList()
     self.category1 = category.Category('Category 1')
     self.category2 = category.Category('Category 2')
     self.viewerContainer = MockViewerContainer()
     self.menu = gui.menu.ToggleCategoryMenu(self.frame, self.categories,
                                             self.viewerContainer)
Exemplo n.º 5
0
 def createTestFile(self):
     taskList = task.TaskList([task.Task('test') for _ in range(self.nrTasks)])
     taskfile = file(self.taskfilename, 'w')
     taskWriter = persistence.XMLWriter(taskfile)
     taskWriter.write(taskList, category.CategoryList(), note.NoteContainer(),
                      createDefaultSyncConfig('fake'), 'fake')
     taskfile.close()
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.fd = StringIO.StringIO()
     self.fd.name = 'testfile.tsk'
     self.reader = persistence.XMLReader(self.fd)
     self.writer = persistence.XMLWriter(self.fd)
     self.taskList = task.TaskList()
     self.categories = category.CategoryList()
     self.notes = note.NoteContainer()
     self.syncMLConfig = SyncMLConfigNode('root')
     self.guid = u'GUID'
     self.fillContainers()
     tasks, categories, notes, syncMLConfig, guid = self.readAndWrite()
     self.tasksWrittenAndRead = task.TaskList(tasks)
     self.categoriesWrittenAndRead = category.CategoryList(categories)
     self.notesWrittenAndRead = note.NoteContainer(notes)
     self.syncMLConfigWrittenAndRead = syncMLConfig
     self.guidWrittenAndRead = guid
Exemplo n.º 7
0
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.taskList = task.TaskList()
     self.categoryList = category.CategoryList()
     self.reader = persistence.CSVReader(self.taskList, self.categoryList)
     self.defaultReaderKwArgs = dict(encoding='utf-8',
                                     dialect='excel',
                                     hasHeaders=False,
                                     importSelectedRowsOnly=False,
                                     dayfirst=True)
Exemplo n.º 8
0
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.fd = StringIO.StringIO()
     self.fd.name = 'testfile.tsk'
     self.writer = persistence.XMLWriter(self.fd)
     self.task = task.Task()
     self.taskList = task.TaskList([self.task])
     self.category = category.Category('Category')
     self.categoryContainer = category.CategoryList([self.category])
     self.note = note.Note()
     self.noteContainer = note.NoteContainer([self.note])
Exemplo n.º 9
0
 def setUp(self):
     super(TaskCommandTestCase, self).setUp()
     task.Task.settings = config.Settings(load=False)
     self.list = self.taskList = task.TaskList()
     self.categories = category.CategoryList()
     self.category = category.Category('cat')
     self.categories.append(self.category)
     self.task1 = task.Task('task1', startDateTime=date.Now())
     self.task2 = task.Task('task2', startDateTime=date.Now())
     self.taskList.append(self.task1)
     self.originalList = [self.task1]
Exemplo n.º 10
0
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.parent = task.Task('parent')
     self.parentCategory = category.Category('parent')
     self.parentCategory.addCategorizable(self.parent)
     self.child = task.Task()
     self.childCategory = category.Category('child')
     self.childCategory.addCategorizable(self.child)
     self.parent.addChild(self.child)
     self.unusedCategory = category.Category('unused')
     self.list = task.TaskList([self.parent, self.child])
     self.categories = category.CategoryList(
         [self.parentCategory, self.childCategory, self.unusedCategory])
     self.filter = category.filter.CategoryFilter(
         self.list, categories=self.categories, treeMode=self.treeMode)
Exemplo n.º 11
0
    def mergeDiskChanges(self):
        self.__loading = True
        try:
            if os.path.exists(
                    self.__filename
            ):  # Not using self.exists() because DummyFile.exists returns True
                # Instead of writing the content of memory, merge changes
                # with the on-disk version and save the result.
                self.__monitor.freeze()
                try:
                    fd = self._openForRead()
                    tasks, categories, globalcategories, notes, syncMLConfig, allChanges, guid = self._read(
                        fd)
                    fd.close()

                    self.__changes = allChanges

                    if self.__saving:
                        for devGUID, changes in self.__changes.items():
                            if devGUID != self.__monitor.guid():
                                changes.merge(self.__monitor)

                    sync = ChangeSynchronizer(self.__monitor, allChanges)

                    sync.sync([(self.categories(),
                                category.CategoryList(categories)),
                               (self.tasks(), task.TaskList(tasks)),
                               (self.notes(), note.NoteContainer(notes))])

                    self.__changes[self.__monitor.guid()] = self.__monitor
                finally:
                    self.__monitor.thaw()
            else:
                self.__changes = {self.__monitor.guid(): self.__monitor}

            self.__monitor.resetAllChanges()
            name, fd = self._openForWrite()
            xml.ChangesXMLWriter(fd).write(self.changes())
            fd.close()
            if os.path.exists(self.__filename + '.delta'):
                os.remove(self.__filename + '.delta')
            if name is not None:  # Unit tests (AutoSaver)
                os.rename(name, self.__filename + '.delta')

            self.__changedOnDisk = False
        finally:
            self.__loading = False
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.parent = task.Task('parent task')
     self.parent.setShouldMarkCompletedWhenAllChildrenCompleted(False)
     self.child = task.Task('child task')
     self.child.setCompletionDateTime()
     self.childCategory = category.Category('child category')
     self.childCategory.addCategorizable(self.child)
     self.parent.addChild(self.child)
     self.tasks = task.TaskList([self.parent, self.child])
     self.categories = category.CategoryList([self.childCategory])
     self.viewFilter = task.filter.ViewFilter(self.tasks,
                                              treeMode=self.treeMode)
     self.categoryFilter = category.filter.CategoryFilter(
         self.viewFilter,
         categories=self.categories,
         treeMode=self.treeMode)
Exemplo n.º 13
0
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.categories = category.CategoryList()
     self.category = category.Category('Unfiltered category')
     self.filteredCategory = category.Category('Filtered category',
                                               filtered=True)
Exemplo n.º 14
0
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.categories = category.CategoryList()
Exemplo n.º 15
0
 def setUp(self):
     self.categories = category.CategoryList()
Exemplo n.º 16
0
    def __init__(self, *args, **kwargs):
        self.__filename = self.__lastFilename = ''
        self.__needSave = self.__loading = False
        self.__tasks = task.TaskList()
        self.__categories = category.CategoryList()
        self.__notes = note.NoteContainer()
        self.__efforts = effort.EffortList(self.tasks())
        self.__guid = generate()
        self.__syncMLConfig = createDefaultSyncConfig(self.__guid)
        self.__monitor = ChangeMonitor()
        self.__changes = dict()
        self.__changes[self.__monitor.guid()] = self.__monitor
        self.__changedOnDisk = False
        if kwargs.pop('poll', True):
            self.__notifier = TaskCoachFilesystemPollerNotifier(self)
        else:
            self.__notifier = TaskCoachFilesystemNotifier(self)
        self.__saving = False
        for collection in [self.__tasks, self.__categories, self.__notes]:
            self.__monitor.monitorCollection(collection)
        for domainClass in [
                task.Task, category.Category, note.Note, effort.Effort,
                attachment.FileAttachment, attachment.URIAttachment,
                attachment.MailAttachment
        ]:
            self.__monitor.monitorClass(domainClass)
        super(TaskFile, self).__init__(*args, **kwargs)
        # Register for tasks, categories, efforts and notes being changed so we
        # can monitor when the task file needs saving (i.e. is 'dirty'):
        for container in self.tasks(), self.categories(), self.notes():
            for eventType in container.modificationEventTypes():
                self.registerObserver(self.onDomainObjectAddedOrRemoved,
                                      eventType,
                                      eventSource=container)

        for eventType in (base.Object.markDeletedEventType(),
                          base.Object.markNotDeletedEventType()):
            self.registerObserver(self.onDomainObjectAddedOrRemoved, eventType)

        for eventType in task.Task.modificationEventTypes():
            if not eventType.startswith('pubsub'):
                self.registerObserver(self.onTaskChanged_Deprecated, eventType)
        pub.subscribe(self.onTaskChanged, 'pubsub.task')
        for eventType in effort.Effort.modificationEventTypes():
            self.registerObserver(self.onEffortChanged, eventType)
        for eventType in note.Note.modificationEventTypes():
            if not eventType.startswith('pubsub'):
                self.registerObserver(self.onNoteChanged_Deprecated, eventType)
        pub.subscribe(self.onNoteChanged, 'pubsub.note')
        for eventType in category.Category.modificationEventTypes():
            if not eventType.startswith('pubsub'):
                self.registerObserver(self.onCategoryChanged_Deprecated,
                                      eventType)
        pub.subscribe(self.onCategoryChanged, 'pubsub.category')
        for eventType in attachment.FileAttachment.modificationEventTypes() + \
                         attachment.URIAttachment.modificationEventTypes() + \
                         attachment.MailAttachment.modificationEventTypes():
            if not eventType.startswith('pubsub'):
                self.registerObserver(self.onAttachmentChanged_Deprecated,
                                      eventType)
        pub.subscribe(self.onAttachmentChanged, 'pubsub.attachment')
Exemplo n.º 17
0
 def setUp(self):
     self.categories = category.CategoryList()
     self.category = category.Category('category 1')
Exemplo n.º 18
0
 def setUp(self):
     self.list = task.TaskList()
     self.settings = config.Settings(load=False)
     self.categories = category.CategoryList()
     self.filter = category.filter.CategoryFilter(
         self.list, categories=self.categories)
Exemplo n.º 19
0
 def write(self, tsk):  # pylint: disable=W0221
     super(TemplateXMLWriter, self).write(task.TaskList([tsk]),
                category.CategoryList(),
                note.NoteContainer(),
                None, None)
Exemplo n.º 20
0
 def setUp(self):
     task.Task.settings = config.Settings(load=False)
     self.tasks = task.TaskList()
     self.categories = category.CategoryList()
     self.reader = persistence.TodoTxtReader(self.tasks, self.categories)