コード例 #1
0
    def testSubmitDatasetHandlerDatasetCreation(self):
        outputStr = StringIO.StringIO()

        # Invoke dataset submission program, passing faked form submission parameters
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(
            TestConfig.formdata, outputStr)

        # Check that the dataset is created
        found = SubmitDatasetUtils.ifDatasetExists(self.session,
                                                   TestConfig.DatasetId)

        self.assertEquals(found, True, "Dataset Creation Failed!")

        # Check that the new dataset can be dereferenced in the databank
        self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +
                                "/datasets/" + TestConfig.DatasetId +
                                "-packed",
                                expect_status=200,
                                expect_reason="OK",
                                accept_type="application/json")

        # Check that a HTML Response page is returned
        outputStr.seek(0, os.SEEK_SET)
        firstLine = outputStr.readline()

        # self.assertEqual( firstLine, "Content-type: text/html\n", "Submission Handler could not action the client request!")
        self.assertEqual(
            firstLine.strip(), "Status: 303 Dataset submission successful",
            "Submission Handler could not action the client request!")

        SubmitDatasetUtils.deleteDataset(self.session,
                                         TestConfig.DatasetId + "-packed")
        return
コード例 #2
0
    def testSubmitDatasetHandlerDirectorySubmission(self):
        outputStr = StringIO.StringIO()

        # Invoke dataset submission program, passing faked form submission parameters
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(
            TestConfig.formdata, outputStr)

        # Check that the dataset created for unzipped data can be dereferenced in the databank
        datasetId = SubmitDatasetUtils.getFormParam('datId',
                                                    TestConfig.formdata)
        datasetDir = SubmitDatasetUtils.getFormParam('datDir',
                                                     TestConfig.formdata)
        self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +
                                "/datasets/" + datasetId + "-packed",
                                expect_status=200,
                                expect_reason="OK",
                                accept_type="application/json")

        # Invoke dataset submission program yet again.
        # This time, bypassing the dataset creation but  continuing submittion of data to the already exiting dataset
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(
            TestConfig.formdata, outputStr)
        # Check that the dataset created for unzipped data can be dereferenced in the databank

        self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +
                                "/datasets/" + TestConfig.DatasetId +
                                "-packed",
                                expect_status=200,
                                expect_reason="OK",
                                accept_type="application/json")

        SubmitDatasetUtils.deleteDataset(self.session,
                                         TestConfig.DatasetId + "-packed")
        return
コード例 #3
0
 def testDatasetDeletion(self):  
     SubmitDatasetUtils.createDataset( self.session,TestDatasetName)
     # Check dataset exists
     response = self.session.doHTTP_GET(
         resource = "/" + TestConfig.SiloName + "/datasets/" + TestDatasetName+"-packed", 
         expect_status=200, expect_reason="OK", accept_type="application/json")
     # Test the dataset deletion      
     SubmitDatasetUtils.deleteDataset( self.session,TestDatasetName+"-packed") 
     # Test dataset no longer exists
     response = self.session.doHTTP_GET(
         resource = "/" + TestConfig.SiloName + "/datasets/" + TestDatasetName+"-packed", 
         expect_status=404, expect_reason="Not Found")
     return
コード例 #4
0
    def testSingleFileSubmission(self):
        SubmitDatasetUtils.createDataset(self.session, TestDatasetName)
        # Submit a file to the Dataset
        localMimeType = TestConfig.FileMimeType
        localFileContent = SubmitDatasetUtils.getLocalFileContents(
            TestConfig.FilePath)
        SubmitDatasetUtils.submitFileToDataset(self.session, TestDatasetName,
                                               TestConfig.FileName,
                                               TestConfig.FilePath,
                                               localMimeType,
                                               TestConfig.FileName)

        # Read from the  updated Dataset
        (remoteMimeType,
         remoteFileContent) = SubmitDatasetUtils.getFileFromDataset(
             self.session, TestDatasetName + "-packed", TestConfig.FileName)

        # Check that the <localFileContent> = <remoteFileContents>
        self.assertEqual(localMimeType, remoteMimeType,
                         "Difference between local and remote MIME types")
        self.assertEqual(localFileContent, remoteFileContent,
                         "Difference between local and remote file contents")
        SubmitDatasetUtils.deleteDataset(self.session,
                                         TestDatasetName + "-packed")
        return
コード例 #5
0
def processLogout(formdata, outputstr):
    """
    Process logout from the DMIRAl system
    
    formdata    is a dictionary containing parameters from the dataset submission form
    """
    if outputstr:
        sys.stdout = outputstr
    try:
        redirectToLogoutResponsePage(convertToUriString(SuccessStatus))
        return
        
    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e) 
コード例 #6
0
def processLogout(formdata, outputstr):
    """
    Process logout from the DMIRAl system
    
    formdata    is a dictionary containing parameters from the dataset submission form
    """
    if outputstr:
        sys.stdout = outputstr
    try:
        redirectToLogoutResponsePage(convertToUriString(SuccessStatus))
        return

    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e)
コード例 #7
0
def processDirectoryListingRequest(formdata, srcdir, outputstr):
    """
    Generate a list of all directory contents - files and subdirectories in a specified directory,
    expressed relative to the supplied base directory, and write the result to the
    supplied output stream as as an HTTP application/JSON entity.
    
    srcdir      source directory containing files, directories and subdirectories
    outputstr   output stream to receive resulting JSON entity
    """
    
    datdir =  SubmitDatasetUtils.getFormParam("datdir",  formdata)
    datdir = "/home/" + datdir
    logger.debug(" datdir "+ datdir)

    outputstr.write("Content-type: application/JSON\n")
    outputstr.write("\n")      # end of MIME headers

    index = datdir.rindex('/')
    
    # basedir - base relative to which results are expressed
    basedir = datdir[:-(len(datdir)-index)]

    contents = CollectDirectoryContents(datdir, basedir, listFiles=True)
    json.dump(contents, outputstr, indent=4)

    return
コード例 #8
0
    def testSubmitDatasetHandlerHTMLResponse(self):    
        outputStr =  StringIO.StringIO()

        # Invoke dataset submission program, passing faked form submission parameters
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(TestConfig.formdata, outputStr)

        #Logger.debug("Output String from output stream: "+outputStr.getvalue())
        # print "Output String from output stream: "+outputStr.getvalue()
        outputStr.seek(0, os.SEEK_SET)
        firstLine = outputStr.readline()
        Logger.debug("FirstLine = " + firstLine);
        #self.assertEqual( firstLine, "Content-type: text/html\n", "Submission Handler could not action the client request!")
        self.assertEqual( firstLine.strip(), "Status: 303 Dataset submission successful","Submission Handler could not action the client request!")
           
        SubmitDatasetUtils.deleteDataset(self.session, TestConfig.DatasetId +"-packed");
        #SubmitDatasetUtils.deleteDataset(TestConfig.SiloName, datasetId);
        return
