示例#1
0
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
示例#3
0
    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'])
示例#4
0
    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)
示例#5
0
    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
示例#6
0
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)
示例#7
0
    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)
示例#9
0
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]})
示例#10
0
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'})
示例#11
0
    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)
示例#12
0
    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)
示例#15
0
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'})
示例#16
0
文件: views.py 项目: greenac/mercury
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()
示例#18
0
 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
示例#19
0
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))
示例#20
0
文件: views.py 项目: greenac/mercury
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}))
示例#21
0
    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})
示例#23
0
 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
示例#24
0
    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)
示例#25
0
    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')
示例#26
0
 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
示例#28
0
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)
    }
示例#29
0
    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