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