def fetch_document(self, session, id_): # Fetch the document doc = DirectoryDocumentStore.fetch_document(self, session, id_) # Assign the documentStore attribute doc.documentStore = self.id # Assign byteCount and other useful metadata stat = os.stat(doc.filename) doc.byteCount = stat.st_size doc.metadata['lastModified'] = stat.st_mtime return doc
def store_document(self, session, doc): # Do standard storage for directory based store DirectoryDocumentStore.store_document(self, session, doc) # Commit new version to the repository # Find filename normId = self._normalizeIdentifier(session, doc.id) filepath = self._getFilePath(session, normId) self.repo.hg_add(filepath) # Get user userString = self._getUserString(session) try: self.repo.hg_commit('{0} stored {1}'.format(self.id, normId), user=userString, files=[filepath]) except Exception as e: # It's possible that nothing changed if 'nothing changed' in e.message: pass else: raise e
def delete_document(self, session, id_): # Do standard delete for directory based store DirectoryDocumentStore.delete_document(self, session, id_) # Commit new version to the repository # Find filename normId = self._normalizeIdentifier(session, id_) filepath = self._getFilePath(session, normId) try: self.repo.hg_remove(filepath) except Exception as e: # It's possible that file was not already untracked if 'untracked' in e.message: pass else: raise e else: # Get user userString = self._getUserString(session) self.repo.hg_commit('{0} deleted {1}'.format(self.id, normId), user=userString, files=[filepath])
def _verifyDb(self, session, dbType): dbp = self.get_path(session, dbType + "Path") if dbType == 'database': # Simply the directory in which to store data # Ensure that it exists (including any intermediate dirs) if not os.path.exists(dbp): os.makedirs(dbp) userString = self._getUserString(session) # Connect to the directory as a Mercurial repository self.repo = hgapi.Repo(dbp, user=userString) # Check that repository has been initialized try: self.repo.hg_status() except Exception: # Not yet a Mercurial repository self.repo.hg_init() else: return DirectoryDocumentStore._verify(self, session, dbp)
def __init__(self, session, config, parent): self.defaultUser = self._getUserString(session) DirectoryDocumentStore.__init__(self, session, config, parent) self.totalItems = self.get_dbSize(session)