Beispiel #1
0
def getSavedGitBranch():
    RELOAD_LOCK.lock()
    try:
        gitBranchFile = File(getGitBranchFile())
        if gitBranchFile.isFile():
            branch = FileUtils.readFileToString(gitBranchFile).strip()
            return branch if len(branch) > 0 else None
        else:
            return None
    finally:
        RELOAD_LOCK.unlock()
Beispiel #2
0
def getSavedGitUrl():
    RELOAD_LOCK.lock()
    try:
        gitUrlFile = File(getGitUrlFile())
        if gitUrlFile.isFile():
            url = FileUtils.readFileToString(gitUrlFile).strip()
            return url if len(url) > 0 else None
        else:
            return None
    finally:
        RELOAD_LOCK.unlock()
    def getToken(self, tokenId):
        self.resetErrors()
        index = "resumptionTokens-GET"
        sql = """
SELECT *
FROM   resumptionTokens
WHERE  token = ?
"""
        fields = [tokenId]
        try:
            result = self.db.select(self.dbName, index, sql, fields)
            # Make sure we got a response
            if result is None or result.isEmpty():
                return None
            # Create the new token to return
            metadataPrefix = result.get(0).get("METADATAPREFIX")
            expiryStr = result.get(0).get("EXPIRY")
            # Jython does not support %f microseconds in time parsing, makes
            # this more awkward then it should be in 2.6+ Python
            # 1: split into basic time + micro seconds
            (basicTime, mSecs) = expiryStr.strip().split(".")
            # 2: Parse the basic time
            expiryDt = datetime.strptime(basicTime, "%Y-%m-%d %H:%M:%S")
            # 3: Convert into a 'epoch' long and then to a string (has an extra ".0" on the end)
            epoch = "%s" % time.mktime(expiryDt.timetuple())
            # 4: Remove the extraneous trailing zero and re-attach microseconds
            expiry = "%s%s" % (epoch.replace(".0", ""), mSecs)

            nextToken = result.get(0).get("NEXTTOKEN")
            file = File(
                FascinatorHome.getPath("oaipmh-results") + "/" + tokenId)
            resultJson = FileUtils.readFileToString(file)
            FileUtils.deleteQuietly(file)
            token = ResumptionToken(tokenId, metadataPrefix, nextToken,
                                    resultJson)
            token.setExpiry(expiry)

            return token
        except Exception, e:
            # Something is wrong
            self.log.error("ERROR: ", e)
            self.error = True
            self.errorMsg = self.parseError(e)
            return None
    def getToken(self, tokenId):
        self.resetErrors()
        index = "resumptionTokens-GET"
        sql = """
SELECT *
FROM   resumptionTokens
WHERE  token = ?
"""
        fields = [tokenId]
        try:
            result = self.db.select(self.dbName, index, sql, fields)
            # Make sure we got a response
            if result is None or result.isEmpty():
                return None
            # Create the new token to return
            metadataPrefix = result.get(0).get("METADATAPREFIX")
            expiryStr = result.get(0).get("EXPIRY")
            # Jython does not support %f microseconds in time parsing, makes
            # this more awkward then it should be in 2.6+ Python
            # 1: split into basic time + micro seconds
            (basicTime, mSecs) = expiryStr.strip().split(".")
            # 2: Parse the basic time
            expiryDt = datetime.strptime(basicTime, "%Y-%m-%d %H:%M:%S")
            # 3: Convert into a 'epoch' long and then to a string (has an extra ".0" on the end)
            epoch = "%s" % time.mktime(expiryDt.timetuple())
            # 4: Remove the extraneous trailing zero and re-attach microseconds
            expiry = "%s%s" % (epoch.replace(".0", ""), mSecs)

            nextToken = result.get(0).get("NEXTTOKEN")
            file = File(FascinatorHome.getPath("oaipmh-results")+ "/"+tokenId)
            resultJson = FileUtils.readFileToString(file)
            FileUtils.deleteQuietly(file)
            token = ResumptionToken(tokenId, metadataPrefix,nextToken,resultJson)
            token.setExpiry(expiry)
            
            return token
        except Exception, e:
            # Something is wrong
            self.log.error("ERROR: ", e)
            self.error = True
            self.errorMsg = self.parseError(e)
            return None
