def add_group_member(gid, members):
    appid = APPID
    if len(members) == 0:
        return

    db.begin()
    for member_id in members:
        try:
            Group.add_group_member(db, gid, member_id)
        except pymysql.err.IntegrityError as e:
            if e.args[0] != 1062:
                raise

    db.commit()

    for member_id in members:
        v = {
            "group_id": gid,
            "member_id": member_id,
            "timestamp": int(time.time())
        }
        op = {"add_member": v}
        send_group_notification(appid, gid, op, [member_id])

        content = {
            "group_id": gid,
            "member_id": member_id,
            "name": Group.GROUP_EVENT_MEMBER_ADD
        }
        publish_message(rds, content)
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 obj.has_key('do_not_disturb'):
        User.set_group_do_not_disturb(g.rds, appid, uid, gid,
                                      obj['do_not_disturb'])
    elif obj.has_key('nickname'):
        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 obj.has_key('mute'):
        mute = 1 if obj['mute'] else 0
        Group.update_mute(g._db, gid, uid, mute)
        content = "%d,%d,%d" % (gid, memberid, mute)
        publish_message(g.rds, "group_member_mute", content)
    else:
        raise ResponseMeta(400, "no action")

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

    if uid != memberid:
        raise ResponseMeta(400, "setting other is forbidden")

    obj = json.loads(request.data)
    if obj.has_key('quiet'):
        User.set_group_do_not_disturb(g.rds, appid, uid, gid, obj['quiet'])
    elif obj.has_key('do_not_disturb'):
        User.set_group_do_not_disturb(g.rds, appid, uid, gid, obj['do_not_disturb'])
    elif obj.has_key('nickname'):
        Group.update_nickname(g._db, gid, uid, obj['nickname'])
        v = {
            "group_id":gid,
            "timestamp":int(time.time()),
            "nickname":obj['nickname'],
            "member_id":uid
        }
        op = {"update_member_nickname":v}
        send_group_notification(appid, gid, op, None)        
    else:
        raise ResponseMeta(400, "no action")

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

    members = Group.get_group_members(g._db, gid)

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

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

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

    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.º 5
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 obj.has_key('do_not_disturb'):
        User.set_group_do_not_disturb(g.rds, appid, uid, gid, obj['do_not_disturb'])
    elif obj.has_key('nickname'):
        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 obj.has_key('mute'):
        mute = 1 if obj['mute'] else 0
        Group.update_mute(g._db, gid, uid, mute)
        content = "%d,%d,%d" % (gid, memberid, mute)
        publish_message(g.rds, "group_member_mute", content)
    else:
        raise ResponseMeta(400, "no action")

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

    members = Group.get_group_members(g._db, gid)

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

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

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

    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.º 7
0
def group_member_setting(gid, memberid):
    appid = request.appid
    uid = request.uid

    if uid != memberid:
        raise ResponseMeta(400, "setting other is forbidden")

    obj = json.loads(request.data)
    if obj.has_key('quiet'):
        User.set_group_do_not_disturb(g.rds, appid, uid, gid, obj['quiet'])
    elif obj.has_key('do_not_disturb'):
        User.set_group_do_not_disturb(g.rds, appid, uid, gid, obj['do_not_disturb'])
    elif obj.has_key('nickname'):
        Group.update_nickname(g._db, gid, uid, obj['nickname'])
        v = {
            "group_id":gid,
            "timestamp":int(time.time()),
            "nickname":obj['nickname'],
            "member_id":uid
        }
        op = {"update_member_nickname":v}
        send_group_notification(appid, gid, op, None)        
    else:
        raise ResponseMeta(400, "no action")

    resp = {"success":True}
    return make_response(200, resp)
Exemplo n.º 8
0
def update_group(gid):
    appid = request.appid
    obj = json.loads(request.data)

    if obj.has_key('name'):
        name = obj["name"]
        Group.update_group_name(g._db, gid, name)
         
        v = {
            "group_id":gid,
            "timestamp":int(time.time()),
            "name":name
        }
        op = {"update_name":v}
        send_group_notification(appid, gid, op, None)
    elif obj.has_key('notice'):
        notice = obj["notice"]
        Group.update_group_notice(g._db, gid, notice)
        v = {
            "group_id":gid,
            "timestamp":int(time.time()),
            "name":notice
        }
        op = {"update_notice":v}
        send_group_notification(appid, gid, op, None)
    else:
        raise ResponseMeta(400, "patch nothing")
    
    resp = {"success":True}
    return make_response(200, resp)
