Exemplo n.º 1
0
def delete_group_member(gid):
    appid = request.appid
    obj = request.get_json(force=True, silent=True, cache=False)
    if obj is None:
        logging.debug("json decode err:%s", e)
        raise ResponseMeta(400, "json decode error")

    members = obj
    if len(members) == 0:
        raise ResponseMeta(400, "no memebers to delete")

    group = Group.get_group(g._db, gid)
    if not group:
        raise ResponseMeta(400, "group non exists")

    for m in members:
        if type(m) == int:
            member = {"uid": m}
        else:
            member = m

        remove_group_member(appid, gid, group['name'], member)

    resp = {"success": True}
    return make_response(200, resp)
Exemplo n.º 2
0
def group_member_setting(gid, memberid):
    appid = request.appid
    uid = memberid

    group = Group.get_group(g._db, gid)
    if not group:
        raise ResponseMeta(400, "group non exists")

    obj = json.loads(request.data)
    if 'do_not_disturb' in obj:
        User.set_group_do_not_disturb(g.rds, appid, uid, gid,
                                      obj['do_not_disturb'])
    elif 'nickname' in obj:
        Group.update_nickname(g._db, gid, uid, obj['nickname'])
        v = {
            "group_id": gid,
            "group_name": group['name'],
            "timestamp": int(time.time()),
            "nickname": obj['nickname'],
            "member_id": uid
        }
        op = {"update_member_nickname": v}
        send_group_notification(appid, gid, op, None)
    elif 'mute' in obj:
        mute = 1 if obj['mute'] else 0
        Group.update_mute(g._db, gid, uid, mute)
        Group.publish_member_mute_event(g.rds, gid, memberid, mute)
    else:
        raise ResponseMeta(400, "no action")

    resp = {"success": True}
    return make_response(200, resp)
Exemplo n.º 3
0
 def post(self):
     # create a new group
     session = get_current_session()
     user = session['account']
     name = self.request.get("name")
     date = datetime.datetime.now()
     group = Group.get_group(name)
     logging.info("fetched Group data for current name")
     if not group:
         key = Group(name=name,
                     created_on=date,
                     number_of_people=0,
                     admin="*****@*****.**",
                     users="").put()
         response = {}
         response['status'] = 200
         response['message'] = 'Group Created Successfully'
         logging.info("Group created successfully")
         self.response.out.write(json.dumps(response))
     else:
         response = {}
         response['status'] = 412
         response['message'] = 'Group already exist'
         logging.info("Group already exist")
         self.response.out.write(json.dumps(response))
Exemplo n.º 4
0
def leave_group_member(gid, memberid):
    appid = request.appid
    group = Group.get_group(g._db, gid)
    if not group:
        raise ResponseMeta(400, "group non exists")

    name = User.get_user_name(g.rds, appid, memberid)
    m = {"uid": memberid}
    if name:
        m['name'] = name
    remove_group_member(appid, gid, group['name'], m)

    resp = {"success": True}
    return make_response(200, resp)
Exemplo n.º 5
0
def upgrade_group(gid):
    """从普通群升级为超级群"""
    appid = APPID
    group = Group.get_group(db, gid)

    members = Group.get_group_members(db, gid)

    if not group:
        raise Exception(400, "group non exists")

    Group.update_group_super(db, gid, 1)

    content = "%d,%d,%d" % (gid, appid, 1)
    publish_message(rds, "group_upgrade", content)

    v = {"group_id": gid, "timestamp": int(time.time()), "super": 1}
    op = {"upgrade": v}
    send_group_notification(appid, gid, op, None)
Exemplo n.º 6
0
def delete_group(gid):
    appid = request.appid

    group = Group.get_group(g._db, gid)
    if not group:
        raise ResponseMeta(400, "group non exists")

    Group.disband_group(g._db, gid)
    v = {
        "group_id": gid,
        "group_name": group['name'],
        "timestamp": int(time.time())
    }
    op = {"disband": v}
    send_group_notification(appid, gid, op, None)

    Group.publish_disband_event(g.rds, gid)

    resp = {"success": True}
    return make_response(200, resp)
Exemplo n.º 7
0
def upgrade_group(gid):
    """从普通群升级为超级群"""
    appid = request.appid
    group = Group.get_group(g._db, gid)

    if not group:
        raise ResponseMeta(400, "group non exists")

    Group.update_group_super(g._db, gid, 1)

    Group.publish_upgrade_event(g.rds, appid, gid)

    v = {
        "group_id": gid,
        "group_name": group['name'],
        "timestamp": int(time.time()),
        "super": 1
    }
    op = {"upgrade": v}
    send_group_notification(appid, gid, op, None)

    resp = {"success": True}
    return make_response(200, resp)
Exemplo n.º 8
0
def add_group_member(gid):
    appid = request.appid
    obj = request.get_json(force=True, silent=True, cache=False)
    if obj is None:
        logging.debug("json decode err:%s", e)
        raise ResponseMeta(400, "json decode error")
    inviter = None
    if type(obj) is dict:
        if 'members' in obj:
            members = obj['members']
            inviter = obj.get('inviter')
        else:
            members = [obj]
    else:
        members = obj

    if len(members) == 0:
        return ""

    group = Group.get_group(g._db, gid)
    if not group:
        raise ResponseMeta(400, "group non exists")

    # 支持members参数为对象数组
    memberIDs = [m['uid'] if type(m) == dict else m for m in members]

    g._db.begin()
    for member_id in memberIDs:
        try:
            Group.add_group_member(g._db, gid, member_id)
            User.reset_group_synckey(g.rds, appid, member_id, gid)
        except pymysql.err.IntegrityError as e:
            # 可能是重新加入群
            #1062 duplicate member
            if e.args[0] != 1062:
                raise

    g._db.commit()

    for m in members:
        member_id = m['uid'] if type(m) == dict else m
        v = {
            "group_id": gid,
            "group_name": group['name'],
            "member_id": member_id,
            "timestamp": int(time.time())
        }
        if type(m) == dict and m.get('name'):
            v['name'] = m['name']
        if type(m) == dict and m.get('avatar'):
            v['avatar'] = m['avatar']
        if inviter:
            v['inviter'] = inviter

        op = {"add_member": v}
        send_group_notification(appid, gid, op, [member_id])

        Group.publish_member_add_event(g.rds, gid, member_id)

    resp = {"success": True}
    return make_response(200, resp)