def findRequest(self, requestName): """ Either returns the request object, or None """ requests = ListRequests.listRequests() for request in requests: if request['RequestName'] == requestName: return request return None
def requestsWithStatus(status): requestIds = theseIds = ListRequests.listRequestsByStatus(status).values() requests = [] for requestId in requestIds: request = GetRequest.getRequest(requestId) request = prepareForTable(request) requests.append(request) return requests
def team(self, teamName): """ Details for a team """ self.validate(teamName) assignments = ListRequests.listRequestsByTeam(teamName) if assignments == None: assignments = [] else: assignments = assignments.keys() self.validate(assignments) return self.templatepage("Team", team=teamName, requests=assignments)
def putAssignment(self, team, requestName): """ Assigns this request to this team """ # see if it's already assigned team = urllib.unquote(team) if not team in ProdManagement.listTeams(): raise cherrypy.HTTPError(404, "Cannot find this team") requestNamesAndIDs = ListRequests.listRequestsByTeam(team) if requestName in requestNamesAndIDs.keys(): raise cherrypy.HTTPError(400, "Already assigned to this team") return ChangeState.assignRequest(requestName, team)
def getRequests(): """ This only fills the details needed to make succint browser tables, so some fields, such as InputDatasets or SoftwareVersions, need to be filled through getRequestDetails """ requests = ListRequests.listRequests() reverseTypes, reverseStatus = reverseLookups() result = [] for request in requests: result.append(getRequest(request['RequestID'], reverseTypes, reverseStatus)) return result
def putAssignment(self, team, requestName): """ Assigns this request to this team """ # see if it's already assigned team = urllib.unquote(team) if not team in ProdManagement.listTeams(): raise cherrypy.HTTPError(404,"Cannot find this team") requestNamesAndIDs = ListRequests.listRequestsByTeam(team) if requestName in requestNamesAndIDs.keys(): raise cherrypy.HTTPError(400,"Already assigned to this team") return ChangeState.assignRequest(requestName, team)
def getAllRequestDetails(): requests = ListRequests.listRequests() result = [] for request in requests: requestName = request['RequestName'] details = getRequestDetails(requestName) # take out excessive information del details['RequestUpdates'] del details['RequestMessages'] result.append(details) return result
def getRequests(): """ This only fills the details needed to make succint browser tables, so some fields, such as InputDatasets or SoftwareVersions, need to be filled through getRequestDetails """ requests = ListRequests.listRequests() reverseTypes, reverseStatus = reverseLookups() result = [] for request in requests: result.append( getRequest(request['RequestID'], reverseTypes, reverseStatus)) return result
def findRequest(self, requestName): """ Either returns the request object, or None. TODO: interesting how such a query is implemented here when there is database behind ... """ requests = ListRequests.listRequests() for request in requests: if request['RequestName'] == requestName: return request return None
def findAssignedRequests(prodMgr): """ _findAssignedRequests_ find a list of assigned state requests associated to the prodMgr instance provided. returns a list of request IDs """ pmReqs = ListRequests.listRequestsByProdMgr(prodMgr) result = [ x["RequestID"] for x in pmReqs if x['RequestStatus'] == "assigned" ] return result
def getAssignment(self, teamName=None, request=None): """ If a team name is passed in, get all assignments for that team. If a request is passed in, return a list of teams the request is assigned to """ # better to use ReqMgr/RequestDB/Interface/ProdSystem/ProdMgrRetrieve? #requestIDs = ProdMgrRetrieve.findAssignedRequests(teamName) # Maybe now assigned to team is same as assigned to ProdMgr result = [] if teamName != None: requestIDs = ListRequests.listRequestsByTeam(teamName, "assigned").values() requests = [GetRequest.getRequest(reqID) for reqID in requestIDs] # put highest priorities first requests.sort(key=lambda r: r['RequestPriority'], reverse=True) # return list of tuples, since we need sorting result = [[req['RequestName'], req['RequestWorkflow']] for req in requests] elif request != None: result = GetRequest.getAssignmentsByName(request) return result
def getRequestsByStatusAndTeam(self, teamName, status): """ Get a list of request names with the given team and status. """ requestNames = ListRequests.listRequestsByTeam(teamName, status).keys() return requestNames