Exemplo n.º 9
0
def update_group(gid):
    appid = request.appid
    obj = json.loads(request.data)

    if obj.has_key('name'):
        name = obj["name"]
        Group.update_group_name(g._db, gid, name)
         
        v = {
            "group_id":gid,
            "timestamp":int(time.time()),
            "name":name
        }
        op = {"update_name":v}
        send_group_notification(appid, gid, op, None)
    elif obj.has_key('notice'):
        notice = obj["notice"]
        Group.update_group_notice(g._db, gid, notice)
        v = {
            "group_id":gid,
            "timestamp":int(time.time()),
            "notice":notice
        }
        op = {"update_notice":v}
        send_group_notification(appid, gid, op, None)
    else:
        raise ResponseMeta(400, "patch nothing")
    
    resp = {"success":True}
    return make_response(200, resp)
def create_group(master, name, is_super, members):
    appid = APPID
    gid = Group.create_group(db, appid, master, name, is_super, members)

    s = 1 if is_super else 0
    content = {
        "group_id": gid,
        "app_id": appid,
        "super": s,
        "name": Group.GROUP_EVENT_CREATE
    }
    publish_message(rds, content)

    for mem in members:
        content = {
            "group_id": gid,
            "member_id": mem,
            "name": Group.GROUP_EVENT_MEMBER_ADD
        }
        publish_message(rds, content)

    v = {
        "group_id": gid,
        "master": master,
        "name": name,
        "members": members,
        "timestamp": int(time.time())
    }
    op = {"create": v}
    send_group_notification(appid, gid, op, members)

    return gid
Exemplo n.º 11
0
def update_group(gid):
    """更新群组名称"""
    appid = request.appid
    obj = json.loads(request.data)
    name = obj["name"]
    Group.update_group_name(db, gid, name)

    v = {"group_id": gid, "timestamp": int(time.time()), "name": name}
    op = {"update_name": v}
    send_group_notification(appid, gid, op, None)
Exemplo n.º 12
0
def remove_group_member(gid, memberid):
    appid = APPID
    Group.delete_group_member(db, gid, memberid)

    v = {"group_id": gid, "member_id": memberid, "timestamp": int(time.time())}
    op = {"quit_group": v}
    send_group_notification(appid, gid, op, [memberid])

    content = "%d,%d" % (gid, memberid)
    publish_message(rds, "group_member_remove", content)
Exemplo n.º 13
0
def delete_group(gid):
    appid = APPID
    Group.disband_group(db, gid)

    v = {"group_id": gid, "timestamp": int(time.time())}
    op = {"disband": v}
    send_group_notification(appid, gid, op, None)

    content = "%d" % gid
    publish_message(rds, "group_disband", content)
def delete_group(gid):
    appid = APPID
    Group.disband_group(db, gid)

    v = {"group_id": gid, "timestamp": int(time.time())}
    op = {"disband": v}
    send_group_notification(appid, gid, op, None)

    content = {"group_id": gid, "name": Group.GROUP_EVENT_DISBAND}
    publish_message(rds, content)
Exemplo n.º 15
0
def remove_group_member(appid, gid, memberid):
    Group.delete_group_member(g._imdb, gid, memberid)
         
    v = {
        "group_id":gid,
        "member_id":memberid,
        "timestamp":int(time.time())
    }
    op = {"quit_group":v}
    send_group_notification(appid, gid, op, [memberid])
     
    content = "%d,%d"%(gid,memberid)
    publish_message(g.rds, "group_member_remove", content)
def remove_group_member(gid, memberid):
    appid = APPID
    Group.delete_group_member(db, gid, memberid)

    v = {"group_id": gid, "member_id": memberid, "timestamp": int(time.time())}
    op = {"quit_group": v}
    send_group_notification(appid, gid, op, [memberid])

    content = {
        "group_id": gid,
        "member_id": memberid,
        "name": Group.GROUP_EVENT_MEMBER_REMOVE
    }
    publish_message(rds, content)
