Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
 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
Exemplo n.º 11
0
 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
Exemplo n.º 13
0
 def next(self):
     d = BdbIter.next(self)
     doc = StringDocument(d[1])
     doc.id = d[0]
     return doc
Exemplo n.º 14
0
 def next(self):
     d = BdbIter.next(self)
     doc = StringDocument(d[1])
     doc.id = d[0]
     return doc