コード例 #9
0
def submitMetadata(formdata, outputstr):
    """
    Process form data, and print (to stdout) a new HTML page reflecting
    the outcome of the request.
    
    formdata    is a dictionary containing parameters from the dataset submission form
    """
    userName = SubmitDatasetUtils.getFormParam("user", formdata)
    datasetName = SubmitDatasetUtils.getFormParam("datId", formdata)
    title = SubmitDatasetUtils.getFormParam("title", formdata)
    description = SubmitDatasetUtils.getFormParam("description", formdata)
    dirName = SubmitDatasetUtils.getFormParam("datDir", formdata)
    ElementUriList = [
        ElementIdentifierUri, ElementTitleUri, ElementDescriptionUri
    ]
    ElementValueList = [datasetName, title, description]

    if outputstr:
        sys.stdout = outputstr
    try:
        # Update the local manifest
        manifestFilePath = dirName + str(os.path.sep) + DefaultManifestName
        Logger.debug("Element List = " + repr(ElementUriList))
        Logger.debug("Element Value List = " + repr(ElementValueList))
        basedir = "/home"

        # Check for empty Dataset ID and redirect to an error page if empty
        if datasetName == "" or datasetName == None:
            redirectToErrorPage(dirName, convertToUriString(ErrorStatus_1))

        # Check for empty dataset Directory and redirect to an error page if empty
        if dirName == "" or dirName == None:
            redirectToErrorPage(dirName, convertToUriString(ErrorStatus_2))
        # Check for the dataset directory write access. Update the manifest only if the user has write access to the dataset directory.
        # Redirect to the error page if the user has no write permissions on the selected dataset directory
        else:
            if IsDirectoryWritable(dirName):
                # Update the manifest only if the user has write access to the dataset directory.
                updateMetadataInDirectoryBeforeSubmission(
                    manifestFilePath, ElementUriList, ElementValueList)

                # Redirect to the Submission Confirmation page
                redirectToSubmissionConfirmationPage(dirName)
            else:
                redirectToErrorPage(dirName, convertToUriString(ErrorStatus_3))
        return

    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e)
コード例 #10
0
 def testDatasetDeletion(self):
     SubmitDatasetUtils.createDataset(self.session, TestDatasetName)
     # Check dataset exists
     response = self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +
                                        "/datasets/" + TestDatasetName +
                                        "-packed",
                                        expect_status=200,
                                        expect_reason="OK",
                                        accept_type="application/json")
     # Test the dataset deletion
     SubmitDatasetUtils.deleteDataset(self.session,
                                      TestDatasetName + "-packed")
     # Test dataset no longer exists
     response = self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +
                                        "/datasets/" + TestDatasetName +
                                        "-packed",
                                        expect_status=404,
                                        expect_reason="Not Found")
     return
コード例 #11
0
def submitMetadata(formdata, outputstr):
    """
    Process form data, and print (to stdout) a new HTML page reflecting
    the outcome of the request.
    
    formdata    is a dictionary containing parameters from the dataset submission form
    """
    userName             =  SubmitDatasetUtils.getFormParam("user"        ,  formdata)
    datasetName          =  SubmitDatasetUtils.getFormParam("datId"       ,  formdata)  
    title                =  SubmitDatasetUtils.getFormParam("title"       ,  formdata)  
    description          =  SubmitDatasetUtils.getFormParam("description" ,  formdata)  
    dirName              =  SubmitDatasetUtils.getFormParam("datDir"      ,  formdata)
    ElementUriList       =  [ElementIdentifierUri, ElementTitleUri, ElementDescriptionUri]
    ElementValueList     =  [datasetName, title, description]

    if outputstr:
        sys.stdout = outputstr
    try:                             
        # Update the local manifest
        manifestFilePath     = dirName + str(os.path.sep) + DefaultManifestName
        Logger.debug("Element List = " + repr(ElementUriList))
        Logger.debug("Element Value List = " + repr(ElementValueList))
        basedir = "/home"
        
        # Check for empty Dataset ID and redirect to an error page if empty
        if datasetName=="" or datasetName==None:
             redirectToErrorPage(dirName, convertToUriString(ErrorStatus_1))    
                
        # Check for empty dataset Directory and redirect to an error page if empty
        if dirName=="" or dirName==None:
             redirectToErrorPage(dirName, convertToUriString(ErrorStatus_2))    
        # Check for the dataset directory write access. Update the manifest only if the user has write access to the dataset directory.       
        # Redirect to the error page if the user has no write permissions on the selected dataset directory     
        else :
            if  IsDirectoryWritable(dirName) :   
                # Update the manifest only if the user has write access to the dataset directory.
                updateMetadataInDirectoryBeforeSubmission(manifestFilePath, ElementUriList, ElementValueList)       
               
                # Redirect to the Submission Confirmation page
                redirectToSubmissionConfirmationPage(dirName);
            else :
                redirectToErrorPage(dirName, convertToUriString(ErrorStatus_3))                    
        return
        
    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e) 
コード例 #12
0
    def testDatasetCreation(self):
        # Read original Dataset List from Silo
        initialDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo(
            self.session)

        # Formulate the initial datasets received form Databank Silo into a List: <initialDatasetsListFromSilo>
        initialDatasetsListFromSilo = []
        for initialDataset in initialDatasetsFromSilo:
            initialDatasetsListFromSilo.append(initialDataset)

        # Create a new Test Dataset
        SubmitDatasetUtils.createDataset(self.session, TestDatasetName)

        # Read updated Dataset List from Silo
        updatedDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo(
            self.session)

        # Formulate the updated datasets received from Databank Silo into a List: <updatedDatasetListFromSilo>
        updatedDatasetsListFromSilo = []
        for updatedDataset in updatedDatasetsFromSilo:
            updatedDatasetsListFromSilo.append(updatedDataset)

        logger.debug("Updated no. of Datasets in Silo " +
                     str(len(updatedDatasetsListFromSilo)) +
                     ", Initial no. of Datasets in Silo  " +
                     str(len(initialDatasetsListFromSilo)))

        # Test that the length <updatedDatasetListFromSilo> = length<initialDatasetsListFromSilo> + 1
        self.assertEquals(len(updatedDatasetsListFromSilo),
                          len(initialDatasetsListFromSilo) + 1,
                          "Dataset was not Created Successfully")
        SubmitDatasetUtils.deleteDataset(self.session,
                                         TestDatasetName + "-packed")
        return
コード例 #13
0
 def tearDown(self):
     try:
         SubmitDatasetUtils.deleteDataset(self.session,  SubmitDatasetUtils.getFormParam('datId', TestConfig.formdata))
         SubmitDatasetUtils.deleteDataset(self.session,  SubmitDatasetUtils.getFormParam('datId', TestConfig.formdata) +"-packed");
     except:
         pass
     return
コード例 #14
0
    def testDatasetCreation(self):        
        # Read original Dataset List from Silo
        initialDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo(self.session)
        
        # Formulate the initial datasets received form Databank Silo into a List: <initialDatasetsListFromSilo>
        initialDatasetsListFromSilo = []
        for initialDataset in initialDatasetsFromSilo:
            initialDatasetsListFromSilo.append(initialDataset)
            
        # Create a new Test Dataset
        SubmitDatasetUtils.createDataset(self.session,TestDatasetName)
        
        # Read updated Dataset List from Silo
        updatedDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo(self.session)
        
        # Formulate the updated datasets received from Databank Silo into a List: <updatedDatasetListFromSilo>
        updatedDatasetsListFromSilo = []
        for updatedDataset in updatedDatasetsFromSilo:
            updatedDatasetsListFromSilo.append(updatedDataset)

        logger.debug("Updated no. of Datasets in Silo "+str(len(updatedDatasetsListFromSilo))+", Initial no. of Datasets in Silo  "+str(len(initialDatasetsListFromSilo)))
       
        # Test that the length <updatedDatasetListFromSilo> = length<initialDatasetsListFromSilo> + 1
        self.assertEquals(len(updatedDatasetsListFromSilo), len(initialDatasetsListFromSilo)+1, "Dataset was not Created Successfully")
        SubmitDatasetUtils.deleteDataset( self.session,TestDatasetName+"-packed") 
        return
