def post(self): req = request.get_json() user = get_current_user() req["user_id"] = user.id req["team_id"] = user.team_id Model = get_class_by_tablename(req["type"]) target = Model.query.filter_by(id=req["target"]).first_or_404() if target.cost > user.score: return ( { "success": False, "errors": { "score": "У вас недостаточно очков, чтобы разблокировать эту подсказку" }, }, 400, ) schema = UnlockSchema() response = schema.load(req, session=db.session) if response.errors: return {"success": False, "errors": response.errors}, 400 existing = Unlocks.query.filter_by(**req).first() if existing: return ( { "success": False, "errors": { "target": "Вы уже разблокировали это" }, }, 400, ) db.session.add(response.data) award_schema = AwardSchema() award = { "user_id": user.id, "team_id": user.team_id, "name": target.name, "description": target.description, "value": (-target.cost), "category": target.category, } award = award_schema.load(award) db.session.add(award.data) db.session.commit() clear_standings() response = schema.dump(response.data) return {"success": True, "data": response.data}
def post(self): req = request.get_json() user = get_current_user() req["user_id"] = user.id req["team_id"] = user.team_id Model = get_class_by_tablename(req["type"]) target = Model.query.filter_by(id=req["target"]).first_or_404() if target.cost > user.score: return ( { "success": False, "errors": { "score": "You do not have enough points to unlock this hint" }, }, 400, ) schema = UnlockSchema() response = schema.load(req, session=db.session) if response.errors: return {"success": False, "errors": response.errors}, 400 existing = Unlocks.query.filter_by(**req).first() if existing: return ( { "success": False, "errors": { "target": "You've already unlocked this this target" }, }, 400, ) db.session.add(response.data) award_schema = AwardSchema() award = { "user_id": user.id, "team_id": user.team_id, "name": target.name, "description": target.description, "value": (-target.cost), "category": target.category, } award = award_schema.load(award) db.session.add(award.data) db.session.commit() clear_standings() response = schema.dump(response.data) return {"success": True, "data": response.data}
def get(self): hints = Unlocks.query.all() schema = UnlockSchema() response = schema.dump(hints) if response.errors: return {"success": False, "errors": response.errors}, 400 return {"success": True, "data": response.data}
def get(self): hints = Unlocks.query.all() schema = UnlockSchema() response = schema.dump(hints) 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=Unlocks, query=q, field=field) unlocks = Unlocks.query.filter_by(**query_args).filter(*filters).all() schema = UnlockSchema() response = schema.dump(unlocks) if response.errors: return {"success": False, "errors": response.errors}, 400 return {"success": True, "data": response.data}
def post(self): req = request.get_json() user = get_current_user() req['user_id'] = user.id req['team_id'] = user.team_id Model = get_class_by_tablename(req['type']) target = Model.query.filter_by(id=req['target']).first_or_404() if target.cost > user.score: return { 'success': False, 'errors': { 'score': 'You do not have enough points to unlock this hint' } }, 400 schema = UnlockSchema() response = schema.load(req, session=db.session) if response.errors: return { 'success': False, 'errors': response.errors }, 400 db.session.add(response.data) award_schema = AwardSchema() award = { 'user_id': user.id, 'team_id': user.team_id, 'name': target.name, 'description': target.description, 'value': (-target.cost), 'category': target.category } award = award_schema.load(award) db.session.add(award.data) db.session.commit() response = schema.dump(response.data) return { 'success': True, 'data': response.data }
def post(self): req = request.get_json() user = get_current_user() req["user_id"] = user.id req["team_id"] = user.team_id Model = get_class_by_tablename(req["type"]) target = Model.query.filter_by(id=req["target"]).first_or_404() # We should use the team's score if in teams mode if is_teams_mode(): team = get_current_team() score = team.score else: score = user.score if target.cost > score: return ( { "success": False, "errors": { "score": "You do not have enough points to unlock this hint" }, }, 400, ) schema = UnlockSchema() response = schema.load(req, session=db.session) if response.errors: return {"success": False, "errors": response.errors}, 400 # Search for an existing unlock that matches the target and type # And matches either the requesting user id or the requesting team id existing = Unlocks.query.filter( Unlocks.target == req["target"], Unlocks.type == req["type"], (Unlocks.user_id == req["user_id"]) | (Unlocks.team_id == req["team_id"]), ).first() if existing: return ( { "success": False, "errors": {"target": "You've already unlocked this this target"}, }, 400, ) db.session.add(response.data) award_schema = AwardSchema() award = { "user_id": user.id, "team_id": user.team_id, "name": target.name, "description": target.description, "value": (-target.cost), "category": target.category, } award = award_schema.load(award) db.session.add(award.data) db.session.commit() clear_standings() response = schema.dump(response.data) return {"success": True, "data": response.data}