diff --git a/data/interfaces/default/js/tables/notification_logs.js b/data/interfaces/default/js/tables/notification_logs.js
index f2d6b7e1..5ff5df73 100644
--- a/data/interfaces/default/js/tables/notification_logs.js
+++ b/data/interfaces/default/js/tables/notification_logs.js
@@ -80,13 +80,34 @@ notification_log_table_options = {
$(td).html(cellData);
}
},
- "width": "50%"
- }
+ "width": "48%"
+ },
+ {
+ "targets": [6],
+ "data": "success",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData == 1) {
+ $(td).html('');
+ } else {
+ $(td).html('');
+ }
+ },
+ "searchable": false,
+ "orderable": false,
+ "className": "no-wrap",
+ "width": "2%"
+ },
],
"drawCallback": function (settings) {
// Jump to top of page
//$('html,body').scrollTop(0);
$('#ajaxMsg').fadeOut();
+
+ // Create the tooltips.
+ $('body').tooltip({
+ selector: '[data-toggle="tooltip"]',
+ container: 'body'
+ });
},
"preDrawCallback": function(settings) {
var msg = " Fetching rows...";
diff --git a/data/interfaces/default/logs.html b/data/interfaces/default/logs.html
index 497884de..51fbe958 100644
--- a/data/interfaces/default/logs.html
+++ b/data/interfaces/default/logs.html
@@ -109,6 +109,7 @@
Action |
Subject Text |
Body Text |
+ |
diff --git a/plexpy/__init__.py b/plexpy/__init__.py
index 3ed46c55..d8973bce 100644
--- a/plexpy/__init__.py
+++ b/plexpy/__init__.py
@@ -481,7 +481,7 @@ def dbcheck():
'CREATE TABLE IF NOT EXISTS notify_log (id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER, '
'session_key INTEGER, rating_key INTEGER, parent_rating_key INTEGER, grandparent_rating_key INTEGER, '
'user_id INTEGER, user TEXT, notifier_id INTEGER, agent_id INTEGER, agent_name TEXT, notify_action TEXT, '
- 'subject_text TEXT, body_text TEXT, script_args TEXT)'
+ 'subject_text TEXT, body_text TEXT, script_args TEXT, success INTEGER DEFAULT 0)'
)
# library_sections table :: This table keeps record of the servers library sections
@@ -958,6 +958,18 @@ def dbcheck():
'ALTER TABLE notify_log ADD COLUMN notifier_id INTEGER'
)
+ # Upgrade notify_log table from earlier versions
+ try:
+ c_db.execute('SELECT send_success FROM notify_log')
+ except sqlite3.OperationalError:
+ logger.debug(u"Altering database. Updating database table notify_log.")
+ c_db.execute(
+ 'ALTER TABLE notify_log ADD COLUMN success INTEGER DEFAULT 0'
+ )
+ c_db.execute(
+ 'UPDATE notify_log SET success = 1'
+ )
+
# Upgrade library_sections table from earlier versions (remove UNIQUE constraint on section_id)
try:
result = c_db.execute('SELECT SQL FROM sqlite_master WHERE type="table" AND name="library_sections"').fetchone()
diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py
index 28c0c3a9..9ae9f67a 100644
--- a/plexpy/datafactory.py
+++ b/plexpy/datafactory.py
@@ -1321,7 +1321,8 @@ class DataFactory(object):
'notify_log.agent_name',
'notify_log.notify_action',
'notify_log.subject_text',
- 'notify_log.body_text'
+ 'notify_log.body_text',
+ 'notify_log.success'
]
try:
query = data_tables.ssp_query(table_name='notify_log',
@@ -1360,7 +1361,8 @@ class DataFactory(object):
'agent_name': item['agent_name'],
'notify_action': item['notify_action'],
'subject_text': item['subject_text'],
- 'body_text': body_text
+ 'body_text': body_text,
+ 'success': item['success']
}
rows.append(row)
diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py
index 0338838c..a34ed214 100644
--- a/plexpy/notification_handler.py
+++ b/plexpy/notification_handler.py
@@ -192,21 +192,25 @@ def notify(notifier_id=None, notify_action=None, stream_data=None, timeline_data
parameters=parameters,
agent_id=notifier_config['agent_id'])
- # Send the notification
- notifiers.send_notification(notifier_id=notifier_config['id'],
- subject=subject,
- body=body,
- script_args=script_args,
- notify_action=notify_action,
- parameters=parameters)
-
# Set the notification state in the db
- set_notify_state(session=stream_data or timeline_data,
- notify_action=notify_action,
- notifier=notifier_config,
- subject=subject,
- body=body,
- script_args=script_args)
+ notification_id = set_notify_state(session=stream_data or timeline_data,
+ notify_action=notify_action,
+ notifier=notifier_config,
+ subject=subject,
+ body=body,
+ script_args=script_args)
+
+ # Send the notification
+ success = notifiers.send_notification(notifier_id=notifier_config['id'],
+ subject=subject,
+ body=body,
+ script_args=script_args,
+ notify_action=notify_action,
+ notification_id=notification_id,
+ parameters=parameters)
+
+ if success:
+ set_notify_success(notification_id)
def get_notify_state(session):
@@ -254,10 +258,19 @@ def set_notify_state(notify_action, notifier, subject, body, script_args, sessio
'script_args': script_args}
monitor_db.upsert(table_name='notify_log', key_dict=keys, value_dict=values)
+ return monitor_db.last_insert_id()
else:
logger.error(u"PlexPy NotificationHandler :: Unable to set notify state.")
+def set_notify_success(notification_id):
+ keys = {'id': notification_id}
+ values = {'success': 1}
+
+ monitor_db = database.MonitorDatabase()
+ monitor_db.upsert(table_name='notify_log', key_dict=keys, value_dict=values)
+
+
def build_media_notify_params(notify_action=None, session=None, timeline=None, **kwargs):
# Get time formats
date_format = plexpy.CONFIG.DATE_FORMAT.replace('Do','')