Newer
Older
"""
This file contains functionality to add data to the database.
"""
from app.core import db
from app.database.models import (
Blacklist,
City,
QuestionAlternative,
QuestionAnswer,
QuestionType,
Role,
Slide,
Team,
User,
"""
Internal function. Adds item to the database
and handles comitting and refreshing.
"""
db.session.add(item)
db.session.commit()
db.session.refresh(item)
if not item:
abort(codes.BAD_REQUEST, f"Object could not be created")
""" Adds a blacklist to the database. """
""" Adds a media type to the database. """
""" Adds a question type to the database. """
return db_add(QuestionType(name))
def componentType(name):
""" Adds a component type to the database. """
return db_add(ComponentType(name))
def viewType(name):
""" Adds a view type to the database. """
return db_add(ViewType(name))
def role(name):
return db_add(Role(name))
def city(name):
return db_add(City(name))
def component(type_id, item_slide, data, x=0, y=0, w=0, h=0):
"""
Adds a component to the slide at the specified coordinates with the
provided size and data .
"""
return db_add(Component(item_slide.id, type_id, data, x, y, w, h))
def image(filename, user_id):
"""
Adds an image to the database and keeps track of who called the function.
"""
def user(email, password, role_id, city_id, name=None):
""" Adds a user to the database using the provided arguments. """
return db_add(User(email, password, role_id, city_id, name))
def question(name, total_score, type_id, item_slide):
"""
Adds a question to the specified slide using the provided arguments.
"""
return db_add(Question(name, total_score, type_id, item_slide.id))
def question_alternative(text, value, question_id):
return db_add(QuestionAlternative(text, value, question_id))
def question_answer(data, score, question_id, team_id):
return db_add(QuestionAnswer(data, score, question_id, team_id))
""" Adds a code to the database using the provided arguments. """
code_string = utils.generate_unique_code()
return db_add(Code(code_string, pointer, view_type_id))
""" Adds a team with the specified name to the provided competition. """
item = db_add(Team(name, item_competition.id))
# Add code for the team
code(item.id, 1)
""" Adds a slide to the provided competition. """
order = Slide.query.filter(Slide.competition_id == item_competition.id).count() # first element has index 0
return db_add(Slide(order, item_competition.id))
"""
Adds a competition to the database using the
provided arguments. Also adds slide and codes.
"""
item_competition = _competition(name, year, city_id)
# Add one slide for the competition
slide(item_competition)
# TODO: Add two teams
return item_competition
def _competition(name, year, city_id, font=None):
"""
Internal function. Adds a competition to the database
using the provided arguments. Also adds codes.
"""
item_competition = db_add(Competition(name, year, city_id))
if font:
item_competition.font = font
# Add code for Judge view
code(item_competition.id, 2)
# Add code for Audience view
code(item_competition.id, 3)
utils.refresh(item_competition)
return item_competition