Skip to content
Snippets Groups Projects
Commit 9ec6c20c authored by robban64's avatar robban64 Committed by Victor Löfgren
Browse files

fix: moved parsers to api

parent b02b4102
No related branches found
No related tags found
1 merge request!99fix: moved parsers to api
Pipeline #42670 passed
import app.core.http_codes as codes import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import QuestionAlternativeDTO, QuestionDTO from app.core.dto import QuestionAlternativeDTO
from app.core.parsers import question_alternative_parser
from app.core.schemas import QuestionAlternativeSchema
from app.database.models import Question, QuestionAlternative
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
from flask_restx import reqparse
api = QuestionAlternativeDTO.api api = QuestionAlternativeDTO.api
schema = QuestionAlternativeDTO.schema schema = QuestionAlternativeDTO.schema
list_schema = QuestionAlternativeDTO.list_schema list_schema = QuestionAlternativeDTO.list_schema
question_alternative_parser = reqparse.RequestParser()
question_alternative_parser.add_argument("text", type=str, default=None, location="json")
question_alternative_parser.add_argument("value", type=int, default=None, location="json")
@api.route("") @api.route("")
@api.param("competition_id, slide_id, question_id") @api.param("competition_id, slide_id, question_id")
......
...@@ -2,16 +2,22 @@ import app.core.http_codes as codes ...@@ -2,16 +2,22 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import QuestionAnswerDTO from app.core.dto import QuestionAnswerDTO
from app.core.parsers import question_answer_edit_parser, question_answer_parser
from app.core.schemas import QuestionAlternativeSchema
from app.database.models import Question, QuestionAlternative, QuestionAnswer
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
from flask_restx import reqparse
api = QuestionAnswerDTO.api api = QuestionAnswerDTO.api
schema = QuestionAnswerDTO.schema schema = QuestionAnswerDTO.schema
list_schema = QuestionAnswerDTO.list_schema list_schema = QuestionAnswerDTO.list_schema
question_answer_parser = reqparse.RequestParser()
question_answer_parser.add_argument("data", type=dict, required=True, location="json")
question_answer_parser.add_argument("score", type=int, required=True, location="json")
question_answer_parser.add_argument("question_id", type=int, required=True, location="json")
question_answer_edit_parser = reqparse.RequestParser()
question_answer_edit_parser.add_argument("data", type=dict, default=None, location="json")
question_answer_edit_parser.add_argument("score", type=int, default=None, location="json")
@api.route("") @api.route("")
@api.param("competition_id, team_id") @api.param("competition_id, team_id")
......
...@@ -3,22 +3,31 @@ import app.database.controller as dbc ...@@ -3,22 +3,31 @@ import app.database.controller as dbc
from app.apis import check_jwt, item_response, text_response from app.apis import check_jwt, item_response, text_response
from app.core.codes import verify_code from app.core.codes import verify_code
from app.core.dto import AuthDTO, CodeDTO from app.core.dto import AuthDTO, CodeDTO
from app.core.parsers import create_user_parser, login_code_parser, login_parser
from app.database.models import User
from flask_jwt_extended import ( from flask_jwt_extended import (
create_access_token, create_access_token,
create_refresh_token, create_refresh_token,
get_jwt_identity, get_jwt_identity,
get_raw_jwt, get_raw_jwt,
jwt_refresh_token_required, jwt_refresh_token_required,
jwt_required,
) )
from flask_restx import Namespace, Resource, cors from flask_restx import Resource
from flask_restx import inputs, reqparse
api = AuthDTO.api api = AuthDTO.api
schema = AuthDTO.schema schema = AuthDTO.schema
list_schema = AuthDTO.list_schema list_schema = AuthDTO.list_schema
login_parser = reqparse.RequestParser()
login_parser.add_argument("email", type=inputs.email(), required=True, location="json")
login_parser.add_argument("password", required=True, location="json")
create_user_parser = login_parser.copy()
create_user_parser.add_argument("city_id", type=int, required=True, location="json")
create_user_parser.add_argument("role_id", type=int, required=True, location="json")
login_code_parser = reqparse.RequestParser()
login_code_parser.add_argument("code", type=str, location="json")
def get_user_claims(item_user): def get_user_claims(item_user):
return {"role": item_user.role.name, "city_id": item_user.city_id} return {"role": item_user.role.name, "city_id": item_user.city_id}
......
...@@ -2,9 +2,7 @@ import app.database.controller as dbc ...@@ -2,9 +2,7 @@ import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core import http_codes as codes from app.core import http_codes as codes
from app.core.dto import CodeDTO from app.core.dto import CodeDTO
from app.core.parsers import code_parser from app.database.models import Code
from app.database.models import Code, Competition
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
api = CodeDTO.api api = CodeDTO.api
......
...@@ -2,18 +2,27 @@ import time ...@@ -2,18 +2,27 @@ import time
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core import rich_schemas
from app.core.dto import CompetitionDTO from app.core.dto import CompetitionDTO
from app.core.parsers import competition_parser, competition_search_parser
from app.database.models import Competition from app.database.models import Competition
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
from flask_restx import reqparse
from app.core.parsers import search_parser
api = CompetitionDTO.api api = CompetitionDTO.api
schema = CompetitionDTO.schema schema = CompetitionDTO.schema
rich_schema = CompetitionDTO.rich_schema rich_schema = CompetitionDTO.rich_schema
list_schema = CompetitionDTO.list_schema list_schema = CompetitionDTO.list_schema
competition_parser = reqparse.RequestParser()
competition_parser.add_argument("name", type=str, location="json")
competition_parser.add_argument("year", type=int, location="json")
competition_parser.add_argument("city_id", type=int, location="json")
competition_search_parser = search_parser.copy()
competition_search_parser.add_argument("name", type=str, default=None, location="args")
competition_search_parser.add_argument("year", type=int, default=None, location="args")
competition_search_parser.add_argument("city_id", type=int, default=None, location="args")
@api.route("") @api.route("")
class CompetitionsList(Resource): class CompetitionsList(Resource):
......
...@@ -2,17 +2,28 @@ import app.core.http_codes as codes ...@@ -2,17 +2,28 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import ComponentDTO from app.core.dto import ComponentDTO
from app.core.parsers import component_create_parser, component_edit_parser, component_parser
from app.database.models import Competition, Component
from flask.globals import request
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
from flask_restx import reqparse
api = ComponentDTO.api api = ComponentDTO.api
schema = ComponentDTO.schema schema = ComponentDTO.schema
list_schema = ComponentDTO.list_schema list_schema = ComponentDTO.list_schema
component_parser = reqparse.RequestParser()
component_parser.add_argument("x", type=str, default=None, location="json")
component_parser.add_argument("y", type=int, default=None, location="json")
component_parser.add_argument("w", type=int, default=None, location="json")
component_parser.add_argument("h", type=int, default=None, location="json")
component_edit_parser = component_parser.copy()
component_edit_parser.add_argument("text", type=str, location="json")
component_edit_parser.add_argument("media_id", type=str, location="json")
component_create_parser = component_edit_parser.copy()
component_create_parser.add_argument("type_id", type=int, required=True, location="json")
@api.route("/<component_id>") @api.route("/<component_id>")
@api.param("competition_id, slide_id, component_id") @api.param("competition_id, slide_id, component_id")
class ComponentByID(Resource): class ComponentByID(Resource):
......
...@@ -2,11 +2,11 @@ import app.core.http_codes as codes ...@@ -2,11 +2,11 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import MediaDTO from app.core.dto import MediaDTO
from app.core.parsers import media_parser_search from app.core.parsers import search_parser
from app.database.models import City, Media, MediaType, QuestionType, Role from app.database.models import Media
from flask import request from flask import request
from flask_jwt_extended import get_jwt_identity, jwt_required from flask_jwt_extended import get_jwt_identity
from flask_restx import Resource, reqparse from flask_restx import Resource
from flask_uploads import UploadNotAllowed from flask_uploads import UploadNotAllowed
from sqlalchemy import exc from sqlalchemy import exc
import app.core.files as files import app.core.files as files
...@@ -16,6 +16,9 @@ image_set = MediaDTO.image_set ...@@ -16,6 +16,9 @@ image_set = MediaDTO.image_set
schema = MediaDTO.schema schema = MediaDTO.schema
list_schema = MediaDTO.list_schema list_schema = MediaDTO.list_schema
media_parser_search = search_parser.copy()
media_parser_search.add_argument("filename", type=str, default=None, location="args")
@api.route("/images") @api.route("/images")
class ImageList(Resource): class ImageList(Resource):
......
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, list_response
from app.core import http_codes from app.core import http_codes
from app.core.dto import MiscDTO from app.core.dto import MiscDTO
from app.database.models import City, Competition, ComponentType, MediaType, QuestionType, Role, User, ViewType from app.database.models import City, Competition, ComponentType, MediaType, QuestionType, Role, User, ViewType
from flask_jwt_extended import jwt_required
from flask_restx import Resource, reqparse from flask_restx import Resource, reqparse
from flask_restx import reqparse
api = MiscDTO.api api = MiscDTO.api
......
...@@ -2,15 +2,18 @@ import app.core.http_codes as codes ...@@ -2,15 +2,18 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import QuestionDTO from app.core.dto import QuestionDTO
from app.core.parsers import question_parser
from app.database.models import Question
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
from flask_restx import reqparse
api = QuestionDTO.api api = QuestionDTO.api
schema = QuestionDTO.schema schema = QuestionDTO.schema
list_schema = QuestionDTO.list_schema list_schema = QuestionDTO.list_schema
question_parser = reqparse.RequestParser()
question_parser.add_argument("name", type=str, default=None, location="json")
question_parser.add_argument("total_score", type=int, default=None, location="json")
question_parser.add_argument("type_id", type=int, default=None, location="json")
@api.route("/questions") @api.route("/questions")
@api.param("competition_id") @api.param("competition_id")
......
...@@ -2,15 +2,18 @@ import app.core.http_codes as codes ...@@ -2,15 +2,18 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import SlideDTO from app.core.dto import SlideDTO
from app.core.parsers import slide_parser
from app.database.models import Competition, Slide
from flask_jwt_extended import jwt_required
from flask_restx import Resource from flask_restx import Resource
from flask_restx import reqparse
api = SlideDTO.api api = SlideDTO.api
schema = SlideDTO.schema schema = SlideDTO.schema
list_schema = SlideDTO.list_schema list_schema = SlideDTO.list_schema
slide_parser = reqparse.RequestParser()
slide_parser.add_argument("order", type=int, default=None, location="json")
slide_parser.add_argument("title", type=str, default=None, location="json")
slide_parser.add_argument("timer", type=int, default=None, location="json")
@api.route("") @api.route("")
@api.param("competition_id") @api.param("competition_id")
......
...@@ -2,15 +2,16 @@ import app.core.http_codes as codes ...@@ -2,15 +2,16 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import TeamDTO from app.core.dto import TeamDTO
from app.core.parsers import team_parser from flask_restx import Resource, reqparse
from app.database.models import Competition, Team from flask_restx import reqparse
from flask_jwt_extended import get_jwt_identity, jwt_required
from flask_restx import Namespace, Resource, reqparse
api = TeamDTO.api api = TeamDTO.api
schema = TeamDTO.schema schema = TeamDTO.schema
list_schema = TeamDTO.list_schema list_schema = TeamDTO.list_schema
team_parser = reqparse.RequestParser()
team_parser.add_argument("name", type=str, location="json")
@api.route("") @api.route("")
@api.param("competition_id") @api.param("competition_id")
......
...@@ -2,18 +2,29 @@ import app.core.http_codes as codes ...@@ -2,18 +2,29 @@ import app.core.http_codes as codes
import app.database.controller as dbc import app.database.controller as dbc
from app.apis import check_jwt, item_response, list_response from app.apis import check_jwt, item_response, list_response
from app.core.dto import UserDTO from app.core.dto import UserDTO
from app.core.parsers import user_parser, user_search_parser from flask_jwt_extended import get_jwt_identity
from app.database.models import User from flask_restx import Resource
from flask import request from flask_restx import inputs, reqparse
from flask_jwt_extended import get_jwt_identity, jwt_required from app.core.parsers import search_parser
from flask_restx import Namespace, Resource
api = UserDTO.api api = UserDTO.api
schema = UserDTO.schema schema = UserDTO.schema
list_schema = UserDTO.list_schema list_schema = UserDTO.list_schema
user_parser = reqparse.RequestParser()
user_parser.add_argument("email", type=inputs.email(), location="json")
user_parser.add_argument("name", type=str, location="json")
user_parser.add_argument("city_id", type=int, location="json")
user_parser.add_argument("role_id", type=int, location="json")
def edit_user(item_user, args): user_search_parser = search_parser.copy()
user_search_parser.add_argument("name", type=str, default=None, location="args")
user_search_parser.add_argument("email", type=str, default=None, location="args")
user_search_parser.add_argument("city_id", type=int, default=None, location="args")
user_search_parser.add_argument("role_id", type=int, default=None, location="args")
def _edit_user(item_user, args):
email = args.get("email") email = args.get("email")
name = args.get("name") name = args.get("name")
...@@ -38,7 +49,7 @@ class UsersList(Resource): ...@@ -38,7 +49,7 @@ class UsersList(Resource):
def put(self): def put(self):
args = user_parser.parse_args(strict=True) args = user_parser.parse_args(strict=True)
item = dbc.get.user(get_jwt_identity()) item = dbc.get.user(get_jwt_identity())
item = edit_user(item, args) item = _edit_user(item, args)
return item_response(schema.dump(item)) return item_response(schema.dump(item))
...@@ -54,7 +65,7 @@ class Users(Resource): ...@@ -54,7 +65,7 @@ class Users(Resource):
def put(self, ID): def put(self, ID):
args = user_parser.parse_args(strict=True) args = user_parser.parse_args(strict=True)
item = dbc.get.user(ID) item = dbc.get.user(ID)
item = edit_user(item, args) item = _edit_user(item, args)
return item_response(schema.dump(item)) return item_response(schema.dump(item))
......
...@@ -6,104 +6,3 @@ search_parser.add_argument("page", type=int, default=0, location="args") ...@@ -6,104 +6,3 @@ search_parser.add_argument("page", type=int, default=0, location="args")
search_parser.add_argument("page_size", type=int, default=15, location="args") search_parser.add_argument("page_size", type=int, default=15, location="args")
search_parser.add_argument("order", type=int, default=1, location="args") search_parser.add_argument("order", type=int, default=1, location="args")
search_parser.add_argument("order_by", type=str, default=None, location="args") search_parser.add_argument("order_by", type=str, default=None, location="args")
###LOGIN####
login_parser = reqparse.RequestParser()
login_parser.add_argument("email", type=inputs.email(), required=True, location="json")
login_parser.add_argument("password", required=True, location="json")
###CREATE_USER####
create_user_parser = login_parser.copy()
create_user_parser.add_argument("city_id", type=int, required=True, location="json")
create_user_parser.add_argument("role_id", type=int, required=True, location="json")
###USER####
user_parser = reqparse.RequestParser()
user_parser.add_argument("email", type=inputs.email(), location="json")
user_parser.add_argument("name", type=str, location="json")
user_parser.add_argument("city_id", type=int, location="json")
user_parser.add_argument("role_id", type=int, location="json")
###SEARCH_USER####
user_search_parser = search_parser.copy()
user_search_parser.add_argument("name", type=str, default=None, location="args")
user_search_parser.add_argument("email", type=str, default=None, location="args")
user_search_parser.add_argument("city_id", type=int, default=None, location="args")
user_search_parser.add_argument("role_id", type=int, default=None, location="args")
###COMPETITION####
competition_parser = reqparse.RequestParser()
competition_parser.add_argument("name", type=str, location="json")
competition_parser.add_argument("year", type=int, location="json")
competition_parser.add_argument("city_id", type=int, location="json")
###SEARCH_COMPETITION####
competition_search_parser = search_parser.copy()
competition_search_parser.add_argument("name", type=str, default=None, location="args")
competition_search_parser.add_argument("year", type=int, default=None, location="args")
competition_search_parser.add_argument("city_id", type=int, default=None, location="args")
###SLIDER_PARSER####
slide_parser = reqparse.RequestParser()
slide_parser.add_argument("order", type=int, default=None, location="json")
slide_parser.add_argument("title", type=str, default=None, location="json")
slide_parser.add_argument("timer", type=int, default=None, location="json")
###QUESTION####
question_parser = reqparse.RequestParser()
question_parser.add_argument("name", type=str, default=None, location="json")
question_parser.add_argument("total_score", type=int, default=None, location="json")
question_parser.add_argument("type_id", type=int, default=None, location="json")
###QUESTION ALTERNATIVES####
question_alternative_parser = reqparse.RequestParser()
question_alternative_parser.add_argument("text", type=str, default=None, location="json")
question_alternative_parser.add_argument("value", type=int, default=None, location="json")
###QUESTION ANSWERS####
question_answer_parser = reqparse.RequestParser()
question_answer_parser.add_argument("data", type=dict, required=True, location="json")
question_answer_parser.add_argument("score", type=int, required=True, location="json")
question_answer_parser.add_argument("question_id", type=int, required=True, location="json")
###QUESTION ANSWERS EDIT####
question_answer_edit_parser = reqparse.RequestParser()
question_answer_edit_parser.add_argument("data", type=dict, default=None, location="json")
question_answer_edit_parser.add_argument("score", type=int, default=None, location="json")
###CODE####
code_parser = reqparse.RequestParser()
code_parser.add_argument("pointer", type=str, default=None, location="json")
code_parser.add_argument("view_type_id", type=int, default=None, location="json")
###TEAM####
team_parser = reqparse.RequestParser()
team_parser.add_argument("name", type=str, location="json")
###SEARCH_COMPETITION####
media_parser_search = search_parser.copy()
media_parser_search.add_argument("filename", type=str, default=None, location="args")
###COMPONENT###
component_parser = reqparse.RequestParser()
component_parser.add_argument("x", type=str, default=None, location="json")
component_parser.add_argument("y", type=int, default=None, location="json")
component_parser.add_argument("w", type=int, default=None, location="json")
component_parser.add_argument("h", type=int, default=None, location="json")
component_edit_parser = component_parser.copy()
component_edit_parser.add_argument("text", type=str, location="json")
component_edit_parser.add_argument("media_id", type=str, location="json")
component_create_parser = component_edit_parser.copy()
component_create_parser.add_argument("type_id", type=int, required=True, location="json")
login_code_parser = reqparse.RequestParser()
login_code_parser.add_argument("code", type=str, location="json")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment