summaryrefslogtreecommitdiff
path: root/animism-align/cli
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/cli')
-rw-r--r--animism-align/cli/app/controllers/annotation_controller.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/animism-align/cli/app/controllers/annotation_controller.py b/animism-align/cli/app/controllers/annotation_controller.py
index cd70d80..757f1e3 100644
--- a/animism-align/cli/app/controllers/annotation_controller.py
+++ b/animism-align/cli/app/controllers/annotation_controller.py
@@ -26,3 +26,39 @@ class AnnotationView(CrudView):
item.start_ts = form['start_ts']
if 'settings' in form:
item.settings = form['settings']
+
+ def splice(self):
+ """Add or remove time"""
+ session = Session()
+
+ try:
+ start_ts = float(args.get('start_ts'))
+ except:
+ print("Annotation splice: duration is invalid")
+ session.close()
+ return
+
+ try:
+ duration = float(args.get('duration'))
+ except:
+ print("Annotation splice: duration is invalid")
+ session.close()
+ return
+
+ query = session.query(self.model)
+ query = query.filter(Annotation.start_ts > form['start_ts'])
+ items = query.all()
+
+ print(f"{len(items)} annotations would be updated")
+
+ for item in items:
+ item.start_ts += duration
+ # session.add(item)
+ # session.commit()
+
+ res = {
+ 'status': 'ok',
+ 'items': len(items),
+ }
+ session.close()
+ return jsonify(res)