mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-13 08:42:59 -07:00
Fix bug with activity pane when user isn't an authenticated user.
Fix a grouping issue on users table with the "Local" user.
This commit is contained in:
parent
41d09066fe
commit
2a613c117f
3 changed files with 68 additions and 57 deletions
|
@ -46,7 +46,7 @@ history_table_options = {
|
||||||
"data":"friendly_name",
|
"data":"friendly_name",
|
||||||
"createdCell": function (td, cellData, rowData, row, col) {
|
"createdCell": function (td, cellData, rowData, row, col) {
|
||||||
if (cellData !== '') {
|
if (cellData !== '') {
|
||||||
if (rowData['user_id'] !== '') {
|
if (rowData['user_id']) {
|
||||||
$(td).html('<a href="user?user_id=' + rowData['user_id'] + '">' + cellData + '</a>');
|
$(td).html('<a href="user?user_id=' + rowData['user_id'] + '">' + cellData + '</a>');
|
||||||
} else {
|
} else {
|
||||||
$(td).html('<a href="user?user=' + rowData['user'] + '">' + cellData + '</a>');
|
$(td).html('<a href="user?user=' + rowData['user'] + '">' + cellData + '</a>');
|
||||||
|
|
|
@ -37,16 +37,18 @@ class DataFactory(object):
|
||||||
'session_history.ip_address',
|
'session_history.ip_address',
|
||||||
'COUNT(session_history.id) as plays',
|
'COUNT(session_history.id) as plays',
|
||||||
'session_history.user',
|
'session_history.user',
|
||||||
'session_history.user_id'
|
'session_history.user_id',
|
||||||
|
'(case when typeof(session_history.user_id) = "integer" \
|
||||||
|
then session_history.user_id else -1 end) as grp_id',
|
||||||
]
|
]
|
||||||
try:
|
try:
|
||||||
query = data_tables.ssp_query(table_name='session_history',
|
query = data_tables.ssp_query(table_name='session_history',
|
||||||
columns=columns,
|
columns=columns,
|
||||||
custom_where=[],
|
custom_where=[],
|
||||||
group_by=['session_history.user_id'],
|
group_by=['grp_id'],
|
||||||
join_types=['LEFT OUTER JOIN'],
|
join_types=['LEFT OUTER JOIN'],
|
||||||
join_tables=['users'],
|
join_tables=['users'],
|
||||||
join_evals=[['session_history.user_id', 'users.user_id']],
|
join_evals=[['grp_id', 'users.user_id']],
|
||||||
kwargs=kwargs)
|
kwargs=kwargs)
|
||||||
except:
|
except:
|
||||||
logger.warn("Unable to execute database query.")
|
logger.warn("Unable to execute database query.")
|
||||||
|
@ -309,60 +311,69 @@ class DataFactory(object):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_user_details(self, user=None, user_id=None):
|
def get_user_details(self, user=None, user_id=None):
|
||||||
try:
|
monitor_db = database.MonitorDatabase()
|
||||||
monitor_db = database.MonitorDatabase()
|
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
query = 'SELECT user_id, username, friendly_name, email, ' \
|
query = 'SELECT user_id, username, friendly_name, email, ' \
|
||||||
'thumb, is_home_user, is_allow_sync, is_restricted ' \
|
'thumb, is_home_user, is_allow_sync, is_restricted ' \
|
||||||
'FROM users ' \
|
'FROM users ' \
|
||||||
'WHERE username = ? ' \
|
'WHERE username = ? ' \
|
||||||
'UNION ALL ' \
|
'UNION ALL ' \
|
||||||
'SELECT null, user, null, null, null, null, null, null ' \
|
'SELECT null, user, null, null, null, null, null, null ' \
|
||||||
'FROM session_history ' \
|
'FROM session_history ' \
|
||||||
'WHERE user = ? ' \
|
'WHERE user = ? ' \
|
||||||
'GROUP BY user ' \
|
'GROUP BY user ' \
|
||||||
'LIMIT 1'
|
'LIMIT 1'
|
||||||
result = monitor_db.select(query, args=[user, user])
|
result = monitor_db.select(query, args=[user, user])
|
||||||
elif user_id:
|
elif user_id:
|
||||||
query = 'SELECT user_id, username, friendly_name, email, ' \
|
query = 'SELECT user_id, username, friendly_name, email, ' \
|
||||||
'thumb, is_home_user, is_allow_sync, is_restricted ' \
|
'thumb, is_home_user, is_allow_sync, is_restricted ' \
|
||||||
'FROM users ' \
|
'FROM users ' \
|
||||||
'WHERE user_id = ? ' \
|
'WHERE user_id = ? ' \
|
||||||
'UNION ALL ' \
|
'UNION ALL ' \
|
||||||
'SELECT user_id, user, null, null, null, null, null, null ' \
|
'SELECT user_id, user, null, null, null, null, null, null ' \
|
||||||
'FROM session_history ' \
|
'FROM session_history ' \
|
||||||
'WHERE user_id = ? ' \
|
'WHERE user_id = ? ' \
|
||||||
'GROUP BY user ' \
|
'GROUP BY user ' \
|
||||||
'LIMIT 1'
|
'LIMIT 1'
|
||||||
result = monitor_db.select(query, args=[user_id, user_id])
|
result = monitor_db.select(query, args=[user_id, user_id])
|
||||||
if result:
|
else:
|
||||||
for item in result:
|
result = None
|
||||||
if not item['friendly_name']:
|
|
||||||
friendly_name = item['username']
|
|
||||||
else:
|
|
||||||
friendly_name = item['friendly_name']
|
|
||||||
if not item['thumb'] or item['thumb'] == '':
|
|
||||||
user_thumb = common.DEFAULT_USER_THUMB
|
|
||||||
else:
|
|
||||||
user_thumb = item['thumb']
|
|
||||||
|
|
||||||
user_details = {"user_id": item['user_id'],
|
if result:
|
||||||
"username": item['username'],
|
user_details = {}
|
||||||
"friendly_name": friendly_name,
|
for item in result:
|
||||||
"email": item['email'],
|
if not item['friendly_name']:
|
||||||
"thumb": user_thumb,
|
friendly_name = item['username']
|
||||||
"is_home_user": item['is_home_user'],
|
else:
|
||||||
"is_allow_sync": item['is_allow_sync'],
|
friendly_name = item['friendly_name']
|
||||||
"is_restricted": item['is_restricted']
|
if not item['thumb'] or item['thumb'] == '':
|
||||||
}
|
user_thumb = common.DEFAULT_USER_THUMB
|
||||||
return user_details
|
else:
|
||||||
else:
|
user_thumb = item['thumb']
|
||||||
return None
|
|
||||||
except:
|
|
||||||
return None
|
|
||||||
|
|
||||||
return None
|
user_details = {"user_id": item['user_id'],
|
||||||
|
"username": item['username'],
|
||||||
|
"friendly_name": friendly_name,
|
||||||
|
"email": item['email'],
|
||||||
|
"thumb": user_thumb,
|
||||||
|
"is_home_user": item['is_home_user'],
|
||||||
|
"is_allow_sync": item['is_allow_sync'],
|
||||||
|
"is_restricted": item['is_restricted']
|
||||||
|
}
|
||||||
|
return user_details
|
||||||
|
else:
|
||||||
|
# If there is no user data we must return something
|
||||||
|
# Use "Local" user to retain compatibility with PlexWatch database value
|
||||||
|
return {"user_id": None,
|
||||||
|
"username": 'Local',
|
||||||
|
"friendly_name": 'Local',
|
||||||
|
"email": '',
|
||||||
|
"thumb": '',
|
||||||
|
"is_home_user": 0,
|
||||||
|
"is_allow_sync": 0,
|
||||||
|
"is_restricted": 0
|
||||||
|
}
|
||||||
|
|
||||||
def get_home_stats(self, time_range='30'):
|
def get_home_stats(self, time_range='30'):
|
||||||
monitor_db = database.MonitorDatabase()
|
monitor_db = database.MonitorDatabase()
|
||||||
|
|
|
@ -547,7 +547,7 @@ class PmsConnect(object):
|
||||||
'grandparent_thumb': helpers.get_xml_attr(session, 'grandparentThumb'),
|
'grandparent_thumb': helpers.get_xml_attr(session, 'grandparentThumb'),
|
||||||
'thumb': helpers.get_xml_attr(session, 'thumb'),
|
'thumb': helpers.get_xml_attr(session, 'thumb'),
|
||||||
'bif_thumb': '',
|
'bif_thumb': '',
|
||||||
'user': helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title'),
|
'user': user_details['username'],
|
||||||
'user_id': user_details['user_id'],
|
'user_id': user_details['user_id'],
|
||||||
'friendly_name': user_details['friendly_name'],
|
'friendly_name': user_details['friendly_name'],
|
||||||
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
|
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
|
||||||
|
@ -656,7 +656,7 @@ class PmsConnect(object):
|
||||||
'grandparent_thumb': helpers.get_xml_attr(session, 'grandparentThumb'),
|
'grandparent_thumb': helpers.get_xml_attr(session, 'grandparentThumb'),
|
||||||
'thumb': helpers.get_xml_attr(session, 'thumb'),
|
'thumb': helpers.get_xml_attr(session, 'thumb'),
|
||||||
'bif_thumb': bif_thumb,
|
'bif_thumb': bif_thumb,
|
||||||
'user': helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title'),
|
'user': user_details['username'],
|
||||||
'user_id': user_details['user_id'],
|
'user_id': user_details['user_id'],
|
||||||
'friendly_name': user_details['friendly_name'],
|
'friendly_name': user_details['friendly_name'],
|
||||||
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
|
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue