From fcbb2300a3c68bcd8b5d119e207bd99f0b784465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Sun, 23 Feb 2020 09:25:24 -0500 Subject: [PATCH] WIP --- bazarr/api.py | 12 ++++++++++++ bazarr/scheduler.py | 4 ++-- bazarr/websocket_handler.py | 7 +++++-- views/systemtasks.html | 12 +++++++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/bazarr/api.py b/bazarr/api.py index f02e07d7b..ae4fc88f1 100644 --- a/bazarr/api.py +++ b/bazarr/api.py @@ -66,8 +66,20 @@ class Languages(Resource): class SystemTasks(Resource): def get(self): + taskid = request.args.get('taskid') + task_list = scheduler.get_task_list() + for item in task_list: + # Add Datatables rowId + item.update({"DT_RowId": item['job_id']}) + + if taskid: + for item in task_list: + if item['job_id'] == taskid: + task_list = [item] + continue + return jsonify(data=task_list) diff --git a/bazarr/scheduler.py b/bazarr/scheduler.py index a250a0065..7bf3fa18d 100644 --- a/bazarr/scheduler.py +++ b/bazarr/scheduler.py @@ -39,12 +39,12 @@ class Scheduler: def task_listener_add(event): if event.job_id not in self.__running_tasks: self.__running_tasks.append(event.job_id) - event_stream.write(type='task') + event_stream.write(type='task', task=event.job_id) def task_listener_remove(event): if event.job_id in self.__running_tasks: self.__running_tasks.remove(event.job_id) - event_stream.write(type='task') + event_stream.write(type='task', task=event.job_id) self.aps_scheduler.add_listener(task_listener_add, EVENT_JOB_SUBMITTED) self.aps_scheduler.add_listener(task_listener_remove, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR) diff --git a/bazarr/websocket_handler.py b/bazarr/websocket_handler.py index c07fd1284..e22654432 100644 --- a/bazarr/websocket_handler.py +++ b/bazarr/websocket_handler.py @@ -10,7 +10,7 @@ class EventStream: def __init__(self): pass - def write(self, type=None, action=None, series=None, episode=None, movie=None): + def write(self, type=None, action=None, series=None, episode=None, movie=None, task=None): """ :param type: The type of element. :type type: str @@ -22,8 +22,11 @@ class EventStream: :type episode: str :param movie: The movie id. :type movie: str + :param task: The task id. + :type task: str """ - socketio.emit('event', json.dumps({"type": type, "action": action, "series": series, "episode": episode, "movie": movie}), broadcast=True) + socketio.emit('event', json.dumps({"type": type, "action": action, "series": series, "episode": episode, + "movie": movie, "task": task}), broadcast=True) event_stream = EventStream() diff --git a/views/systemtasks.html b/views/systemtasks.html index 833bade90..1f349c7fd 100644 --- a/views/systemtasks.html +++ b/views/systemtasks.html @@ -31,7 +31,17 @@ events.on('event', function (event) { var event_json = JSON.parse(event); if (event_json.type === 'task') { - table.ajax.reload(); + var rowId = table.row('#'+event_json.task); + if (rowId.length) { + $.ajax({ + url: "{{ url_for('api.systemtasks') }}?taskid=" + event_json.task, + success: function (data) { + if (data.data.length) { + table.row(rowId).data(data.data[0]); + } + } + }) + } } });