diff --git a/data/interfaces/default/mobile_devices_table.html b/data/interfaces/default/mobile_devices_table.html
index 240748f8..20a7acda 100644
--- a/data/interfaces/default/mobile_devices_table.html
+++ b/data/interfaces/default/mobile_devices_table.html
@@ -16,7 +16,14 @@ DOCUMENTATION :: END
% if device['official'] == -1:
% elif device['official'] > 0:
-
+ <%
+ icon = 'mobile'
+ if device['platform'] == 'android':
+ icon = 'android'
+ elif device['platform'] == 'ios':
+ icon = 'apple'
+ %>
+
% else:
% endif
diff --git a/plexpy/__init__.py b/plexpy/__init__.py
index 83a3922b..ffe3f0d9 100644
--- a/plexpy/__init__.py
+++ b/plexpy/__init__.py
@@ -1,4 +1,4 @@
-# This file is part of Tautulli.
+# This file is part of Tautulli.
#
# Tautulli is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -790,7 +790,8 @@ def dbcheck():
# mobile_devices table :: This table keeps record of devices linked with the mobile app
c_db.execute(
'CREATE TABLE IF NOT EXISTS mobile_devices (id INTEGER PRIMARY KEY AUTOINCREMENT, '
- 'device_id TEXT NOT NULL UNIQUE, device_token TEXT, device_name TEXT, friendly_name TEXT, '
+ 'device_id TEXT NOT NULL UNIQUE, device_token TEXT, device_name TEXT, '
+ 'platform TEXT, version TEXT, friendly_name TEXT, '
'onesignal_id TEXT, last_seen INTEGER, official INTEGER DEFAULT 0)'
)
@@ -2214,6 +2215,23 @@ def dbcheck():
'ALTER TABLE mobile_devices ADD COLUMN onesignal_id TEXT'
)
+ # Upgrade mobile_devices table from earlier versions
+ try:
+ c_db.execute('SELECT platform FROM mobile_devices')
+ except sqlite3.OperationalError:
+ logger.debug("Altering database. Updating database table mobile_devices.")
+ c_db.execute(
+ 'ALTER TABLE mobile_devices ADD COLUMN platform TEXT'
+ )
+ c_db.execute(
+ 'ALTER TABLE mobile_devices ADD COLUMN version TEXT'
+ )
+ # Update mobile device platforms
+ for device_id, in c_db.execute(
+ 'SELECT device_id FROM mobile_devices WHERE official > 0').fetchall():
+ c_db.execute('UPDATE mobile_devices SET platform = ? WHERE device_id = ?',
+ ['android', device_id])
+
# Upgrade notifiers table from earlier versions
try:
c_db.execute('SELECT custom_conditions FROM notifiers')
diff --git a/plexpy/api2.py b/plexpy/api2.py
index 6d34aee9..b6733019 100644
--- a/plexpy/api2.py
+++ b/plexpy/api2.py
@@ -398,9 +398,9 @@ class API2(object):
return data
- def register_device(self, device_id='', device_name='', friendly_name='', onesignal_id=None,
- min_version='', **kwargs):
- """ Registers the Tautulli Android App for notifications.
+ def register_device(self, device_id='', device_name='', platform=None, version=None,
+ friendly_name='', onesignal_id=None, min_version='', **kwargs):
+ """ Registers the Tautulli Remote App.
```
Required parameters:
@@ -408,6 +408,8 @@ class API2(object):
device_name (str): The device name of the mobile device
Optional parameters:
+ platform (str): The platform of the mobile devices
+ version (str): The version of the app
friendly_name (str): A friendly name to identify the mobile device
onesignal_id (str): The OneSignal id for the mobile device
min_version (str): The minimum Tautulli version supported by the mobile device, e.g. v2.5.6
@@ -462,6 +464,8 @@ class API2(object):
result = mobile_app.add_mobile_device(device_id=device_id,
device_name=device_name,
device_token=self._api_apikey,
+ platform=platform,
+ version=version,
friendly_name=friendly_name,
onesignal_id=onesignal_id)
diff --git a/plexpy/mobile_app.py b/plexpy/mobile_app.py
index ba37f5f7..75a33439 100644
--- a/plexpy/mobile_app.py
+++ b/plexpy/mobile_app.py
@@ -89,12 +89,15 @@ def get_mobile_device_by_token(device_token=None):
return get_mobile_devices(device_token=device_token)
-def add_mobile_device(device_id=None, device_name=None, device_token=None, friendly_name=None, onesignal_id=None):
+def add_mobile_device(device_id=None, device_name=None, device_token=None,
+ platform=None, version=None, friendly_name=None, onesignal_id=None):
db = database.MonitorDatabase()
keys = {'device_id': device_id}
values = {'device_name': device_name,
'device_token': device_token,
+ 'platform': platform,
+ 'version': version,
'onesignal_id': onesignal_id}
if friendly_name:
@@ -110,8 +113,9 @@ def add_mobile_device(device_id=None, device_name=None, device_token=None, frien
if result == 'insert':
logger.info("Tautulli MobileApp :: Registered mobile device '%s' in the database." % device_name)
else:
- logger.debug("Tautulli MobileApp :: Re-registered mobile device '%s' in the database." % device_name)
+ logger.info("Tautulli MobileApp :: Re-registered mobile device '%s' in the database." % device_name)
+ set_last_seen(device_token=device_token)
threading.Thread(target=set_official, args=[device_id, onesignal_id]).start()
return True
@@ -172,10 +176,13 @@ def delete_mobile_device(mobile_device_id=None, device_id=None):
def set_official(device_id, onesignal_id):
db = database.MonitorDatabase()
official = validate_onesignal_id(onesignal_id=onesignal_id)
+ platform = 'android' if official > 0 else None
try:
- result = db.action('UPDATE mobile_devices SET official = ? WHERE device_id = ?',
- args=[official, device_id])
+ result = db.action('UPDATE mobile_devices '
+ 'SET official = ?, platform = coalesce(platform, ?) '
+ 'WHERE device_id = ?',
+ args=[official, platform, device_id])
except Exception as e:
logger.warn("Tautulli MobileApp :: Failed to set official flag for device: %s." % e)
return