diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2021-03-10 13:44:13 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2021-03-10 13:44:13 +0100 |
| commit | 0e849395aab06b3c05b609740ebc94cf3a5cd258 (patch) | |
| tree | 2efeee477043d7d3180047932231aef13dff1b9a /animism-align/cli/app/controllers | |
| parent | 554695be3d2c0ed122fa83b6b0ac76e338116268 (diff) | |
navigating around, fix api filtering, add episode stats
Diffstat (limited to 'animism-align/cli/app/controllers')
4 files changed, 37 insertions, 2 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'] |