コード例 #15
0
 def testSubmitDatasetHandlerDirectorySubmission(self):
     outputStr  =  StringIO.StringIO()
      
     # Invoke dataset submission program, passing faked form submission parameters
     SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(TestConfig.formdata, outputStr)
     
     # Check that the dataset created for unzipped data can be dereferenced in the databank 
     datasetId  =  SubmitDatasetUtils.getFormParam('datId', TestConfig.formdata)
     datasetDir =  SubmitDatasetUtils.getFormParam('datDir', TestConfig.formdata)
     self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +"/datasets/"+datasetId+"-packed",
         expect_status=200, expect_reason="OK", accept_type="application/json")
     
     # Invoke dataset submission program yet again. 
     # This time, bypassing the dataset creation but  continuing submittion of data to the already exiting dataset
     SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(TestConfig.formdata, outputStr)
      # Check that the dataset created for unzipped data can be dereferenced in the databank 
      
     self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +"/datasets/"+TestConfig.DatasetId+"-packed", 
         expect_status=200, expect_reason="OK", accept_type="application/json")
         
     SubmitDatasetUtils.deleteDataset(self.session, TestConfig.DatasetId+"-packed")
     return
コード例 #16
0
 def testSingleFileSubmission(self):     
     SubmitDatasetUtils.createDataset(self.session,TestDatasetName)  
     # Submit a file to the Dataset
     localMimeType = TestConfig.FileMimeType 
     localFileContent  = SubmitDatasetUtils.getLocalFileContents(TestConfig.FilePath)
     SubmitDatasetUtils.submitFileToDataset(self.session, TestDatasetName, TestConfig.FileName, TestConfig.FilePath,localMimeType, TestConfig.FileName)
     
     # Read from the  updated Dataset
     (remoteMimeType,remoteFileContent) = SubmitDatasetUtils.getFileFromDataset(self.session, TestDatasetName+"-packed", TestConfig.FileName)
     
     # Check that the <localFileContent> = <remoteFileContents>
     self.assertEqual(localMimeType, remoteMimeType, "Difference between local and remote MIME types")
     self.assertEqual(localFileContent, remoteFileContent, "Difference between local and remote file contents")
     SubmitDatasetUtils.deleteDataset(self.session,TestDatasetName+"-packed")  
     return
コード例 #17
0
    def testSubmitDatasetHandlerEmptyDirectorySubmission(self):
        outputStr =  StringIO.StringIO() 
        
        # reset the Dataset Directory to point to an empty directory
        formdata = TestConfig.formdata.copy()
        formdata['datDir'] = cgi.MiniFieldStorage('datDir', TestConfig.DatasetsEmptyDirPath)

        # Invoke dataset submission program, passing faked form submission parameters
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(formdata, outputStr)
        
        # Check that the dataset created for unzipped data can be dereferenced in the databank 
        self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +"/datasets/"+TestConfig.DatasetId+"-packed", 
            expect_status=200, expect_reason="OK", accept_type="application/json")
        
        # Invoke dataset submission program yet again. 
        # This time, bypassing the dataset creation but  continuing submittion of data to the already exiting dataset
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(formdata, outputStr)
         # Check that the dataset created for unzipped data can be dereferenced in the databank 
         
        self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +"/datasets/"+TestConfig.DatasetId+"-packed", expect_status=200, expect_reason="OK", accept_type="application/json")
        
        SubmitDatasetUtils.deleteDataset(self.session, TestConfig.DatasetId+"-packed")
        return
コード例 #18
0
    def testSubmitDatasetHandlerDatasetDeletion(self):    
        outputStr =  StringIO.StringIO()
         
        # Invoke dataset submission program, passing faked form submission parameters
        SubmitDatasetConfirmationHandler.processDatasetSubmissionForm(TestConfig.formdata, outputStr)
        SubmitDatasetUtils.deleteDataset(self.session, TestConfig.DatasetId)

        # Check that the dataset is deleted
        found = SubmitDatasetUtils.ifDatasetExists(self.session, TestConfig.DatasetId)
            
        self.assertEquals(found, False, "Dataset Deletion Failed!" )     
        
        # Check that the dataset deleted cannot be dereferenced in the databank 
        self.session.doHTTP_GET(resource="/" + TestConfig.SiloName +"/datasets/"+ TestConfig.DatasetId, 
            expect_status=404, expect_reason="Not Found", accept_type="application/json")
        
        # Check that a HTML Response page is returned   
        outputStr.seek(0, os.SEEK_SET)
        firstLine = outputStr.readline()
        # self.assertEqual( firstLine, "Content-type: text/html\n", "Submission Handler could not action the client request!")
        self.assertEqual( firstLine.strip(), "Status: 303 Dataset submission successful","Submission Handler could not action the client request!")
 
        SubmitDatasetUtils.deleteDataset(self.session, TestConfig.DatasetId+"-packed")
        return
コード例 #19
0
def getDatasetMetadata(formdata, manifestName ,outputstr):
    """
    Gets the metadata from the manifest.rdf file and formulates it into the JSON format.
    
    formdata    is a dictionary containing parameters from the dataset submission form
    """
    dirName      = SubmitDatasetUtils.getFormParam("directory",formdata)
    manifestPath = dirName  + str(os.path.sep) + manifestName
    Logger.debug("Manifest Path = " + manifestPath)
    outputstr.write("Content-type: application/JSON\n")
    outputstr.write("\n")      # end of MIME headers

    manifestDictionary = ManifestRDFUtils.getDictionaryFromManifest(manifestPath, ElementUriList)
    Logger.debug("Manifest Dictionary = " + repr(manifestDictionary))
    json.dump(manifestDictionary, outputstr, indent=4)

    Logger.debug("Manifest Dictionary = " + repr(manifestDictionary))
    return
コード例 #20
0
def logoutResponseForm(formdata, outputstr):
    """
    Print (to stdout) a new HTML page reflecting the outcome of the logout request.
    
    formdata    is a dictionary containing parameters from the logout handler 
    """
    status               =  SubmitDatasetUtils.getFormParam("status"  , formdata)  
   
    # print repr(formdata)

    if outputstr:
        sys.stdout = outputstr

        # Generate response headers
        print "Content-type: text/html"
        print "Cache-control: no-cache"
        print

        # Generate web page

        pageTemplate = ("""
            <html>
                <head>
                    <script type="text/javascript" src="../../jQuery/js/jquery-1.4.2.js"></script>                    
                </head>
                
                <body>
                    <div>
                        <span><a href="/"><img alt="site_logo" src="/images/Admiral-logo-284x100.png" border="0"/></a></span>
                    </div>
                    <h2>%(status)s</h2>
                </body>
            </html>
            """)
        print (pageTemplate%
            { 
             'status'              : status
            })

    return
