def findAllMembersInCategory(self, category, active, oper = '=', labID = 0): db = self.db cursor = self.cursor #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO ucMapper = UserCategoryMapper(db, cursor) # for category name/id mapping category_Name_ID_Map = ucMapper.mapCategoryNameToID() members = [] # list of User **objects** # When we include 'status=ACTIVE' restriction in the query, a DEP owner of an active project is not shown in project view. However, we should not add DEP members to a project. # Therefore, the calling function should specify whether it wants to restrict query by status. # If 'active' parameter is True, add 'status=ACTIVE' clause # In any case, **remember to fill in 'category' column for DEP users before the launch** if labID == 0: if active: cursor.execute("SELECT userID, firstname, lastname, description FROM Users_tbl u, UserCategories_tbl c WHERE c.categoryID " + oper + " " + `category_Name_ID_Map[category]` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.description <>'' AND u.status='ACTIVE'") else: cursor.execute("SELECT userID, firstname, lastname, description FROM Users_tbl u, UserCategories_tbl c WHERE c.categoryID " + oper + " " + `category_Name_ID_Map[category]` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.description <>''") else: if active: cursor.execute("SELECT u.userID, u.firstname, u.lastname, u.description, l.lab_name FROM Users_tbl u, UserCategories_tbl c, LabInfo_tbl l WHERE c.categoryID " + oper + " " + `category_Name_ID_Map[category]` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.labID=" + `labID` + " AND l.labID=u.labID AND u.status='ACTIVE'") else: cursor.execute("SELECT u.userID, u.firstname, u.lastname, u.description, l.lab_name FROM Users_tbl u, UserCategories_tbl c, LabInfo_tbl l WHERE c.categoryID " + oper + " " + `category_Name_ID_Map[category]` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.description <>'' AND u.labID=" + `labID` + " AND l.labID=u.labID") results = cursor.fetchall() for result in results: userID = int(result[0]) firstName = result[1] lastName = result[2] description = result[3] tmpLab = Laboratory(labID) if len(result) == 5: labName = result[4] tmpLab.setName(labName) # create a User object tmpUser = User(userID, "", firstName, lastName, description, tmpLab, category, "", "") members.append(tmpUser) return members
def findAllMembersInCategory(self, category, active, oper='=', labID=0): db = self.db cursor = self.cursor #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO ucMapper = UserCategoryMapper(db, cursor) # for category name/id mapping category_Name_ID_Map = ucMapper.mapCategoryNameToID() members = [] # list of User **objects** # When we include 'status=ACTIVE' restriction in the query, a DEP owner of an active project is not shown in project view. However, we should not add DEP members to a project. # Therefore, the calling function should specify whether it wants to restrict query by status. # If 'active' parameter is True, add 'status=ACTIVE' clause # In any case, **remember to fill in 'category' column for DEP users before the launch** if labID == 0: if active: cursor.execute( "SELECT userID, firstname, lastname, description FROM Users_tbl u, UserCategories_tbl c WHERE c.categoryID " + oper + " " + ` category_Name_ID_Map[category] ` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.description <>'' AND u.status='ACTIVE'" ) else: cursor.execute( "SELECT userID, firstname, lastname, description FROM Users_tbl u, UserCategories_tbl c WHERE c.categoryID " + oper + " " + ` category_Name_ID_Map[category] ` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.description <>''" ) else: if active: cursor.execute( "SELECT u.userID, u.firstname, u.lastname, u.description, l.lab_name FROM Users_tbl u, UserCategories_tbl c, LabInfo_tbl l WHERE c.categoryID " + oper + " " + ` category_Name_ID_Map[category] ` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.labID=" + ` labID ` + " AND l.labID=u.labID AND u.status='ACTIVE'") else: cursor.execute( "SELECT u.userID, u.firstname, u.lastname, u.description, l.lab_name FROM Users_tbl u, UserCategories_tbl c, LabInfo_tbl l WHERE c.categoryID " + oper + " " + ` category_Name_ID_Map[category] ` + " AND c.categoryID=u.category AND u.firstname <> '' AND u.lastname <> '' AND u.description <>'' AND u.labID=" + ` labID ` + " AND l.labID=u.labID") results = cursor.fetchall() for result in results: userID = int(result[0]) firstName = result[1] lastName = result[2] description = result[3] tmpLab = Laboratory(labID) if len(result) == 5: labName = result[4] tmpLab.setName(labName) # create a User object tmpUser = User(userID, "", firstName, lastName, description, tmpLab, category, "", "") members.append(tmpUser) return members
def saveLab(self, form): db = self.__db cursor = self.__cursor hostname = self.__hostname # print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! # print # DITTO # print `form` # Handlers and mappers lHandler = LabHandler(db, cursor) ucMapper = UserCategoryMapper(db, cursor) category_Name_ID_Map = ucMapper.mapCategoryNameToID() # Get form values labID = int(form.getvalue("labID")) lab = Laboratory( labID ) # here need to use the default constructor and not findLabByID, because lab is being updated and need a fresh instance and set its attributes to new values newName = form.getvalue("labName") newLabHead = form.getvalue("labHead") newLabCode = form.getvalue("labCode").upper() newDescr = form.getvalue("description") newAddr = form.getvalue("address") newAccess = form.getvalue("system_access_level") newAccLev = category_Name_ID_Map[newAccess] # change database values try: lHandler.setLabName(labID, newName) lHandler.setLabHead(labID, newLabHead) lHandler.setLabCode(labID, newLabCode) lHandler.setLabDescription(labID, newDescr) lHandler.setLabAccessLevel(labID, newAccLev) lHandler.setLocation(labID, newAddr) ####################### # update members! ####################### newMembers = form.getlist("labMembers") lHandler.updateLabMembers(labID, newMembers) # change object values lab.setName(newName) lab.setLabHead(newLabHead) lab.setLabCode(newLabCode) lab.setDescription(newDescr) lab.setAddress(newAddr) lab.setDefaultAccessLevel(newAccess) # return to detailed view self.printLabInfo("view", lab) # utils.redirect(hostname + "User.php?View=5&Lab=" + `labID` + "&fd=" + filename) except DuplicateLabCodeException: newLab = Laboratory(labID, newName, newDescr, newAccess, newAddr, newLabHead, newLabCode) d = DuplicateLabCodeException() self.printLabInfo("edit", newLab, d.err_code())
def saveLab(self, form): db = self.__db cursor = self.__cursor hostname = self.__hostname #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO #print `form` # Handlers and mappers lHandler = LabHandler(db, cursor) ucMapper = UserCategoryMapper(db, cursor) category_Name_ID_Map = ucMapper.mapCategoryNameToID() # Get form values labID = int(form.getvalue("labID")) lab = Laboratory( labID ) # here need to use the default constructor and not findLabByID, because lab is being updated and need a fresh instance and set its attributes to new values newName = form.getvalue("labName") newLabHead = form.getvalue("labHead") newLabCode = form.getvalue("labCode").upper() newDescr = form.getvalue("description") newAddr = form.getvalue("address") newAccess = form.getvalue("system_access_level") newAccLev = category_Name_ID_Map[newAccess] # change database values try: lHandler.setLabName(labID, newName) lHandler.setLabHead(labID, newLabHead) lHandler.setLabCode(labID, newLabCode) lHandler.setLabDescription(labID, newDescr) lHandler.setLabAccessLevel(labID, newAccLev) lHandler.setLocation(labID, newAddr) ####################### # update members! ####################### newMembers = form.getlist("labMembers") lHandler.updateLabMembers(labID, newMembers) # change object values lab.setName(newName) lab.setLabHead(newLabHead) lab.setLabCode(newLabCode) lab.setDescription(newDescr) lab.setAddress(newAddr) lab.setDefaultAccessLevel(newAccess) # return to detailed view self.printLabInfo('view', lab) #utils.redirect(hostname + "User.php?View=5&Lab=" + `labID` + "&fd=" + filename) except DuplicateLabCodeException: newLab = Laboratory(labID, newName, newDescr, newAccess, newAddr, newLabHead, newLabCode) d = DuplicateLabCodeException() self.printLabInfo('edit', newLab, d.err_code())