Exemple #1
0
def read_news(session_token, news_id, is_mark):
    """
    标记/已读
    :param session_token:
    :param news_id:
    :param is_mark:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    news = News.query.filter_by(id=news_id).first()
    if news is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss news'}}), 200
    reads = Reads(belongUserId=user_id, newsId=news_id)
    reads.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    reads.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(reads)
    db.session.commit()
    if is_mark == 1:
        create_marks(session_token=session_token,
                     is_public=True,
                     position_id=news.positionId,
                     goods_id=news.goodsId)
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
Exemple #2
0
def create_space(session_token, name, is_public, avatar, group_id):
    """
    创建组,并创建一条关联记录
    todo check user belong group
    :param group_id:
    :param avatar:
    :param is_public:
    :param name:
    :param session_token:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200
    space = Space(name=name,
                  avatar=avatar,
                  belongGroupId=group_id,
                  belongUserId=user_id,
                  isPublic=is_public)
    space.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    space.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(space)
    db.session.commit()
    return jsonify({"objectId": str(space.id)})
Exemple #3
0
def create_goods(session_token,
                 name,
                 is_public,
                 avatar,
                 coordinate,
                 position_id,
                 type,
                 internal_id=""):
    """
    创建组,并创建一条关联记录
    :param internal_id:
    :param type:
    :param position_id:
    :param coordinate:
    :param avatar:
    :param is_public:
    :param name:
    :param session_token:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200
    position = Position.query.filter_by(id=position_id).first()
    if position is None:
        return jsonify({"result": {
            "error_code": 1,
            "msg": 'miss position'
        }}), 200
    goods = Goods(name=name,
                  avatar=avatar,
                  coordinate=coordinate,
                  belongUserId=user_id,
                  belongGroupId=position.belongGroupId,
                  isPublic=is_public,
                  spaceId=position.spaceId,
                  positionId=position_id,
                  type=type)
    goods.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    goods.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(goods)
    db.session.commit()
    save_news(user,
              title="",
              content="",
              type=1,
              space_id=goods.spaceId,
              position_id=goods.positionId,
              goods_id=goods.id)
    return jsonify({"objectId": str(goods.id), "__internalId": internal_id})
Exemple #4
0
def create_invite_code(session_token, group_id):
    """
    创建邀请码
    todo 时效性 唯一性
    :param session_token:
    :param group_id:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    group = Group.query.filter_by(id=group_id, belongUserId=user_id).first()
    if group is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200
    group.checkCode = str(random.randint(1000, 9999))
    group.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({
        "result": {
            "data": {
                "checkCode": group.checkCode
            },
            "error_code": 0,
            "msg": "邀请码创建成功"
        }
    })
Exemple #5
0
def modify_user_info(session_token="",
                     first_name="",
                     last_name="",
                     email="",
                     password="",
                     avatar="",
                     default_group_id=-1):
    """
    修改用户信息接口
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({'code': 1, 'msg': 'miss user'})
    if first_name != "":
        user.firstName = first_name
    if last_name != "":
        user.lastName = last_name
    if email != "":
        user.email = email
    if avatar != "":
        user.avatar = avatar
    if password != "":
        user.password = util.get_md5(password)
    if default_group_id != -1:
        user.defaultGroupId = default_group_id
    user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "信息修改成功"}})
Exemple #6
0
def update_notes(session_token, todo_id, note, is_public, is_disable):
    """
    更新一条项目记录
    :param is_disable:
    :param session_token:
    :param todo_id:
    :param is_public:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    obj = Notes.query.filter_by(id=todo_id, belongUserId=user_id).first()
    if obj is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200
    if note != "":
        obj.note = note
    if is_public is not None:
        obj.isPublic = is_public
    if is_disable is not None:
        obj.isDisable = is_disable
    obj.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()

    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