コード例 #21
0
def logoutResponseForm(formdata, outputstr):
    """
    Print (to stdout) a new HTML page reflecting the outcome of the logout request.
    
    formdata    is a dictionary containing parameters from the logout handler 
    """
    status = SubmitDatasetUtils.getFormParam("status", formdata)

    # print repr(formdata)

    if outputstr:
        sys.stdout = outputstr

        # Generate response headers
        print "Content-type: text/html"
        print "Cache-control: no-cache"
        print

        # Generate web page

        pageTemplate = ("""
            <html>
                <head>
                    <script type="text/javascript" src="../../jQuery/js/jquery-1.4.2.js"></script>                    
                </head>
                
                <body>
                    <div>
                        <span><a href="/"><img alt="site_logo" src="/images/Admiral-logo-284x100.png" border="0"/></a></span>
                    </div>
                    <h2>%(status)s</h2>
                </body>
            </html>
            """)
        print(pageTemplate % {'status': status})

    return
コード例 #22
0
    def testEmptyDirectorySubmission(self):
            
        # Create a new Test Dataset
        SubmitDatasetUtils.createDataset(self.session,EmptyTestDatasetName)

        zipFileName = EmptyTestDatasetName+".zip"
        zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName
        # Zip the Empty directory
        SubmitDatasetUtils.zipLocalDirectory(TestConfig.DatasetsEmptyDirPath,TestConfig.TestPat,zipFilePath)
        zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName
        #logger.debug("ZipFileName: " + zipFileName)
        localZipFileContent  = SubmitDatasetUtils.getLocalFileContents(zipFilePath)
        SubmitDatasetUtils.submitFileToDataset(self.session,EmptyTestDatasetName, zipFileName, zipFilePath, TestConfig.ZipMimeType, zipFileName)

        # Read from the  updated Dataset
        (remoteMimeType, remoteZipFileContent) = SubmitDatasetUtils.getFileFromDataset(self.session, EmptyTestDatasetName+"-packed", zipFileName)
        
        #logger.debug("LocalZipFileContents: " + localZipFileContent)
        #logger.debug(" RemoteZipFileContents: " + remoteZipFileContent)
        
        # Check that the <localFileContent> = <remoteFileContents>
        self.assertEqual(TestConfig.ZipMimeType, remoteMimeType, "Difference between local and remote zip MIME types") 
        self.assertEqual(localZipFileContent, remoteZipFileContent, "Difference between local and remote zip file contents") 
        
        #unpack the contents
        newDatasetName = SubmitDatasetUtils.unzipRemoteFileToNewDataset(self.session, EmptyTestDatasetName, zipFileName)
        SubmitDatasetUtils.deleteDataset(self.session,EmptyTestDatasetName+"-packed")
        SubmitDatasetUtils.deleteDataset(self.session,newDatasetName)
        return
コード例 #23
0
        #Logger.debug("datasetName %s, dirName %s, zipFileName %s"%(datasetName,dirName,zipFileName))
        SubmitDatasetUtils.zipLocalDirectory(dirName, FilePat, zipFilePath)
        # Submit zip file to dataset
        SubmitDatasetUtils.submitFileToDataset(session, datasetName, zipFileName, zipFilePath, ZipMimeType, zipFileName)
        # Unzip the contents into a new dataset
        datasetUnzippedName = SubmitDatasetUtils.unzipRemoteFileToNewDataset(session, datasetName, zipFileName)       
        # Redirect to the Dataset Summary page
        redirectToSubmissionSummaryPage(dirName, datasetName+"-packed", datasetUnzippedName, convertToUriString(SuccessStatus))
        return
        
    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e) 

    except session.HTTPSessionError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePage(
            SubmitDatasetUtils.HTTP_ERROR,
            e.code, e.reason)
        SubmitDatasetUtils.printStackTrace()
        
    except:
        SubmitDatasetUtils.printHTMLHeaders()
        print "<h2>Server error while processing dataset submission</h2>"
        print "<p>Diagnostic stack trace follows</p>"
        SubmitDatasetUtils.printStackTrace()
        raise
    
    finally:
        print "</body>"
        print "</html>"
コード例 #24
0
    def testEmptyDirectorySubmission(self):

        # Create a new Test Dataset
        SubmitDatasetUtils.createDataset(self.session, EmptyTestDatasetName)

        zipFileName = EmptyTestDatasetName + ".zip"
        zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName
        # Zip the Empty directory
        SubmitDatasetUtils.zipLocalDirectory(TestConfig.DatasetsEmptyDirPath,
                                             TestConfig.TestPat, zipFilePath)
        zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName
        #logger.debug("ZipFileName: " + zipFileName)
        localZipFileContent = SubmitDatasetUtils.getLocalFileContents(
            zipFilePath)
        SubmitDatasetUtils.submitFileToDataset(self.session,
                                               EmptyTestDatasetName,
                                               zipFileName, zipFilePath,
                                               TestConfig.ZipMimeType,
                                               zipFileName)

        # Read from the  updated Dataset
        (remoteMimeType,
         remoteZipFileContent) = SubmitDatasetUtils.getFileFromDataset(
             self.session, EmptyTestDatasetName + "-packed", zipFileName)

        #logger.debug("LocalZipFileContents: " + localZipFileContent)
        #logger.debug(" RemoteZipFileContents: " + remoteZipFileContent)

        # Check that the <localFileContent> = <remoteFileContents>
        self.assertEqual(TestConfig.ZipMimeType, remoteMimeType,
                         "Difference between local and remote zip MIME types")
        self.assertEqual(
            localZipFileContent, remoteZipFileContent,
            "Difference between local and remote zip file contents")

        #unpack the contents
        newDatasetName = SubmitDatasetUtils.unzipRemoteFileToNewDataset(
            self.session, EmptyTestDatasetName, zipFileName)
        SubmitDatasetUtils.deleteDataset(self.session,
                                         EmptyTestDatasetName + "-packed")
        SubmitDatasetUtils.deleteDataset(self.session, newDatasetName)
        return
