def zipMetadata(self, REQUEST=None):
     """
     @summary: gets an id of a metadatacollection or metadatacontainer and zips the content and returns the zip file
     """        
     url = REQUEST.id        
     parts = url.split("/")
     theId = parts[-1]
             
     results = self.portal_catalog.searchResults(id = theId)
     obj = results[0].getObject()
     
     if obj.portal_type in ['Topic']:
         obj = obj.aq_parent
     print obj
     
     zipData = {}
     items = obj.objectItems()
     for i in items:
         if i[1].meta_type == "Metadata":
             #print i[1].title 
             zipData[i[1].id + ".xml"] = i[1].xml 
     
     sIO = StringIO("")
     z = ZipUtil(sIO, mode="w")       
     z.writeData(zipData)
     
     if REQUEST:
         REQUEST.RESPONSE.setHeader("Content-type","application/zip")
     return z.getZipFileData()
    def zipMetadata(self, REQUEST=None):
        """
        @summary: gets an id of a metadatacollection or metadatacontainer and zips the content and returns the zip file
        """
        url = REQUEST.id
        parts = url.split("/")
        theId = parts[-1]

        results = self.portal_catalog.searchResults(id=theId)
        obj = results[0].getObject()

        if obj.portal_type in ['Topic']:
            obj = obj.aq_parent
        print obj

        zipData = {}
        items = obj.objectItems()
        for i in items:
            if i[1].meta_type == "Metadata":
                #print i[1].title
                zipData[i[1].id + ".xml"] = i[1].xml

        sIO = StringIO("")
        z = ZipUtil(sIO, mode="w")
        z.writeData(zipData)

        if REQUEST:
            REQUEST.RESPONSE.setHeader("Content-type", "application/zip")
        return z.getZipFileData()
示例#3
0
 def getFile(self):
     """
     @summary: a dict with file data as key and file path as value
     """  
     try: 
         if (self.username == "") and (self.password == ""):
             res = urllib.urlopen(self.url)
             self.contentType = res.info()["Content-Type"]
             print 'Get HTTP File anonymously.'
         else:
             req = urllib2.Request(self.url)
             base64string = base64.encodestring('%s:%s' % (self.username, self.password))[:-1]
             authheader =  "Basic %s" % base64string
             req.add_header("Authorization", authheader)
             res = urllib2.urlopen(req)
             self.contentType = res.info()["Content-Type"]
             print 'Get Authenticated File.'
         print 'self.contentType', self.contentType
         if self.contentType.lower().find("zip") != -1:
             tDict = {}
             f = StringIO()
             f.write(res.read())
             util = ZipUtil(f)
             theFiles = util.getFileContentWithExtension("xml")
             for f in theFiles:
                 tDict[f[1]] = self.url +"/"+ f[0]
             return tDict
         elif self.contentType.lower().find("xml") != -1:
             return {res.read():self.url}
         else:
             print 'Return unknown.'
             result = res.read()
             return {result:self.url}
         self.message = "Invalid URL or Wrong Content Type"
         return {}
     except:
         traceback.print_exc(file=sys.stdout)
         io = StringIO()
         traceback.print_exc(file=io)
         io.seek(0)            
         trace = io.read()
         self.message = trace            
         return {}