from flask_restplus import Resource, fields from flask import request from src.models import Prize, Challenge, Sponsor from src.helpers.prize_helper import format_prizes from src.routes import namespace, api from src.helpers.user_helper import current_user from src import dbi create_prize_model = api.model( 'Prize', { 'challengeId': fields.Integer(required=True), 'sponsorId': fields.Integer(required=True), 'name': fields.String(required=True), 'count': fields.Integer(required=True) }) update_prize_model = api.model( 'Prize', { 'id': fields.Integer(required=True), 'sponsorId': fields.Integer(required=True), 'name': fields.String(required=True), 'count': fields.Integer(required=True) }) @namespace.route('/prize') class RestfulPrize(Resource): @namespace.doc('create_prize') @namespace.expect(create_prize_model, validate=True) def post(self): user = current_user()
from flask_restplus import Resource, fields from src import delayed, dbi from src.routes import namespace, api from src.services import create_project, train_model from src.models import Project # Formats to compare request param structures against create_project_model = api.model('Project', {'repo': fields.String(required=True)}) train_project_model = api.model('Project', {'uid': fields.String(required=True)}) @namespace.route('/projects') class CreateProject(Resource): """Create new project""" @namespace.doc('create_project') @namespace.expect(create_project_model, validate=True) def post(self): # Get project repository url repo = api.payload['repo'] # Schedule a create_new_project service delayed.add_job(create_project.perform, args=[repo]) return '', 200 @namespace.route('/train') class TrainProject(Resource):
from flask_restplus import Resource, fields from src.routes import namespace, api from src.helpers.user_helper import current_user from src.helpers.prize_helper import format_prizes from src.helpers.sponsor_helper import format_sponsors from src.helpers.challenge_helper import format_challenges, current_week_num from operator import attrgetter from src.challenges import universal_challenge_info from datetime import datetime, timedelta from src import dbi, logger from src.models import Challenge from src.helpers.error_codes import CHALLENGE_NOT_EXIST, INVALID_CHALLENGE_ACCESS update_challenge_section_model = api.model( 'Challenge', { 'id': fields.Integer(required=True), 'text': fields.String(required=True), 'points': fields.Integer(required=True) }) # TODO: Validate JSON field types for 'suggestions' and 'challenges' below # update_suggestions_model = api.model('Challenge', { # 'id': fields.Integer(required=True), # 'suggestions': fields.String(required=True) # }) # update_challenges_model = api.model('Challenge', { # 'challenges': fields.String(required=True), # 'startDate': fields.String(required=True) # })
from flask_restplus import Resource, fields from src.models import Sponsor from src.routes import namespace, api from src.helpers.sponsor_helper import format_sponsors from src.helpers.user_helper import current_user from src import dbi, logger from slugify import slugify from src.integrations.s3 import upload_image from uuid import uuid4 create_sponsor_model = api.model('Sponsor', { 'logo': fields.String(required=True), 'name': fields.String(required=True), 'url': fields.String(required=True) }) @namespace.route('/sponsor') class RestfulSponsor(Resource): @namespace.doc('create_sponsor') @namespace.expect(create_sponsor_model, validate=True) def post(self): user = current_user() if not user or not user.is_admin: return '', 403 school = user.school
from flask_restplus import Resource, fields from src.routes import namespace, api from src.helpers.user_helper import current_user from src.helpers import random_subset from src.helpers.winner_helper import formatted_winners from src import dbi from operator import attrgetter from datetime import date from src.models import Winner, User, Prize, CheckInAnswer from src.mailers import challenge_mailer from random import shuffle choose_winners_model = api.model( 'Winner', {'challenge_id': fields.Integer(required=True)}) @namespace.route('/winners') class RestfulWinners(Resource): @namespace.doc('get_formatted_winners_list') def get(self): user = current_user() if not user or not user.is_admin: return '', 403 challenges = sorted(user.school.active_challenges(), key=attrgetter('start_date')) data = formatted_winners(challenges) return data
from flask import request from flask_restplus import Resource, fields from src import dbi, logger from src.api_responses.errors import * from src.api_responses.success import * from src.helpers.definitions import auth_header_name from src.helpers.user_helper import current_user from src.models import User from src.routes import namespace, api from src.utils import auth_util # Models used to "match" what a request's params should look like create_user_model = api.model( 'User', { 'email': fields.String(required=True), 'name': fields.String(required=True), 'password': fields.String(required=True) }) user_login_model = api.model( 'User', { 'email': fields.String(required=True), 'password': fields.String(required=True) }) @namespace.route('/user') class CreateUser(Resource): """Lets you POST to create a new user""" @namespace.doc('create_user') @namespace.expect(create_user_model, validate=True)
from flask_restplus import Resource, fields import os from operator import attrgetter from datetime import date from src import dbi, logger from src.helpers import auth_util, user_validation, decode_url_encoded_str from src.helpers.user_helper import current_user from src.models import User, Token, School from src.routes import namespace, api from src.mailers import user_mailer create_user_model = api.model('User', { 'email': fields.String(required=True), 'name': fields.String(required=True), 'age': fields.String(required=False), 'gender': fields.String(required=False), 'school': fields.String(required=True) }) verify_email_model = api.model('VerifyEmail', { 'userId': fields.Integer(required=True), 'token': fields.String(required=True) }) verify_demo_token_model = api.model('VerifyDemoToken', { 'token': fields.String(required=True) }) trigger_forgot_pw_email_model = api.model('TriggerForgotPwEmail', { 'email': fields.String(required=True) })
from flask_restplus import Resource, fields from src.models import School from src.routes import namespace, api from src import dbi school_model = api.model( 'School', { 'name': fields.String(), 'slug': fields.String(), 'domains': fields.List(fields.String()) }) schools_model = api.model('Schools', { 'schools': fields.List(fields.Nested(school_model)), }) @namespace.route('/schools') class GetSchools(Resource): """Fetch all non-destroyed Schools""" @namespace.doc('get_schools') @namespace.marshal_with(schools_model) def get(self): schools = dbi.find_all(School, {'is_demo': False}) school_data = [{ 'name': s.name, 'slug': s.slug, 'domains': s.domains } for s in schools] return {'schools': school_data}