Beispiel #5
0
    def execute(self):
        if self.loginUser == None:
            request.setAttribute("error", u"请重新登录。")
            return "/WEB-INF/ftl/show_resource_swf.ftl"

        param = ParamUtil(request)
        resourceId = self.params.safeGetIntParam("resource")
        resourceService = __jitar__.getResourceService()

        if resourceId == 0:
            request.setAttribute("error", u"缺少文件信息。")
            return "/WEB-INF/ftl/show_resource_swf.ftl"

        resource = resourceService.getResource(resourceId)
        if resource == None:
            request.setAttribute("error", u"无法加载资源。")
            return "/WEB-INF/ftl/show_resource_swf.ftl"
        #=======================================================================
        # enc = EncryptDecrypt("zhongjiaoqixing")
        # try:
        #    resfile = enc.decrypt(resfile)
        # except:
        #    request.setAttribute("error", u"解压缩过程中出现错误。")
        #    return "/WEB-INF/ftl/show_resource.ftl"
        # finally:
        #    encc = None
        #=======================================================================
        try:
            resfile = resource.href
            filename = resfile.lower()
            fileUserConfigPath = request.getSession().getServletContext(
            ).getInitParameter("userPath")
            if fileUserConfigPath == None or fileUserConfigPath == "":
                resfileapth = request.getSession().getServletContext(
                ).getRealPath("/" + resfile)
            else:
                if fileUserConfigPath.endswith("\\") == False:
                    fileUserConfigPath = fileUserConfigPath + "\\"
                resfileapth = fileUserConfigPath + resfile.replace("/", "\\")

            ff = File(resfileapth)
            if ff.isFile() == False or ff.exists() == False:
                request.setAttribute("error", u"资源文件不存在,无法进行预览。")
                return "/WEB-INF/ftl/show_resource_swf.ftl"

            #这些文件直接显示
            if filename.endswith(".jpg") or filename.endswith(
                    ".gif") or filename.endswith(".png"):
                response.sendRedirect(CommonUtil.getSiteUrl(request) + resfile)
                return
            if filename.endswith(".txt"):
                content = FileUtils.readFileToString(
                    ff, CommonUtil.getFileEncoding(resfileapth))
                request.setAttribute("content", content)
                return "/WEB-INF/ftl/show_resource_txt.ftl"

            #PDF2SWFPath = request.getSession().getServletContext().getInitParameter("pdf2swfPath")
            #if PDF2SWFPath == None or PDF2SWFPath == "":
            #request.setAttribute("error", u"没有配置文件转换服务。")
            #return "/WEB-INF/ftl/show_resource_swf.ftl"

            if filename.endswith(".doc") or filename.endswith(
                    ".docx"
            ):  # or filename.endswith(".ppt") or filename.endswith(".pptx") or filename.endswith(".xls") or filename.endswith(".xlsx"):
                swf = resfileapth[0:resfileapth.find(".")] + ".swf"
                file = File(swf)
                if file.isFile() == False or file.exists() == False:
                    #converter = DocConverter(JacobPDFConverter(), SWFToolsSWFConverter(PDF2SWFPath))
                    #converter.convert(resfileapth)
                    #converter = None

                    #转换服务
                    server_ip = request.getSession().getServletContext(
                    ).getInitParameter("server_ip")
                    server_port = request.getSession().getServletContext(
                    ).getInitParameter("server_port")
                    timeout = request.getSession().getServletContext(
                    ).getInitParameter("timeout")
                    fcs = FCSConverter()
                    fcs.fcs(
                        server_ip, server_port, timeout, resource.title,
                        resfileapth[0:resfileapth.find(".")] + "." +
                        filename.split(".")[-1], file.toString(), "0")

                    request.setAttribute("resourceId", resourceId)
                    request.setAttribute(
                        "showWaiting",
                        self.params.safeGetStringParam("showWaiting"))
                swf = CommonUtil.getSiteUrl(
                    request) + resfile[0:resfile.find(".")] + ".swf"
                request.setAttribute("swf", swf)
                return "/WEB-INF/ftl/show_resource_swf.ftl"
            #if filename.endswith(".pdf"):
            #swf = resfileapth[0:resfileapth.find(".")] + ".swf"
            #file = File(swf)
            #if file.isFile() == False or file.exists() == False:
            #converter = SWFToolsSWFConverter(PDF2SWFPath)
            #converter.convert2SWF(resfileapth)
            #converter = None
            #request.setAttribute("resourceId", resourceId)
            #request.setAttribute("showWaiting", self.params.safeGetStringParam("showWaiting"))
            #swf = CommonUtil.getSiteUrl(request) + resfile[0:resfile.find(".")] + ".swf"
            #request.setAttribute("swf", swf)
            #return "/WEB-INF/ftl/show_resource_swf.ftl"

            if filename.endswith(".swf"):
                file = File(resfileapth)
                if file.isFile() == False or file.exists() == False:
                    request.setAttribute("error", u"swf 文件不存在,无法进行预览。")
                    return "/WEB-INF/ftl/show_resource_swf.ftl"
                swf = CommonUtil.getSiteUrl(request) + resfile
                request.setAttribute("orginIsSwf", "")
                request.setAttribute("swf", swf)
                return "/WEB-INF/ftl/show_resource_swf.ftl"

            request.setAttribute("error", u"此文件不支持预览。")
            return "/WEB-INF/ftl/show_resource_swf.ftl"
        except BaseException, varExption:
            if varExption != None:
                request.setAttribute(
                    "error", u"预览此文件时出错,并且已经被捕获。<br/><br/>" + str(varExption))
            else:
                request.setAttribute("error", u"预览此文件时出错,并且并且没有捕获到错误信息。")
            return "/WEB-INF/ftl/show_resource_swf.ftl"
