def writeContent(self): message = "Please, wait..." if self.request().hasField("Message"): message = self.request().field("Message") LapWeb.pleaseWaitBox(self, message) self.response().flush()
def writeContent(self): # Any messages to display ? extra = self.request().field('extra', None) if not extra and self.request().isSessionExpired() and not self.request().hasField('logout'): extra = 'You have been automatically logged out due to inactivity.' if extra: LapWeb.messageBox(self, self.htmlEncode(extra)) self.writeln("<br>") self.writeln("<br>") # Create unique loginid loginid = uniqueId(self) self.session().setValue('loginid', loginid) action = self.request().field('action', '') print "LoginPage " + action # Create login form print "Creating login form" form = LapWeb.Form(self, "loginform", action, "Login") # form.addFile("Proxy file", "proxy") form.addText("Username", "name") form.addPassword("Password", "password") form.addHidden("", "loginid", loginid) form.setAction(action) form.setSubmitButton("login", "Login") # Forward any passed in values to the user's intended page after successful login, # except for the special values used by the login mechanism itself for name, value in self.request().fields().items(): if name not in 'login loginid proxy extra logout name password'.split(): if isinstance(value, types.ListType): for valueStr in value: form.addHidden("", name, valueStr) else: form.addHidden("", name, value) print "Rendering login form" form.render()
def writeContent(self): user = Lap.User(self.session().value('authenticated_user')) ui = pyARC.Ui(user) jobs = ui.jobStatus() if jobs==None: LapWeb.messageBox(self, "grid-proxy is about to expire please create a new proxy.", "Manage running jobs") else: table = LapWeb.Table(self,len(jobs)+1,4) table.setItem(0, 0, "ID") table.setItem(0, 1, "Name") table.setItem(0, 2, "Status") table.setItem(0, 3, "Error") row = 1 for key in jobs.keys(): table.setItem(row,0,key) table.setItem(row,1,jobs[key]["name"]) if jobs[key]["status"] == "INLRMS:Q": table.setColor(row,2, jobQueuingColor) if jobs[key]["status"] == "INLRMS:wait": table.setColor(row,2, jobQueuingColor) if jobs[key]["status"] == "INLRMS:R": table.setColor(row,2, jobRunningColor) if jobs[key]["status"] == "ACCEPTED": table.setColor(row,2, jobAcceptedColor) if jobs[key]["status"] == "DELETED": table.setColor(row,2, jobDeletedColor) if jobs[key]["status"] == "FINISHING": table.setColor(row,2, jobFinishingColor) if jobs[key]["status"][0:8] == "FINISHED": table.setColor(row,2, jobFinishedColor) table.setItem(row,2,jobs[key]["status"]) if jobs.has_key("error"): table.setItem(row,3,jobs[key]["error"]) row = row + 1 table.render()
def writeContent(self): user = Lap.User(self.session().value('authenticated_user')) ui = pyARC.Ui(user) jobs = ui.jobStatus() if jobs==None: LapWeb.messageBox(self, "grid-proxy is about to expire please create a new proxy.", "Manage running jobs") elif len(jobs)==0: # No job dirs exists => no jobs to manage LapWeb.messageBox(self, "No jobs found on grid.", "Get jobs") else: # if user loads this page before ARC is done processing it, an error # occurs because the information is not yet available try: for key in jobs.keys(): name = jobs[key]["name"] except KeyError: err = "Job information not yet available, please wait" err += " a moment and then synchronize job list." LapWeb.messageBox(self, err, "Manage running jobs") return table = LapWeb.Table(self,len(jobs)+1,4) table.setItem(0, 0, "ID") table.setItem(0, 1, "Name") table.setItem(0, 2, "Status") table.setItem(0, 3, "Error") row = 1 for key in jobs.keys(): table.setItem(row,0,key) table.setItem(row,1,jobs[key]["name"]) if jobs[key]["status"] == "INLRMS:Q": table.setColor(row,2, jobQueuingColor) if jobs[key]["status"] == "INLRMS:wait": table.setColor(row,2, jobQueuingColor) if jobs[key]["status"] == "INLRMS:R": table.setColor(row,2, jobRunningColor) if jobs[key]["status"] == "ACCEPTED": table.setColor(row,2, jobAcceptedColor) if jobs[key]["status"] == "DELETED": table.setColor(row,2, jobDeletedColor) if jobs[key]["status"] == "FINISHING": table.setColor(row,2, jobFinishingColor) if jobs[key]["status"][0:8] == "FINISHED": table.setColor(row,2, jobFinishedColor) table.setItem(row,2,jobs[key]["status"]) if jobs.has_key("error"): table.setItem(row,3,jobs[key]["error"]) row = row + 1 table.render()
def writeContent(self): if self.session().hasValue("grid_job_status"): # Show any form message boxes if self.session().value("grid_job_status")<>"": LapWeb.messageBox(self, self.session().value("grid_job_status"), "Message", "ManageGridJobPage") self.session().delValue("grid_job_status") elif self.session().hasValue("grid_job_wait"): message = self.session().value("grid_job_wait") self.session().delValue("grid_job_wait") LapWeb.pleaseWaitBox(self, message) else: # Get user information user = Lap.User(self.session().value('authenticated_user')) userDir = user.getDir(); # Get the ARC user interface ui = pyARC.Ui(user) # Get a job status list jobs = ui.jobStatus() if jobs==None: LapWeb.messageBox(self, "grid-proxy is about to expire please create a new proxy.", "Manage running jobs") elif len(jobs)==0: # No job dirs exists => no jobs to manage LapWeb.messageBox(self, "No jobs to manage", "Get jobs") else: # Create form for managing jobs form = LapWeb.Form(self, "frmJobManager", "", "Manage GRID jobs", 50, len(jobs)+1, 6) form.setTableLayout(True) form.setAction("ManageGridJobPage") row = 0 form.addNormalText("JobID", row, 1) form.addNormalText("JobName", row, 3) form.addNormalText("Status", row, 5) row = row + 1 for key in jobs.keys(): form.addRadio("", "chkJob", "%s;%s" % (jobs[key]["name"],key), row, 0) form.addNormalText(key, row, 1) form.addNormalText("", row, 2) form.addNormalText(jobs[key]["name"], row, 3) form.addNormalText("", row, 4) form.addNormalText(jobs[key]["status"], row, 5) row = row + 1 form.addFormButton("Get", "_action_getJob") form.addFormButton("Kill", "_action_killJob") form.addFormButton("Clean", "_action_cleanJob") form.setHaveSubmit(False) form.render()
def writeContent(self): if self.session().hasValue("managejob_status"): # Show any form message boxes if self.session().value("managejob_status")<>"": LapWeb.messageBox(self, self.session().value("managejob_status"), "Message", "ManageJobPage") self.session().delValue("managejob_status") elif self.session().hasValue("managejob_wait"): message = self.session().value("managejob_wait") self.session().delValue("managejob_wait") LapWeb.pleaseWaitBox(self, message) elif self.session().hasValue("managejob_confirm"): # Show form confirmation dialogs LapWeb.messageBoxYesNo(self, self.session().value("managejob_confirm"), self.session().value("managejob_confirm_title"), "_action_deleteJobYes", "_action_deleteJobNo" ) self.session().delValue("managejob_confirm") self.session().delValue("managejob_confirm_title") self.session().delValue("managejob_confirm_no_page") self.session().delValue("managejob_confirm_yes_page") else: wl = self.writeln w = self.write user = Lap.User(self.session().value('authenticated_user')) userDir = user.getDir(); # Check for job directories in user dir jobCount = 0 jobs = [] for entry in os.listdir(userDir): if os.path.isdir(os.path.join(userDir,entry)): if entry[0:4] == "job_": jobName = entry[4:] jobCount = jobCount + 1 jobs.append(jobName) if len(jobs)==0: # No job dirs exists => no jobs to manage LapWeb.messageBox(self, "No jobs to manage", "Manage jobs") else: # Create form for managing jobs form = LapWeb.Form(self, "frmJobManager", "", "Manage jobs") form.setAction("ManageJobPage") for job in jobs: form.addRadio(job, "chkJob", job) form.addFormButton("Edit", "_action_editJob") form.addFormButton("View files", "_action_viewJobFiles") form.addFormButton("Submit", "_action_submitJob") form.addFormButton("Delete", "_action_deleteJob") form.setHaveSubmit(False) form.render()
def writeContent(self): if self.session().hasValue("viewfiles_status"): # Show any form message boxes if self.session().value("viewfiles_status")<>"": LapWeb.messageBox(self, self.session().value("viewfiles_status"), "Message", "ViewFilesPage") self.session().delValue("viewfiles_status") else: # Get user information user = Lap.User(self.session().value('authenticated_user')) userDir = user.getDir(); mode = "" jobName = "" viewMode = "" if self.session().hasValue("viewfiles_mode"): viewMode = self.session().value("viewfiles_mode") if self.session().hasValue("viewfiles_jobname"): jobName = self.session().value("viewfiles_jobname") if viewMode == "view": if self.session().hasValue("viewfiles_entry"): jobDir = os.path.join(userDir, "job_%s" % jobName) sessionDir = os.path.join(jobDir, self.session().value("viewfiles_sessiondir")) subDir = self.session().value("viewfiles_dir") browseDir = os.path.join(sessionDir, subDir) fileEntry = self.session().value("viewfiles_entry") #filename = os.path.join(browseDir, fileEntry) filename = fileEntry if os.path.isfile(filename): viewFile = file(filename, "r") content = viewFile.readlines() viewFile.close() # Create a form for viewing the file form = LapWeb.Form(self, "frmFileManager", "", os.path.basename(fileEntry), 80, 1, 3) form.setWindowID("formViewWindow") form.setContentID("formViewContent") form.setTableLayout(True) form.setAction("ViewFilesPage") pre = PRE() for line in content: pre.append(line) form.addNormalText(pre, 0, 1) form.addFormButton("Back", "_action_goBack") form.render() if viewMode == "file": if self.session().hasValue("viewfiles_sessiondir"): jobDir = os.path.join(userDir, "job_%s" % jobName) sessionDir = os.path.join(jobDir, self.session().value("viewfiles_sessiondir")) subDir = self.session().value("viewfiles_dir") browseDir = os.path.join(sessionDir, subDir) fileList = [] dirList = [] for entry in os.listdir(browseDir): atime = os.path.getatime(os.path.join(browseDir,entry)) mtime = os.path.getmtime(os.path.join(browseDir,entry)) fsize = os.path.getsize(os.path.join(browseDir,entry)) if os.path.isdir(os.path.join(browseDir,entry)): dirList.append((entry, atime, mtime, fsize, os.path.join(browseDir,entry))) else: fileList.append((entry, atime, mtime, fsize, os.path.join(browseDir,entry))) # Check for files if len(fileList)==0 and len(dirList)==0: LapWeb.messageBox(self, "No files to display", "View files", "ManageJobPage") return # Create form for viewing session directories form = LapWeb.Form(self, "frmFileManager", "", "Downloaded job files", 50, len(dirList)+len(fileList)+1, 6) form.setTableLayout(True) form.setAction("ViewFilesPage") row = 0 form.addNormalText("Type", row, 1) form.addNormalText("File", row, 2) form.addNormalText("Size", row, 3) form.addNormalText("Last accessed", row, 4) form.addNormalText("Last modified", row, 5) row = row + 1 for dirEntry in dirList: form.addRadio("", "chkEntry", dirEntry[4], row, 0) form.addNormalText(IMG(src="icons/small/dir.gif"), row, 1) form.addNormalText(dirEntry[0], row, 2) form.addNormalText(dirEntry[3], row, 3) form.addNormalText(time.asctime(time.localtime(dirEntry[1])), row, 4) form.addNormalText(time.asctime(time.localtime(dirEntry[2])), row, 5) row = row + 1 for fileEntry in fileList: form.addRadio("", "chkEntry", fileEntry[4], row, 0) form.addNormalText(IMG(src="icons/small/generic.gif"), row, 1) form.addNormalText(fileEntry[0], row, 2) form.addNormalText(fileEntry[3], row, 3) form.addNormalText(time.asctime(time.localtime(fileEntry[1])), row, 4) form.addNormalText(time.asctime(time.localtime(fileEntry[2])), row, 5) row = row + 1 form.addFormButton("View", "_action_viewFile") form.addFormButton("Download", "_action_downloadFile") form.addFormButton("Download all (tar.gz)", "_action_downloadAll") form.addFormButton("Back", "_action_goBack") form.setHaveSubmit(False) form.render() if viewMode == "session": # Get job directory jobDir = os.path.join(userDir, "job_%s" % jobName) # Check for session directories sessionDirs = [] for entry in os.listdir(jobDir): if os.path.isdir(os.path.join(jobDir,entry)): atime = os.path.getatime(os.path.join(jobDir,entry)) mtime = os.path.getmtime(os.path.join(jobDir,entry)) sessionDirs.append((entry, atime, mtime)) if len(sessionDirs)==0: LapWeb.messageBox(self, "No downloaded results to display", "View files", "ManageJobPage") return # Intialise file viewing self.session().setValue("viewfiles_dir", "") # Create form for viewing session directories form = LapWeb.Form(self, "frmFileManager", "", "Downloaded job files", 50, len(sessionDirs)+1, 4) form.setTableLayout(True) form.setAction("ViewFilesPage") row = 0 form.addNormalText("JobID", row, 1) form.addNormalText("Last accessed", row, 2) form.addNormalText("Last modified", row, 3) row = row + 1 for sessionDir in sessionDirs: form.addRadio("", "chkDir", sessionDir[0], row, 0) form.addNormalText(sessionDir[0], row, 1) form.addNormalText(time.asctime(time.localtime(sessionDir[1])), row, 2) form.addNormalText(time.asctime(time.localtime(sessionDir[2])), row, 3) row = row + 1 form.addFormButton("View", "_action_viewDir") form.addFormButton("Delete all sessions", "_action_deleteDir") form.addFormButton("Back", "_action_goBack") form.setHaveSubmit(False) form.render()
def writeContent(self): LapUtils.log.msg("JobPage", "writeContent") if self.session().hasValue("jobpage_status"): LapUtils.log.msg("JobPage", "writeContent", "Show status message") # ----------------------------------- # Show any form messages # ----------------------------------- if self.session().value("jobpage_status")<>"": LapWeb.messageBox(self, self.session().value("jobpage_status"), "Message", self.session().value("jobpage_return_page")) self.session().delValue("jobpage_status") self.session().delValue("jobpage_return_page") else: # ----------------------------------- # Create job form definition here # ----------------------------------- if self.session().hasValue("editjob"): LapUtils.log.msg("JobPage", "writeContent", "Edit job") # Ok. He wants to edit the job # Get neccessary info jobName = self.session().value("editjob") user = Lap.User(self.session().value('authenticated_user')) userDir = user.getDir(); jobDir = userDir+"/job_%s" % (jobName) taskFile = file(os.path.join(jobDir,"job.task"), "r") task = pickle.load(taskFile) taskFile.close() attribs = task.getAttributes() xrslAttribs = task.getXRSLAttributes() # Create the form, now with previous values form = self.onCreateEditJobForm(task) # Change the submit button form.addFormButton("Modify", "_action_modify") form.addFormButton("Back", "_action_back") form.setHaveSubmit(False) else: LapUtils.log.msg("JobPage", "writeContent", "New job") # New job # Get default values from the task class task = self.onCreateNewTask() form = self.onCreateNewJobForm(task) form.setSubmitButton("_action_create", "Create") form.render()
def writeContent(self): LapWeb.messageBox(self, "You have been logged in.")
def writeContent(self): self.session().values().clear() LapWeb.messageBox(self, "You have been logged out.", "Information")