def patch(self): team = get_current_team() if team.captain_id != session["id"]: return ( { "success": False, "errors": { "": ["Only team captains can edit team information"] }, }, 403, ) data = request.get_json() response = TeamSchema(view="self", instance=team, partial=True).load(data) if response.errors: return {"success": False, "errors": response.errors}, 400 db.session.commit() response = TeamSchema("self").dump(response.data) db.session.close() return {"success": True, "data": response.data}
def delete(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() data = request.get_json() user_id = data["user_id"] user = Users.query.filter_by(id=user_id).first_or_404() if user.team_id == team.id: team.members.remove(user) # Remove information that links the user to the team Submissions.query.filter_by(user_id=user.id).delete() Awards.query.filter_by(user_id=user.id).delete() Unlocks.query.filter_by(user_id=user.id).delete() db.session.commit() else: return ( {"success": False, "errors": {"id": ["User is not part of this team"]}}, 400, ) view = "admin" if is_admin() else "user" schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {"success": False, "errors": response.errors}, 400 members = response.data.get("members") return {"success": True, "data": members}
def post(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() data = request.get_json() user_id = data["user_id"] user = Users.query.filter_by(id=user_id).first_or_404() if user.team_id is None: team.members.append(user) db.session.commit() else: return ( { "success": False, "errors": { "id": ["User has already joined a team"] }, }, 400, ) view = "admin" if is_admin() else "user" schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {"success": False, "errors": response.errors}, 400 members = response.data.get("members") return {"success": True, "data": members}
def post(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() data = request.get_json() user_id = data['id'] user = Users.query.filter_by(id=user_id).first_or_404() if user.team_id is None: team.members.append(user) db.session.commit() else: return { 'success': False, 'errors': { 'id': ['User has already joined a team'] } }, 400 view = 'admin' if is_admin() else 'user' schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {'success': False, 'errors': response.errors}, 400 members = response.data.get('members') return {'success': True, 'data': members}
def delete(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() data = request.get_json() user_id = data['id'] user = Users.query.filter_by(id=user_id).first_or_404() if user.team_id == team.id: team.members.remove(user) db.session.commit() else: return { 'success': False, 'errors': { 'id': ['User is not part of this team'] } }, 400 view = 'admin' if is_admin() else 'user' schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {'success': False, 'errors': response.errors}, 400 members = response.data.get('members') return {'success': True, 'data': members}
def post(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() # Generate an invite code if no user or body is specified if len(request.data) == 0: invite_code = team.get_invite_code() response = {"code": invite_code} return {"success": True, "data": response} data = request.get_json() user_id = data.get("user_id") user = Users.query.filter_by(id=user_id).first_or_404() if user.team_id is None: team.members.append(user) db.session.commit() else: return ( { "success": False, "errors": {"id": ["User has already joined a team"]}, }, 400, ) view = "admin" if is_admin() else "user" schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {"success": False, "errors": response.errors}, 400 members = response.data.get("members") return {"success": True, "data": members}
def get(self): team = get_current_team() response = TeamSchema(view="self").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 get(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() view = 'admin' if is_admin() else 'user' schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {'success': False, 'errors': response.errors}, 400 members = response.data.get('members') return {'success': True, 'data': members}
def get(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() view = "admin" if is_admin() else "user" schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {"success": False, "errors": response.errors}, 400 members = response.data.get("members") return {"success": True, "data": members}
def load_teams_csv(dict_reader): schema = TeamSchema() errors = [] for i, line in enumerate(dict_reader): response = schema.load(line) if response.errors: errors.append((i, response.errors)) else: db.session.add(response.data) db.session.commit() if errors: return errors return True
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) view = TeamSchema.views.get(session.get("type", "user")) schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {"success": False, "errors": response.errors}, 400 return {"success": True, "data": response.data}
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) view = TeamSchema.views.get(session.get('type', 'user')) schema = TeamSchema(view=view) response = schema.dump(team) if response.errors: return {'success': False, 'errors': response.errors}, 400 return {'success': True, 'data': response.data}
def patch(self): team = get_current_team() data = request.get_json() response = TeamSchema(view='self', instance=team, partial=True).load(data) if response.errors: return {'success': False, 'errors': response.errors}, 400 db.session.commit() response = TeamSchema('self').dump(response.data) db.session.close() return {'success': True, 'data': response.data}
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 get(self): team = get_current_team() response = TeamSchema(view='self').dump(team) if response.errors: return {'success': False, 'errors': response.errors}, 400 return {'success': True, 'data': response.data}
def patch(self, team_id): team = Teams.query.filter_by(id=team_id).first_or_404() data = request.get_json() data["id"] = team_id schema = TeamSchema(view="admin", instance=team, partial=True) response = schema.load(data) if response.errors: return {"success": False, "errors": response.errors}, 400 response = schema.dump(response.data) db.session.commit() db.session.close() clear_standings() return {"success": True, "data": response.data}
def post(self): req = request.get_json() view = TeamSchema.views.get(session.get('type', 'self')) 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 post(self): req = request.get_json() view = TeamSchema.views.get(session.get("type", "self")) 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): teams = Teams.query.filter_by(hidden=False, banned=False) view = copy.deepcopy(TeamSchema.views.get(session.get("type", "user"))) 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): teams = Teams.query.filter_by(hidden=False, banned=False) view = copy.deepcopy(TeamSchema.views.get(session.get('type', 'user'))) 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 patch(self): team = get_current_team() if team.captain_id != session['id']: return { 'success': False, 'errors': { '': ['Only team captains can edit team information'] } }, 400 data = request.get_json() response = TeamSchema(view='self', instance=team, partial=True).load(data) if response.errors: return {'success': False, 'errors': response.errors}, 400 db.session.commit() response = TeamSchema('self').dump(response.data) db.session.close() return {'success': True, 'data': response.data}
def get(self): if is_admin() and request.args.get("view") == "admin": teams = Teams.query.filter_by() else: 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, 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, }