diff --git a/apps/base/dev/tasks.py b/apps/base/dev/tasks.py index c737a45dd..9cfd47fd9 100644 --- a/apps/base/dev/tasks.py +++ b/apps/base/dev/tasks.py @@ -9,6 +9,8 @@ from models.volunteer.shift import Shift from models.volunteer.role import Role +from apps.cfp.tasks import create_tags + from . import dev_cli from .fake import FakeDataGenerator @@ -20,6 +22,7 @@ def dev_data(ctx): ctx.invoke(fake_data) ctx.invoke(volunteer_data) ctx.invoke(volunteer_shifts) + ctx.invoke(create_tags) @dev_cli.command("cfp_data") diff --git a/apps/cfp/tasks.py b/apps/cfp/tasks.py index 66904a696..42f5b0fb6 100644 --- a/apps/cfp/tasks.py +++ b/apps/cfp/tasks.py @@ -6,6 +6,7 @@ from main import db from models.cfp import Proposal, TalkProposal, WorkshopProposal, InstallationProposal +from models.cfp_tag import Tag, DEFAULT_TAGS from models.user import User from apps.cfp_review.base import send_email_for_proposal from ..common.email import from_email @@ -125,3 +126,27 @@ def email_reserve(): send_email_for_proposal( proposal, reason="reserve-list", from_address=from_email("SPEAKERS_EMAIL") ) + + +@cfp.cli.command( + "create_tags", + help=f"Add tags to the database. Defaults are {DEFAULT_TAGS}.", +) +@click.argument("tags_to_create", nargs=-1) +def create_tags(tags_to_create): + """Upset tag list""" + if not tags_to_create: + tags_to_create = DEFAULT_TAGS + + tags_created = 0 + for tag in tags_to_create: + if Tag.query.filter_by(tag=tag).all(): + app.logger.info(f"'{tag}' already exists, skipping.") + continue + + db.session.add(Tag(tag)) + tags_created += 1 + app.logger.info(f"'{tag}' added to session.") + + db.session.commit() + app.logger.info(f"Successfully created {tags_created} new tags.") diff --git a/models/cfp_tag.py b/models/cfp_tag.py index d687ad74e..c3c5a99f0 100644 --- a/models/cfp_tag.py +++ b/models/cfp_tag.py @@ -3,6 +3,19 @@ from . import BaseModel +DEFAULT_TAGS = [ + "security", + "robotics", + "trains", + "radio", + "health", + "science", + "music", + "computing", + "film", +] + + class Tag(BaseModel): __versioned__: dict = {} __tablename__ = "tag"