def all(self): db = DatabaseManager.instance(UserManager.DATABASE_NAME) results = [] for data in db.query('SELECT * FROM user;'): results.append(User(data['username'], None, bool(data['admin']), data['id'], data['created'])) return results
def update_object(self, obj): if obj.id: try: pwd_hash = pwd_context.encrypt(obj.password) db = DatabaseManager.instance(UserManager.DATABASE_NAME) db.query(UserManager.UPDATE_OBJECT_QUERY, (obj.username, pwd_hash, int(obj.admin), obj.id,)) except Exception as e: print('Exception: %s' % e) raise ValueError('User with id does not exist.')
def authenticate(self, obj, password): try: db = DatabaseManager.instance(UserManager.DATABASE_NAME) data = db.query(UserManager.GET_OBJECT_QUERY, (obj.username,)).nextresult() if pwd_context.verify(password, data['password']): return True else: return False except: return False
def get_token_for_user(self, user): if user.id: try: db = DatabaseManager.instance(TokenManager.DATABASE_NAME) query = 'SELECT * FROM token WHERE userid=?;' token_data = db.query(query, (user.id,)).nextresult() return Token(user=user, token_id=token_data['id'], token=token_data['token'], created=token_data['created']) except: return None else: raise ValueError('User has no id.')
def delete_object(self, obj): if obj.id: db = DatabaseManager.instance(UserManager.DATABASE_NAME) db.query(UserManager.DELETE_OBJECT_QUERY, (obj.id,)) obj.id = None obj.created = None return True else: obj.id = None obj.created = None return False
def create_object(self, obj): db = DatabaseManager.instance(UserManager.DATABASE_NAME) try: pwd_hash = pwd_context.encrypt(obj.password) db.query(UserManager.CREATE_OBJECT_QUERY, (None, obj.username, pwd_hash, int(obj.admin), time.time(),)) user_data = db.query(UserManager.GET_OBJECT_QUERY, (obj.username,)).nextresult() obj.id = user_data['id'] obj.created = user_data['created'] except Exception as e: print('Exception: %s' % e) raise ValueError('username already exists.')
def create_object(self, obj): db = DatabaseManager.instance(TokenManager.DATABASE_NAME) try: if not self.get_token_for_user(obj.user): query_data = (None, obj.user.id, obj.token, time.time(),) db.query(TokenManager.CREATE_OBJECT_QUERY, params=query_data) token_data = db.query(TokenManager.GET_OBJECT_QUERY, (obj.token,)).nextresult() obj.id = token_data['id'] obj.created = token_data['created'] else: raise ValueError('token for this user already exists') except ValueError as e: raise e
def get(self, **kwargs): db = DatabaseManager.instance(UserManager.DATABASE_NAME) try: if 'id' in kwargs and 'username' in kwargs: data = db.query('SELECT * FROM user WHERE id=? AND username=?;', (kwargs['id'], kwargs['username'],)).nextresult() elif 'id' in kwargs: data = db.query('SELECT * FROM user WHERE id=?;', (kwargs['id'],)).nextresult() elif 'username' in kwargs: data = db.query('SELECT * FROM user WHERE username=?;', (kwargs['username'],)).nextresult() else: raise ValueError("Missing 'id' or 'username' kwargs.") if data: return User(data['username'], None, bool(data['admin']), data['id'], data['created']) else: return None except Exception as e: return None
def all(self): join = """ SELECT user.id AS user_id, user.username, user.admin, user.created AS user_created, token.id AS token_id, token.token, token.created AS token_created FROM user INNER JOIN token ON token.userid = user.id ORDER BY user.username, token.created; """ results = [] db = DatabaseManager.instance(TokenManager.DATABASE_NAME) for data in db.query(join): user = User(data['username'], None, bool(data['admin']), data['user_id'], data['user_created']) token = Token(user, data['token_id'], data['token'], data['token_created']) results.append(token) return results
def get(self, **kwargs): if 'token' in kwargs: join = """ SELECT user.id AS user_id, user.username, user.admin, user.created AS user_created, token.id AS token_id, token.token, token.created AS token_created FROM user INNER JOIN token ON token.userid = user.id WHERE token.token=?; """ db = DatabaseManager.instance(TokenManager.DATABASE_NAME) try: data = db.query(join, (kwargs['token'],)).nextresult() user = User(data['username'], None, bool(data['admin']), data['user_id'], data['user_created']) token = Token(user, data['token_id'], data['token'], data['token_created']) return token except: return None else: raise ValueError("Expecting 'token' in arguments.")
def delete_object(self, obj): if obj.id: db = DatabaseManager.instance(TokenManager.DATABASE_NAME) db.query(TokenManager.DELETE_OBJECT_QUERY, (obj.id,)) obj.id = None obj.created = None
def drop_table(self): db = DatabaseManager.instance(TokenManager.DATABASE_NAME) db.query(TokenManager.DROP_TABLE_QUERY)
def create_table(self): db = DatabaseManager.instance(TokenManager.DATABASE_NAME) if not db.table_exists('token'): db.query(TokenManager.CREATE_TABLE_QUERY)
def count(self): db = DatabaseManager.instance(TokenManager.DATABASE_NAME) return db.query(TokenManager.COUNT_OBJECT_QUERY, params=None, fetchall=False).nextresult()['COUNT(*)']
def count(self): db = DatabaseManager.instance(UserManager.DATABASE_NAME) return db.query(UserManager.COUNT_OBJECT_QUERY).nextresult()['COUNT(*)']