Exemple #7
0
def update_goods(session_token, todo_id, name, is_public, avatar, desc,
                 is_disable, coordinate):
    """
    更新一条项目记录
    :param session_token:
    :param todo_id:
    :param name:
    :param is_public:
    :param avatar:
    :param desc:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    goods = Goods.query.filter_by(id=todo_id).first()
    if goods is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss goods'}}), 200
    if name != "":
        goods.name = name
    if is_public is not None:
        goods.isPublic = is_public
    if desc != "":
        goods.desc = desc
    if avatar != "":
        goods.avatar = avatar
    if coordinate != "":
        goods.coordinate = coordinate
    if is_disable is not None:
        goods.isDisable = is_disable
    goods.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
Exemple #8
0
def update_group(session_token, todo_id, name, is_public, avatar, desc,
                 is_disable, belong_user_id):
    """
    更新一条项目记录
    :param session_token:
    :param todo_id:
    :param name:
    :param is_public:
    :param avatar:
    :param desc:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    group = Group.query.filter_by(id=todo_id, belongUserId=user_id).first()
    if group is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200
    if name != "":
        group.name = name
    if is_public is not None:
        group.isPublic = is_public
    if avatar != "":
        group.avatar = avatar
    if desc != "":
        group.desc = desc
    if is_disable is not None:
        group.isDisable = is_disable
    if belong_user_id != -1:
        group.belongUserId = belong_user_id
    group.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
Exemple #9
0
def update_space(session_token, todo_id, name, is_public, avatar, is_disable):
    """
    更新一条项目记录
    todo check user belong group
    :param is_disable:
    :param session_token:
    :param todo_id:
    :param name:
    :param is_public:
    :param avatar:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    space = Space.query.filter_by(id=todo_id, belongUserId=user_id).first()
    if space is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss space'}}), 200
    if name != "":
        space.name = name
    if is_public is not None:
        space.isPublic = is_public
    if avatar != "":
        space.avatar = avatar
    if is_disable is not None:
        space.isDisable = is_disable
    space.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "空间修改成功"}})
Exemple #10
0
def create_group(session_token,
                 name,
                 is_public,
                 avatar,
                 desc,
                 return_type="jsonify"):
    """
    创建组,并创建一条关联记录
    :param return_type:
    :param desc:
    :param avatar:
    :param is_public:
    :param name:
    :param session_token:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200
    group = Group(name=name,
                  avatar=avatar,
                  desc=desc,
                  belongUserId=user_id,
                  isPublic=is_public)
    group.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    group.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(group)
    db.session.commit()
    group_user = GroupUser(userId=user_id, groupId=group.id)
    group_user.isAudit = 1
    group_user.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    group_user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(group_user)
    db.session.commit()
    if return_type == "jsonify":
        return jsonify({"objectId": str(group.id)})
    else:
        return {
            "result": {
                "data": {
                    "groupId": group.id
                },
                "error_code": 0,
                "msg": "项目创建成功"
            }
        }
Exemple #11
0
def send_code_by_email(username=""):
    """
    1.查找用户表指定用户,如无数据则添加一条数据
    2.生成4位随机数,发送邮件
    :param username:
    :return:
    """
    user = User.query.filter_by(username=username).first()
    if user is None:
        user = User(username=username, email=username)
        db.session.add(user)
        user.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    user.checkCode = str(random.randint(1000, 9999))
    user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    send_email("homekit验证码邮件", "您的验证码为{}".format(user.checkCode), username)
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "邮件发送成功"}})
Exemple #12
0
def register(
    first_name="",
    last_name="",
    username="",
    email="",
    check_code="",
    password="",
    avatar="",
):
    """
    注册接口
    """
    user = User.query.filter_by(username=username).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": '验证码不存在'}}), 200
    if user.checkCode != check_code:
        return jsonify({"result": {"error_code": 1, "msg": '验证码不正确'}}), 200
    user.checkCode = ""
    if user.password is not None:
        return jsonify({"result": {"error_code": 1, "msg": '用户已注册'}}), 200
    user.firstName = first_name
    user.lastName = last_name
    user.password = util.get_md5(password)
    user.avatar = avatar
    user.sessionToken = util.generate_auth_token(APP_SECRET, user.id)
    user.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    ret = create_group(user.sessionToken,
                       "未命名",
                       False,
                       "",
                       "未填写备注",
                       return_type="json")
    user.defaultGroupId = ret["result"]["data"]["groupId"]
    db.session.commit()
    return jsonify({
        "result": {
            "data": {
                "sessionToken": user.sessionToken
            },
            "error_code": 0,
            "msg": "注册成功"
        }
    })
