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)
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)
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()
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()
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()
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)
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)
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)