diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-09-29 19:14:53 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-09-29 19:14:53 +0200 |
| commit | 541e23df31ed3e9f1d1c5fe02962efbb3d6c2c8f (patch) | |
| tree | 94e8c1af8b4f309ce153033761e46cd22baf750c /animism-align/cli/app | |
| parent | ce80f0fe7fa60fe5666057ed88c5ca69634df083 (diff) | |
add table for episodes
Diffstat (limited to 'animism-align/cli/app')
| -rw-r--r-- | animism-align/cli/app/controllers/episode_controller.py | 19 | ||||
| -rw-r--r-- | animism-align/cli/app/server/web.py | 2 | ||||
| -rw-r--r-- | animism-align/cli/app/sql/common.py | 1 | ||||
| -rw-r--r-- | animism-align/cli/app/sql/env.py | 1 | ||||
| -rw-r--r-- | animism-align/cli/app/sql/models/episode.py | 34 | ||||
| -rw-r--r-- | animism-align/cli/app/sql/versions/202009291913_create_episodes_table.py | 36 |
6 files changed, 93 insertions, 0 deletions
diff --git a/animism-align/cli/app/controllers/episode_controller.py b/animism-align/cli/app/controllers/episode_controller.py new file mode 100644 index 0000000..700b04f --- /dev/null +++ b/animism-align/cli/app/controllers/episode_controller.py @@ -0,0 +1,19 @@ +from flask import request, jsonify, redirect +from flask_classful import route +from werkzeug.datastructures import MultiDict + +from app.sql.common import db, Session +from app.sql.models.episode import Episode, EpisodeForm +from app.controllers.crud_controller import CrudView + +class EpisodeView(CrudView): + model = Episode + form = EpisodeForm + + def on_create(self, session, form, item): + if 'settings' in form: + item.settings = form['settings'] + + def on_update(self, session, form, item): + if 'settings' in form: + item.settings = form['settings'] diff --git a/animism-align/cli/app/server/web.py b/animism-align/cli/app/server/web.py index a0527ef..165e4d4 100644 --- a/animism-align/cli/app/server/web.py +++ b/animism-align/cli/app/server/web.py @@ -20,6 +20,7 @@ from app.controllers.annotation_controller import AnnotationView from app.controllers.paragraph_controller import ParagraphView from app.controllers.upload_controller import UploadView from app.controllers.media_controller import MediaView +from app.controllers.episode_controller import EpisodeView def create_app(script_info=None): """ @@ -39,6 +40,7 @@ def create_app(script_info=None): ParagraphView.register(app, route_prefix='/api/v1/') UploadView.register(app, route_prefix='/api/v1/') MediaView.register(app, route_prefix='/api/v1/') + EpisodeView.register(app, route_prefix='/api/v1/') index_html = 'index.html' diff --git a/animism-align/cli/app/sql/common.py b/animism-align/cli/app/sql/common.py index 851c333..88a3d1e 100644 --- a/animism-align/cli/app/sql/common.py +++ b/animism-align/cli/app/sql/common.py @@ -35,3 +35,4 @@ from app.sql.models.annotation import Annotation from app.sql.models.paragraph import Paragraph from app.sql.models.upload import Upload from app.sql.models.media import Media +from app.sql.models.episode import Episode diff --git a/animism-align/cli/app/sql/env.py b/animism-align/cli/app/sql/env.py index 6871a27..a44583a 100644 --- a/animism-align/cli/app/sql/env.py +++ b/animism-align/cli/app/sql/env.py @@ -18,6 +18,7 @@ from app.sql.models.annotation import Annotation from app.sql.models.paragraph import Paragraph from app.sql.models.upload import Upload from app.sql.models.media import Media +from app.sql.models.episode import Episode def run_migrations_offline(): """Run migrations in 'offline' mode. diff --git a/animism-align/cli/app/sql/models/episode.py b/animism-align/cli/app/sql/models/episode.py new file mode 100644 index 0000000..a13c674 --- /dev/null +++ b/animism-align/cli/app/sql/models/episode.py @@ -0,0 +1,34 @@ +from sqlalchemy import create_engine, Table, Column, Text, String, Integer, Float, DateTime, JSON, ForeignKey +from sqlalchemy.orm import relationship +import sqlalchemy.sql.functions as func +from sqlalchemy_utc import UtcDateTime, utcnow +from wtforms_alchemy import ModelForm + +from app.sql.common import db, Base, Session + +from app.settings import app_cfg + +class Episode(Base): + """Table for storing episodes and their metadata""" + __tablename__ = 'episode' + id = Column(Integer, primary_key=True) + episode_number = Column(Integer, primary_key=True) + title = Column(String(256, convert_unicode=True), nullable=False) + release_date = Column(String(256, convert_unicode=True), primary_key=True) + settings = Column(JSON, default={}, nullable=True) + + def toJSON(self): + return { + 'id': self.id, + 'episode_number': self.episode_number, + 'title': self.type, + 'release_date': self.release_date, + 'settings': self.settings, + } + +class EpisodeForm(ModelForm): + class Meta: + model = Episode + exclude = ['settings'] + def get_session(): + return Session() diff --git a/animism-align/cli/app/sql/versions/202009291913_create_episodes_table.py b/animism-align/cli/app/sql/versions/202009291913_create_episodes_table.py new file mode 100644 index 0000000..ed58e8b --- /dev/null +++ b/animism-align/cli/app/sql/versions/202009291913_create_episodes_table.py @@ -0,0 +1,36 @@ +"""create episodes table + +Revision ID: 67406c9b5b8f +Revises: 1e3c915ef21f +Create Date: 2020-09-29 19:13:46.262415 + +""" +from alembic import op +import sqlalchemy as sa +import sqlalchemy_utc + + +# revision identifiers, used by Alembic. +revision = '67406c9b5b8f' +down_revision = '1e3c915ef21f' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('episode', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('episode_number', sa.Integer(), nullable=False), + sa.Column('title', sa.String(length=256, _expect_unicode=True), nullable=False), + sa.Column('release_date', sa.String(length=256, _expect_unicode=True), nullable=False), + sa.Column('settings', sa.JSON(), nullable=True), + sa.PrimaryKeyConstraint('id', 'episode_number', 'release_date') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('episode') + # ### end Alembic commands ### |
