示例#1
0
 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
示例#2
0
 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
示例#3
0
 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])
示例#4
0
 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)
示例#5
0
 def __init__(self, session, config, parent):
     self.defaultUser = self._getUserString(session)
     DirectoryDocumentStore.__init__(self, session, config, parent)
     self.totalItems = self.get_dbSize(session)