extras-buildsys/server UserInterface.py,1.34,1.35

Seth Vidal (skvidal) fedora-extras-commits at redhat.com
Fri Jul 29 07:07:35 UTC 2005


Author: skvidal

Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv19885/server

Modified Files:
	UserInterface.py 
Log Message:

allow server_admins to requeue anyone's jobs



Index: UserInterface.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/UserInterface.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- UserInterface.py	29 Jul 2005 06:09:11 -0000	1.34
+++ UserInterface.py	29 Jul 2005 07:07:32 -0000	1.35
@@ -174,7 +174,7 @@
             self._bm.enqueue_srpm(email, package, srpm_file, real_target, buildreq, time.time())
             return (0, "Success: package has been queued.")
 
-    def requeue(self, email, uid):
+    def requeue(self, uid):
         uid = validate_uid(uid)
         if not uid:
             return (-1, "Error: Invalid job UID.")
@@ -191,10 +191,6 @@
         if not job:
             return (-1, "Error: Invalid job UID.")
 
-        # Ensure matching usernames
-        if job[1] != email:
-            return (-1, "Error: You are not the original submitter for Job %d." % uid)
-
         # Ensure the job failed or was killed
         if job[2] != 'failed' and job[2] != 'killed':
             return (-1, "Error: Job %d must be either 'failed' or 'killed' to requeue." % uid)
@@ -440,7 +436,28 @@
         user = AuthedXMLRPCServer.get_authinfo()
         if not user or not user.own_jobs:
             return (-1, "Insufficient privileges.")
-        return UserInterface.requeue(self, user.email, uid)
+
+        uid = validate_uid(uid)
+        if not uid:
+            return (-1, "Error: Invalid job UID.")
+
+        sql = 'SELECT uid, username, status FROM jobs WHERE uid=%d' % uid
+
+        # Run the query for the job
+        try:
+            dbcx, curs = get_dbcx()
+        except sqlite.DatabaseError, e:
+            return (-1, "Unable to access job database.")
+        curs.execute(sql)
+        job = curs.fetchone()
+        if not job:
+            return (-1, "Error: Invalid job UID.")
+
+        # Ensure matching usernames
+        if job[1] != user.email and not user.server_admin:
+            return (-1, "Error: You are not the original submitter for Job %d." % uid)
+            
+        return UserInterface.requeue(self, user, uid)
 
     def kill_job(self, email, jobid):
         user = AuthedXMLRPCServer.get_authinfo()




More information about the fedora-extras-commits mailing list