Esempio n. 1
0
	def writeContent(self):

		message = "Please, wait..."
		
		if self.request().hasField("Message"):
				message = self.request().field("Message")
		LapWeb.pleaseWaitBox(self, message)
		self.response().flush()
Esempio n. 2
0
	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()
Esempio n. 3
0
	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()
Esempio n. 4
0
	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()
Esempio n. 5
0
	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()
Esempio n. 6
0
	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()
Esempio n. 7
0
	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()
Esempio n. 8
0
	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()
Esempio n. 9
0
	def writeContent(self):

		LapWeb.messageBox(self, "You have been logged in.")
Esempio n. 10
0
	def writeContent(self):

		self.session().values().clear()

		LapWeb.messageBox(self, "You have been logged out.", "Information")