def fetch_document(self, session, id): p = self.permissionHandlers.get('info:srw/operation/2/retrieve', None) if p: if not session.user: msg = ("Authenticated user required to retrieve an object " "from %s" % self.id) raise PermissionException(msg) okay = p.hasPermission(session, session.user) if not okay: msg = ("Permission required to retrieve an object from " "%s" % self.id) raise PermissionException(msg) data = self.fetch_data(session, id) if (data): doc = StringDocument(data) if (self.outPreParser is not None): doc = self.outPreParser.process_document(session, doc) elif (self.outWorkflow is not None): doc = self.outWorkflow.process(session, doc) doc.id = id doc.documentStore = self.id doc.parent = ('document', self.id, id) return doc elif (isinstance(data, DeletedObject)): raise ObjectDeletedException(data) else: raise ObjectDoesNotExistException(id)
def fetch_document(self, session, id): p = self.permissionHandlers.get('info:srw/operation/2/retrieve', None) if p: if not session.user: msg = ("Authenticated user required to retrieve an object " "from %s" % self.id) raise PermissionException(msg) okay = p.hasPermission(session, session.user) if not okay: msg = ("Permission required to retrieve an object from " "%s" % self.id) raise PermissionException(msg) data = self.fetch_data(session, id) if (data): doc = StringDocument(data) if (self.outPreParser is not None): doc = self.outPreParser.process_document(session, doc) elif (self.outWorkflow is not None): doc = self.outWorkflow.process(session, doc) doc.id = id doc.documentStore = self.id doc.parent = ('document', self.id, id) return doc elif (isinstance(data, DeletedObject)): raise ObjectDeletedException(data) else: raise ObjectDoesNotExistException(id)
def create_document(self, session, doc=None): p = self.permissionHandlers.get('info:srw/operation/1/create', None) if p: if not session.user: msg = ("Authenticated user required to create an object in " "%s" % self.id) raise PermissionException(msg) okay = p.hasPermission(session, session.user) if not okay: msg = "Permission required to create an object in %s" % self.id raise PermissionException(msg) id = self.generate_id(session) if (doc is None): # Create a placeholder doc = StringDocument("") else: doc.id = id doc.documentStore = self.id try: self.store_document(session, doc) except ObjectAlreadyExistsException: # Back out id change if type(id) == long: self.currentId -= 1 raise except: raise return doc
def process_record(self, session, record): # Get RecordStore and identifier of parent record try: parentId = record.process_xpath(session, '/c3component/@parent')[0] except IndexError: parentId = record.process_xpath( session, '/c3:component/@c3:parent', maps={'c3': "http://www.cheshire3.org/schemas/component/"})[0] recStoreId, parentId = parentId.split('/', 1) # Get RecordStore object if isinstance(self.parent, Database): db = self.parent elif isinstance(self.parent, Server) and session.database: db = self.parent.get_object(session, session.database) elif (session.server and isinstance(session.server, Server) and session.database): db = session.server.get_object(session, session.database) elif not session.server: raise ValueError("No session.server") else: raise ValueError("No session.database") recStore = db.get_object(session, recStoreId) # Fetch parent record parentRec = recStore.fetch_record(session, parentId) # Return a new Document with parent data and identifier data = parentRec.get_xml(session) doc = StringDocument(data, self.id, byteCount=len(data), byteOffset=0) doc.id = parentId return doc
def create_document(self, session, doc=None): p = self.permissionHandlers.get('info:srw/operation/1/create', None) if p: if not session.user: msg = ("Authenticated user required to create an object in " "%s" % self.id) raise PermissionException(msg) okay = p.hasPermission(session, session.user) if not okay: msg = "Permission required to create an object in %s" % self.id raise PermissionException(msg) id = self.generate_id(session) if (doc is None): # Create a placeholder doc = StringDocument("") else: doc.id = id doc.documentStore = self.id try: self.store_document(session, doc) except ObjectAlreadyExistsException: # Back out id change if type(id) == long: self.currentId -= 1 raise except: raise return doc
def save_collocates(self, collocates, id): string = Pickle.dumps(collocates) doc = StringDocument(string) doc.id = id self.collStore.store_document(self.session, doc) self.collStore.commit_storing(self.session) return id
def directoryDocumentStoreIter(store): session = Session() for id_, data in directoryStoreIter(store): doc = StringDocument(data) doc.id = id_ internalId = store._normalizeIdentifier(session, id_) doc.filename = store._getFilePath(session, internalId) yield doc
def save_concordance(self, clines, id, wordWindow): global maxSize # self.logger.log('saving concordance - %d' % len(clines)) if len(clines) > maxSize : i = 1 for j in range(0, len(clines), maxSize): slice = clines[j:j+maxSize] slice.insert(0, [len(clines), wordWindow]) string = Pickle.dumps(slice) doc = StringDocument(string) doc.id = '%s_%d' % (id, i) i += 1 self.concStore.store_document(self.session, doc) else : clines.insert(0, [len(clines), wordWindow]) string = Pickle.dumps(clines) doc = StringDocument(string) doc.id = '%s_1' % id self.concStore.store_document(self.session, doc) self.concStore.commit_storing(self.session) return id
def mercurialDocumentStoreIter(store): session = Session() for id_, data in directoryStoreIter(store): doc = StringDocument(data) doc.id = id_ internalId = store._normalizeIdentifier(session, id_) doc.filename = store._getFilePath(session, internalId) doc.documentStore = store.id # Assign byteCount and other useful metadata stat = os.stat(doc.filename) doc.byteCount = stat.st_size doc.metadata['lastModified'] = stat.st_mtime yield doc
def _process_data(self, session, id, data, preParser=None): # Split from fetch record for Iterators if (preParser is not None): doc = StringDocument(data) doc = preParser.process_document(session, doc) elif (self.outPreParser is not None): doc = StringDocument(data) doc = self.outPreParser.process_document(session, doc) elif (self.outWorkflow is not None): doc = StringDocument(data) doc = self.outWorkflow.process(session, doc) else: doc = StringDocument(data) # Ensure basic required info doc.id = id doc.documentStore = self.id return doc
def _process_data(self, session, id, data, preParser=None): # Split from fetch record for Iterators if (preParser is not None): doc = StringDocument(data) doc = preParser.process_document(session, doc) elif (self.outPreParser is not None): doc = StringDocument(data) doc = self.outPreParser.process_document(session, doc) elif (self.outWorkflow is not None): doc = StringDocument(data) doc = self.outWorkflow.process(session, doc) else: doc = StringDocument(data) # Ensure basic required info doc.id = id doc.documentStore = self.id return doc
def process_record(self, session, record): # Get RecordStore and identifier of parent record try: parentId = record.process_xpath(session, '/c3component/@parent')[0] except IndexError: parentId = record.process_xpath( session, '/c3:component/@c3:parent', maps={'c3': "http://www.cheshire3.org/schemas/component/"} )[0] recStoreId, parentId = parentId.split('/', 1) # Get RecordStore object if isinstance(self.parent, Database): db = self.parent elif isinstance(self.parent, Server) and session.database: db = self.parent.get_object(session, session.database) elif ( session.server and isinstance(session.server, Server) and session.database ): db = session.server.get_object(session, session.database) elif not session.server: raise ValueError("No session.server") else: raise ValueError("No session.database") recStore = db.get_object(session, recStoreId) # Fetch parent record parentRec = recStore.fetch_record(session, parentId) # Return a new Document with parent data and identifier data = parentRec.get_xml(session) doc = StringDocument( data, self.id, byteCount=len(data), byteOffset=0 ) doc.id = parentId return doc
def next(self): d = BdbIter.next(self) doc = StringDocument(d[1]) doc.id = d[0] return doc
def next(self): d = BdbIter.next(self) doc = StringDocument(d[1]) doc.id = d[0] return doc