Exemple #13
0
def create_marks(session_token, is_public, position_id, goods_id):
    """
    创建组,并创建一条关联记录
    :param position_id:
    :param goods_id:
    :param is_public:
    :param session_token:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200
    position = Position.query.filter_by(id=position_id).first()
    if position is None:
        return jsonify({"result": {
            "error_code": 1,
            "msg": 'miss position'
        }}), 200
    marks = Marks.query.filter_by(belongUserId=user_id,
                                  goodsId=goods_id).first()
    if marks is not None:
        return jsonify({"result": {"error_code": 1, "msg": '已经标注过了呢'}}), 200
    marks = Marks(belongUserId=user_id,
                  belongGroupId=user.defaultGroupId,
                  spaceId=position.spaceId,
                  positionId=position_id,
                  goodsId=goods_id,
                  isPublic=is_public)
    marks.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    marks.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(marks)
    db.session.commit()
    if goods_id != -1 and goods_id is not None:
        save_news(user,
                  title="",
                  content="",
                  type=2,
                  space_id=position.spaceId,
                  position_id=position_id,
                  goods_id=goods_id)
    return jsonify({"objectId": str(marks.id)})
Exemple #14
0
def login(username="", password=""):
    """
    登录接口
    """
    user = User.query.filter_by(username=username).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": '验证码不存在'}}), 200
    if user.password != util.get_md5(password):
        return jsonify({"result": {"error_code": 1, "msg": '密码不正确'}}), 200
    user.sessionToken = util.generate_auth_token(APP_SECRET, user.id)
    user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return pack_users_me(user)
Exemple #15
0
def join_group(session_token, check_code):
    """
    加入组
    :param session_token:
    :param check_code:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    group = Group.query.filter_by(checkCode=check_code).first()
    if group is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200
    group_user = GroupUser.query.filter_by(
        userId=user_id,
        groupId=group.id).filter(GroupUser.isDisable == 0).first()
    if group_user:
        return jsonify(
            {"result": {
                "error_code": 1,
                "msg": 'you have been joined'
            }}), 200
    else:
        group_user = GroupUser(userId=user_id, groupId=group.id)
        group_user.createdAt = util.get_mysql_datetime_from_iso(
            util.get_iso8601())
        group_user.updatedAt = util.get_mysql_datetime_from_iso(
            util.get_iso8601())
        group_user.isAudit = 0
        db.session.add(group_user)
        group.checkCode = ""
        db.session.commit()
        return jsonify(
            {"result": {
                "data": {},
                "error_code": 0,
                "msg": "项目加入成功"
            }})
Exemple #16
0
def create_notes(session_token, note, is_public, goods_id):
    """
    创建组,并创建一条关联记录
    :param goods_id:
    :param note:
    :param is_public:
    :param session_token:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200
    goods = Goods.query.filter_by(id=goods_id).first()
    if goods is None:
        return jsonify({"result": {
            "error_code": 1,
            "msg": 'miss position'
        }}), 200
    notes = Notes(note=note,
                  belongUserId=user_id,
                  belongGroupId=user.defaultGroupId,
                  spaceId=goods.spaceId,
                  positionId=goods.positionId,
                  goodsId=goods_id,
                  isPublic=is_public)
    notes.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    notes.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(notes)
    db.session.commit()
    save_news(user,
              title="",
              content=note,
              type=3,
              space_id=goods.spaceId,
              position_id=goods.positionId,
              goods_id=goods_id)
    return jsonify({"objectId": str(notes.id)})
Exemple #17
0
def create_position(session_token, name, is_public, avatar, space_id,
                    coordinate):
    """
    创建组,并创建一条关联记录
    :param desc:
    :param avatar:
    :param is_public:
    :param name:
    :param session_token:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200
    space = Space.query.filter_by(id=space_id).first()
    if space is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss space'}}), 200
    position = Position(name=name,
                        avatar=avatar,
                        coordinate=coordinate,
                        belongUserId=user_id,
                        belongGroupId=space.belongGroupId,
                        isPublic=is_public,
                        spaceId=space_id)
    position.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    position.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(position)
    db.session.commit()
    save_news(user,
              title="",
              content="",
              type=4,
              space_id=position.spaceId,
              position_id=position.id,
              goods_id=-1)
    return jsonify({"objectId": str(position.id)})
