summaryrefslogtreecommitdiff
path: root/animism-align/cli/app
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-09-30 18:48:54 +0200
committerJules Laplace <julescarbon@gmail.com>2020-09-30 18:48:54 +0200
commit9dba744407f61a56efb8e63bbfa50ade6e847acf (patch)
treee3953fcceafa010bdc7a4df353c74fe571c9c13d /animism-align/cli/app
parent58b47df64f1ec0444a45892c1db2ca195ec93deb (diff)
update episodes table form. add venues table and CRUD
Diffstat (limited to 'animism-align/cli/app')
-rw-r--r--animism-align/cli/app/controllers/venue_controller.py19
-rw-r--r--animism-align/cli/app/server/web.py2
-rw-r--r--animism-align/cli/app/sql/common.py1
-rw-r--r--animism-align/cli/app/sql/env.py1
-rw-r--r--animism-align/cli/app/sql/models/episode.py13
-rw-r--r--animism-align/cli/app/sql/models/venue.py32
-rw-r--r--animism-align/cli/app/sql/versions/202009301833_create_episodes_table.py (renamed from animism-align/cli/app/sql/versions/202009291913_create_episodes_table.py)7
-rw-r--r--animism-align/cli/app/sql/versions/202009301842_create_venue_table.py35
8 files changed, 106 insertions, 4 deletions
diff --git a/animism-align/cli/app/controllers/venue_controller.py b/animism-align/cli/app/controllers/venue_controller.py
new file mode 100644
index 0000000..53588ab
--- /dev/null
+++ b/animism-align/cli/app/controllers/venue_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.venue import Venue, VenueForm
+from app.controllers.crud_controller import CrudView
+
+class VenueView(CrudView):
+ model = Venue
+ form = VenueForm
+
+ 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 165e4d4..890bd35 100644
--- a/animism-align/cli/app/server/web.py
+++ b/animism-align/cli/app/server/web.py
@@ -21,6 +21,7 @@ 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
+from app.controllers.venue_controller import VenueView
def create_app(script_info=None):
"""
@@ -41,6 +42,7 @@ def create_app(script_info=None):
UploadView.register(app, route_prefix='/api/v1/')
MediaView.register(app, route_prefix='/api/v1/')
EpisodeView.register(app, route_prefix='/api/v1/')
+ VenueView.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 88a3d1e..1061a46 100644
--- a/animism-align/cli/app/sql/common.py
+++ b/animism-align/cli/app/sql/common.py
@@ -36,3 +36,4 @@ 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
+from app.sql.models.venue import Venue
diff --git a/animism-align/cli/app/sql/env.py b/animism-align/cli/app/sql/env.py
index a44583a..1f03a42 100644
--- a/animism-align/cli/app/sql/env.py
+++ b/animism-align/cli/app/sql/env.py
@@ -19,6 +19,7 @@ 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
+from app.sql.models.venue import Venue
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
index a13c674..34402b8 100644
--- a/animism-align/cli/app/sql/models/episode.py
+++ b/animism-align/cli/app/sql/models/episode.py
@@ -1,4 +1,4 @@
-from sqlalchemy import create_engine, Table, Column, Text, String, Integer, Float, DateTime, JSON, ForeignKey
+from sqlalchemy import create_engine, Table, Column, Text, String, Integer, Boolean, Float, DateTime, JSON, ForeignKey
from sqlalchemy.orm import relationship
import sqlalchemy.sql.functions as func
from sqlalchemy_utc import UtcDateTime, utcnow
@@ -15,6 +15,7 @@ class Episode(Base):
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)
+ is_live = Column(Boolean, default=False)
settings = Column(JSON, default={}, nullable=True)
def toJSON(self):
@@ -23,6 +24,16 @@ class Episode(Base):
'episode_number': self.episode_number,
'title': self.type,
'release_date': self.release_date,
+ 'is_live': self.is_live,
+ }
+
+ def toFullJSON(self):
+ return {
+ 'id': self.id,
+ 'episode_number': self.episode_number,
+ 'title': self.type,
+ 'release_date': self.release_date,
+ 'is_live': self.is_live,
'settings': self.settings,
}
diff --git a/animism-align/cli/app/sql/models/venue.py b/animism-align/cli/app/sql/models/venue.py
new file mode 100644
index 0000000..992adea
--- /dev/null
+++ b/animism-align/cli/app/sql/models/venue.py
@@ -0,0 +1,32 @@
+from sqlalchemy import create_engine, Table, Column, Text, String, Integer, Boolean, 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 Venue(Base):
+ """Table for storing the venue list"""
+ __tablename__ = 'venue'
+ id = Column(Integer, primary_key=True)
+ title = Column(String(256, convert_unicode=True), nullable=False)
+ date = Column(String(256, convert_unicode=True), nullable=False)
+ settings = Column(JSON, default={}, nullable=True)
+
+ def toJSON(self):
+ return {
+ 'id': self.id,
+ 'title': self.type,
+ 'date': self.type,
+ 'settings': self.settings,
+ }
+
+class VenueForm(ModelForm):
+ class Meta:
+ model = Venue
+ 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/202009301833_create_episodes_table.py
index ed58e8b..46d626b 100644
--- a/animism-align/cli/app/sql/versions/202009291913_create_episodes_table.py
+++ b/animism-align/cli/app/sql/versions/202009301833_create_episodes_table.py
@@ -1,8 +1,8 @@
"""create episodes table
-Revision ID: 67406c9b5b8f
+Revision ID: 2eb39d4c2aea
Revises: 1e3c915ef21f
-Create Date: 2020-09-29 19:13:46.262415
+Create Date: 2020-09-30 18:33:26.620856
"""
from alembic import op
@@ -11,7 +11,7 @@ import sqlalchemy_utc
# revision identifiers, used by Alembic.
-revision = '67406c9b5b8f'
+revision = '2eb39d4c2aea'
down_revision = '1e3c915ef21f'
branch_labels = None
depends_on = None
@@ -24,6 +24,7 @@ def upgrade():
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('is_live', sa.Boolean(), nullable=True),
sa.Column('settings', sa.JSON(), nullable=True),
sa.PrimaryKeyConstraint('id', 'episode_number', 'release_date')
)
diff --git a/animism-align/cli/app/sql/versions/202009301842_create_venue_table.py b/animism-align/cli/app/sql/versions/202009301842_create_venue_table.py
new file mode 100644
index 0000000..17505fc
--- /dev/null
+++ b/animism-align/cli/app/sql/versions/202009301842_create_venue_table.py
@@ -0,0 +1,35 @@
+"""create venue table
+
+Revision ID: a21872d09bbc
+Revises: 2eb39d4c2aea
+Create Date: 2020-09-30 18:42:37.865663
+
+"""
+from alembic import op
+import sqlalchemy as sa
+import sqlalchemy_utc
+
+
+# revision identifiers, used by Alembic.
+revision = 'a21872d09bbc'
+down_revision = '2eb39d4c2aea'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('venue',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('title', sa.String(length=256, _expect_unicode=True), nullable=False),
+ sa.Column('date', sa.String(length=256, _expect_unicode=True), nullable=False),
+ sa.Column('settings', sa.JSON(), nullable=True),
+ sa.PrimaryKeyConstraint('id')
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('venue')
+ # ### end Alembic commands ###