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 add_group_member(gid): appid = request.appid obj = json.loads(request.data) 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 = map(lambda m: m['uid'] if type(m) == dict else m, 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, e: # 可能是重新加入群 # 1062 duplicate member if e[0] != 1062: raise
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 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)
def add_group_member(gid): appid = request.appid obj = json.loads(request.data) 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 = map(lambda m:m['uid'] if type(m) == dict else m, 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 umysql.SQLError, e: #1062 duplicate member if e[0] != 1062: raise
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 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)
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)
def get_group(gid): appid = request.appid uid = request.uid obj = Group.get_group(g._imdb, gid) members = Group.get_group_members(g._imdb, gid) for m in members: name = User.get_user_name(g.rds, appid, uid) m['name'] = name if name else '' obj['members'] = members q = User.get_user_notification_quiet(g.rds, appid, uid, gid) obj['quiet'] = bool(q) resp = {"data":obj} return make_response(200, resp)
def get_group(gid): appid = request.appid uid = request.uid obj = Group.get_group(g._db, gid) members = Group.get_group_members(g._db, gid) for m in members: name = User.get_user_name(g.rds, appid, m['uid']) m['name'] = name if name else '' if not m.get('nickname'): m['nickname'] = "" obj['members'] = members q = User.get_group_do_not_disturb(g.rds, appid, uid, gid) obj['do_not_disturb'] = bool(q) resp = {"data":obj} return make_response(200, resp)
def get_group(gid): appid = request.appid uid = request.uid obj = Group.get_group(g._db, gid) members = Group.get_group_members(g._db, gid) for m in members: name = User.get_user_name(g.rds, appid, m['uid']) m['name'] = name if name else '' if not m.get('nickname'): m['nickname'] = "" obj['members'] = members q = User.get_group_do_not_disturb(g.rds, appid, uid, gid) obj['do_not_disturb'] = bool(q) resp = {"data":obj} return make_response(200, resp)
def delete_group_member(gid): appid = request.appid members = json.loads(request.data) 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)
def delete_group_member(gid): appid = request.appid members = json.loads(request.data) 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)
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 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]) content = { "group_id":gid, "member_id":member_id, "name":Group.GROUP_EVENT_MEMBER_ADD } publish_message(g.rds, content) resp = {"success":True} return make_response(200, resp)