summaryrefslogtreecommitdiff
path: root/animism-align/cli/app
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/cli/app')
-rw-r--r--animism-align/cli/app/controllers/annotation_controller.py17
-rw-r--r--animism-align/cli/app/controllers/crud_controller.py6
-rw-r--r--animism-align/cli/app/controllers/media_controller.py8
-rw-r--r--animism-align/cli/app/controllers/paragraph_controller.py8
-rw-r--r--animism-align/cli/app/settings/app_cfg.py9
5 files changed, 45 insertions, 3 deletions
diff --git a/animism-align/cli/app/controllers/annotation_controller.py b/animism-align/cli/app/controllers/annotation_controller.py
index aed7310..78947a8 100644
--- a/animism-align/cli/app/controllers/annotation_controller.py
+++ b/animism-align/cli/app/controllers/annotation_controller.py
@@ -9,8 +9,16 @@ from app.controllers.crud_controller import CrudView
class AnnotationView(CrudView):
model = Annotation
form = AnnotationForm
+ index_all = False
+ use_limit = False
default_sort = "start_ts"
+ def where(self, query, args):
+ episode_id = args.get('episode_id', default=None)
+ if episode_id is not None:
+ query = query.filter(Annotation.episode_id == int(episode_id))
+ return query
+
def on_create(self, session, form, item):
if 'paragraph_id' in form:
item.paragraph_id = form['paragraph_id']
@@ -46,8 +54,15 @@ class AnnotationView(CrudView):
session.close()
return { 'status': 'error', 'error': 'duration is invalid '}
+ try:
+ episode_id = float(request.json['episode_id'])
+ except:
+ print("Annotation splice: episode_id is undefined")
+ session.close()
+ return { 'status': 'error', 'error': 'episode_id is invalid '}
+
query = session.query(self.model)
- query = query.filter(Annotation.start_ts > start_ts)
+ query = query.filter(Annotation.start_ts > start_ts, Annotation.episode_id == episode_id)
items = query.all()
print(f"{len(items)} annotations would be updated")
diff --git a/animism-align/cli/app/controllers/crud_controller.py b/animism-align/cli/app/controllers/crud_controller.py
index 29a570a..ace84f3 100644
--- a/animism-align/cli/app/controllers/crud_controller.py
+++ b/animism-align/cli/app/controllers/crud_controller.py
@@ -11,6 +11,7 @@ class CrudView(FlaskView):
# model = Collection
# form = CollectionForm
index_all = True
+ use_limit = True
excluded_methods = ['on_index', 'on_show', 'on_create', 'on_update', 'on_destroy']
default_sort = "id"
default_order = "asc"
@@ -46,7 +47,10 @@ class CrudView(FlaskView):
query = query.order_by(order_by, order_by_id)
else:
query = query.order_by(order_by)
- items = query.offset(offset).limit(limit).all()
+ if self.use_limit:
+ items = query.offset(offset).limit(limit).all()
+ else:
+ items = query.all()
res = self.on_index(session, {
'status': 'ok',
diff --git a/animism-align/cli/app/controllers/media_controller.py b/animism-align/cli/app/controllers/media_controller.py
index e7e620c..77f7ac2 100644
--- a/animism-align/cli/app/controllers/media_controller.py
+++ b/animism-align/cli/app/controllers/media_controller.py
@@ -9,6 +9,14 @@ from app.controllers.crud_controller import CrudView
class MediaView(CrudView):
model = Media
form = MediaForm
+ index_all = False
+ use_limit = False
+
+ def where(self, query, args):
+ episode_id = args.get('episode_id', default=None)
+ if episode_id is not None:
+ query = query.filter(Media.episode_id == int(episode_id))
+ return query
def on_create(self, session, form, item):
if 'settings' in form:
diff --git a/animism-align/cli/app/controllers/paragraph_controller.py b/animism-align/cli/app/controllers/paragraph_controller.py
index 807135d..9e6d4bc 100644
--- a/animism-align/cli/app/controllers/paragraph_controller.py
+++ b/animism-align/cli/app/controllers/paragraph_controller.py
@@ -9,8 +9,16 @@ from app.controllers.crud_controller import CrudView
class ParagraphView(CrudView):
model = Paragraph
form = ParagraphForm
+ index_all = False
+ use_limit = False
default_sort = "start_ts"
+ def where(self, query, args):
+ episode_id = args.get('episode_id', default=None)
+ if episode_id is not None:
+ query = query.filter(Paragraph.episode_id == int(episode_id))
+ return query
+
def on_create(self, session, form, item):
if 'settings' in form:
item.settings = form['settings']
diff --git a/animism-align/cli/app/settings/app_cfg.py b/animism-align/cli/app/settings/app_cfg.py
index ceb9e43..6d5f4c0 100644
--- a/animism-align/cli/app/settings/app_cfg.py
+++ b/animism-align/cli/app/settings/app_cfg.py
@@ -76,6 +76,13 @@ HASH_BRANCH_SIZE = 3 # for sha256 subdirs
USE_SQLITE = os.getenv("USE_SQLITE") == "True"
# -----------------------------------------------------------------------------
+# APIs
+# -----------------------------------------------------------------------------
+
+DEFAULT_LIMIT = 50
+MAX_LIMIT = 1000
+
+# -----------------------------------------------------------------------------
# S3 storage
# -----------------------------------------------------------------------------
@@ -85,7 +92,7 @@ except Exception as e:
pass
# -----------------------------------------------------------------------------
-# Le crypto
+# Le crypto~
# -----------------------------------------------------------------------------
TOKEN_SECRET = os.getenv("TOKEN_SECRET") or None