예제 #1
0
    def this_is_the_first_run(self, _) -> None:
        """ Called upon the very first GTG startup.

        This function is needed only in this backend, because it can be used
        as default one. The xml parameter is an object containing GTG default
        tasks. It will be saved to a file, and the backend will be set as
        default.

        @param xml: an xml object containing the default tasks.
        """

        filepath = self.get_path()
        if versioning.is_required(filepath):
            log.warning('Found old file. Running versioning code.')
            old_path = os.path.join(DATA_DIR, 'gtg_tasks.xml')
            tree = versioning.convert(old_path, self.datastore)

            xml.save_file(filepath, tree)
        else:
            root = firstrun_tasks.generate()
            xml.create_dirs(self.get_path())
            xml.save_file(self.get_path(), root)

        self._parameters[self.KEY_DEFAULT_BACKEND] = True

        # Load the newly created file
        self.data_tree = xml.open_file(self.get_path(), 'gtgData')
        self.task_tree = self.data_tree.find('tasklist')
        self.tag_tree = self.data_tree.find('taglist')
        xml.backup_used = None
예제 #2
0
    def initialize(self):
        """ This is called when a backend is enabled """

        super(Backend, self).initialize()
        filepath = self.get_path()

        if versioning.is_required(filepath):
            log.warning('Found old file. Running versioning code.')
            old_path = os.path.join(DATA_DIR, 'gtg_tasks.xml')
            tree = versioning.convert(old_path, self.datastore)

            xml.save_file(filepath, tree)

        elif not os.path.isfile(filepath):
            root = firstrun_tasks.generate()
            xml.create_dirs(self.get_path())
            xml.save_file(self.get_path(), root)

        self.data_tree = xml.open_file(filepath, 'gtgData')
        self.task_tree = self.data_tree.find('tasklist')
        self.tag_tree = self.data_tree.find('taglist')
        self.search_tree = self.data_tree.find('searchlist')

        self.datastore.load_tag_tree(self.tag_tree)
        self.datastore.load_search_tree(self.search_tree)

        # Make safety daily backup after loading
        xml.save_file(self.get_path(), self.data_tree)
        xml.write_backups(self.get_path())