def query_flower(): import_flower('玫瑰花', 'rose', '主花', '爱情', '1.jpg', '暂无描述', '康乃馨', '满天星, 百合', 10) form = json.loads(request.data) msg = '查询失败' error = None flower_name = form['flower_name'] db = get_db() Flower = db.execute('SELECT * FROM flower WHERE cn_name = ?', (flower_name, )).fetchone() if Flower is None: error = '该花不存在' if error is None: msg = '查询成功' image = imageToStr(os.getcwd() + Flower['image']) return jsonify({ 'msg': msg, 'error': error, 'cn_name': Flower['cn_name'], 'en_name': Flower['en_name'], 'type': Flower['type'], 'flower_language': Flower['flower_language'], 'similar': Flower['similar'], 'combined': Flower['combined'], 'image': image, 'description': Flower['description'], 'price': Flower['price'] }) return jsonify({'msg': msg, 'error': error})
def register(): form = json.loads(request.data) phone_number = form['phone_number'] password = form['password'] nickname = form['nickname'] db = get_db() error = None # id = None msg = 'Failed register.' if not phone_number: error = '请输入手机号.' elif not check_phone(phone_number): error = '手机号有误.' elif not password: error = '请输入密码' elif db.execute('SELECT id FROM user WHERE phone_number = ?', (phone_number, )).fetchone() is not None: error = '手机号 {} 已被注册'.format(phone_number) if error is None: db.execute( 'INSERT INTO user (ip, phone_number, password, nickname, head,' ' level, EXPoint, friend, personal_description, sex, age, region)' 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (request.remote_addr, phone_number, generate_password_hash(password), nickname, USER_IMAGE + 'default.jpg', 1, 0, '', '这个人很懒,什么也没有留下', '未知', '0', '未知')) db.commit() msg = '注册成功' return jsonify({'msg': msg}) return jsonify({'msg': msg, 'error': error})
def like(): form = json.loads(request.data) msg = '点赞失败' u_id, user = check_status(request) p_id = form['p_id'] error = None if user is None: error = '请先登录' if error is None: db = get_db() post = db.execute( 'SELECT p.id, nickname, liker, like' ' FROM post p JOIN user u ON p.author_id = u.id' ' WHERE p.id = ?', (p_id, )).fetchone() like = post['like'] likers = post['liker'].split(',') if str(u_id) not in likers: likers.append(str(u_id)) msg = '点赞成功' else: msg = '取消赞成功' likers.remove(str(u_id)) liker = ','.join(likers) like = len(liker.split(',')) - 1 db.execute('UPDATE post SET liker = ?, like = ?' ' WHERE id = ?', (liker, like, p_id)) db.commit() print(msg) return jsonify(msg=msg) return jsonify(msg=msg, error=error)
def check_status(request): form = json.loads(request.data) id = int(form['id']) db = get_db() user = db.execute('SELECT * FROM user WHERE id = ?', (id, )).fetchone() if user is None or user['ip'] != request.remote_addr: return id, None return id, user
def get_one(): p_id = Request(request, 'p_id').load() # form = json.loads(request.data) # p_id = int(form['p_id']) msg = '获取失败' error = None db = get_db() post = db.execute( 'SELECT p.id, nickname, liker, like, title, body, created, image' ', image_size, image_compressed, comment, author_id' ' FROM post p JOIN user u ON p.author_id = u.id' ' WHERE p.id = ?', (p_id, )).fetchone() if post is None: error = '该blog不存在' if error is None: msg = '获取成功' blog = {} infos = [ 'id', 'title', 'body', 'created', 'author_id', 'nickname', 'like', 'comment' ] for info in infos: blog[info] = post[info] blog['image'] = [] blog['image_size'] = post['image_size'] img_compressed = post['image_compressed'].split(',') for i, img in enumerate(post['image'].split(',')): if img_compressed[i]: blog['image'].append(imageToStr(get_outfile(os.getcwd() + img))) else: blog['image'].append(imageToStr(os.getcwd() + img)) # blog['image'] = ','.join(blog['image']) blog['likers'] = [] if post['like'] != 0: likers = post['liker'].split(',')[1:] for liker in likers: u_id = int(liker) nickname = db.execute('SELECT * FROM user WHERE id = ?', (u_id, )).fetchone()['nickname'] blog['likers'].append({'id': u_id, 'nickname': nickname}) comments = post['comment'].split('.')[:-1] blog['comment'] = [] for comment in comments: comment = comment.split(',') u_id = int(comment[0]) nickname = db.execute('SELECT * FROM user WHERE id = ?', (u_id, )).fetchone()['nickname'] blog['comment'].append({ 'id': u_id, 'nickname': nickname, 'comment': base64.b64decode(comment[1]) }) return jsonify(blog=blog, msg=msg) return jsonify(error=error, msg=msg)
def get_all(): msg = '获取成功' db = get_db() posts = db.execute( 'SELECT p.id, title, body, created, author_id, nickname,' ' like, liker, image, image_size, image_compressed, comment' ' FROM post p JOIN user u ON p.author_id = u.id' ' ORDER BY created DESC').fetchall() blogs = [] print(len(posts)) for post in posts: blog = {} infos = [ 'id', 'title', 'body', 'created', 'author_id', 'nickname', 'like', 'comment' ] for info in infos: blog[info] = post[info] blog['image'] = [] blog['image_size'] = post['image_size'] if post['image']: print(blog['image_size']) img_compressed = post['image_compressed'].split(',') for index, img in enumerate(post['image'].split(',')): # print(img_compressed[index]) if int(img_compressed[index]): blog['image'].append( imageToStr(get_outfile(os.getcwd() + img))) else: blog['image'].append(imageToStr(os.getcwd() + img)) # blog['image'] = ','.join(blog['image']) blog['likers'] = [] if post['like'] != 0: likers = post['liker'].split(',')[1:] for liker in likers: u_id = int(liker) nickname = db.execute('SELECT * FROM user WHERE id = ?', (u_id, )).fetchone()['nickname'] blog['likers'].append({'id': u_id, 'nickname': nickname}) comments = blog['comment'].split('||')[:-1] blog['comment'] = [] for comment in comments: comment = comment.split(',') u_id = int(comment[0]) nickname = db.execute('SELECT * FROM user WHERE id = ?', (u_id, )).fetchone()['nickname'] blog['comment'].append({ 'id': u_id, 'nickname': nickname, 'comment': base64.b64decode(comment[1]) }) blogs.append(blog) return jsonify(blogs=blogs, msg=msg)
def import_flower(cn_name, en_name, type, flower_language, image, description, similar_flower, combined_flower, price): db = get_db() db.execute( 'INSERT INTO flower (cn_name, en_name, type, flower_language, image,' ' description, similar_flower, combined_flower, price)' 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', (cn_name, en_name, type, flower_language, FLOWER_IMAGE + image, description, similar_flower, combined_flower, price)) db.commit() return '添加成功'
def logout(): id, user = check_status(request) msg = '下线失败。' error = None db = get_db() if user is None: error = '请先登录。' if error is None: db.execute('UPDATE user SET ip = ? WHERE id = ?', ('', id)) db.commit() msg = '下线成功' return jsonify({'msg': msg}) return jsonify({'msg': msg, 'error': error})
def update_friends(): form = json.loads(request.data) id, user = check_status(request) method = form['method'] # 添加或删除好友 type = form['type'] # 按昵称或手机号添加 friend_index = form['friend'] # 昵称或手机号 msg = '朋友更新失败.' error = None if user is None: error = '请先登录。' elif type not in ['phone_number', 'nickname']: error = '查找方式错误,按手机号或昵称查找.' if error is None: db = get_db() friend = db.execute('SELECT id FROM user WHERE ' + type + ' = ?', (friend_index, )).fetchone() if friend is None: error = '该用户不存在.' if error is None: friend_id = friend['id'] friends = user['friend'].split(',')[:-1] if method == 'add': if str(friend_id) in friends: error = '该用户已是好友.' msg = '添加失败' else: friends = ','.join(friends) + str(friend_id) + ',' db.execute('UPDATE user SET friend = ? WHERE id = ?', (friends, id)) db.commit() msg = '添加成功' elif method == 'delete': if str(friend_id) not in friends: error = '该用户不是好友.' msg = '删除失败' else: friends.remove(str(friend_id)) friends = ','.join(friends) db.execute('UPDATE user SET friend = ? WHERE id = ?', (friends, id)) db.commit() msg = '删除成功' return jsonify({ 'msg': msg, 'friends': friends.split(',')[-1], }) return jsonify({'msg': msg, 'error': error})
def comment(): u_id, user = check_status(request) data = json.loads(request.data) p_id = data['p_id'] msg = '评论失败' error = None comment = data['comment'] if comment == '': error = '请输入评论' if error is None: msg = '评论成功' db = get_db() post = db.execute( 'SELECT p.id, title, body, nickname, created, liker, like, comment' ' FROM post p JOIN user u ON p.author_id = u.id' ' WHERE p.id = ?', (p_id, )).fetchone() comment = post['comment'] + str( user['id']) + ',' + base64.b64encode(comment) + '.' db = get_db() db.execute('UPDATE post SET comment = ?' ' WHERE id = ?', (comment, p_id)) db.commit() return jsonify(msg=msg) return jsonify(msg=msg, error=error)
def update_personal_info(): form = json.loads(request.data) id, user = check_status(request) # 判断用户是否登陆 msg = '修改失败。' error = None db = get_db() phone_number = form['phone_number'] nickname = form['nickname'].strip() img = form['head'] personal_description = form['personal_description'] sex = form['sex'] age = int(form['age']) region = form['region'] if user is None: error = '请先登录。' elif not check_nickname(nickname): error = '昵称有误' elif len(personal_description) > 200: error = '个人描述过长' elif sex not in ['男', '女', '未知']: error = '性别有误' elif age < 0: error = '年龄有误' if error is None: head = USER_IMAGE + str(id) + '.jpg' strToImage(img, os.getcwd() + head) db.execute( 'UPDATE user SET nickname = ?, head = ?, personal_description = ?,' 'sex = ?, age = ?, region = ?, phone_number = ? WHERE id = ?', (nickname, head, personal_description, sex, age, region, phone_number, id)) db.commit() msg = '修改成功' return jsonify({ 'error': error, 'msg': msg, 'head': img, 'phone_number': phone_number, 'nickname': nickname, 'personal_description': personal_description, 'sex': sex, 'age': age, 'region': region }) return jsonify({'msg': msg, 'error': error})
def login(): form = json.loads(request.data) phone_number = form['phone_number'] password = form['password'] db = get_db() error = None msg = '登陆失败' user = db.execute('SELECT * FROM user WHERE phone_number = ?', (phone_number, )).fetchone() if user is None: error = '该用户不存在' elif not check_password_hash(user['password'], password): error = '密码错误' if error is None: msg = '登陆成功.' if user['ip'] != '': msg += '用户在另一ip已登录 {}'.format(user['ip']) db.execute('UPDATE user SET ip = ?' ' WHERE id = ?', (request.remote_addr, user['id'])) db.commit() head = imageToStr(os.getcwd() + user['head']) return jsonify({ 'msg': msg, 'id': user['id'], 'phone_number': phone_number, 'password': password, 'error': error, 'nickname': user['nickname'], 'level': user['level'], 'EXPoint': user['EXPoint'], 'friend': user['friend'], 'personal_description': user['personal_description'], 'sex': user['sex'], 'age': user['age'], 'region': user['region'], 'head': head }) return jsonify({'msg': msg, 'phone_number': phone_number, 'error': error})
def create(): form = json.loads(request.data) id, user = check_status(request) # title, body, imgs = Request(request, 'POST', 'title', 'body', 'image') title = form['title'] body = form['body'] # imgs = imgs.split(',') imgs = form['image'].split(',') print(len(imgs)) error = None msg = '发表失败' if user is None: error = '请先登录' if not title: error = '请输入标题' if error is None: msg = '发表成功' create_time = time.strftime("%Y%m%d%H%M%S") image = [] img_compress = [] image_size = [] for index, img in enumerate(imgs): if img: image.append(BLOG_IMAGE + str(id) + '_' + create_time + '_' + str(index) + '.jpg') image_path = os.getcwd() + image[index] strToImage(img, image_path) image_size.append(str(round(get_size(image_path), 3))) img_compress.append(str(resize(image_path, LIMIT))) db = get_db() print(image_size) db.execute( 'INSERT INTO post (title, body, author_id, like, liker' ', image, image_size, image_compressed, comment) VALUES (?, ?, ?, ' '?, ?, ?, ?, ?, ?)', (title, body, id, 0, '', ','.join(image), ','.join(image_size), ','.join(img_compress), '')) db.commit() return jsonify(msg=msg) return jsonify(msg=msg, error=error)
def query_user(): form = json.loads(request.data) id, user = check_status(request) type = form['type'] # 按昵称或手机号查询 User_index = form['User'] # 昵称或手机号 msg = '查询失败' error = None if user is None: error = '请先登录' elif type not in ['nickname', 'phone_number', 'id']: error = '查询方式错误' elif not User_index or User_index == 'None': error = '请输入用户' if error is None: db = get_db() Users = db.execute('SELECT * FROM user WHERE ' + type + ' = ?', (User_index, )).fetchall() if Users is None: error = '用户不存在' if error is None: msg = '查询成功' users = [] for User in Users: head = imageToStr(os.getcwd() + User['head']) users.append({ 'msg': msg, 'phone_number': User['phone_number'], 'nickname': User['nickname'], 'level': User['level'], 'EXPoint': User['EXPoint'], 'personal_description': User['personal_description'], 'sex': User['sex'], 'age': User['age'], 'region': User['region'], 'head': head }) return jsonify({'users': users, 'msg': msg}) return jsonify({'msg': msg, 'error': error})
def update_password(): form = json.loads(request.data) id, user = check_status(request) old_password = form['old_password'] new_password = form['new_password'] error = None msg = '修改失败' db = get_db() if user is None: error = '请先登录' elif not check_password_hash(user['password'], old_password): error = '原密码错误' if error is None: db.execute('UPDATE user SET password = ?' ' WHERE id = ?', (generate_password_hash(new_password), id)) db.commit() msg = '修改成功' return jsonify({ 'msg': msg, 'password': new_password, }) return jsonify({'msg': msg, 'error': error})
def get_image(): p_id, index = Request(request, 'GET', 'p_id', 'index').load() msg = '获取失败' error = None db = get_db() post = db.execute('SELECT id, image FROM post WHERE id = ?', (p_id, )).fetchone() if post is None: error = '该blog不存在' imgs = post['image'].split(',') if imgs is None or len(imgs) <= index: error = '图片不存在' if error is None: img = imgs[index] img_type = img.split('.')[-1] if img_type == 'jpg': img_type = 'jpeg' img_data = open(os.getcwd() + img, "rb").read() response = make_response(img_data) response.headers['Content-Type'] = 'image/' + img_type return response return jsonify(error=error, msg=msg)