def get_user(): user_id = request.args.get('user_id') if not user_id: UserHandler().get_all_users() user = UserHandler().get_user(user_id) if not user: raise InvalidUsage("User %s not found" % user_id, status_code=404) user = UserHandler.to_dict(user) history = GameHandler().get_player_history(user_id) user['history'] = history return json.dumps(user)
def findPacket(self, packetID): db = self.db cursor = self.cursor uHandler = UserHandler(db, cursor) newPacket = None cursor.execute("SELECT ownerID, packetName, is_private, comment FROM Packets_tbl p, GeneralComments_tbl c WHERE packetID=" + `packetID` + " AND p.packetDescription = c.commentID AND p.status='ACTIVE' AND c.status='ACTIVE'") result = cursor.fetchone() if result: ownerID = int(result[0]) packetOwner = uHandler.getUserByID(ownerID) packetName = result[1] # private or public accessType = result[2] # Value TRUE or FALSE is returned as a STRING, convert to Boolean if accessType == 'TRUE': isPrivate = True else: isPrivate = False packetDescr = result[3] packetReaders = self.findProjectMembers(packetID, 'Reader') packetWriters = self.findProjectMembers(packetID, 'Writer') newPacket = Packet(packetID, packetName, packetDescr, packetOwner, isPrivate, packetReaders, packetWriters) return newPacket
def handle(self): # For convenience, create local copies of global variables db = self.__db cursor = self.__cursor hostname = self.__hostname uHandler = UserHandler(db, cursor) form = cgi.FieldStorage(keep_blank_values="True") #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO #print `form` if form.has_key("loginsubmit"): username = form.getvalue("loginusername_field") passwd = form.getvalue("loginpassword_field") if self.checkPermissions(username, passwd): session = SimpleCookie(os.environ['HTTP_COOKIE']) phpsessid = session['PHPSESSID'].value session["userinfo"] = self.__user utils.redirect(os.environ['HTTP_REFERER'])
def updateLabMembers(self, labID, newMembers): #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO db = self.db cursor = self.cursor uHandler = UserHandler(db, cursor) # Find out which members in old members list are not in new members list and delete them oldMembers = self.findMembers(labID) # fetch the IDs of members in oldMembers (a list of User objects) oldMemIDs = [] for m in oldMembers: oldMemIDs.append(m.getUserID()) # Cast each element in newMembers to INT newMemIDs = [] for n in newMembers: newMemIDs.append(int(n)) memDel = utils.diff(oldMemIDs, newMemIDs) for memID in memDel: #self.deleteMember(labID, memID) uHandler.deleteUser(memID)
def authorize(self, client): # where we authorize the user. """ In this method we are trying to get password and user name from the client and check if he has logged on another pc or if his credinitals are correct """ while True: try: data = client.recv(1024) user_and_pass = pickle.loads(data) user = UserHandler(user_and_pass[1], user_and_pass[2]) if user_and_pass[ 0] == 'Register': # if user was trying to register auth = user.register() auth_ = pickle.dumps(auth) client.send(auth_) if auth == "Successfully Registered": self.receive(client, user_and_pass[1], user) else: continue else: # if user was trying to login auth = user.login() auth_ = pickle.dumps(auth) client.send(auth_) if auth == "Successfully Logged In": self.receive(client, user_and_pass[1], user) break else: continue except: break
def login(): data = json.loads(request.data) username = data.get('username') password = data.get('password') user = UserHandler.to_dict(UserHandler().log_user(username, password)) history = GameHandler().get_player_history(user['user_id']) user['history'] = history return json.dumps(user)
def setUp(self): stdscr = curses.initscr() curses.start_color() self.folder_handler = FolderHandler(default_path) self.display_handler = DisplayHandler(self.folder_handler, stdscr) self.user = UserHandler(self.folder_handler, self.display_handler, stdscr)
def createProject(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 pHandler = ProjectDatabaseHandler(db, cursor) uHandler = UserHandler(db, cursor) # Get form values projectID = form.getvalue("packetID") ownerID = form.getvalue("packetOwner") # get owner's name packetOwner = uHandler.getUserByID(ownerID) packetName = form.getvalue("packetName") packetDescription = form.getvalue("packetDescription") # private or public if form.getvalue("private_or_public") == "public": isPrivate = False else: isPrivate = True # Lists of project readers & editors # These are lists of INTEGER USER IDs!!!!! # A User instance needs to be created for each!!!!!!! projectReaderIDs = form.getlist("readersTargetList") projectWriterIDs = form.getlist("writersTargetList") projectReaders = [] projectWriters = [] for rID in projectReaderIDs: tmpReader = uHandler.getUserByID(rID) projectReaders.append(tmpReader) for wID in projectWriterIDs: tmpWriter = uHandler.getUserByID(wID) # Now check if the user is an OpenFreezer writer - otherwise cannot be made Writer on a project if tmpWriter.getCategory() != 'Reader': projectWriters.append(tmpWriter) newProject = Packet(projectID, packetName, packetDescription, packetOwner, isPrivate, projectReaders, projectWriters) packetID = pHandler.insertPacket( newProject) # new project is empty by default self.showProjectDetails('view', newProject)
def user_list(): page_index = request.args.get('page_index') user_handler = UserHandler() users = user_handler.get_user_list(page_index) if page_index else user_handler.get_user_list() return jsonify({'res': 'ok', 'data': [{ 'id': user.id, 'name': user.name, 'age': user.age, 'sex': user.sex, 'address': user.address, } for user in users]})
def add_user(): if request.method == 'POST': data = deepcopy(request.json) if request.is_json else deepcopy(request.form) user_handler = UserHandler() result, result_msg = user_handler.add_user(data) if not result: return jsonify({'res': 'error', 'msg': result_msg}) else: return jsonify({'res': 'ok', 'msg': result_msg}) else: return jsonify({'res': 'error', 'msg': 'request must be post'})
def deleteAllMembers(self, labID): db = self.db cursor = self.cursor uHandler = UserHandler(db, cursor) members = self.findMembers(labID) for mem in members: memID = mem.getUserID() uHandler.deleteUser(memID)
def addLabMember(self, labID, memberID): db = self.db cursor = self.cursor uHandler = UserHandler(db, cursor) if uHandler.existsUser(memberID): cursor.execute("UPDATE Users_tbl SET labID=" + ` labID ` + " WHERE userID=" + ` memberID ` + " AND status='ACTIVE'")
def __init__(self, stdscr): # initialize user handler self.folder_handler = FolderHandler(default_path) self.display_handler = DisplayHandler(self.folder_handler, stdscr) self.user_handler = UserHandler(self.folder_handler, self.display_handler, stdscr) self.display_handler.print_path_line() self.display_handler.print_folder_content(0) self.user_handler.set_cursor() self.user_handler.window.refresh()
def modifyProject(self, form): #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO #print `form` db = self.__db cursor = self.__cursor hostname = self.__hostname # Handlers pHandler = ProjectDatabaseHandler(db, cursor) uHandler = UserHandler(db, cursor) # Get project ID from form projectID = form.getvalue("packetID") ownerID = form.getvalue("packetOwner") # get owner's name packetOwner = uHandler.getUserByID(ownerID) packetName = form.getvalue("packetName") packetDescription = form.getvalue("packetDescription") # access type: accessType = form.getvalue("private_or_public") if accessType == 'Private': isPrivate = True else: isPrivate = False # Lists of project readers & editors # In this view, these are list of INTEGER USER IDs # A User instance needs to be created for each!!!!!!! projectReaderIDs = form.getlist("projectReaders") projectWriterIDs = form.getlist("projectWriters") projectReaders = [] projectWriters = [] for rID in projectReaderIDs: tmpReader = uHandler.getUserByID(rID) projectReaders.append(tmpReader) for wID in projectWriterIDs: tmpWriter = uHandler.getUserByID(wID) projectWriters.append(tmpWriter) newProject = Packet(projectID, packetName, packetDescription, packetOwner, isPrivate, projectReaders, projectWriters) self.showProjectDetails('edit', newProject)
def sign_in(): if request.method == 'POST': data = deepcopy(request.json) if request.is_json else deepcopy(request.form) user_id = data.get('user_id') user_handler = UserHandler() result, result_msg = user_handler.sign_in(user_id) if not result: return jsonify({'res': 'error', 'msg': result_msg}) else: return jsonify({'res': 'ok', 'msg': result_msg}) else: return jsonify({'res': 'error', 'msg': 'request must be post'})
def save_user(request): user_dict = None response = Response().USER_DOES_NOT_EXIST try: user_dict = json.loads(request.body) except Exception: response = Response().INCOMING_DATA_CORRUPTED pass if user_dict: user_handler = UserHandler(user_dict=user_dict) response = user_handler.save_user() return HttpResponse(json.loads({'response':response}))
def handle(self): db = self.__db cursor = self.__cursor form = cgi.FieldStorage(keep_blank_values="True") uHandler = UserHandler(db, cursor) #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO #print `form` if form.has_key("username"): # store the user ID for use throughout the session; add to other views in addition to create in PHP currUname = form.getvalue("username") currUser = uHandler.getUserByDescription(currUname) Session.setUser(currUser) elif form.has_key("curr_user_id"): currUID = form.getvalue("curr_user_id") currUser = uHandler.getUserByID(currUID) Session.setUser(currUser) if form.has_key("create_project"): self.createProject(form) elif form.has_key("modify_project"): self.modifyProject(form) elif form.has_key("save_project"): self.saveProject(form) elif form.has_key("cancel_project"): self.cancelModification(form) elif form.has_key("delete_project"): self.deleteProject(form) elif form.has_key("view_project"): self.printProjectInfo(form) elif form.has_key("view_packet"): # go to project view from User detailed view self.viewPacket(form) # Oct. 12, 2010 elif form.has_key("search_project_by_keyword"): self.findPacket(form) cursor.close() db.close()
def new_game(self, user_id): content = ContentHandler().get_content(played=self.get_user_history(user_id)) battle_tag = "%s#%d" % (UserHandler().get_user(user_id)['username'], random.randint(1111, 9999)) entry = { 'battle_tag': battle_tag, 'content_id': content['_id'], 'users': {user_id: {'result': []}}, 'status': 'requested' } result = self.game.find_one({'_id': self.game.insert_one(entry).inserted_id}) result['title'] = content['title'] log.info(result) return result
def new_user(): """ create a user """ data = json.loads(request.data) username = data.get('username') password = data.get('password') try: user = UserHandler().add_user(username, password) except DuplicateKeyError as e: raise InvalidUsage(str(e), status_code=403) return json.dumps(UserHandler.to_dict(user))
def get_user(request): user_dict = None response = Response().USER_DOES_NOT_EXIST user = {} try: user_dict = json.loads(request.body) except Exception: response = Response().INCOMING_DATA_CORRUPTED pass if user_dict: user_handler = UserHandler(user_dict=user_dict) user = user_handler.user_as_dict() response = user_handler.response_number return HttpResponse(json.loads({'response':response, 'user':user}))
def viewUser(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` uHandler = UserHandler(db, cursor) userID = form.getvalue("view_user") newUser = uHandler.getUserByID(userID) self.printUserInfo('view', newUser)
def setUp(self): stdscr = curses.initscr() curses.start_color() self.folder_handler = FolderHandler(default_path) self.display_handler = DisplayHandler(self.folder_handler, stdscr) self.user = UserHandler(self.folder_handler, self.display_handler, stdscr) self.functions_dic = {} for name, cls in inspect.getmembers( importlib.import_module("available_functions"), inspect.isclass): function = cls(self) self.functions_dic.update({type(function).__name__: function})
def get_player_history(self, user_id): history = [] key = "users.%s" % user_id games = self.game.find({key: {'$exists': 1}}) for game in games: content = ContentHandler().get_content(content_id=game['content_id']) res = {'score': [], 'opponents': {}, 'title': content['title']} for key in game['users']: if user_id == key: res['score'] = game['users'][key]['result'] else: name = UserHandler().get_user(key)['username'] res['opponents'][name] = game['users'][key]['result'] if len(res['score']) > 0 or len(res['opponents'].keys()) > 1: history.append(res) return history
def cancelUserModification(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` uHandler = UserHandler(db, cursor) pHandler = ProjectDatabaseHandler(db, cursor) userID = int(form.getvalue('userID')) newUser = uHandler.getUserByID(userID) self.printUserInfo('view', newUser)
def get_users(self, user_filename): '''Get complete list of all users. ''' users = set() user_handler = UserHandler() try: with open(user_filename, 'r') as user_file: for entry in user_file: entry = user_handler.format_user_followers_entry(entry) new_users = user_handler.get_new_users(users, entry) users.update(new_users) return users except IOError: print('The file cannot be opened.') except FormatError: print('Tweet file entry incorrectly formatted')
def get_user_followers_mapping(self, user_filename): '''Get mapping of users to the users they follow. ''' user_handler = UserHandler() user_followers_mapping = {} try: with open(user_filename, 'r') as user_file: for entry in user_file: entry = user_handler.format_user_followers_entry(entry) user_followers = user_handler.update_user_followers_mapping( user_followers_mapping, entry) user_followers_mapping[ user_followers[0]] = user_followers[1] return user_followers_mapping except IOError: print('The file cannot be opened.') except FormatError: print('Tweet file entry incorrectly formatted')
def findAllProjects(self, isPrivate=""): #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO db = self.db cursor = self.cursor uHandler = UserHandler(db, cursor) projects = [] if isPrivate == "": cursor.execute("SELECT packetID, ownerID, packetName, packetDescription FROM Packets_tbl WHERE status='ACTIVE'") results = cursor.fetchall() for result in results: packetID = int(result[0]) ownerID = int(result[1]) packetName = result[2] packetDescr = result[2] packetOwner = uHandler.getUserByID(ownerID) newPacket = Packet(packetID, packetName, packetDescr, packetOwner) projects.append(newPacket) else: cursor.execute("SELECT packetID, ownerID, packetName, packetDescription FROM Packets_tbl WHERE is_private=" + `isPrivate` + " AND status='ACTIVE'") results = cursor.fetchall() for result in results: packetID = int(result[0]) ownerID = int(result[1]) packetName = result[2] packetDescr = result[2] packetOwner = uHandler.getUserByID(ownerID) newPacket = Packet(packetID, packetName, packetDescr, packetOwner) projects.append(newPacket) return projects
def login(event, context): body = json.loads(event['body']) user_handler = UserHandler(body) result = {} if user_handler.login_body_checker(): result = user_handler.verify_user() return { 'statusCode': 200, 'headers': user_handler.headers, 'body': json.dumps(result) } result['status'] = False result['message'] = "Credentials check failed" return { 'statusCode': 200, 'headers': user_handler.headers, 'body': json.dumps(result) }
def modifyUser(self, form): db = self.__db cursor = self.__cursor hostname = self.__hostname uHandler = UserHandler(db, cursor) lHandler = LabHandler(db, cursor) pHandler = ProjectDatabaseHandler(db, cursor) ucMapper = UserCategoryMapper(db, cursor) category_Name_ID_Map = ucMapper.mapCategoryNameToID() #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO #print `form` # Get form values userID = int(form.getvalue("userID")) newUser = uHandler.getUserByID(userID) ''' labID = int(form.getvalue("labID")) username = form.getvalue("username") firstName = form.getvalue("firstName") lastName = form.getvalue("lastName") description = firstName + " " + lastName email = form.getvalue("email") passwd = form.getvalue("password") ''' readProjects = pHandler.findMemberProjects(userID, 'Reader') newUser.setReadProjects(readProjects) writeProjects = pHandler.findMemberProjects(userID, 'Writer') newUser.setWriteProjects(writeProjects) self.printUserInfo('edit', newUser)
def findProjectMembers(self, projectID, role): db = self.db cursor = self.cursor #print "Content-type:text/html" # TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!! #print # DITTO uHandler = UserHandler(db, cursor) members = [] # include status='ACTIVE' clause; otherwise a DEP member might be selected causing an error cursor.execute("SELECT p.memberID, u.firstname, u.lastname, u.description, u.category, u.labID, l.lab_name, l.description FROM ProjectMembers_tbl p, Users_tbl u, LabInfo_tbl l WHERE p.packetID=" + `projectID` + " AND p.role=" + `role` + " AND u.userID=p.memberID AND l.labID=u.labID AND p.status='ACTIVE' AND u.status='ACTIVE' AND l.status='ACTIVE'") results = cursor.fetchall() for result in results: memberID = int(result[0]) # removed, more efficient and accurate to rewrite query here and include 'status=ACTIVE' clause #member = uHandler.getUserByID(memberID) memberFirstName = result[1] memberLastName = result[2] memberFullName = result[3] memberCategory = int(result[4]) memberLabID = result[5] labName = result[6] labDescr = result[7] tempLab = Laboratory(memberLabID, labName, labDescr) member = User(memberID, "", memberFirstName, memberLastName, memberFullName, tempLab, memberCategory) members.append(member) return members