mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-07 13:41:15 -07:00
Update guest access for collection and playlist changes
This commit is contained in:
parent
3cc8c1f8c5
commit
c8b0ff22f6
8 changed files with 407 additions and 373 deletions
|
@ -782,6 +782,7 @@ DOCUMENTATION :: END
|
||||||
% if metadata:
|
% if metadata:
|
||||||
<%
|
<%
|
||||||
data = defaultdict(None, **metadata)
|
data = defaultdict(None, **metadata)
|
||||||
|
history_user_id = '' if _session['user_group'] == 'admin' else _session['user_id']
|
||||||
%>
|
%>
|
||||||
<script src="${http_root}js/tables/history_table.js${cache_param}"></script>
|
<script src="${http_root}js/tables/history_table.js${cache_param}"></script>
|
||||||
<script src="${http_root}js/tables/export_table.js${cache_param}"></script>
|
<script src="${http_root}js/tables/export_table.js${cache_param}"></script>
|
||||||
|
@ -795,7 +796,7 @@ DOCUMENTATION :: END
|
||||||
return {
|
return {
|
||||||
json_data: JSON.stringify( d ),
|
json_data: JSON.stringify( d ),
|
||||||
guid: "${data['guid']}",
|
guid: "${data['guid']}",
|
||||||
user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"
|
user_id: "${history_user_id}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -811,7 +812,7 @@ DOCUMENTATION :: END
|
||||||
return {
|
return {
|
||||||
json_data: JSON.stringify( d ),
|
json_data: JSON.stringify( d ),
|
||||||
grandparent_rating_key: "${data['rating_key']}",
|
grandparent_rating_key: "${data['rating_key']}",
|
||||||
user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"
|
user_id: "${history_user_id}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -827,7 +828,7 @@ DOCUMENTATION :: END
|
||||||
return {
|
return {
|
||||||
json_data: JSON.stringify( d ),
|
json_data: JSON.stringify( d ),
|
||||||
parent_rating_key: "${data['rating_key']}",
|
parent_rating_key: "${data['rating_key']}",
|
||||||
user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"
|
user_id: "${history_user_id}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -843,7 +844,7 @@ DOCUMENTATION :: END
|
||||||
return {
|
return {
|
||||||
json_data: JSON.stringify( d ),
|
json_data: JSON.stringify( d ),
|
||||||
rating_key: "${data['rating_key']}",
|
rating_key: "${data['rating_key']}",
|
||||||
user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"
|
user_id: "${history_user_id}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -868,6 +869,132 @@ DOCUMENTATION :: END
|
||||||
$("#refresh-history-list").click(function () {
|
$("#refresh-history-list").click(function () {
|
||||||
history_table.draw();
|
history_table.draw();
|
||||||
});
|
});
|
||||||
|
</script>
|
||||||
|
% endif
|
||||||
|
% if data['media_type'] in ('show', 'season', 'artist', 'album', 'photo_album', 'collection', 'playlist'):
|
||||||
|
<script>
|
||||||
|
$.ajax({
|
||||||
|
url: 'get_item_children',
|
||||||
|
type: 'GET',
|
||||||
|
async: true,
|
||||||
|
data: {
|
||||||
|
rating_key: "${data['rating_key']}",
|
||||||
|
media_type: "${data['media_type']}"
|
||||||
|
},
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#children-list").html(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
% endif
|
||||||
|
% if data['media_type'] == 'collection':
|
||||||
|
<script>
|
||||||
|
$.ajax({
|
||||||
|
url: 'get_item_children_related',
|
||||||
|
type: 'GET',
|
||||||
|
async: true,
|
||||||
|
data: {
|
||||||
|
rating_key: "${data['rating_key']}",
|
||||||
|
title: "${data['title']}"
|
||||||
|
},
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#collection-related-list-container").html(xhr.responseText).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
% endif
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
// Javascript to enable link to tab
|
||||||
|
var hash = document.location.hash;
|
||||||
|
var prefix = "tab_";
|
||||||
|
if (hash) {
|
||||||
|
$('.nav-list a[href=' + hash.replace(prefix, "") + ']').tab('show').trigger('show.bs.tab');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change hash for page-reload
|
||||||
|
$('.nav-list a').on('shown.bs.tab', function (e) {
|
||||||
|
window.location.hash = e.target.hash.replace("#", "#" + prefix);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
|
||||||
|
$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();
|
||||||
|
});
|
||||||
|
|
||||||
|
var airdate = $("#airdate")
|
||||||
|
var runtime = $("#runtime")
|
||||||
|
airdate.html(moment(airdate.text()).format('MMM DD, YYYY'));
|
||||||
|
runtime.html(humanDuration(runtime.text(), runtime.data('sig')));
|
||||||
|
|
||||||
|
$('div.art-face').animate({ opacity: 0.2 }, { duration: 1000 });
|
||||||
|
$('#channel-icon').popover({
|
||||||
|
selector: '[data-toggle=popover]',
|
||||||
|
html: true,
|
||||||
|
container: 'body',
|
||||||
|
trigger: 'hover',
|
||||||
|
placement: 'right',
|
||||||
|
template: '<div class="popover channel-thumbnail-popover" role="tooltip"><div class="arrow" style="top: 50%;"></div><div class="popover-content"></div></div>',
|
||||||
|
content: function () {
|
||||||
|
return '<div class="channel-thumbnail" style="background-image: url(' + $(this).data('img') + ');" />';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<script>
|
||||||
|
$("#toggle-export-modal").click(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: 'export_metadata_modal',
|
||||||
|
data: {
|
||||||
|
section_id: $(this).data('section_id'),
|
||||||
|
rating_key: $(this).data('rating_key'),
|
||||||
|
media_type: $(this).data('media_type'),
|
||||||
|
sub_media_type: $(this).data('sub_media_type')
|
||||||
|
},
|
||||||
|
cache: false,
|
||||||
|
async: true,
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#export-modal").html(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function loadExportTable() {
|
||||||
|
// Build export table
|
||||||
|
export_table_options.ajax = {
|
||||||
|
url: 'get_export_list',
|
||||||
|
type: 'POST',
|
||||||
|
data: function ( d ) {
|
||||||
|
return {
|
||||||
|
json_data: JSON.stringify( d ),
|
||||||
|
rating_key: "${data['rating_key']}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export_table = $('#export_table-RK-${data["rating_key"]}').DataTable(export_table_options);
|
||||||
|
export_table.columns([2, 7]).visible(false);
|
||||||
|
|
||||||
|
var colvis = new $.fn.dataTable.ColVis(export_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark' });
|
||||||
|
$(colvis.button()).appendTo('#button-bar-export');
|
||||||
|
|
||||||
|
clearSearchButton('export_table-RK-${data["rating_key"]}', export_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
if ($('#tabs-history').length) {
|
||||||
|
$('a[href="#tabs-export"]').on('shown.bs.tab', function() {
|
||||||
|
if (typeof(export_table) === 'undefined') {
|
||||||
|
loadExportTable();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
loadExportTable();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#refresh-export-table").click(function () {
|
||||||
|
export_table.draw();
|
||||||
|
});
|
||||||
|
|
||||||
$('#row-edit-mode').on('click', function() {
|
$('#row-edit-mode').on('click', function() {
|
||||||
$('#row-edit-mode-alert').fadeIn(200);
|
$('#row-edit-mode-alert').fadeIn(200);
|
||||||
|
@ -928,135 +1055,12 @@ DOCUMENTATION :: END
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
|
||||||
% endif
|
|
||||||
% if data['media_type'] in ('show', 'season', 'artist', 'album', 'photo_album', 'collection', 'playlist'):
|
|
||||||
<script>
|
|
||||||
$.ajax({
|
|
||||||
url: 'get_item_children',
|
|
||||||
type: 'GET',
|
|
||||||
async: true,
|
|
||||||
data: {
|
|
||||||
rating_key: "${data['rating_key']}",
|
|
||||||
media_type: "${data['media_type']}"
|
|
||||||
},
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#children-list").html(xhr.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
% endif
|
|
||||||
% if data['media_type'] == 'collection':
|
|
||||||
<script>
|
|
||||||
$.ajax({
|
|
||||||
url: 'get_item_children_related',
|
|
||||||
type: 'GET',
|
|
||||||
async: true,
|
|
||||||
data: {
|
|
||||||
rating_key: "${data['rating_key']}",
|
|
||||||
title: "${data['title']}"
|
|
||||||
},
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#collection-related-list-container").html(xhr.responseText).show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
% endif
|
|
||||||
<script>
|
|
||||||
$(document).ready(function () {
|
|
||||||
// Javascript to enable link to tab
|
|
||||||
var hash = document.location.hash;
|
|
||||||
var prefix = "tab_";
|
|
||||||
if (hash) {
|
|
||||||
$('.nav-list a[href=' + hash.replace(prefix, "") + ']').tab('show').trigger('show.bs.tab');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change hash for page-reload
|
|
||||||
$('.nav-list a').on('shown.bs.tab', function (e) {
|
|
||||||
window.location.hash = e.target.hash.replace("#", "#" + prefix);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
|
|
||||||
$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.metadata-xml').on('tripleclick', function () {
|
$('.metadata-xml').on('tripleclick', function () {
|
||||||
openPlexXML("/library/metadata/${data['rating_key']}");
|
openPlexXML("/library/metadata/${data['rating_key']}");
|
||||||
});
|
});
|
||||||
|
|
||||||
var airdate = $("#airdate")
|
|
||||||
var runtime = $("#runtime")
|
|
||||||
airdate.html(moment(airdate.text()).format('MMM DD, YYYY'));
|
|
||||||
runtime.html(humanDuration(runtime.text(), runtime.data('sig')));
|
|
||||||
|
|
||||||
$('div.art-face').animate({ opacity: 0.2 }, { duration: 1000 });
|
|
||||||
$('#channel-icon').popover({
|
|
||||||
selector: '[data-toggle=popover]',
|
|
||||||
html: true,
|
|
||||||
container: 'body',
|
|
||||||
trigger: 'hover',
|
|
||||||
placement: 'right',
|
|
||||||
template: '<div class="popover channel-thumbnail-popover" role="tooltip"><div class="arrow" style="top: 50%;"></div><div class="popover-content"></div></div>',
|
|
||||||
content: function () {
|
|
||||||
return '<div class="channel-thumbnail" style="background-image: url(' + $(this).data('img') + ');" />';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#toggle-export-modal").click(function() {
|
|
||||||
$.ajax({
|
|
||||||
url: 'export_metadata_modal',
|
|
||||||
data: {
|
|
||||||
section_id: $(this).data('section_id'),
|
|
||||||
rating_key: $(this).data('rating_key'),
|
|
||||||
media_type: $(this).data('media_type'),
|
|
||||||
sub_media_type: $(this).data('sub_media_type')
|
|
||||||
},
|
|
||||||
cache: false,
|
|
||||||
async: true,
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#export-modal").html(xhr.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
function loadExportTable() {
|
|
||||||
// Build export table
|
|
||||||
export_table_options.ajax = {
|
|
||||||
url: 'get_export_list',
|
|
||||||
type: 'POST',
|
|
||||||
data: function ( d ) {
|
|
||||||
return {
|
|
||||||
json_data: JSON.stringify( d ),
|
|
||||||
rating_key: "${data['rating_key']}"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
export_table = $('#export_table-RK-${data["rating_key"]}').DataTable(export_table_options);
|
|
||||||
export_table.columns([2, 7]).visible(false);
|
|
||||||
|
|
||||||
var colvis = new $.fn.dataTable.ColVis(export_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark' });
|
|
||||||
$(colvis.button()).appendTo('#button-bar-export');
|
|
||||||
|
|
||||||
clearSearchButton('export_table-RK-${data["rating_key"]}', export_table);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
if ($('#tabs-history').length) {
|
|
||||||
$('a[href="#tabs-export"]').on('shown.bs.tab', function() {
|
|
||||||
if (typeof(export_table) === 'undefined') {
|
|
||||||
loadExportTable();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
loadExportTable();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#refresh-export-table").click(function () {
|
|
||||||
export_table.draw();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
% endif
|
||||||
% if data.get('poster_url'):
|
% if data.get('poster_url'):
|
||||||
<script>
|
<script>
|
||||||
$('#hosted-poster').popover({
|
$('#hosted-poster').popover({
|
||||||
|
|
|
@ -90,11 +90,13 @@ DOCUMENTATION :: END
|
||||||
<ul class="nav nav-list nav-pills" role="tablist">
|
<ul class="nav nav-list nav-pills" role="tablist">
|
||||||
<li class="active"><a href="#tabs-profile" role="tab" data-toggle="tab">Profile</a></li>
|
<li class="active"><a href="#tabs-profile" role="tab" data-toggle="tab">Profile</a></li>
|
||||||
<li><a href="#tabs-history" role="tab" data-toggle="tab">History</a></li>
|
<li><a href="#tabs-history" role="tab" data-toggle="tab">History</a></li>
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
% if data['section_id'] != LIVE_TV_SECTION_ID:
|
% if data['section_id'] != LIVE_TV_SECTION_ID:
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
<li><a href="#tabs-mediainfo" role="tab" data-toggle="tab">Media Info</a></li>
|
<li><a href="#tabs-mediainfo" role="tab" data-toggle="tab">Media Info</a></li>
|
||||||
|
% endif
|
||||||
<li><a href="#tabs-collections" role="tab" data-toggle="tab">Collections</a></li>
|
<li><a href="#tabs-collections" role="tab" data-toggle="tab">Collections</a></li>
|
||||||
<li><a href="#tabs-playlists" role="tab" data-toggle="tab">Playlists</a></li>
|
<li><a href="#tabs-playlists" role="tab" data-toggle="tab">Playlists</a></li>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
<li><a href="#tabs-export" role="tab" data-toggle="tab">Export</a></li>
|
<li><a href="#tabs-export" role="tab" data-toggle="tab">Export</a></li>
|
||||||
% endif
|
% endif
|
||||||
% endif
|
% endif
|
||||||
|
@ -307,6 +309,7 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% endif
|
||||||
<div role="tabpanel" class="tab-pane" id="tabs-collections">
|
<div role="tabpanel" class="tab-pane" id="tabs-collections">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -401,6 +404,7 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
<div role="tabpanel" class="tab-pane" id="tabs-export">
|
<div role="tabpanel" class="tab-pane" id="tabs-export">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -521,6 +525,9 @@ DOCUMENTATION :: END
|
||||||
<script src="${http_root}js/dataTables.bootstrap.pagination.js"></script>
|
<script src="${http_root}js/dataTables.bootstrap.pagination.js"></script>
|
||||||
% if data:
|
% if data:
|
||||||
<% from plexpy.common import LIVE_TV_SECTION_ID %>
|
<% from plexpy.common import LIVE_TV_SECTION_ID %>
|
||||||
|
<%
|
||||||
|
history_user_id = '' if _session['user_group'] == 'admin' else _session['user_id']
|
||||||
|
%>
|
||||||
<script>
|
<script>
|
||||||
% if str(data['section_id']).isdigit():
|
% if str(data['section_id']).isdigit():
|
||||||
var section_id = ${data['section_id']};
|
var section_id = ${data['section_id']};
|
||||||
|
@ -547,6 +554,8 @@ DOCUMENTATION :: END
|
||||||
$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();
|
$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(".inactive-library-tooltip").tooltip();
|
||||||
|
|
||||||
function loadHistoryTable() {
|
function loadHistoryTable() {
|
||||||
// Build watch history table
|
// Build watch history table
|
||||||
history_table_options.ajax = {
|
history_table_options.ajax = {
|
||||||
|
@ -556,7 +565,7 @@ DOCUMENTATION :: END
|
||||||
return {
|
return {
|
||||||
json_data: JSON.stringify( d ),
|
json_data: JSON.stringify( d ),
|
||||||
section_id: section_id,
|
section_id: section_id,
|
||||||
user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"
|
user_id: "${history_user_id}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -578,44 +587,6 @@ DOCUMENTATION :: END
|
||||||
history_table.draw();
|
history_table.draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".inactive-library-tooltip").tooltip();
|
|
||||||
|
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
function loadMediaInfoTable() {
|
|
||||||
// Build media info table
|
|
||||||
media_info_table_options.ajax = {
|
|
||||||
url: 'get_library_media_info',
|
|
||||||
type: 'POST',
|
|
||||||
data: function ( d ) {
|
|
||||||
return {
|
|
||||||
json_data: JSON.stringify( d ),
|
|
||||||
section_id: section_id,
|
|
||||||
refresh: refresh_table
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
media_info_table = $('#media_info_table-SID-${data["section_id"]}').DataTable(media_info_table_options);
|
|
||||||
|
|
||||||
var colvis = new $.fn.dataTable.ColVis(media_info_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark' });
|
|
||||||
$(colvis.button()).appendTo('#button-bar-media-info');
|
|
||||||
|
|
||||||
clearSearchButton('media_info_table-SID-${data["section_id"]}', media_info_table);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('a[href="#tabs-mediainfo"]').on('shown.bs.tab', function() {
|
|
||||||
if (typeof(media_info_table) === 'undefined') {
|
|
||||||
loadMediaInfoTable();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#refresh-media-info-table").click(function () {
|
|
||||||
media_info_child_table = {};
|
|
||||||
refresh_table = true;
|
|
||||||
refresh_child_tables = true;
|
|
||||||
media_info_table.draw();
|
|
||||||
refresh_table = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
function loadCollectionsTable() {
|
function loadCollectionsTable() {
|
||||||
// Build collections table
|
// Build collections table
|
||||||
collections_table_options.ajax = {
|
collections_table_options.ajax = {
|
||||||
|
@ -676,107 +647,6 @@ DOCUMENTATION :: END
|
||||||
playlists_table.draw();
|
playlists_table.draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
function loadExportTable() {
|
|
||||||
// Build export table
|
|
||||||
export_table_options.ajax = {
|
|
||||||
url: 'get_export_list',
|
|
||||||
type: 'POST',
|
|
||||||
data: function ( d ) {
|
|
||||||
return {
|
|
||||||
json_data: JSON.stringify( d ),
|
|
||||||
section_id: section_id
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
export_table = $('#export_table-SID-${data["section_id"]}').DataTable(export_table_options);
|
|
||||||
export_table.columns([7]).visible(false);
|
|
||||||
|
|
||||||
var colvis = new $.fn.dataTable.ColVis(export_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark' });
|
|
||||||
$(colvis.button()).appendTo('#button-bar-export');
|
|
||||||
|
|
||||||
clearSearchButton('export_table-SID-${data["section_id"]}', export_table);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('a[href="#tabs-export"]').on('shown.bs.tab', function() {
|
|
||||||
if (typeof(export_table) === 'undefined') {
|
|
||||||
loadExportTable();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#refresh-export-table").click(function () {
|
|
||||||
export_table.draw();
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#edit-library-tooltip").tooltip();
|
|
||||||
|
|
||||||
// Load edit library modal
|
|
||||||
$("#toggle-edit-library-modal").click(function() {
|
|
||||||
$("#edit-library-tooltip").tooltip('hide');
|
|
||||||
$.ajax({
|
|
||||||
url: 'edit_library_dialog',
|
|
||||||
data: { section_id: section_id },
|
|
||||||
cache: false,
|
|
||||||
async: true,
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#edit-library-modal").html(xhr.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$(".export-button").click(function() {
|
|
||||||
$.ajax({
|
|
||||||
url: 'export_metadata_modal',
|
|
||||||
data: {
|
|
||||||
section_id: $(this).data('section_id'),
|
|
||||||
media_type: $(this).data('media_type'),
|
|
||||||
sub_media_type: $(this).data('sub_media_type'),
|
|
||||||
library_export: $(this).data('library_export')
|
|
||||||
},
|
|
||||||
cache: false,
|
|
||||||
async: true,
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#export-modal").html(xhr.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#row-edit-mode').on('click', function() {
|
|
||||||
$('#row-edit-mode-alert').fadeIn(200);
|
|
||||||
|
|
||||||
if ($(this).hasClass('active')) {
|
|
||||||
if (history_to_delete.length > 0) {
|
|
||||||
$('#deleteCount').text(history_to_delete.length);
|
|
||||||
$('#confirm-modal-delete').modal();
|
|
||||||
$('#confirm-modal-delete').one('click', '#confirm-delete', function () {
|
|
||||||
$.ajax({
|
|
||||||
url: 'delete_history_rows',
|
|
||||||
type: 'POST',
|
|
||||||
data: { row_ids: history_to_delete.join(',') },
|
|
||||||
async: true,
|
|
||||||
success: function (data) {
|
|
||||||
var msg = "History deleted";
|
|
||||||
showMsg(msg, false, true, 2000);
|
|
||||||
history_table.draw();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.delete-control').each(function () {
|
|
||||||
$(this).addClass('hidden');
|
|
||||||
$('#row-edit-mode-alert').fadeOut(200);
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
history_to_delete = [];
|
|
||||||
$('.delete-control').each(function() {
|
|
||||||
$(this).find('button.btn-danger').toggleClass('btn-warning').toggleClass('btn-danger');
|
|
||||||
$(this).removeClass('hidden');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
% endif
|
|
||||||
|
|
||||||
function recentlyWatched() {
|
function recentlyWatched() {
|
||||||
// Populate recently watched
|
// Populate recently watched
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -927,5 +797,143 @@ DOCUMENTATION :: END
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<script>
|
||||||
|
function loadMediaInfoTable() {
|
||||||
|
// Build media info table
|
||||||
|
media_info_table_options.ajax = {
|
||||||
|
url: 'get_library_media_info',
|
||||||
|
type: 'POST',
|
||||||
|
data: function ( d ) {
|
||||||
|
return {
|
||||||
|
json_data: JSON.stringify( d ),
|
||||||
|
section_id: section_id,
|
||||||
|
refresh: refresh_table
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
media_info_table = $('#media_info_table-SID-${data["section_id"]}').DataTable(media_info_table_options);
|
||||||
|
|
||||||
|
var colvis = new $.fn.dataTable.ColVis(media_info_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark' });
|
||||||
|
$(colvis.button()).appendTo('#button-bar-media-info');
|
||||||
|
|
||||||
|
clearSearchButton('media_info_table-SID-${data["section_id"]}', media_info_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('a[href="#tabs-mediainfo"]').on('shown.bs.tab', function() {
|
||||||
|
if (typeof(media_info_table) === 'undefined') {
|
||||||
|
loadMediaInfoTable();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#refresh-media-info-table").click(function () {
|
||||||
|
media_info_child_table = {};
|
||||||
|
refresh_table = true;
|
||||||
|
refresh_child_tables = true;
|
||||||
|
media_info_table.draw();
|
||||||
|
refresh_table = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
function loadExportTable() {
|
||||||
|
// Build export table
|
||||||
|
export_table_options.ajax = {
|
||||||
|
url: 'get_export_list',
|
||||||
|
type: 'POST',
|
||||||
|
data: function ( d ) {
|
||||||
|
return {
|
||||||
|
json_data: JSON.stringify( d ),
|
||||||
|
section_id: section_id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export_table = $('#export_table-SID-${data["section_id"]}').DataTable(export_table_options);
|
||||||
|
export_table.columns([7]).visible(false);
|
||||||
|
|
||||||
|
var colvis = new $.fn.dataTable.ColVis(export_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark' });
|
||||||
|
$(colvis.button()).appendTo('#button-bar-export');
|
||||||
|
|
||||||
|
clearSearchButton('export_table-SID-${data["section_id"]}', export_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('a[href="#tabs-export"]').on('shown.bs.tab', function() {
|
||||||
|
if (typeof(export_table) === 'undefined') {
|
||||||
|
loadExportTable();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#refresh-export-table").click(function () {
|
||||||
|
export_table.draw();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#edit-library-tooltip").tooltip();
|
||||||
|
|
||||||
|
// Load edit library modal
|
||||||
|
$("#toggle-edit-library-modal").click(function() {
|
||||||
|
$("#edit-library-tooltip").tooltip('hide');
|
||||||
|
$.ajax({
|
||||||
|
url: 'edit_library_dialog',
|
||||||
|
data: { section_id: section_id },
|
||||||
|
cache: false,
|
||||||
|
async: true,
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#edit-library-modal").html(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".export-button").click(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: 'export_metadata_modal',
|
||||||
|
data: {
|
||||||
|
section_id: $(this).data('section_id'),
|
||||||
|
media_type: $(this).data('media_type'),
|
||||||
|
sub_media_type: $(this).data('sub_media_type'),
|
||||||
|
library_export: $(this).data('library_export')
|
||||||
|
},
|
||||||
|
cache: false,
|
||||||
|
async: true,
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#export-modal").html(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#row-edit-mode').on('click', function() {
|
||||||
|
$('#row-edit-mode-alert').fadeIn(200);
|
||||||
|
|
||||||
|
if ($(this).hasClass('active')) {
|
||||||
|
if (history_to_delete.length > 0) {
|
||||||
|
$('#deleteCount').text(history_to_delete.length);
|
||||||
|
$('#confirm-modal-delete').modal();
|
||||||
|
$('#confirm-modal-delete').one('click', '#confirm-delete', function () {
|
||||||
|
$.ajax({
|
||||||
|
url: 'delete_history_rows',
|
||||||
|
type: 'POST',
|
||||||
|
data: { row_ids: history_to_delete.join(',') },
|
||||||
|
async: true,
|
||||||
|
success: function (data) {
|
||||||
|
var msg = "History deleted";
|
||||||
|
showMsg(msg, false, true, 2000);
|
||||||
|
history_table.draw();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.delete-control').each(function () {
|
||||||
|
$(this).addClass('hidden');
|
||||||
|
$('#row-edit-mode-alert').fadeOut(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
history_to_delete = [];
|
||||||
|
$('.delete-control').each(function() {
|
||||||
|
$(this).find('button.btn-danger').toggleClass('btn-warning').toggleClass('btn-danger');
|
||||||
|
$(this).removeClass('hidden');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
% endif
|
||||||
% endif
|
% endif
|
||||||
</%def>
|
</%def>
|
|
@ -549,7 +549,101 @@ DOCUMENTATION :: END
|
||||||
|
|
||||||
$(".inactive-user-tooltip").tooltip();
|
$(".inactive-user-tooltip").tooltip();
|
||||||
|
|
||||||
% if _session['user_group'] == 'admin':
|
function recentlyWatched() {
|
||||||
|
// Populate recently watched
|
||||||
|
$.ajax({
|
||||||
|
url: 'get_user_recently_watched',
|
||||||
|
async: true,
|
||||||
|
data: {
|
||||||
|
user_id: user_id,
|
||||||
|
limit: 50
|
||||||
|
},
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#user-recently-watched").html(xhr.responseText);
|
||||||
|
highlightWatchedScrollerButton();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
recentlyWatched();
|
||||||
|
|
||||||
|
function highlightWatchedScrollerButton() {
|
||||||
|
var scroller = $("#recently-watched-row-scroller");
|
||||||
|
var numElems = scroller.find("li").length;
|
||||||
|
scroller.width(numElems * 175);
|
||||||
|
if (scroller.width() > $("#user-recently-watched").width()) {
|
||||||
|
$("#recently-watched-page-right").removeClass("disabled");
|
||||||
|
} else {
|
||||||
|
$("#recently-watched-page-right").addClass("disabled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(window).resize(function() {
|
||||||
|
highlightWatchedScrollerButton();
|
||||||
|
});
|
||||||
|
|
||||||
|
var leftTotal = 0;
|
||||||
|
$(".paginate").click(function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var scroller = $("#recently-watched-row-scroller");
|
||||||
|
var containerWidth = $("#user-recently-watched").width();
|
||||||
|
var scrollAmount = $(this).data("id") * parseInt(containerWidth / 175) * 175;
|
||||||
|
var leftMax = Math.min(-parseInt(scroller.width()) + Math.abs(scrollAmount), 0);
|
||||||
|
|
||||||
|
leftTotal = Math.max(Math.min(leftTotal + scrollAmount, 0), leftMax);
|
||||||
|
scroller.animate({ left: leftTotal }, 250);
|
||||||
|
|
||||||
|
if (leftTotal == 0) {
|
||||||
|
$("#recently-watched-page-left").addClass("disabled").blur();
|
||||||
|
} else {
|
||||||
|
$("#recently-watched-page-left").removeClass("disabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (leftTotal == leftMax) {
|
||||||
|
$("#recently-watched-page-right").addClass("disabled").blur();
|
||||||
|
} else {
|
||||||
|
$("#recently-watched-page-right").removeClass("disabled");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
|
||||||
|
// Javascript to enable link to tab
|
||||||
|
var hash = document.location.hash;
|
||||||
|
var prefix = "tab_";
|
||||||
|
if (hash) {
|
||||||
|
$('.nav-list a[href=' + hash.replace(prefix, "") + ']').tab('show').trigger('show.bs.tab');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change hash for page-reload
|
||||||
|
$('.nav-list a').on('shown.bs.tab', function (e) {
|
||||||
|
window.location.hash = e.target.hash.replace("#", "#" + prefix);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Populate watch time stats
|
||||||
|
$.ajax({
|
||||||
|
url: 'user_watch_time_stats',
|
||||||
|
async: true,
|
||||||
|
data: { user_id: user_id, user: username },
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#user-time-stats").html(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Populate platform stats
|
||||||
|
$.ajax({
|
||||||
|
url: 'user_player_stats',
|
||||||
|
async: true,
|
||||||
|
data: { user_id: user_id, user: username },
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#user-player-stats").html(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<script>
|
||||||
$("#edit-user-tooltip").tooltip();
|
$("#edit-user-tooltip").tooltip();
|
||||||
|
|
||||||
// Load edit user modal
|
// Load edit user modal
|
||||||
|
@ -644,100 +738,7 @@ DOCUMENTATION :: END
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
% endif
|
|
||||||
|
|
||||||
function recentlyWatched() {
|
|
||||||
// Populate recently watched
|
|
||||||
$.ajax({
|
|
||||||
url: 'get_user_recently_watched',
|
|
||||||
async: true,
|
|
||||||
data: {
|
|
||||||
user_id: user_id,
|
|
||||||
limit: 50
|
|
||||||
},
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#user-recently-watched").html(xhr.responseText);
|
|
||||||
highlightWatchedScrollerButton();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
recentlyWatched();
|
|
||||||
|
|
||||||
function highlightWatchedScrollerButton() {
|
|
||||||
var scroller = $("#recently-watched-row-scroller");
|
|
||||||
var numElems = scroller.find("li").length;
|
|
||||||
scroller.width(numElems * 175);
|
|
||||||
if (scroller.width() > $("#user-recently-watched").width()) {
|
|
||||||
$("#recently-watched-page-right").removeClass("disabled");
|
|
||||||
} else {
|
|
||||||
$("#recently-watched-page-right").addClass("disabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$(window).resize(function() {
|
|
||||||
highlightWatchedScrollerButton();
|
|
||||||
});
|
|
||||||
|
|
||||||
var leftTotal = 0;
|
|
||||||
$(".paginate").click(function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var scroller = $("#recently-watched-row-scroller");
|
|
||||||
var containerWidth = $("#user-recently-watched").width();
|
|
||||||
var scrollAmount = $(this).data("id") * parseInt(containerWidth / 175) * 175;
|
|
||||||
var leftMax = Math.min(-parseInt(scroller.width()) + Math.abs(scrollAmount), 0);
|
|
||||||
|
|
||||||
leftTotal = Math.max(Math.min(leftTotal + scrollAmount, 0), leftMax);
|
|
||||||
scroller.animate({ left: leftTotal }, 250);
|
|
||||||
|
|
||||||
if (leftTotal == 0) {
|
|
||||||
$("#recently-watched-page-left").addClass("disabled").blur();
|
|
||||||
} else {
|
|
||||||
$("#recently-watched-page-left").removeClass("disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (leftTotal == leftMax) {
|
|
||||||
$("#recently-watched-page-right").addClass("disabled").blur();
|
|
||||||
} else {
|
|
||||||
$("#recently-watched-page-right").removeClass("disabled");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
|
|
||||||
// Javascript to enable link to tab
|
|
||||||
var hash = document.location.hash;
|
|
||||||
var prefix = "tab_";
|
|
||||||
if (hash) {
|
|
||||||
$('.nav-list a[href=' + hash.replace(prefix, "") + ']').tab('show').trigger('show.bs.tab');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change hash for page-reload
|
|
||||||
$('.nav-list a').on('shown.bs.tab', function (e) {
|
|
||||||
window.location.hash = e.target.hash.replace("#", "#" + prefix);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Populate watch time stats
|
|
||||||
$.ajax({
|
|
||||||
url: 'user_watch_time_stats',
|
|
||||||
async: true,
|
|
||||||
data: { user_id: user_id, user: username },
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#user-time-stats").html(xhr.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Populate platform stats
|
|
||||||
$.ajax({
|
|
||||||
url: 'user_player_stats',
|
|
||||||
async: true,
|
|
||||||
data: { user_id: user_id, user: username },
|
|
||||||
complete: function(xhr, status) {
|
|
||||||
$("#user-player-stats").html(xhr.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
% endif
|
% endif
|
||||||
|
% endif
|
||||||
</%def>
|
</%def>
|
|
@ -143,7 +143,7 @@ def has_library_type(section_type):
|
||||||
|
|
||||||
|
|
||||||
def get_collections(section_id):
|
def get_collections(section_id):
|
||||||
plex = Plex(plexpy.CONFIG.PMS_URL, plexpy.CONFIG.PMS_TOKEN)
|
plex = Plex(plexpy.CONFIG.PMS_URL, session.get_session_user_token())
|
||||||
library = plex.get_library(section_id)
|
library = plex.get_library(section_id)
|
||||||
|
|
||||||
if library.type not in ('movie', 'show', 'artist'):
|
if library.type not in ('movie', 'show', 'artist'):
|
||||||
|
@ -231,7 +231,7 @@ def get_collections_list(section_id=None, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
def get_playlists(section_id):
|
def get_playlists(section_id):
|
||||||
plex = Plex(plexpy.CONFIG.PMS_URL, plexpy.CONFIG.PMS_TOKEN)
|
plex = Plex(plexpy.CONFIG.PMS_URL, session.get_session_user_token())
|
||||||
|
|
||||||
library = Libraries().get_details(section_id=section_id)
|
library = Libraries().get_details(section_id=section_id)
|
||||||
|
|
||||||
|
|
|
@ -3020,8 +3020,7 @@ class SCRIPTS(Notifier):
|
||||||
|
|
||||||
if user_id:
|
if user_id:
|
||||||
user_tokens = users.Users().get_tokens(user_id=user_id)
|
user_tokens = users.Users().get_tokens(user_id=user_id)
|
||||||
if user_tokens and user_tokens['server_token']:
|
custom_env['PLEX_USER_TOKEN'] = str(user_tokens['server_token'])
|
||||||
custom_env['PLEX_USER_TOKEN'] = str(user_tokens['server_token'])
|
|
||||||
|
|
||||||
if self.pythonpath and plexpy.INSTALL_TYPE not in ('windows', 'macos'):
|
if self.pythonpath and plexpy.INSTALL_TYPE not in ('windows', 'macos'):
|
||||||
custom_env['PYTHONPATH'] = os.pathsep.join([p for p in sys.path if p])
|
custom_env['PYTHONPATH'] = os.pathsep.join([p for p in sys.path if p])
|
||||||
|
|
|
@ -57,6 +57,22 @@ def get_session_user_id():
|
||||||
_session = get_session_info()
|
_session = get_session_info()
|
||||||
return str(_session['user_id']) if _session['user_group'] == 'guest' and _session['user_id'] else None
|
return str(_session['user_id']) if _session['user_group'] == 'guest' and _session['user_id'] else None
|
||||||
|
|
||||||
|
|
||||||
|
def get_session_user_token():
|
||||||
|
"""
|
||||||
|
Returns the user's server_token for the current logged in session
|
||||||
|
"""
|
||||||
|
_session = get_session_info()
|
||||||
|
|
||||||
|
if _session['user_group'] == 'guest' and _session['user_id']:
|
||||||
|
session_user_tokens = users.Users().get_tokens(_session['user_id'])
|
||||||
|
user_token = session_user_tokens['server_token']
|
||||||
|
else:
|
||||||
|
user_token = plexpy.CONFIG.PMS_TOKEN
|
||||||
|
|
||||||
|
return user_token
|
||||||
|
|
||||||
|
|
||||||
def get_session_shared_libraries():
|
def get_session_shared_libraries():
|
||||||
"""
|
"""
|
||||||
Returns a tuple of section_id for the current logged in session
|
Returns a tuple of section_id for the current logged in session
|
||||||
|
|
|
@ -787,6 +787,12 @@ class Users(object):
|
||||||
return session.friendly_name_to_username(result)
|
return session.friendly_name_to_username(result)
|
||||||
|
|
||||||
def get_tokens(self, user_id=None):
|
def get_tokens(self, user_id=None):
|
||||||
|
tokens = {
|
||||||
|
'allow_guest': 0,
|
||||||
|
'user_token': '',
|
||||||
|
'server_token': ''
|
||||||
|
}
|
||||||
|
|
||||||
if user_id:
|
if user_id:
|
||||||
try:
|
try:
|
||||||
monitor_db = database.MonitorDatabase()
|
monitor_db = database.MonitorDatabase()
|
||||||
|
@ -800,11 +806,11 @@ class Users(object):
|
||||||
}
|
}
|
||||||
return tokens
|
return tokens
|
||||||
else:
|
else:
|
||||||
return None
|
return tokens
|
||||||
except:
|
except:
|
||||||
return None
|
return tokens
|
||||||
|
|
||||||
return None
|
return tokens
|
||||||
|
|
||||||
def get_filters(self, user_id=None):
|
def get_filters(self, user_id=None):
|
||||||
if not user_id:
|
if not user_id:
|
||||||
|
|
|
@ -845,7 +845,7 @@ class WebInterface(object):
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
@cherrypy.tools.json_out()
|
@cherrypy.tools.json_out()
|
||||||
@requireAuth(member_of("admin"))
|
@requireAuth()
|
||||||
@addtoapi("get_collections_table")
|
@addtoapi("get_collections_table")
|
||||||
def get_collections_list(self, section_id=None, **kwargs):
|
def get_collections_list(self, section_id=None, **kwargs):
|
||||||
""" Get the data on the Tautulli collections tables.
|
""" Get the data on the Tautulli collections tables.
|
||||||
|
@ -882,7 +882,7 @@ class WebInterface(object):
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
@cherrypy.tools.json_out()
|
@cherrypy.tools.json_out()
|
||||||
@requireAuth(member_of("admin"))
|
@requireAuth()
|
||||||
@addtoapi("get_playlists_table")
|
@addtoapi("get_playlists_table")
|
||||||
def get_playlists_list(self, section_id=None, **kwargs):
|
def get_playlists_list(self, section_id=None, **kwargs):
|
||||||
""" Get the data on the Tautulli playlists tables.
|
""" Get the data on the Tautulli playlists tables.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue