def handleAssignmentPage(self, **kwargs): """ handler for the main page """ #Accept Json encoded strings decodedArgs = {} for key in kwargs.keys(): try: decodedArgs[key] = JsonWrapper.loads(kwargs[key]) except: #Probably wasn't JSON decodedArgs[key] = kwargs[key] kwargs = decodedArgs # handle the checkboxes teams = [] requestNames = [] for key, value in kwargs.iteritems(): if isinstance(value, types.StringTypes): kwargs[key] = value.strip() if key.startswith("Team"): teams.append(key[4:]) if key.startswith("checkbox"): requestName = key[8:] self.validate(requestName) requestNames.append(key[8:]) for requestName in requestNames: if kwargs['action'] == 'Reject': ChangeState.changeRequestStatus(requestName, 'rejected', wmstatUrl = self.wmstatWriteURL) else: assignments = GetRequest.getAssignmentsByName(requestName) if teams == [] and assignments == []: raise cherrypy.HTTPError(400, "Must assign to one or more teams") self.assignWorkload(requestName, kwargs) for team in teams: if not team in assignments: ChangeState.assignRequest(requestName, team, wmstatUrl = self.wmstatWriteURL) priority = kwargs.get(requestName+':priority', '') if priority != '': Utilities.changePriority(requestName, priority, self.wmstatWriteURL) participle=kwargs['action']+'ed' if self.opshold and kwargs['action'] == 'Assign': participle='put into "ops-hold" state (see <a href="%s">OpsClipboard</a>)' % self.clipboardUrl # this, previously used, call made all requests injected into OpsClipboard to # have campaign_id null since the call doesn't propagate request's # CampaignName at all, AcquisitionEra remains default null and probably # a bunch of other things is wrong too #requests = [GetRequest.getRequestByName(requestName) for requestName in requestNames] requests = [Utilities.requestDetails(requestName) for requestName in requestNames] OpsClipboard.inject(self.couchUrl, self.clipboardDB, *requests) for request in requestNames: ChangeState.changeRequestStatus(requestName, 'ops-hold', wmstatUrl = self.wmstatWriteURL) return self.templatepage("Acknowledge", participle=participle, requests=requestNames)
def handleAssignmentPage(self, **kwargs): """ handler for the main page """ #Accept Json encoded strings decodedArgs = {} for key in kwargs.keys(): try: decodedArgs[key] = JsonWrapper.loads(kwargs[key]) except: #Probably wasn't JSON decodedArgs[key] = kwargs[key] kwargs = decodedArgs # handle the checkboxes teams = [] requestNames = [] for key, value in kwargs.iteritems(): if isinstance(value, types.StringTypes): kwargs[key] = value.strip() if key.startswith("Team"): teams.append(key[4:]) if key.startswith("checkbox"): requestName = key[8:] self.validate(requestName) requestNames.append(key[8:]) for requestName in requestNames: if kwargs['action'] == 'Reject': ChangeState.changeRequestStatus(requestName, 'rejected', wmstatUrl=self.wmstatWriteURL) else: assignments = GetRequest.getAssignmentsByName(requestName) if teams == [] and assignments == []: raise cherrypy.HTTPError( 400, "Must assign to one or more teams") kwargs["Teams"] = teams self.assignWorkload(requestName, kwargs) for team in teams: if not team in assignments: ChangeState.assignRequest( requestName, team, wmstatUrl=self.wmstatWriteURL) priority = kwargs.get(requestName + ':priority', '') if priority != '': Utilities.changePriority(requestName, priority, self.wmstatWriteURL) participle = kwargs['action'] + 'ed' return self.templatepage("Acknowledge", participle=participle, requests=requestNames)
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 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 handleAssignmentPage(self, **kwargs): """ handler for the main page """ # handle the checkboxes teams = [] requestNames = [] for key, value in kwargs.iteritems(): if isinstance(value, types.StringTypes): kwargs[key] = value.strip() if key.startswith("Team"): teams.append(key[4:]) if key.startswith("checkbox"): requestName = key[8:] self.validate(requestName) requestNames.append(key[8:]) for requestName in requestNames: if kwargs["action"] == "Reject": ChangeState.changeRequestStatus(requestName, "rejected") else: assignments = GetRequest.getAssignmentsByName(requestName) if teams == [] and assignments == []: raise cherrypy.HTTPError(400, "Must assign to one or more teams") self.assignWorkload(requestName, kwargs) for team in teams: if not team in assignments: ChangeState.assignRequest(requestName, team) priority = kwargs.get(requestName + ":priority", "") if priority != "": Utilities.changePriority(requestName, priority) participle = kwargs["action"] + "ed" if self.opshold and kwargs["action"] == "Assign": participle = 'put into "ops-hold" state (see <a href="%s">OpsClipboard</a>)' % self.clipboardUrl # this, previously used, call made all requests injected into OpsClipboard to # have campaign_id null since the call doesn't propagate request's # CampaignName at all, AcquisitionEra remains default null and probably # a bunch of other things is wrong too # requests = [GetRequest.getRequestByName(requestName) for requestName in requestNames] requests = [Utilities.requestDetails(requestName) for requestName in requestNames] OpsClipboard.inject(self.couchUrl, self.clipboardDB, *requests) for requestName in requestNames: ChangeState.changeRequestStatus(requestName, "ops-hold") return self.templatepage("Acknowledge", participle=participle, requests=requestNames)
def handleAssignmentPage(self, **kwargs): """ handler for the main page """ # Accept Json encoded strings decodedArgs = {} for key in kwargs.keys(): try: decodedArgs[key] = JsonWrapper.loads(kwargs[key]) except Exception: # Probably wasn't JSON decodedArgs[key] = kwargs[key] kwargs = decodedArgs # handle the checkboxes teams = [] requestNames = [] for key, value in kwargs.iteritems(): if isinstance(value, basestring): kwargs[key] = value.strip() if key.startswith("Team"): teams.append(key[4:]) if key.startswith("checkbox"): requestName = key[8:] self.validate(requestName) requestNames.append(key[8:]) for requestName in requestNames: if kwargs["action"] == "Reject": ChangeState.changeRequestStatus(requestName, "rejected", wmstatUrl=self.wmstatWriteURL) else: assignments = GetRequest.getAssignmentsByName(requestName) if teams == [] and assignments == []: raise cherrypy.HTTPError(400, "Must assign to one or more teams") kwargs["Teams"] = teams self.assignWorkload(requestName, kwargs) for team in teams: if not team in assignments: ChangeState.assignRequest(requestName, team, wmstatUrl=self.wmstatWriteURL) priority = kwargs.get(requestName + ":priority", "") if priority != "": Utilities.changePriority(requestName, priority, self.wmstatWriteURL) participle = kwargs["action"] + "ed" return self.templatepage("Acknowledge", participle=participle, requests=requestNames)
def handleAssignmentPage(self, **kwargs): """ handler for the main page """ # handle the checkboxes teams = [] requestNames = [] for key, value in kwargs.iteritems(): if isinstance(value, types.StringTypes): kwargs[key] = value.strip() if key.startswith("Team"): teams.append(key[4:]) if key.startswith("checkbox"): requestName = key[8:] self.validate(requestName) requestNames.append(key[8:]) for requestName in requestNames: if kwargs['action'] == 'Reject': ChangeState.changeRequestStatus(requestName, 'rejected') else: assignments = GetRequest.getAssignmentsByName(requestName) if teams == [] and assignments == []: raise cherrypy.HTTPError(400, "Must assign to one or more teams") self.assignWorkload(requestName, kwargs) for team in teams: if not team in assignments: ChangeState.assignRequest(requestName, team) priority = kwargs.get(requestName+':priority', '') if priority != '': Utilities.changePriority(requestName, priority) participle=kwargs['action']+'ed' if self.hold and kwargs['action'] == 'Assign': participle='put into hold state (see <a href="%s">clipboard</a>)' % self.clipboardUrl requests = [GetRequest.getRequestByName(requestName) for requestName in requestNames] Clipboard.inject(self.couchUrl, self.clipboardDB, *requests) for request in requestNames: ChangeState.changeRequestStatus(requestName, 'ops-hold') return self.templatepage("Acknowledge", participle=participle, requests=requestNames)