コード例 #25
0
def datasetDetailsErrorForm(formdata, outputstr):
    """ 
    Print (to stdout) a new HTML page reflecting the outcome of the request
    
    formdata    is a dictionary containing parameters from the dataset details form
    """
    save_stdout = sys.stdout
    dirName = SubmitDatasetUtils.getFormParam("dir", formdata)
    datasetName = SubmitDatasetUtils.getFormParam("id", formdata)
    status = SubmitDatasetUtils.getFormParam("status", formdata)

    # print repr(formdata)

    if outputstr:
        sys.stdout = outputstr

        # Generate response headers
        print "Content-type: text/html"
        print "Cache-control: no-cache"
        print

        # Generate web page
        dataToolURL = "../../SubmitDatasetUI/html/SubmitDatasetDetails.html"
        mainURL = "../../../.."
        resetURL = "../../SubmitDatasetUI/html/SubmitDatasetDetails.html?dir=" + dirName

        pageTemplate = ("""
            <html>
                <head>
                    <script type="text/javascript" src="../../jQuery/js/jquery-1.4.2.js"></script>
                    <!-- Import generic code from the dataset utils package -->
                    <script type="text/javascript" src="../../DatasetUtils/js/DatasetManifestDictionary.js"></script>
                    <!-- import rdfquery libraries -->
                    <script type="text/javascript" src="../../rdfquery/jquery.uri.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.xmlns.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.curie.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdfa.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.xml.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.turtle.js"></script>               
                    <!-- Import MochiKit modules: require MochiKit library functions to be fully qualified -->
                    <script type="text/javascript">MochiKit = {__export__: false};</script>
                    <script type="text/javascript" src="../../MochiKit/Base.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Iter.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Logging.js"></script>
                    <!-- Import Admiral functions -->
                    <script type="text/javascript" src="../../Admiral/admiral-base.js"></script>
                    <script type="text/javascript" src="../../Admiral/Error.js"></script>
                    <script type="text/javascript" src="../../Admiral/AsyncComputation.js"></script>
                    <!--  Import admiral configuration details -->
                    <!--  NOTE: these are loaded from an absolute location in the web server -->
                    <script type="text/javascript" src="/js/admiral-config.js"></script>
                </head>
                
                <body>
                    <div>
                        <span><a href="/"><img alt="site_logo" src="/images/Admiral-logo-284x100.png" border="0"/></a></span>
                    </div>
                    <h2>%(status)s%(dirName)s</h2>
                    
                    <h3><a href="%(dataToolURL)s">Return to Dataset details page</a></h3>
                    <h3><a href="%(mainURL)s">Return to ADMIRAL front page</a></h3>
                </body>
            </html>
            """)
        print(
            pageTemplate % {
                'datasetName': datasetName,
                'dirName': dirName,
                'dataToolURL': dataToolURL,
                'mainURL': mainURL,
                'status': status
            })

    return
コード例 #26
0
            if  IsDirectoryWritable(dirName) :   
                # Update the manifest only if the user has write access to the dataset directory.
                updateMetadataInDirectoryBeforeSubmission(manifestFilePath, ElementUriList, ElementValueList)       
               
                # Redirect to the Submission Confirmation page
                redirectToSubmissionConfirmationPage(dirName);
            else :
                redirectToErrorPage(dirName, convertToUriString(ErrorStatus_3))                    
        return
        
    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e) 

    except HttpSession.Session.HTTPSessionError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePage(
            SubmitDatasetUtils.HTTP_ERROR,
            e.code, e.reason)
        SubmitDatasetUtils.printStackTrace()
        
    except:
        SubmitDatasetUtils.printHTMLHeaders()
        print "<h2>Server error while saving Metadata</h2>"
        print "<p>Diagnostic stack trace follows</p>"
        SubmitDatasetUtils.printStackTrace()
        raise
    
    finally:
        sys.stdout = save_stdout
    return
コード例 #27
0
def setDatasetsBaseDir(base):
    global DatasetsBaseDir
    DatasetsBaseDir  =  base
    
    #global HostName         = "zoo-admiral-behav.zoo.ox.ac.uk"
    #global HostName         = "zoo-admiral-silk.zoo.ox.ac.uk"
    #global HostName         = "zoo-admiral-devel.zoo.ox.ac.uk"
    #global HostName         = "zoo-admiral-ibrg.zoo.ox.ac.uk"
    #global hostname         = "zakynthos.zoo.ox.ac.uk"
    global HostName, SiloName, Username, Password, FileName
    global FilePath, FileMimeType, ZipMimeType
    global DirName, DirPath 
    global DatasetsEmptyDirName, DatasetsEmptyDirPath
    global UpdatedTitle, UpdatedDescription, TestPat
    
    #HostName                 =  "localhost"
    HostName                 =  "zoo-admiral-ibrg.zoo.ox.ac.uk"
    SiloName                 =  "admiral"
    Username                 =  "******"
    Password                 =  "******"
    FileName                 =  "file1.txt"
    FilePath                 =  DatasetsBaseDir + os.path.sep + FileName
    FileMimeType             =  "text/plain"
    ZipMimeType              =  "application/zip"
    DirName                  =  "DatasetsTopDir"
    DirPath                  =  DatasetsBaseDir + os.path.sep + DirName
    DatasetsEmptyDirName     =  "DatasetsEmptySubDir"
    DatasetsEmptyDirPath     =  DatasetsBaseDir + os.path.sep + DirName + os.path.sep + DatasetsEmptyDirName
    UpdatedTitle             =  "Updated Title"
    UpdatedDescription       =  "Updated Description"
    TestPat                  =  re.compile("^.*$(?<!\.zip)")
    

    global ManifestName, ManifestFilePath
    ManifestName             = "manifest.rdf"
    ManifestFilePath         =  DatasetsBaseDir + os.path.sep + DirName + os.path.sep + ManifestName
    
    global formdata, updatedformdata

    formdata                 =  \
                                {  'datDir'      :  cgi.MiniFieldStorage('datDir'      ,   DirPath)
                                 , 'datId'       :  cgi.MiniFieldStorage('datId'       ,  "SubmissionToolTest")
                                 , 'title'       :  cgi.MiniFieldStorage('title'       ,  "Submission tool test title")
                                 , 'description' :  cgi.MiniFieldStorage('description' ,  "Submission tool test description")
                                 , 'user'        :  cgi.MiniFieldStorage('user'        ,  Username)
                                 , 'pass'        :  cgi.MiniFieldStorage('pass'        ,  Password)
                                 , 'endpointhost':  cgi.MiniFieldStorage('endpointhost',  HostName)
                                 , 'basepath'    :  cgi.MiniFieldStorage('basepath'    ,  "/"+SiloName+"/")                             
                                 , 'submit'      :  cgi.MiniFieldStorage('submit'      ,  "Submit")
                                 , 'directory'   :  cgi.MiniFieldStorage('directory'   ,   DirPath)
                                }
    updatedformdata          =   \
                                {  'datDir'      :  cgi.MiniFieldStorage('datDir'      ,   DirPath)
                                 , 'datId'       :  cgi.MiniFieldStorage('datId'       ,  "SubmissionToolTest")
                                 , 'title'       :  cgi.MiniFieldStorage('title'       ,  "Submission tool updated test title")
                                 , 'description' :  cgi.MiniFieldStorage('description' ,  "Submission tool updated test description")
                                 , 'user'        :  cgi.MiniFieldStorage('user'        ,  Username)
                                 , 'pass'        :  cgi.MiniFieldStorage('pass'        ,  Password)
                                 , 'endpointhost':  cgi.MiniFieldStorage('endpointhost',  HostName)
                                 , 'basepath'    :  cgi.MiniFieldStorage('basepath'    ,  "/"+SiloName+"/")       
                                 , 'submit'      :  cgi.MiniFieldStorage('submit'      ,  "Submit")      
                                }
    
    global DatasetId, DatasetDir, Title, Description, User, ElementValueList, ElementValueUpdatedList
    DatasetId                =  SubmitDatasetUtils.getFormParam('datId', formdata)
    DatasetDir               =  SubmitDatasetUtils.getFormParam('datDir', formdata)
    Title                    =  SubmitDatasetUtils.getFormParam('title', formdata)
    Description              =  SubmitDatasetUtils.getFormParam('description', formdata)
    User                     =  SubmitDatasetUtils.getFormParam('user', formdata)
    ElementValueList         =  [User, DatasetId, Title, Description]
    ElementValueUpdatedList  =  [User, DatasetId, UpdatedTitle, UpdatedDescription]
    
    global dcterms, oxds
    dcterms                  =  URIRef("http://purl.org/dc/terms/")
    oxds                     =  URIRef("http://vocab.ox.ac.uk/dataset/schema#") 
    
    global NamespaceDictionary
    NamespaceDictionary      =  {
                                   "dcterms"   : dcterms ,
                                   "oxds"      : oxds                    
                                 }
    global ElementCreatorUri,ElementIdentifierUri,ElementTitleUri,ElementDescriptionUri,ElementUriList 
    ElementCreatorUri        =  URIRef(dcterms + "creator")
    ElementIdentifierUri     =  URIRef(dcterms + "identifier")
    ElementTitleUri          =  URIRef(dcterms + "title")
    ElementDescriptionUri    =  URIRef(dcterms + "description")
    ElementUriList           =  [ElementCreatorUri, ElementIdentifierUri, ElementTitleUri, ElementDescriptionUri]
    return
