mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-08 06:00:51 -07:00
Add platform and version to mobile devices
This commit is contained in:
parent
c0837defed
commit
bde2372d90
5 changed files with 56 additions and 11 deletions
|
@ -20,10 +20,19 @@
|
|||
</div>
|
||||
<p class="help-block">Optional: Enter a friendly name for this device. Leave blank for default.</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="friendly_name">App Version</label>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" id="app_version" name="app_version" value="${device['version'] or ''}" size="30" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<p class="help-block">The version of the mobile app.</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="friendly_name">Device Token</label>
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="col-md-12">
|
||||
<div class="input-group">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-form reveal-token" type="button"><i class="fa fa-eye-slash"></i></button>
|
||||
|
|
|
@ -16,7 +16,14 @@ DOCUMENTATION :: END
|
|||
% if device['official'] == -1:
|
||||
<span class="toggle-left official-tooltip" data-toggle="tooltip" data-placement="top" title="OneSignal Validation Failed"><i class="fa fa-lg fa-fw fa-exclamation-triangle"></i></span>
|
||||
% elif device['official'] > 0:
|
||||
<span class="toggle-left"><i class="fa fa-lg fa-fw fa-mobile"></i></span>
|
||||
<%
|
||||
icon = 'mobile'
|
||||
if device['platform'] == 'android':
|
||||
icon = 'android'
|
||||
elif device['platform'] == 'ios':
|
||||
icon = 'apple'
|
||||
%>
|
||||
<span class="toggle-left"><i class="fa fa-lg fa-fw fa-${icon}"></i></span>
|
||||
% else:
|
||||
<span class="toggle-left official-tooltip" data-toggle="tooltip" data-placement="top" title="Unofficial or Unknown App"><i class="fa fa-lg fa-fw fa-exclamation-triangle"></i></span>
|
||||
% endif
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue