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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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 ""
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)
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)
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)
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)
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)
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)
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)
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)
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
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,
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)