コード例 #28
0
def processDatasetSubmissionForm(formdata, outputstr):
    """
    Process form data, and print (to stdout) a new HTML page reflecting
    the outcome of the request.
    
    formdata    is a dictionary containing parameters from the dataset submission form
    """
    userName             =  SubmitDatasetUtils.getFormParam("user"        ,  formdata)
    userPass             =  SubmitDatasetUtils.getFormParam("pass"        ,  formdata)
    endpointhost         =  SubmitDatasetUtils.getFormParam("endpointhost",  formdata)
    basepath             =  SubmitDatasetUtils.getFormParam("basepath"    ,  formdata) 
    datasetName          =  SubmitDatasetUtils.getFormParam("datId"       ,  formdata)  
    title                =  SubmitDatasetUtils.getFormParam("title"       ,  formdata)  
    description          =  SubmitDatasetUtils.getFormParam("description" ,  formdata)  
    dirName              =  SubmitDatasetUtils.getFormParam("datDir"      ,  formdata)
    ElementValueList     =  [userName, datasetName, title, description]

    # Host and silo name in the form data are used for testing.
    # In a live system, these are not provided in the form: the following values are used.
    if endpointhost==None or endpointhost=="":
        endpointhost = "localhost"
    if basepath==None or basepath=="":
        basepath = siloProxyPath

    ###print("\n---- processDatasetSubmissionForm:formdata ---- \n"+repr(formdata))
  
    # Zip the selected Directory
    zipFileName = os.path.basename(dirName) +".zip"
    zipFilePath = "/tmp/" + zipFileName
    Logger.debug("zipFilePath = "+zipFilePath)

    if outputstr:
        sys.stdout = outputstr
    try:    
        # Validate the dataset name and dataset directory fields
        validateFields(dirName, datasetName)
        
        # Set user credentials       
        #session.setRequestUserPass(userName,userPass)  
         
        #Create Session
        session  = HttpSession.makeHttpSession(endpointhost, basepath, userName, userPass)   
                   
        SubmitDatasetUtils.createDataset(session, datasetName)                             
        # Update the local manifest
        manifestFilePath     = dirName + str(os.path.sep) + DefaultManifestName
        Logger.debug("Element List = " + repr(ElementUriList))
        Logger.debug("Element Value List = " + repr(ElementValueList))
        SubmitDatasetDetailsHandler.updateMetadataInDirectoryBeforeSubmission(manifestFilePath, ElementUriList, ElementValueList)       

        #Logger.debug("datasetName %s, dirName %s, zipFileName %s"%(datasetName,dirName,zipFileName))
        SubmitDatasetUtils.zipLocalDirectory(dirName, FilePat, zipFilePath)
        # Submit zip file to dataset
        SubmitDatasetUtils.submitFileToDataset(session, datasetName, zipFileName, zipFilePath, ZipMimeType, zipFileName)
        # Unzip the contents into a new dataset
        datasetUnzippedName = SubmitDatasetUtils.unzipRemoteFileToNewDataset(session, datasetName, zipFileName)       
        # Redirect to the Dataset Summary page
        redirectToSubmissionSummaryPage(dirName, datasetName+"-packed", datasetUnzippedName, convertToUriString(SuccessStatus))
        return
        
    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e) 
コード例 #29
0
                # Update the manifest only if the user has write access to the dataset directory.
                updateMetadataInDirectoryBeforeSubmission(
                    manifestFilePath, ElementUriList, ElementValueList)

                # Redirect to the Submission Confirmation page
                redirectToSubmissionConfirmationPage(dirName)
            else:
                redirectToErrorPage(dirName, convertToUriString(ErrorStatus_3))
        return

    except SubmitDatasetUtils.SubmitDatasetError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePageFromException(e)

    except HttpSession.Session.HTTPSessionError, e:
        SubmitDatasetUtils.printHTMLHeaders()
        SubmitDatasetUtils.generateErrorResponsePage(
            SubmitDatasetUtils.HTTP_ERROR, e.code, e.reason)
        SubmitDatasetUtils.printStackTrace()

    except:
        SubmitDatasetUtils.printHTMLHeaders()
        print "<h2>Server error while saving Metadata</h2>"
        print "<p>Diagnostic stack trace follows</p>"
        SubmitDatasetUtils.printStackTrace()
        raise

    finally:
        sys.stdout = save_stdout
    return
