def get(self): teams = Teams.query.filter_by(hidden=False, banned=False) user_type = get_current_user_type(fallback="user") view = copy.deepcopy(TeamSchema.views.get(user_type)) view.remove("members") response = TeamSchema(view=view, many=True).dump(teams) if response.errors: return {"success": False, "errors": response.errors}, 400 return {"success": True, "data": response.data}
def get(self, token_id): if is_admin(): token = Tokens.query.filter_by(id=token_id).first_or_404() else: token = Tokens.query.filter_by( id=token_id, user_id=session["id"]).first_or_404() user_type = get_current_user_type(fallback="user") schema = TokenSchema(view=user_type) response = schema.dump(token) if response.errors: return {"success": False, "errors": response.errors}, 400 return {"success": True, "data": response.data}
def get(self, user_id): user = Users.query.filter_by(id=user_id).first_or_404() if (user.banned or user.hidden) and is_admin() is False: abort(404) user_type = get_current_user_type(fallback="user") response = UserSchema(view=user_type).dump(user) if response.errors: return {"success": False, "errors": response.errors}, 400 response.data["place"] = user.place response.data["score"] = user.score return {"success": True, "data": response.data}
def verify(secret): user = Users.query.filter_by(secret=secret).first() if user is None: return {"success": False} if (user.banned or user.hidden) and is_admin() is False: return {"success": False} user_type = get_current_user_type(fallback="user") response = UserSchema(view=user_type).dump(user) if response.errors: return {"success": False, "errors": response.errors} return {"success": True, "username": response.data["name"]}
def get(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() if (team.banned or team.hidden) and is_admin() is False: abort(404) user_type = get_current_user_type(fallback="user") view = TeamSchema.views.get(user_type) schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {"success": False, "errors": response.errors}, 400 response.data["place"] = team.place response.data["score"] = team.score return {"success": True, "data": response.data}
def post(self): req = request.get_json() user_type = get_current_user_type() view = TeamSchema.views.get(user_type) schema = TeamSchema(view=view) response = schema.load(req) if response.errors: return {"success": False, "errors": response.errors}, 400 db.session.add(response.data) db.session.commit() response = schema.dump(response.data) db.session.close() clear_standings() return {"success": True, "data": response.data}
def get(self, query_args): q = query_args.pop("q", None) field = str(query_args.pop("field", None)) filters = build_model_filters(model=Teams, query=q, field=field) if is_admin() and request.args.get("view") == "admin": teams = ( Teams.query.filter_by(**query_args) .filter(*filters) .paginate(per_page=50, max_per_page=100) ) else: teams = ( Teams.query.filter_by(hidden=False, banned=False, **query_args) .filter(*filters) .paginate(per_page=50, max_per_page=100) ) user_type = get_current_user_type(fallback="user") view = copy.deepcopy(TeamSchema.views.get(user_type)) view.remove("members") response = TeamSchema(view=view, many=True).dump(teams.items) if response.errors: return {"success": False, "errors": response.errors}, 400 return { "meta": { "pagination": { "page": teams.page, "next": teams.next_num, "prev": teams.prev_num, "pages": teams.pages, "per_page": teams.per_page, "total": teams.total, } }, "success": True, "data": response.data, }