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 | |
| parent | 554695be3d2c0ed122fa83b6b0ac76e338116268 (diff) | |
navigating around, fix api filtering, add episode stats
Diffstat (limited to 'animism-align/cli/app')
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 |
