Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
populate.py 1.85 KiB
from sqlalchemy.sql.expression import true

import app.database.controller as dbc
from app import create_app, db
from app.database.models import City, Competition, MediaType, QuestionType, Role


def _add_items():
    media_types = ["Image", "Video"]
    question_types = ["Boolean", "Multiple", "Text"]
    roles = ["Admin", "Editor"]
    cities = ["Linköping", "Stockholm", "Norrköping", "Örkelljunga"]
    teams = ["Gymnasieskola A", "Gymnasieskola B", "Gymnasieskola C"]

    for team_name in media_types:
        dbc.add.mediaType(team_name)

    for team_name in question_types:
        dbc.add.questionType(team_name)

    for team_name in roles:
        dbc.add.role(team_name)

    for team_name in cities:
        dbc.add.city(team_name)

    admin_id = Role.query.filter(Role.name == "Admin").one().id
    editor_id = Role.query.filter(Role.name == "Editor").one().id

    city_id = City.query.filter(City.name == "Linköping").one().id

    text_id = QuestionType.query.filter(QuestionType.name == "Text").one().id

    # Add users
    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, city_id)

    item_comps = Competition.query.all()
    # Add
    for item_comp in item_comps:
        for i in range(3):
            # Add slide to competition
            item_slide = dbc.add.slide(item_comp)

            # Add question to competition
            dbc.add.question(f"Q{i+1}", i + 1, text_id, item_slide)

        # Add teams to competition
        for team_name in teams:
            dbc.add.team(team_name, item_comp)


if __name__ == "__main__":
    app = create_app("configmodule.DevelopmentConfig")

    with app.app_context():
        db.drop_all()
        db.create_all()
        _add_items()