Beispiel #6
0
    def __activate__(self, context):
        self.auth = context["page"].authentication
        self.errorMsg = ""
        self.request = context["request"]
        self.response = context["response"]
        self.formData = context["formData"]
        self.log = context["log"]
        self.reportManager = context["Services"].getService("reportManager")
        self.reportName = None

        if (self.auth.is_logged_in()):
            if (self.auth.is_admin() == True):
                pass
            else:
                self.errorMsg = "Requires Admin / Librarian / Reviewer access."
        else:
            self.errorMsg = "Please login."
        if self.errorMsg == "":
            self.reportName = self.formData.get("reportName")

            if (self.reportName):
                self.report = self.reportManager.getReport(self.reportName)

            self.func = self.formData.get("func", "")
            if self.func == "" and self.request.getParameter("func"):
                self.func = self.request.getParameter("func")

            if self.func == "action":
                self.action = self.request.getParameter("action")
                if self.action == "create":
                    self.createReport()
                    out = self.response.getPrintWriter(
                        "text/plain; charset=UTF-8")
                    out.println("{\"id\":\"" + self.report.getReportName() +
                                "\"}")
                    out.close()
                    return
                if self.action == "edit":
                    self.editReport()
                    out = self.response.getPrintWriter(
                        "text/plain; charset=UTF-8")
                    out.println("{\"id\":\"" + self.report.getReportName() +
                                "\"}")
                    out.close()
                    return
                if self.action == "options":
                    out = self.response.getPrintWriter(
                        "text/plain; charset=UTF-8")
                    out.println(
                        FileUtils.readFileToString(
                            File(
                                FascinatorHome.getPath("reports") +
                                "/reportCriteriaOptions.json")))
                    out.close()
                    return
                if self.action == "get-json":
                    out = self.response.getPrintWriter(
                        "text/plain; charset=UTF-8")
                    report = self.reportManager.getReports().get(
                        self.request.getParameter("reportName"))
                    queryFilters = report.config.getObject("query", "filter")
                    jsonMap = HashMap()
                    elementIds = ArrayList()

                    for elementId in queryFilters:
                        elementIds.add(elementId)

                    Collections.sort(elementIds)

                    for elementId in elementIds:
                        jsonMap.put(elementId,
                                    queryFilters.get(elementId).get("value"))
                    jsonMap.put("reportName", report.getLabel())
                    JsonObject.writeJSONString(jsonMap, out)
                    out.close()
                    return
 def get_file_contents(self, path):
     return FileUtils.readFileToString(File(path))
Beispiel #8
0
 def get_file_contents(self, path):
     return FileUtils.readFileToString(File(path))
Beispiel #9
0
 def __activate__(self, context):
     self.auth = context["page"].authentication
     self.errorMsg = "" 
     self.request = context["request"]
     self.response = context["response"]
     self.formData = context["formData"]
     self.log = context["log"]
     self.reportManager = context["Services"].getService("reportManager")
     self.reportName = None
         
     if (self.auth.is_logged_in()):
         if (self.auth.is_admin()==True):
             pass
         else:
             self.errorMsg = "Requires Admin / Librarian / Reviewer access." 
     else:
         self.errorMsg = "Please login."
     if self.errorMsg == "": 
         self.reportName = self.formData.get("reportName")
         
         if (self.reportName):
             self.report = self.reportManager.getReport(self.reportName)
             
         self.func = self.formData.get("func", "")
         if self.func == "" and self.request.getParameter("func"):
             self.func = self.request.getParameter("func")
         
         if self.func == "action":
             self.action = self.request.getParameter("action")
             if self.action == "create":
                 self.createReport()
                 out = self.response.getPrintWriter("text/plain; charset=UTF-8")
                 out.println("{\"id\":\""+self.report.getReportName()+"\"}")
                 out.close()
                 return
             if self.action == "edit":
                 self.editReport()
                 out = self.response.getPrintWriter("text/plain; charset=UTF-8")
                 out.println("{\"id\":\""+self.report.getReportName()+"\"}")
                 out.close()
                 return
             if self.action == "options":
                 out = self.response.getPrintWriter("text/plain; charset=UTF-8")
                 out.println(FileUtils.readFileToString(File(FascinatorHome.getPath("reports")+"/reportCriteriaOptions.json")))
                 out.close()
                 return
             if self.action == "get-json":
                  out = self.response.getPrintWriter("text/plain; charset=UTF-8")
                  report = self.reportManager.getReports().get(self.request.getParameter("reportName"))
                  queryFilters = report.config.getObject("query", "filter")
                  jsonMap = HashMap()
                  elementIds = ArrayList()
                  
                  for elementId in queryFilters:
                      elementIds.add(elementId)
                      
                  Collections.sort(elementIds)
                  
                  for elementId in elementIds:
                      jsonMap.put(elementId,queryFilters.get(elementId).get("value"))
                  jsonMap.put("reportName",report.getLabel())
                  JsonObject.writeJSONString(jsonMap,out)
                  out.close()
                  return