コード例 #30
0
def datasetSummaryForm(formdata, outputstr):
    """
    Print (to stdout) a new HTML page reflecting the outcome of the request.
    
    formdata    is a dictionary containing parameters from the dataset submission form / handler
    """
    save_stdout          =  sys.stdout
    dirName              =  SubmitDatasetUtils.getFormParam("dir"     , formdata)
    datasetName          =  SubmitDatasetUtils.getFormParam("id"      , formdata)
    datasetUnzippedName  =  SubmitDatasetUtils.getFormParam("unzipid" , formdata)
    status               =  SubmitDatasetUtils.getFormParam("status"  , formdata)  
   
    # print repr(formdata)

    if outputstr:
        sys.stdout = outputstr

        # Generate response headers
        print "Content-type: text/html"
        print "Cache-control: no-cache"
        print

        # Generate web page
        dataToolURL      =  "../../SubmitDatasetUI/html/SubmitDatasetDetails.html"                                 
        mainURL          =  "../../../.."
        resetURL         =  "../../SubmitDatasetUI/html/SubmitDatasetDetails.html?dir=" + dirName
        loadDatasetURL   =  "'../../DisplayDataset/html/DisplayDataset.html?dir=" + dirName + "#"+ datasetUnzippedName +" #outherMain"+"'"
        viewDatasetURL   =  "'../../DisplayDataset/html/DisplayDataset.html?dir=" + dirName + "#"+ datasetUnzippedName +"'"
        unpackedLink     =  "/databanksilo/datasets/" + datasetUnzippedName
        
        pageTemplate = ("""
            <html>
                <head>
                    <!-- Import Stylesheets -->
                    <link rel="stylesheet" href="../../DisplayDataset/css/DisplayDataset.css" type="text/css" />
                    <link rel="stylesheet" href="../../jQuery/jquery-treeview/jquery.treeview.css" type="text/css" />    
                    <link rel="stylesheet" href="../../SelectDataset/css/SelectDataset.css" type="text/css" />      
                    
                    <!-- Import jQuery framework -->
                    <script type="text/javascript" src="../../jQuery/js/jquery-1.4.2.js"></script>
                    
                    <!-- Import jQuery additional libraries -->
                    <script type="text/javascript" src="../../jQuery/jquery.json-2.2.js"></script> 
                    
                    <!-- Import treeview plugin -->                
                    <script type="text/javascript" src="../../jQuery/jquery-treeview/jquery.treeview.js"></script>
                    
                    <!-- import rdfquery libraries -->
                    <script type="text/javascript" src="../../rdfquery/jquery.uri.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.xmlns.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.curie.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdfa.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.xml.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.turtle.js"></script>        
                           
                    <!-- Import MochiKit modules: require MochiKit library functions to be fully qualified -->
                    <script type="text/javascript">MochiKit = {__export__: false};</script>
                    <script type="text/javascript" src="../../MochiKit/Base.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Iter.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Logging.js"></script>
                    
                    <!-- Import Admiral functions -->
                    <script type="text/javascript" src="../../Admiral/admiral-base.js"></script>
                    <script type="text/javascript" src="../../Admiral/Error.js"></script>
                    <script type="text/javascript" src="../../Admiral/AsyncComputation.js"></script>
                    
                    <!-- Import generic code from the dataset utils package -->
                    <script type="text/javascript" src="../../DatasetUtils/js/DatasetTree.js"></script>
                    <script type="text/javascript" src="../../DatasetUtils/js/DatasetManifestDictionary.js"></script>

                    <!-- Import dataset information display code -->
                    <script type="text/javascript" src="../../DisplayDataset/DisplayDatasetTree.js"></script>
                    <script type="text/javascript" src="../../DisplayDataset/DisplayDataset.js"></script>
                    
                    <!--  Import admiral configuration details -->
                    <!--  NOTE: these are loaded from an absolute location in the web server -->
                    <script type="text/javascript" src="/js/admiral-config.js"></script>
                    
                    <script>
                        jQuery(document).ready( function ()
                        {   var m = new admiral.AsyncComputation();
                            /* m.eval(function(val,callback)
                            { var datasetName = "%(datasetUnzippedName)s";
                              var datasetPath = "/"+admiral.databanksilo+"/datasets/"+datasetName;
                              admiral.datasetManifestDictionary(datasetPath,datasetName, callback);   
                            }); 
                            m.eval(function(datasetdetails,callback)                          
                            {                                                 
                               jQuery("#currentVersion").text(datasetdetails.currentVersion);
                               jQuery("#lastModified").text(datasetdetails.lastModified);   
                               callback(datasetdetails);                         
                            });  */
                            m.eval(function(val,callback)                          
                            {  
                               jQuery('#displayDatasetPage').load(%(loadDatasetURL)s , function(){}); 
                               callback(val);
                            });
                            m.eval(function(val,callback)                          
                            {  url=%(viewDatasetURL)s;
                               admiral.loadDisplay(url);
                               callback(val);
                            });
                            m.exec(null,admiral.noop);
                                          
                        });                      
                    </script>
                </head>
                
                <body>
                    <h2>%(status)s   
                           <span><a href="%(unpackedLink)s"><img name="databank_logo" id="databank_logo" alt="databank_logo" src="http://databank.ora.ox.ac.uk/static/databank_logo_generic.png" /></a></span>
                    </h2>
                    <div id="displayDatasetPage"> </div> 
                    <!-- 
                        <table name="submissionStatus" id = "submissionStatus" >
                          <tr><td>Dataset Identifier</td><td> %(datasetUnzippedName)s</td></tr>
                          <tr><td>Version number</td><td><span id="currentVersion">nn</span></td></tr>
                          <tr><td>Date</td><td><span id="lastModified">yyyy-mm-dd</span></td></tr>
                        </table>
                        <h4><a href="%(viewDatasetURL)s">View details of submitted ADMIRAL data package - %(datasetUnzippedName)s</a></h4> 
                    -->
                    <h4><a href="%(unpackedLink)s">View the data package</a></h4>
                    <h4><a href="%(resetURL)s" id="revised">Submit a revised version of this data package</a></h4>
                    <h4><a href="%(dataToolURL)s">Submit another ADMIRAL data package to databank</a></h4>
                    <h4><a href="%(mainURL)s">Return to your research group's ADMIRAL front page</a></h4>
                </body>
            </html>
            """)
        print (pageTemplate%
            { 'viewDatasetURL'      : viewDatasetURL
            , 'loadDatasetURL'      : loadDatasetURL 
            , 'unpackedLink'        : unpackedLink  
            , 'datasetName'         : datasetName
            , 'dataToolURL'         : dataToolURL
            , 'mainURL'             : mainURL
            , 'datasetUnzippedName' : datasetUnzippedName
            , 'status'              : status
            , 'resetURL'            : resetURL               
            })

    return
