def kf_group_interfaces_manage_checkban(group_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) try: page = int(data.get("range", 1)) except ValueError: return Response(json.dumps({ 'error': "ForbiddenOperationException", 'errorMessage': "Invalid request args." }), status=403, mimetype='application/json; charset=utf-8') return Response(json.dumps([ (lambda x: { "create": x.create_time.timestamp(), "until": x.until.timestamp(), "length": x.until.timestamp() - x.create_time.timestamp(), ["user", "profile"][bool(x.profile)]: [x.profile, x.user][bool(x.profile)], "uuid": x.user })(i) for i in model.banner.select().where(model.banner.group == group_id)[15*(page - 1):15 * page] ]), mimetype='application/json; charset=utf-8')
def kf_group_interfaces_manage_ban_profile(group_id, kick_id, profile_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) selectResult = model.member.select().where( (model.member.group == group_id) & (model.member.user == kick_id) & (model.member.is_disabled == False) ) if not selectResult: raise Exceptions.InvalidRequestData() selectResult = selectResult.get() profile = model.profile.select().where( (model.profile.uuid == profile_id) & (model.profile.createby == user_uuid) ) if not profile: raise Exceptions.InvalidRequestData() ban = model.banner( user=kick_id, profile=profile.get().profile_id, create_time=datetime.datetime.now(), group=group_id, until=datetime.datetime.fromtimestamp( time.time() + float(int(data.get("after")))) ) ban.save() return Response(status=204)
def kf_group_interfaces_manager_checkjoin_length(group_id, extra=None): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) if not extra: length = model.review.select().where( (model.review.group == group_id) ).count() else: if extra not in ["non-enabled", "enabled", "accessed", "non-accessed"]: raise Exceptions.InvalidRequestData() length = model.review.select().where( (model.review.group == group_id) & { "non-enabled": (model.review.isEnable == False), "enabled": (model.review.isEnable == True), "accessed": (model.review.isAccessed == True), "non-accessed": (model.review.isAccessed == False) }[extra] ).count() return Response(json.dumps({ "length": length }), mimetype='application/json; charset=utf-8')
def kf_group_interfaces_manage_manager_down(group_id, user_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid G.is_super_manager(group_id, user_id) selectResult = G.isManager(group_id, user_id) selectResult.permission = "common_user" selectResult.managedown_number += 1 selectResult.save() return Response(status=204)
def kf_group_interfaces_manage_setting_change(group_id, setting_name): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid group = G.get_group(group_id) manager = G.isManager(group_id, user_uuid) if setting_name not in [ "joinway", "name", "enable_yggdrasil", "enable_invite", "enable_public_joinhistory", "enable_public_memberlist" ]: raise Exceptions.InvalidRequestData() value = data.get("change_value") if setting_name == "joinway": if value not in ["public_join", "public_join_review", "private"]: raise Exceptions.InvalidRequestData() group.joinway = value if setting_name == "name": if not re.match(r"[a-zA-Z0-9\u4E00-\u9FA5_-]{4,16}$", value): raise Exceptions.InvalidRequestData() group.name = value if setting_name == "enable_yggdrasil": if not type(value) == bool: raise Exceptions.InvalidRequestData() group.enable_yggdrasil = value if setting_name == "enable_invite": if not type(value) == bool: raise Exceptions.InvalidRequestData() group.enable_invite = value if setting_name == "enable_public_joinhistory": if not type(value) == bool: raise Exceptions.InvalidRequestData() group.enable_public_joinhistory = value if setting_name == "enable_public_memberlist": if not type(value) == bool: raise Exceptions.InvalidRequestData() group.enable_public_memberlist = value group.save() return Response(status=204)
def kf_group_interfaces_manage_checkjoin_non_accessed(group_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) return Response(json.dumps([(lambda x: { "id": x.id, "user": x.user, "time": x.time.timestamp(), "enabled": x.isEnabled, })(i) for i in model.review.select().where( (model.review.group == group_id) & (model.review.isAccessed == False) )]), mimetype='application/json; charset=utf-8')
def kf_group_interfaces_manage_setting(group_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid group = G.get_group(group_id) selectResult = G.isManager(group_id, user_uuid) return Response(json.dumps({ "name": group.name, "joinway": group.joinway, "enable": { "yggdrasil": group.enable_yggdrasil, "invite": group.enable_invite, "public_joinhistory": group.enable_public_joinhistory, "public_memberlist": group.enable_public_memberlist } }), mimetype='application/json; charset=utf-8')
def kf_group_interfaces_manage_checkjoin_refuse(group_id, review_id): data = G.autodata(request) token = G.auto_verify(request) user = model.getuser_uuid(token.get("user")) user_uuid = user.uuid group = G.get_group(group_id) manager = G.isManager(group_id, user_uuid) selectResult = model.review.select().where( (model.review.id == review_id) & (model.review.group == group_id) ) if not selectResult: raise Exceptions.InvalidToken() selectResult = selectResult.get() if selectResult.isEnable != True: raise Exceptions.InvalidRequestData() selectResult.isEnable = False selectResult.isAccessed = False for i in model.member.select().where( (model.member.group == selectResult.group) & ((model.member.permission == "manager") | (model.member.permission == "super_manager")) & (model.member.is_disabled == True) & (model.member.user != manager.uuid) ): model.message( to=i.user, title="用户 %(user)s 面向组 %(group)s 的加组申请被拒绝" % ( [user.uuid, user.username][bool(user.username)], group.name), body="用户 %(user)s 面向组 %(group)s 的加组申请被组管理员 %(manager)s 拒绝" % ([user.uuid, user.username][bool( user.username)], group.name, [manager.uuid, manager.username][bool(manager.username)]), extra=json.dumps({ "user": user_uuid, "group": group.id, "manager": manager.uuid }) ) return Response(status=204)
def kf_group_interfaces_manage_kick(group_id, kick_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) selectResult = model.member.select().where( (model.member.group == group_id) & (model.member.user == kick_id) & (model.member.is_disabled == False) ) if not selectResult: raise Exceptions.InvalidRequestData() selectResult = selectResult.get() selectResult.is_disabled = True selectResult.move_times += 1 selectResult.be_kicked_times_total += 1 selectResult.save() return Response(status=204)
def kf_group_interfaces_manage_checkjoin_info(group_id, review_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) selectResult = model.review.select().where( (model.review.id == review_id) & (model.review.group == group_id) ) if not selectResult: raise Exceptions.InvalidToken() selectResult = selectResult.get() return Response(json.dumps({ "id": selectResult.id, "user": selectResult.user, "time": selectResult.time.timestamp(), "enabled": selectResult.isEnabled, "accessed": selectResult.isAccessed }), mimetype='application/json; charset=utf-8')
def kf_group_interfaces_manage_checkban_user(group_id, user_id): data = G.autodata(request) token = G.auto_verify(request) user_uuid = model.getuser_uuid(token.get("user")).uuid selectResult = G.isManager(group_id, user_uuid) if model.member.select().where( (model.member.group == group_id) & (model.member.user == user_id) & (model.member.is_disabled == False) ): raise Exceptions.InvalidToken() return Response(json.dumps([ (lambda x: { "create": x.create_time.timestamp(), "until": x.until.timestamp(), "length": x.until.timestamp() - x.create_time.timestamp(), [b"user", "profile"][bool(x.profile)]: [b"INSTEAD", x.profile][not bool(x.profile)], "uuid": x.user })(i) for i in model.banner.select().where((model.banner.group == group_id) & (model.banner.user == user_id)) ], skipkeys=True), mimetype='application/json; charset=utf-8')