Exemple #18
0
def reset_password(username="", check_code="", password=""):
    """
    重置密码接口
    """
    user = User.query.filter_by(username=username).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": '验证码不存在'}}), 200
    if user.checkCode != check_code:
        return jsonify({"result": {"error_code": 1, "msg": '验证码不正确'}}), 200
    user.checkCode = ""
    if user.password is None:
        return jsonify({"result": {"error_code": 1, "msg": '用户尚未注册'}}), 200
    user.password = util.get_md5(password)
    user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "密码重置成功"}})
Exemple #19
0
def update_group_user(session_token, todo_id, is_disable, is_audit):
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    group_user = GroupUser.query.filter_by(id=todo_id).first()
    if group_user is None:
        return jsonify({"result": {
            "error_code": 1,
            "msg": 'miss group_user'
        }}), 200
    if is_disable is not None:
        group_user.isDisable = is_disable
    if is_audit is not None:
        print(is_audit)
        print(group_user.isAudit)
        group_user.isAudit = is_audit
        print(group_user.isAudit)
    group_user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
Exemple #20
0
def update_position(session_token, todo_id, name, is_public, avatar,
                    coordinate, is_disable):
    """
    更新一条项目记录
    :param is_disable:
    :param session_token:
    :param todo_id:
    :param name:
    :param is_public:
    :param avatar:
    :param coordinate:
    :return:
    """
    user_id = util.review_auth_token(APP_SECRET, session_token)
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200
    position = Position.query.filter_by(id=todo_id,
                                        belongUserId=user_id).first()
    if position is None:
        return jsonify({"result": {
            "error_code": 1,
            "msg": 'miss position'
        }}), 200
    if name != "":
        position.name = name
    if is_public is not None:
        position.isPublic = is_public
    if avatar != "":
        position.avatar = avatar
    if coordinate != "":
        position.coordinate = coordinate
    if is_disable is not None:
        position.isDisable = is_disable
    position.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.commit()
    return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
Exemple #21
0
def save_news(user,
              title="",
              content="",
              type=1,
              space_id=-1,
              position_id=-1,
              goods_id=-1):
    """
    type
        1 添加物品
        2 标记物品
        3 备注
    :param user:
    :param title:
    :param content:
    :param type:
    :param space_id:
    :param position_id:
    :param goods_id:
    :return:
    """
    space = Space.query.filter_by(id=space_id).first()
    if space is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss space'}}), 200
    position = Position.query.filter_by(id=position_id).first()
    if position is None:
        return jsonify({"result": {
            "error_code": 1,
            "msg": 'miss position'
        }}), 200
    goods = Goods.query.filter_by(id=goods_id).first()
    if goods_id != -1 and space is None:
        return jsonify({"result": {"error_code": 1, "msg": 'miss goods'}}), 200
    avatar = ""
    if type == 1:
        title = "{} 在 #{}/{} 添加了{}".format(user.lastName + user.firstName,
                                           space.name, position.name,
                                           goods.name)
        avatar = goods.avatar
    elif type == 2:
        title = "{} 标记了{}".format(user.lastName + user.firstName, goods.name)
        avatar = goods.avatar
    elif type == 3:
        title = "{} 添加了备注".format(user.lastName + user.firstName)
        avatar = goods.avatar
    elif type == 4:
        title = "{} 在 #{} 添加了{}".format(user.lastName + user.firstName,
                                        space.name, position.name)
        avatar = space.avatar
    news = News(title=title,
                content=content,
                type=type,
                belongUserId=user.id,
                belongGroupId=space.belongGroupId,
                spaceId=space_id,
                positionId=position_id,
                goodsId=goods_id,
                avatar=avatar)
    news.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    news.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601())
    db.session.add(news)
    db.session.commit()