コード例 #31
0
def datasetSummaryForm(formdata, outputstr):
    """
    Print (to stdout) a new HTML page reflecting the outcome of the request.
    
    formdata    is a dictionary containing parameters from the dataset submission form / handler
    """
    save_stdout = sys.stdout
    dirName = SubmitDatasetUtils.getFormParam("dir", formdata)
    datasetName = SubmitDatasetUtils.getFormParam("id", formdata)
    datasetUnzippedName = SubmitDatasetUtils.getFormParam("unzipid", formdata)
    status = SubmitDatasetUtils.getFormParam("status", formdata)

    # print repr(formdata)

    if outputstr:
        sys.stdout = outputstr

        # Generate response headers
        print "Content-type: text/html"
        print "Cache-control: no-cache"
        print

        # Generate web page
        dataToolURL = "../../SubmitDatasetUI/html/SubmitDatasetDetails.html"
        mainURL = "../../../.."
        resetURL = "../../SubmitDatasetUI/html/SubmitDatasetDetails.html?dir=" + dirName
        loadDatasetURL = "'../../DisplayDataset/html/DisplayDataset.html?dir=" + dirName + "#" + datasetUnzippedName + " #outherMain" + "'"
        viewDatasetURL = "'../../DisplayDataset/html/DisplayDataset.html?dir=" + dirName + "#" + datasetUnzippedName + "'"
        unpackedLink = "/databanksilo/datasets/" + datasetUnzippedName

        pageTemplate = ("""
            <html>
                <head>
                    <!-- Import Stylesheets -->
                    <link rel="stylesheet" href="../../DisplayDataset/css/DisplayDataset.css" type="text/css" />
                    <link rel="stylesheet" href="../../jQuery/jquery-treeview/jquery.treeview.css" type="text/css" />    
                    <link rel="stylesheet" href="../../SelectDataset/css/SelectDataset.css" type="text/css" />      
                    
                    <!-- Import jQuery framework -->
                    <script type="text/javascript" src="../../jQuery/js/jquery-1.4.2.js"></script>
                    
                    <!-- Import jQuery additional libraries -->
                    <script type="text/javascript" src="../../jQuery/jquery.json-2.2.js"></script> 
                    
                    <!-- Import treeview plugin -->                
                    <script type="text/javascript" src="../../jQuery/jquery-treeview/jquery.treeview.js"></script>
                    
                    <!-- import rdfquery libraries -->
                    <script type="text/javascript" src="../../rdfquery/jquery.uri.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.xmlns.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.curie.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdfa.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.xml.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.turtle.js"></script>        
                           
                    <!-- Import MochiKit modules: require MochiKit library functions to be fully qualified -->
                    <script type="text/javascript">MochiKit = {__export__: false};</script>
                    <script type="text/javascript" src="../../MochiKit/Base.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Iter.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Logging.js"></script>
                    
                    <!-- Import Admiral functions -->
                    <script type="text/javascript" src="../../Admiral/admiral-base.js"></script>
                    <script type="text/javascript" src="../../Admiral/Error.js"></script>
                    <script type="text/javascript" src="../../Admiral/AsyncComputation.js"></script>
                    
                    <!-- Import generic code from the dataset utils package -->
                    <script type="text/javascript" src="../../DatasetUtils/js/DatasetTree.js"></script>
                    <script type="text/javascript" src="../../DatasetUtils/js/DatasetManifestDictionary.js"></script>

                    <!-- Import dataset information display code -->
                    <script type="text/javascript" src="../../DisplayDataset/DisplayDatasetTree.js"></script>
                    <script type="text/javascript" src="../../DisplayDataset/DisplayDataset.js"></script>
                    
                    <!--  Import admiral configuration details -->
                    <!--  NOTE: these are loaded from an absolute location in the web server -->
                    <script type="text/javascript" src="/js/admiral-config.js"></script>
                    
                    <script>
                        jQuery(document).ready( function ()
                        {   var m = new admiral.AsyncComputation();
                            /* m.eval(function(val,callback)
                            { var datasetName = "%(datasetUnzippedName)s";
                              var datasetPath = "/"+admiral.databanksilo+"/datasets/"+datasetName;
                              admiral.datasetManifestDictionary(datasetPath,datasetName, callback);   
                            }); 
                            m.eval(function(datasetdetails,callback)                          
                            {                                                 
                               jQuery("#currentVersion").text(datasetdetails.currentVersion);
                               jQuery("#lastModified").text(datasetdetails.lastModified);   
                               callback(datasetdetails);                         
                            });  */
                            m.eval(function(val,callback)                          
                            {  
                               jQuery('#displayDatasetPage').load(%(loadDatasetURL)s , function(){}); 
                               callback(val);
                            });
                            m.eval(function(val,callback)                          
                            {  url=%(viewDatasetURL)s;
                               admiral.loadDisplay(url);
                               callback(val);
                            });
                            m.exec(null,admiral.noop);
                                          
                        });                      
                    </script>
                </head>
                
                <body>
                    <h2>%(status)s   
                           <span><a href="%(unpackedLink)s"><img name="databank_logo" id="databank_logo" alt="databank_logo" src="http://databank.ora.ox.ac.uk/static/databank_logo_generic.png" /></a></span>
                    </h2>
                    <div id="displayDatasetPage"> </div> 
                    <!-- 
                        <table name="submissionStatus" id = "submissionStatus" >
                          <tr><td>Dataset Identifier</td><td> %(datasetUnzippedName)s</td></tr>
                          <tr><td>Version number</td><td><span id="currentVersion">nn</span></td></tr>
                          <tr><td>Date</td><td><span id="lastModified">yyyy-mm-dd</span></td></tr>
                        </table>
                        <h4><a href="%(viewDatasetURL)s">View details of submitted ADMIRAL data package - %(datasetUnzippedName)s</a></h4> 
                    -->
                    <h4><a href="%(unpackedLink)s">View the data package</a></h4>
                    <h4><a href="%(resetURL)s" id="revised">Submit a revised version of this data package</a></h4>
                    <h4><a href="%(dataToolURL)s">Submit another ADMIRAL data package to databank</a></h4>
                    <h4><a href="%(mainURL)s">Return to your research group's ADMIRAL front page</a></h4>
                </body>
            </html>
            """)
        print(
            pageTemplate % {
                'viewDatasetURL': viewDatasetURL,
                'loadDatasetURL': loadDatasetURL,
                'unpackedLink': unpackedLink,
                'datasetName': datasetName,
                'dataToolURL': dataToolURL,
                'mainURL': mainURL,
                'datasetUnzippedName': datasetUnzippedName,
                'status': status,
                'resetURL': resetURL
            })

    return
コード例 #32
0
def datasetDetailsErrorForm(formdata, outputstr):
    """ 
    Print (to stdout) a new HTML page reflecting the outcome of the request
    
    formdata    is a dictionary containing parameters from the dataset details form
    """
    save_stdout          =  sys.stdout
    dirName              =  SubmitDatasetUtils.getFormParam("dir"     , formdata)
    datasetName          =  SubmitDatasetUtils.getFormParam("id"      , formdata)
    status               =  SubmitDatasetUtils.getFormParam("status"  , formdata)  
   
    # print repr(formdata)

    if outputstr:
        sys.stdout = outputstr

        # Generate response headers
        print "Content-type: text/html"
        print "Cache-control: no-cache"
        print

        # Generate web page
        dataToolURL      =  "../../SubmitDatasetUI/html/SubmitDatasetDetails.html"                                 
        mainURL          =  "../../../.."
        resetURL         =  "../../SubmitDatasetUI/html/SubmitDatasetDetails.html?dir="+dirName
        
        pageTemplate = ("""
            <html>
                <head>
                    <script type="text/javascript" src="../../jQuery/js/jquery-1.4.2.js"></script>
                    <!-- Import generic code from the dataset utils package -->
                    <script type="text/javascript" src="../../DatasetUtils/js/DatasetManifestDictionary.js"></script>
                    <!-- import rdfquery libraries -->
                    <script type="text/javascript" src="../../rdfquery/jquery.uri.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.xmlns.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.curie.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdfa.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.datatype.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.xml.js"></script>
                    <script type="text/javascript" src="../../rdfquery/jquery.rdf.turtle.js"></script>               
                    <!-- Import MochiKit modules: require MochiKit library functions to be fully qualified -->
                    <script type="text/javascript">MochiKit = {__export__: false};</script>
                    <script type="text/javascript" src="../../MochiKit/Base.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Iter.js"></script>
                    <script type="text/javascript" src="../../MochiKit/Logging.js"></script>
                    <!-- Import Admiral functions -->
                    <script type="text/javascript" src="../../Admiral/admiral-base.js"></script>
                    <script type="text/javascript" src="../../Admiral/Error.js"></script>
                    <script type="text/javascript" src="../../Admiral/AsyncComputation.js"></script>
                    <!--  Import admiral configuration details -->
                    <!--  NOTE: these are loaded from an absolute location in the web server -->
                    <script type="text/javascript" src="/js/admiral-config.js"></script>
                </head>
                
                <body>
                    <div>
                        <span><a href="/"><img alt="site_logo" src="/images/Admiral-logo-284x100.png" border="0"/></a></span>
                    </div>
                    <h2>%(status)s%(dirName)s</h2>
                    
                    <h3><a href="%(dataToolURL)s">Return to Dataset details page</a></h3>
                    <h3><a href="%(mainURL)s">Return to ADMIRAL front page</a></h3>
                </body>
            </html>
            """)
        print (pageTemplate%
            {
              'datasetName'         : datasetName
            , 'dirName'             : dirName
            , 'dataToolURL'         : dataToolURL
            , 'mainURL'             : mainURL
            , 'status'              : status          
            })

    return