Exemplo n.º 17
0
def update_group(gid):
    appid = request.appid
    obj = json.loads(request.data)
    name = obj["name"]
    Group.update_group_name(g._db, gid, name)

    v = {
        "group_id":gid,
        "timestamp":int(time.time()),
        "name":name
    }
    op = {"update_name":v}
    send_group_notification(appid, gid, op, None)

    return ""
Exemplo n.º 18
0
def delete_group(gid):
    appid = request.appid
    Group.disband_group(g._imdb, gid)

    v = {
        "group_id":gid,
        "timestamp":int(time.time())
    }
    op = {"disband":v}
    send_group_notification(appid, gid, op, None)

    content = "%d"%gid
    publish_message(g.rds, "group_disband", content)

    resp = {"success":True}
    return make_response(200, resp)
Exemplo n.º 19
0
def create_group():
    appid = request.appid
    obj = json.loads(request.data)
    master = obj["master"]
    name = obj["name"]
    is_super = obj["super"] if obj.has_key("super") else False
    members = obj["members"]

    if hasattr(request, 'uid') and request.uid != master:
        raise ResponseMeta(400, "master must be self")

    gid = 0
    if config.EXTERNAL_GROUP_ID:
        gid = obj['group_id'] if obj.has_key('group_id') else 0

    #支持members参数为对象数组
    #[{uid:"", name:"", avatar:"可选"}, ...]
    memberIDs = map(lambda m: m['uid'] if type(m) == dict else m, members)

    if gid > 0:
        gid = Group.create_group_ext(g._db, gid, appid, master, name, is_super,
                                     memberIDs)
    else:
        gid = Group.create_group(g._db, appid, master, name, is_super,
                                 memberIDs)

    s = 1 if is_super else 0
    content = "%d,%d,%d" % (gid, appid, s)
    publish_message(g.rds, "group_create", content)

    for mem in memberIDs:
        content = "%d,%d" % (gid, mem)
        publish_message(g.rds, "group_member_add", content)

    v = {
        "group_id": gid,
        "master": master,
        "name": name,
        "members": members,
        "timestamp": int(time.time())
    }
    op = {"create": v}
    send_group_notification(appid, gid, op, members)

    resp = {"data": {"group_id": gid}}
    return make_response(200, resp)
Exemplo n.º 20
0
def create_group():
    appid = request.appid
    obj = json.loads(request.data)
    master = obj["master"]
    name = obj["name"]
    is_super = obj["super"] if obj.has_key("super") else False
    members = obj["members"]

    if hasattr(request, 'uid') and request.uid != master:
        raise ResponseMeta(400, "master must be self")
        
    gid = 0
    if config.EXTERNAL_GROUP_ID:
        gid = obj['group_id'] if obj.has_key('group_id') else 0

    #支持members参数为对象数组
    #[{uid:"", name:"", avatar:"可选"}, ...]
    memberIDs = map(lambda m:m['uid'] if type(m) == dict else m, members)
    
    if gid > 0:
        gid = Group.create_group_ext(g._db, gid, appid, master, name, 
                                     is_super, memberIDs)
    else:
        gid = Group.create_group(g._db, appid, master, name, 
                                 is_super, memberIDs)
    
    s = 1 if is_super else 0
    content = "%d,%d,%d"%(gid, appid, s)
    publish_message(g.rds, "group_create", content)
    
    for mem in memberIDs:
        content = "%d,%d"%(gid, mem)
        publish_message(g.rds, "group_member_add", content)
    
    v = {
        "group_id":gid, 
        "master":master, 
        "name":name, 
        "members":members,
        "timestamp":int(time.time())
    }
    op = {"create":v}
    send_group_notification(appid, gid, op, members)

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

    members = Group.get_group_members(db, gid)

    if not group:
        raise ResponseMeta(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.º 22
0
def remove_group_member(appid, gid, member):
    memberid = member['uid']
    Group.delete_group_member(g._db, gid, memberid)
         
    v = {
        "group_id":gid,
        "member_id":memberid,
        "timestamp":int(time.time())
    }
    if member.get('name'):
        v['name'] = member['name']
    if member.get('avatar'):
        v['avatar'] = member['avatar']
            
    op = {"quit_group":v}
    send_group_notification(appid, gid, op, [memberid])
     
    content = "%d,%d"%(gid,memberid)
    publish_message(g.rds, "group_member_remove", content)
Exemplo n.º 23
0
def remove_group_member(appid, gid, member):
    memberid = member['uid']
    Group.delete_group_member(g._db, gid, memberid)
         
    v = {
        "group_id":gid,
        "member_id":memberid,
        "timestamp":int(time.time())
    }
    if member.get('name'):
        v['name'] = member['name']
    if member.get('avatar'):
        v['avatar'] = member['avatar']
            
    op = {"quit_group":v}
    send_group_notification(appid, gid, op, [memberid])
     
    content = "%d,%d"%(gid,memberid)
    publish_message(g.rds, "group_member_remove", content)
Exemplo n.º 24
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)

    content = "%d"%gid
    publish_message(g.rds, "group_disband", content)

    resp = {"success":True}
    return make_response(200, resp)
