Ejemplo n.º 1
0
 def setUp(self):
     super(NoteCommandTestCase, self).setUp()
     self.note1 = note.Note()
     self.note2 = note.Note()
     self.list = self.noteContainer = note.NoteContainer(
         [self.note1, self.note2])
     self.original = note.NoteContainer([self.note1, self.note2])
Ejemplo n.º 2
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()
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
 def testLocalNoteViewerForItemWithoutNotes(self):
     taskFile = persistence.TaskFile()
     taskFile.notes().append(note.Note())
     viewer = gui.viewer.NoteViewer(self.frame,
                                    taskFile,
                                    config.Settings(load=False),
                                    notesToShow=note.NoteContainer())
     self.failIf(viewer.presentation())
 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
Ejemplo n.º 6
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])
Ejemplo n.º 7
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
Ejemplo n.º 8
0
 def setUp(self):
     self.container = note.NoteContainer()
     self.note = note.Note()
Ejemplo n.º 9
0
 def testCutNotes_All(self):
     self.cut('all')
     self.assertDoUndoRedo(
         lambda: self.assertNoteContainer(note.NoteContainer()),
         lambda: self.assertNoteContainer(self.original))
Ejemplo n.º 10
0
 def testCutNotes_Selection(self):
     self.cut([self.note1])
     self.assertDoUndoRedo(
         lambda: self.assertNoteContainer(note.NoteContainer([self.note2])),
         lambda: self.assertNoteContainer(self.original))
Ejemplo n.º 11
0
 def setUp(self):
     self.notes = note.NoteContainer()
     self.taskList = task.TaskList()
 def testLocalNoteViewerForItemWithoutNotes(self):
     localViewer = gui.viewer.NoteViewer(self.frame,
                                         self.taskFile,
                                         self.settings,
                                         notesToShow=note.NoteContainer())
     self.failIf(localViewer.presentation())
Ejemplo n.º 13
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')
Ejemplo n.º 14
0
 def write(self, tsk):  # pylint: disable=W0221
     super(TemplateXMLWriter, self).write(task.TaskList([tsk]),
                category.CategoryList(),
                note.NoteContainer(),
                None, None)