Exemple #1
0
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})
Exemple #2
0
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})
Exemple #3
0
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)
Exemple #4
0
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
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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 '添加成功'
Exemple #8
0
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})
Exemple #9
0
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})
Exemple #10
0
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)
Exemple #11
0
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})
Exemple #12
0
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})
Exemple #13
0
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)
Exemple #14
0
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})
Exemple #15
0
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})
Exemple #16
0
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)