Exemplo n.º 25
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)

    content = "%d" % gid
    publish_message(g.rds, "group_disband", content)

    resp = {"success": True}
    return make_response(200, resp)
Exemplo n.º 26
0
def delete_group(gid):
    appid = request.appid

    #群组管理员有权限解散群
    master = Group.get_group_master(g._db, gid)
    if master != request.uid:
        raise ResponseMeta(400, "no authority")
    
    Group.disband_group(g._db, gid)

    v = {
        "group_id":gid,
        "timestamp":int(time.time())
    }
    op = {"disband":v}
    send_group_notification(appid, gid, op, None)

    content = "%d"%gid
    publish_message(g.rds, "group_disband", content)

    resp = {"success":True}
    return make_response(200, resp)
Exemplo n.º 27
0
def delete_group(gid):
    appid = request.appid

    #群组管理员有权限解散群
    master = Group.get_group_master(g._db, gid)
    if master != request.uid:
        raise ResponseMeta(400, "no authority")
    
    Group.disband_group(g._db, gid)

    v = {
        "group_id":gid,
        "timestamp":int(time.time())
    }
    op = {"disband":v}
    send_group_notification(appid, gid, op, None)

    content = "%d"%gid
    publish_message(g.rds, "group_disband", content)

    resp = {"success":True}
    return make_response(200, resp)
Exemplo n.º 28
0
def create_group(master, name, is_super, members):
    appid = APPID
    gid = Group.create_group(db, appid, master, name, is_super, members)

    s = 1 if is_super else 0
    content = "%d,%d,%d" % (gid, appid, s)
    publish_message(rds, "group_create", content)

    for mem in members:
        content = "%d,%d" % (gid, mem)
        publish_message(rds, "group_member_add", content)

    v = {
        "group_id": gid,
        "master": master,
        "name": name,
        "members": members,
        "timestamp": int(time.time())
    }
    op = {"create": v}
    send_group_notification(appid, gid, op, members)

    return gid
Exemplo n.º 29
0
    g._db.commit()

    for m in members:
        member_id = m['uid'] if type(m) == dict else m
        v = {
            "group_id":gid,
            "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']
            
        op = {"add_member":v}
        send_group_notification(appid, gid, op, [member_id])
         
        content = "%d,%d"%(gid, member_id)
        publish_message(g.rds, "group_member_add", content)

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


def remove_group_member(appid, gid, member):
    memberid = member['uid']
    Group.delete_group_member(g._db, gid, memberid)
         
    v = {
        "group_id":gid,
        "member_id":memberid,
Exemplo n.º 30
0
            Group.add_group_member(db, gid, member_id)
        except umysql.SQLError, e:
            #1062 duplicate member
            if e[0] != 1062:
                raise

    db.commit()

    for member_id in members:
        v = {
            "group_id": gid,
            "member_id": member_id,
            "timestamp": int(time.time())
        }
        op = {"add_member": v}
        send_group_notification(appid, gid, op, [member_id])

        content = "%d,%d" % (gid, member_id)
        publish_message(rds, "group_member_add", content)


def remove_group_member(gid, memberid):
    appid = APPID
    Group.delete_group_member(db, gid, memberid)

    v = {"group_id": gid, "member_id": memberid, "timestamp": int(time.time())}
    op = {"quit_group": v}
    send_group_notification(appid, gid, op, [memberid])

    content = "%d,%d" % (gid, memberid)
    publish_message(rds, "group_member_remove", content)