diff --git a/server/app/apis/auth.py b/server/app/apis/auth.py index 2f525327acbed96e3bfb574df3c6991e80605fa4..4fa5624af098b74b11e321cb5b2dd1bc45e9c610 100644 --- a/server/app/apis/auth.py +++ b/server/app/apis/auth.py @@ -37,7 +37,7 @@ class AuthSignup(Resource): if User.query.filter(User.email == email).count() > 0: api.abort(codes.BAD_REQUEST, "User already exists") - item_user = dbc.add.default(User(email, password, role_id, city_id, name)) + item_user = dbc.add.user(email, password, role_id, city_id, name) if not item_user: api.abort(codes.BAD_REQUEST, "User could not be created") diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py index 90ae2f0c05b0c72f802ec7fbf88571dc38a50010..9f17a932c4c47c6e127128b944986458df670988 100644 --- a/server/app/apis/competitions.py +++ b/server/app/apis/competitions.py @@ -26,7 +26,7 @@ class CompetitionsList(Resource): year = args.get("year") # Add competition - item = dbc.add.default(Competition(name, year, city_id)) + item = dbc.add.competition(name, year, city_id) # Add default slide dbc.add.slide(item) diff --git a/server/app/apis/misc.py b/server/app/apis/misc.py index 13055f211e480a2f16b42d74d9517514e04c67f7..f5b42fda6ab46fc76dd70a774fd3baf9ef467938 100644 --- a/server/app/apis/misc.py +++ b/server/app/apis/misc.py @@ -51,7 +51,7 @@ class CitiesList(Resource): @jwt_required def post(self): args = name_parser.parse_args(strict=True) - dbc.add.default(City(args["name"])) + dbc.add.city(args["name"]) items = City.query.all() return list_response(city_schema.dump(items)) diff --git a/server/app/apis/teams.py b/server/app/apis/teams.py index 3f183bf5ea0965c3282b9a0407c9f95476486b7d..bec6cb6a81005ebf782c212319b0641ca9f3a35a 100644 --- a/server/app/apis/teams.py +++ b/server/app/apis/teams.py @@ -29,8 +29,9 @@ class TeamsList(Resource): parser.add_argument("name", type=str, location="json") args = parser.parse_args(strict=True) - dbc.add.default(Team(args["name"], CID)) item_comp = get_comp(CID) + dbc.add.team(args["name"], item_comp) + dbc.refresh(item_comp) return list_response(list_schema.dump(item_comp.teams)) diff --git a/server/app/core/controller/add.py b/server/app/core/controller/add.py index 3e20d1dc7d6e32e094d6f87ff8a3386db5a7fe2f..2352ec0d7e8a7dbb462aeb8069027da6d0de47da 100644 --- a/server/app/core/controller/add.py +++ b/server/app/core/controller/add.py @@ -20,23 +20,23 @@ def blacklist(jti): @db_add def slide(item_competition): - order = Slide.query.filter(Slide.competition_id == item_competition.id).count() + order = Slide.query.filter(Slide.competition_id == item_competition.id).count() # first element has index 0 return Slide(order, item_competition.id) @db_add -def user(email, plaintext_password, item_role, item_city, name=None): - return User(email, plaintext_password, item_role.id, item_city.id, name) +def user(email, plaintext_password, role_id, city_id, name=None): + return User(email, plaintext_password, role_id, city_id, name) @db_add -def question(name, order, item_type, item_slide): - return Question(name, order, item_type.id, item_slide.id) +def question(name, order, type_id, item_slide): + return Question(name, order, type_id, item_slide.id) @db_add -def competition(name, year, item_city): - return Competition(name, year, item_city.id) +def competition(name, year, city_id): + return Competition(name, year, city_id) @db_add @@ -45,20 +45,20 @@ def team(name, item_competition): @db_add -def mediaType(team_name): - return MediaType(team_name) +def mediaType(name): + return MediaType(name) @db_add -def questionType(team_name): - return QuestionType(team_name) +def questionType(name): + return QuestionType(name) @db_add -def role(team_name): - return Role(team_name) +def role(name): + return Role(name) @db_add -def city(team_name): - return City(team_name) +def city(name): + return City(name) diff --git a/server/populate.py b/server/populate.py index 45e00a85c433467e4a3fe62e964fc4ccbf757374..ba1648fa28e89399c4b0a57f2788a0b73244a91e 100644 --- a/server/populate.py +++ b/server/populate.py @@ -24,20 +24,20 @@ def _add_items(): for team_name in cities: dbc.add.city(team_name) - item_admin = Role.query.filter(Role.name == "Admin").one() - item_editor = Role.query.filter(Role.name == "Editor").one() + admin_id = Role.query.filter(Role.name == "Admin").one().id + editor_id = Role.query.filter(Role.name == "Editor").one().id - item_city = City.query.filter(City.name == "Linköping").one() + city_id = City.query.filter(City.name == "Linköping").one().id - item_text = QuestionType.query.filter(QuestionType.name == "Text").one() + text_id = QuestionType.query.filter(QuestionType.name == "Text").one().id # Add users - dbc.add.user("admin@test.se", "password", item_admin, item_city) - dbc.add.user("test@test.se", "password", item_editor, item_city) + dbc.add.user("admin@test.se", "password", admin_id, city_id) + dbc.add.user("test@test.se", "password", editor_id, city_id) # Add competitions to db for i in range(3): - dbc.add.competition(f"Test{i+1}", 1971, item_city) + dbc.add.competition(f"Test{i+1}", 1971, city_id) item_comps = Competition.query.all() # Add @@ -47,7 +47,7 @@ def _add_items(): item_slide = dbc.add.slide(item_comp) # Add question to competition - dbc.add.question(f"Q{i+1}", i + 1, item_text, item_slide) + dbc.add.question(f"Q{i+1}", i + 1, text_id, item_slide) # Add teams to competition for team_name in teams: diff --git a/server/tests/test_db.py b/server/tests/test_db.py index 46303211dca998a3a25097d42428e732539b10b8..49ca53ad18e972673e1b81658458e1af909ef8c9 100644 --- a/server/tests/test_db.py +++ b/server/tests/test_db.py @@ -1,3 +1,4 @@ +import app.core.controller as dbc from app.core.models import City, Competition, Media, MediaType, Question, QuestionType, Role, Slide, Team, User from tests import app, client, db @@ -53,9 +54,8 @@ def test_question(client): # Add competition item_city = City.query.filter_by(name="Linköping").first() - db.session.add(Competition("teknik8", 2020, item_city.id)) - db.session.add(Competition("teknik9", 2020, item_city.id)) - db.session.commit() + dbc.add.competition("teknik8", 2020, item_city.id) + dbc.add.competition("teknik9", 2020, item_city.id) item_competition = Competition.query.filter_by(name="teknik8").first() item_competition_2 = Competition.query.filter_by(name="teknik9").first() @@ -64,14 +64,12 @@ def test_question(client): assert item_competition.city.name == "Linköping" # Add teams - db.session.add(Team("Lag1", item_competition.id)) - db.session.add(Team("Lag2", item_competition.id)) - db.session.commit() + dbc.add.team("Lag1", item_competition) + dbc.add.team("Lag2", item_competition) assert_insert_fail(Team, "Lag1", item_competition.id) - db.session.add(Team("Lag1", item_competition_2.id)) - db.session.commit() + dbc.add.team("Lag1", item_competition_2) assert Team.query.filter((Team.competition_id == item_competition.id) & (Team.name == "Lag1")).count() == 1 assert Team.query.filter((Team.competition_id == item_competition.id) & (Team.name == "Lag2")).count() == 1 @@ -81,18 +79,17 @@ def test_question(client): assert Team.query.count() == 3 # Add slides - db.session.add(Slide(1, item_competition.id)) - db.session.add(Slide(2, item_competition.id)) - db.session.add(Slide(3, item_competition.id)) - db.session.commit() + dbc.add.slide(item_competition) + dbc.add.slide(item_competition) + dbc.add.slide(item_competition) # Try add slide with same order assert_insert_fail(Slide, 1, item_competition.id) assert_exists(Slide, 1, order=1) - item_slide1 = Slide.query.filter_by(order=1).first() - item_slide2 = Slide.query.filter_by(order=2).first() - item_slide3 = Slide.query.filter_by(order=3).first() + item_slide1 = Slide.query.filter_by(order=0).first() + item_slide2 = Slide.query.filter_by(order=1).first() + item_slide3 = Slide.query.filter_by(order=2).first() assert item_slide1 is not None assert item_slide2 is not None @@ -102,9 +99,8 @@ def test_question(client): question_type_bool = QuestionType.query.filter_by(name="Boolean").first() question_type_multiple = QuestionType.query.filter_by(name="Multiple").first() - db.session.add(Question("Fråga1", 10, question_type_bool.id, item_slide2.id)) - db.session.add(Question("Fråga2", 10, question_type_multiple.id, item_slide3.id)) - db.session.commit() + dbc.add.question("Fråga1", 10, question_type_bool.id, item_slide2) + dbc.add.question("Fråga2", 10, question_type_multiple.id, item_slide3) assert question_type_bool is not None assert question_type_multiple is not None diff --git a/server/tests/test_helpers.py b/server/tests/test_helpers.py index a10254ab080570c926677a8d3347107346d26a4f..6ce0f54c49f19b04076df674910c5c383bf7efef 100644 --- a/server/tests/test_helpers.py +++ b/server/tests/test_helpers.py @@ -13,25 +13,23 @@ def add_default_values(): # Add media types for item in media_types: - db.session.add(MediaType(item)) + dbc.add.mediaType(item) # Add question types for item in question_types: - db.session.add(QuestionType(item)) + dbc.add.questionType(item) # Add roles for item in roles: - db.session.add(Role(item)) - + dbc.add.role(item) # Add cities for item in cities: - db.session.add(City(item)) - - # Commit changes to db - db.session.commit() + dbc.add.city(item) + item_admin = Role.query.filter(Role.name == "Admin").one() + item_city = City.query.filter(City.name == "Linköping").one() # Add user with role and city - dbc.add.default(User("test@test.se", "password", 1, 1)) + dbc.add.user("test@test.se", "password", item_admin.id, item_city.id) def get_body(response):