Exemplo n.º 1
0
    def read_meta_data2(self):

        # prep attrs
        self._attr["created_time"] = None
        self._attr["modified_time"] = None    

    
        try:

            # TODO: move?
            parser = xml.parsers.expat.ParserCreate()
            parser.StartElementHandler = self.__meta_start_element
            parser.EndElementHandler = self.__meta_end_element
            parser.CharacterDataHandler = self.__meta_char_data

            infile = open(self.get_meta_file(), "r")

            self.__meta_body = False
            parser.ParseFile(infile)
            infile.close()
            
        except xml.parsers.expat.ExpatError as e:
            raise NoteBookError("Cannot read meta data", e)
        
        except Exception as e:
            raise NoteBookError("Cannot read meta data", e)

        # set defaults
        if self._attr["created_time"] is None:
            self._attr["created_time"] = get_timestamp()
            self._set_dirty(True)
        if self._attr["modified_time"] is None:
            self._attr["modified_time"] = get_timestamp()
            self._set_dirty(True)
Exemplo n.º 2
0
    def set_meta_data(self, attr):
        self._version = self._meta.attr.get("version", NOTEBOOK_FORMAT_VERSION)

        # set defaults
        if "created_time" not in attr:
            attr["created_time"] = get_timestamp()
            self._set_dirty(True)
        if "modified_time" not in attr:
            attr["modified_time"] = get_timestamp()
            self._set_dirty(True)
        if "nodeid" not in attr or attr["nodeid"].startswith("urn:"):
            attr["nodeid"] = new_nodeid()
            self._set_dirty(True)

        self._attr.update(attr)
Exemplo n.º 3
0
    def create(self):
        """Initializes the node on disk (create required files/directories)"""
        path = self.get_path()
        
        try:
            os.mkdir(path)
        except OSError as e:
            raise NoteBookError("Cannot create node", e)
            
        self._attr["created_time"] = get_timestamp()
        self._attr["modified_time"] = get_timestamp()
        self.write_meta_data()
        self._set_dirty(False)

        if self._attr["kind"] == "page":
            self.write_empty_data_file()
Exemplo n.º 4
0
    def create(self):
        """Initializes the node on disk (create required files/directories)"""
        path = self.get_path()

        try:
            os.mkdir(path)
        except OSError as e:
            raise NoteBookError("Cannot create node", e)

        self._attr["created_time"] = get_timestamp()
        self._attr["modified_time"] = get_timestamp()
        self.write_meta_data()
        self._set_dirty(False)

        # TODO: move to NoteBookPage
        if self._attr["content_type"] == CONTENT_TYPE_PAGE:
            self.write_empty_data_file()
Exemplo n.º 5
0
class NoteBookNode (object):
    """A general base class for all nodes in a NoteBook"""

    def __init__(self, path, title="", parent=None, notebook=None, kind="dir"):
        self._notebook = notebook
        self._parent = parent
        self._basename = None
        self._children = None        
        self._valid = True
        self._version = NOTEBOOK_FORMAT_VERSION
        
        self._attr = {
            "title": title,
            "kind": kind,
            "order": sys.maxint,
            "created_time": None,
            "modified_time": None,
            "expanded": False,
            "expanded2": False,
            "info_sort": INFO_SORT_NONE,
            "info_sort_dir": 1}

        # TODO: add a mechanism to register implict attrs that in turn do lookup
        # "type", "title", "parent", "nchildren"
        
        self._set_basename(path)
        
        

    def create(self):
        """Initializes the node on disk (create required files/directories)"""
        path = self.get_path()
        
        try:
            os.mkdir(path)
        except OSError, e:
            raise NoteBookError("Cannot create node", e)
            
        self._attr["created_time"] = get_timestamp()
        self._attr["modified_time"] = get_timestamp()
        self.write_meta_data()
        self._set_dirty(False)

        if self._attr["kind"] == "page":
            self.write_empty_data_file()
Exemplo n.º 6
0
    def read_meta_data(self):
        """Read meta data from file-system"""
        self._attr["created_time"] = None
        self._attr["modified_time"] = None    

        try:
            self._meta_parser.read(self, self.get_meta_file())
        except IOError as e:
            raise NoteBookError("Cannot read meta data", e)
        except xmlo.XmlError as e:
            raise NoteBookError("Node meta data is corrupt for note '%s'" % self.get_path(),  e)

        #if self.get_parent() == None:
        #    print "HERE", self._attr

        # set defaults
        if self._attr["created_time"] is None:
            self._attr["created_time"] = get_timestamp()
            self._set_dirty(True)
        if self._attr["modified_time"] is None:
            self._attr["modified_time"] = get_timestamp()
            self._set_dirty(True)
Exemplo n.º 7
0
 def set_attr_timestamp(self, name, timestamp=None):
     """Set a timestamp attribute"""
     if timestamp is None:
         timestamp = get_timestamp()
     self._attr[name] = timestamp
     self._set_dirty(True)
Exemplo n.º 8
0
        self._attr["modified_time"] = None    

        try:
            self._meta_parser.read(self, self.get_meta_file())
        except IOError, e:
            raise NoteBookError("Cannot read meta data", e)
        except xmlo.XmlError, e:
            raise NoteBookError("Node meta data is corrupt for note '%s'" %
                                self.get_path(),  e)

        #if self.get_parent() == None:
        #    print "HERE", self._attr

        # set defaults
        if self._attr["created_time"] is None:
            self._attr["created_time"] = get_timestamp()
            self._set_dirty(True)
        if self._attr["modified_time"] is None:
            self._attr["modified_time"] = get_timestamp()
            self._set_dirty(True)

                    
    def write_meta_data(self):
        """Write meta data to file-system"""
        try:
            self._meta_parser.write(self, self.get_meta_file())
        except IOError, e:
            raise NoteBookError("Cannot write meta data", e)
        except xmlo.XmlError, e:
            raise NoteBookError("File format error", e)
Exemplo n.º 9
0
 def set_attr_timestamp(self, name, timestamp=None):
     """Set a timestamp attribute"""
     if timestamp is None:
         timestamp = get_timestamp()
     self._attr[name] = timestamp
     self._set_dirty(True)
Exemplo n.º 10
0
        self._attr["modified_time"] = None    

        try:
            self._meta_parser.read(self, self.get_meta_file())
        except IOError, e:
            raise NoteBookError("Cannot read meta data", e)
        except xmlo.XmlError, e:
            raise NoteBookError("Node meta data is corrupt for note '%s'" %
                                self.get_path(),  e)

        #if self.get_parent() == None:
        #    print "HERE", self._attr

        # set defaults
        if self._attr["created_time"] is None:
            self._attr["created_time"] = get_timestamp()
            self._set_dirty(True)
        if self._attr["modified_time"] is None:
            self._attr["modified_time"] = get_timestamp()
            self._set_dirty(True)

                    
    def write_meta_data(self):
        """Write meta data to file-system"""
        try:
            self._meta_parser.write(self, self.get_meta_file())
        except IOError, e:
            raise NoteBookError("Cannot write meta data", e)
        except xmlo.XmlError, e:
            raise NoteBookError("File format error", e)