From 354700fcbbbf47f22e362d4163bbb5120b8d7f1a Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sat, 24 Sep 2016 11:22:33 -0700 Subject: [PATCH 001/400] Show changelog on update --- data/interfaces/default/index.html | 34 +++++++++++++++++++++++++++ data/interfaces/default/settings.html | 19 ++++++++++++--- plexpy/config.py | 1 + plexpy/versioncheck.py | 15 +++++++++--- plexpy/webserve.py | 15 +++++++++++- 5 files changed, 77 insertions(+), 7 deletions(-) diff --git a/data/interfaces/default/index.html b/data/interfaces/default/index.html index d7a597b8..8d8a51e8 100644 --- a/data/interfaces/default/index.html +++ b/data/interfaces/default/index.html @@ -67,6 +67,23 @@ % endif % endfor +% if _session['user_group'] == 'admin' and config['update_show_changelog']: + +% endif <%def name="javascriptIncludes()"> @@ -411,4 +428,21 @@ }); % endif +% if _session['user_group'] == 'admin' and config['update_show_changelog']: + +% endif \ No newline at end of file diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index a48d34c1..85057c94 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -4,7 +4,7 @@ import sys import plexpy - from plexpy import common, notifiers, versioncheck + from plexpy import common, notifiers from plexpy.helpers import anon_url available_notification_agents = sorted(notifiers.available_notification_agents(), key=lambda k: k['name']) @@ -56,7 +56,7 @@
% if common.VERSION_NUMBER:
-

Version ${common.VERSION_NUMBER} Changelog

+

Version ${common.VERSION_NUMBER} Changelog

% endif
@@ -2105,9 +2105,9 @@
@@ -2270,6 +2270,19 @@ $(document).ready(function() { getConfigurationTable(); getSchedulerTable(); + $('#changelog-modal-link').on('click', function (e) { + e.preventDefault(); + $.ajax({ + url: 'get_changelog', + cache: false, + async: true, + complete: function(xhr, status) { + $("#changelog-modal .modal-body").html(xhr.responseText); + $('#changelog-modal').modal(); + } + }); + }); + $("#backup_config").click(function () { var msg = 'Are you sure you want to create a backup of the PlexPy config?'; var url = 'backup_config'; diff --git a/plexpy/config.py b/plexpy/config.py index 543cb2dc..7330ea1d 100644 --- a/plexpy/config.py +++ b/plexpy/config.py @@ -562,6 +562,7 @@ _CONFIG_DEFINITIONS = { 'TWITTER_ON_NEWDEVICE': (int, 'Twitter', 0), 'UPDATE_DB_INTERVAL': (int, 'General', 24), 'UPDATE_SECTION_IDS': (int, 'General', 1), + 'UPDATE_SHOW_CHANGELOG': (int, 'General', 1), 'UPDATE_LABELS': (int, 'General', 1), 'VERIFY_SSL_CERT': (bool_int, 'Advanced', 1), 'VIDEO_LOGGING_ENABLE': (int, 'Monitoring', 1), diff --git a/plexpy/versioncheck.py b/plexpy/versioncheck.py index 30130b96..65f1cbbd 100644 --- a/plexpy/versioncheck.py +++ b/plexpy/versioncheck.py @@ -246,7 +246,7 @@ def update(): ) return -def read_changelog(): +def read_changelog(latest_only=False): changelog_file = os.path.join(plexpy.PROG_DIR, 'CHANGELOG.md') @@ -260,11 +260,20 @@ def read_changelog(): output = '' lines = logfile.readlines() previous_line = '' + latest_version_found = False + for line in lines: if line[:2] == '# ': - output += '

' + line[2:] + '

' + #output += '

' + line[2:] + '

' + pass elif line[:3] == '## ': - output += '

' + line[3:] + '

' + if latest_version_found: + break + elif latest_only: + output += '

PlexPy ' + line[3:] + '

' + latest_version_found = True + else: + output += '

' + line[3:] + '

' elif line[:2] == '* ' and previous_line.strip() == '': output += ' @@ -171,6 +178,13 @@

Set a custom body.

+
+
+
+ +
+
+
@@ -335,6 +349,28 @@ }) % endif + $('.notifier-text-preview').click(function () { + var action = $(this).data('action'); + var subject = $('#' + action + '_subject').val(); + var body = $('#' + action + '_body').val(); + + $.ajax({ + url: 'get_notify_text_preview', + data: { + notify_action: action, + subject: subject, + body: body, + agent_id: "${notifier['agent_id']}", + agent_name: "${notifier['agent_name']}" + }, + cache: false, + async: true, + complete: function (xhr, status) { + $("#notifier-text-preview-modal").html(xhr.responseText).modal('show'); + } + }); + }); + $('#test_notifier').click(function () { doAjaxCall('set_notifier_config', $(this), 'tabs', true, false, sendTestNotification); }); diff --git a/data/interfaces/default/notifier_text_preview.html b/data/interfaces/default/notifier_text_preview.html new file mode 100644 index 00000000..31f944fb --- /dev/null +++ b/data/interfaces/default/notifier_text_preview.html @@ -0,0 +1,23 @@ +% if text: + +% endif \ No newline at end of file diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 0626b92f..40e7c057 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -1925,6 +1925,8 @@ + -
- -
-
-
- - - - +
+
+ +
+
+
+ + + + +
+
+
+

Current API key: ${config['api_key']}

+
+
+ +
+
+
+ +
-

Current API key: ${config['api_key']}

@@ -1969,6 +1981,33 @@
+
@@ -1976,6 +2015,7 @@ + diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 1f104639..244e5059 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -4607,3 +4607,30 @@ class WebInterface(object): """ whois_info = helpers.whois_lookup(ip_address) return whois_info + + @cherrypy.expose + @cherrypy.tools.json_out() + @requireAuth() + def get_plexpy_url(self, **kwargs): + if plexpy.CONFIG.ENABLE_HTTPS: + scheme = 'https' + else: + scheme = 'http' + + if plexpy.CONFIG.HTTP_HOST == '0.0.0.0': + import socket + hostname = socket.gethostbyname(socket.gethostname()) + else: + hostname = plexpy.CONFIG.HTTP_HOST + + if plexpy.CONFIG.HTTP_PORT not in (80, 443): + port = ':' + str(plexpy.CONFIG.HTTP_PORT) + else: + port = '' + + if plexpy.CONFIG.HTTP_ROOT: + root = '/' + plexpy.CONFIG.HTTP_ROOT.strip('/') + else: + root = '' + + return scheme + '://' + hostname + port + root \ No newline at end of file From 66191d2ff9f140d90858f1102ea552202a5a6c99 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Thu, 17 Nov 2016 23:37:33 -0800 Subject: [PATCH 108/400] Put QR code in pre block --- data/interfaces/default/settings.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 6ce8a6bc..a9b37ddb 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -1997,8 +1997,7 @@ Step 4: Curabitur at diam quis nulla pellentesque ultrices eu vitae eros.

-
-
+

                     
                     

                 

From 03eec610fa8386d09b5c50fcb55acc392e4ff88c Mon Sep 17 00:00:00 2001
From: JonnyWong16 
Date: Fri, 18 Nov 2016 22:39:44 -0800
Subject: [PATCH 109/400] Add separate settings tab for PlexPy Remote App

---
 data/interfaces/default/css/plexpy.css        |  12 ++
 .../default/images/en-play-badge.png          | Bin 0 -> 20598 bytes
 data/interfaces/default/settings.html         | 115 ++++++++++++------
 3 files changed, 87 insertions(+), 40 deletions(-)
 create mode 100644 data/interfaces/default/images/en-play-badge.png

diff --git a/data/interfaces/default/css/plexpy.css b/data/interfaces/default/css/plexpy.css
index 384c8f75..49eb45aa 100644
--- a/data/interfaces/default/css/plexpy.css
+++ b/data/interfaces/default/css/plexpy.css
@@ -3160,4 +3160,16 @@ a:hover .overlay-refresh-image:hover {
 }
 #changelog-modal ul {
     padding-left: 20px;
+}
+.google-play-badge {
+    display:inline-block;
+    height:45px;
+    margin-top: 10px;
+}
+.google-play-badge img {
+    border: 1px solid #3B3B3B;
+    border-radius: 6px;
+    box-sizing: border-box;
+    height: 45px;
+    vertical-align: middle;
 }
\ No newline at end of file
diff --git a/data/interfaces/default/images/en-play-badge.png b/data/interfaces/default/images/en-play-badge.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c317c05cdf8dccc6661ae3a0b2ab96f84ad3bdc
GIT binary patch
literal 20598
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
         
         
-
+
% if common.VERSION_NUMBER:

Version ${common.VERSION_NUMBER} Changelog

@@ -74,7 +75,7 @@
-
+

Updates

@@ -214,8 +215,7 @@

- -
+

Sections

@@ -380,7 +380,7 @@

-
+

Web Interface

@@ -474,7 +474,7 @@

-
+

Authentication

@@ -551,21 +551,11 @@

Current API key: ${config['api_key']}

-
- -
-
-
- -
-
-
-

-
+

Plex Media Server Version ${config['pms_version']}

@@ -666,7 +656,7 @@
-
+

Plex.tv Authentication

@@ -729,7 +719,7 @@

-
+
% if plexpy.INSTALL_TYPE == 'git':

Git Settings

@@ -842,7 +832,7 @@

-
+

Monitoring Settings

@@ -918,7 +908,7 @@

-
+

Global Notification Settings

@@ -1024,7 +1014,7 @@

-
+

Notification Agents

@@ -1038,7 +1028,32 @@
-
+
+ +
+

PlexPy Remote App

+
+
+ +

+ Get the PlexPy Remote app on Google PlayTM to access PlexPy from your Android device!
+ + Get it on Google Play + +

+
+
+ +

Link the app to your server by scanning a QR code.

+
+ +
+
+ The API must be enabled under Access Control to use the app. +
+
+ +
@@ -1986,20 +2001,21 @@ @@ -440,6 +418,31 @@ DOCUMENTATION :: END % endif +<%def name="modalIncludes()"> + + + + + <%def name="javascriptIncludes()"> diff --git a/data/interfaces/default/js/tables/history_table_modal.js b/data/interfaces/default/js/tables/history_table_modal.js index 8ba5ba8f..1d0a6b61 100644 --- a/data/interfaces/default/js/tables/history_table_modal.js +++ b/data/interfaces/default/js/tables/history_table_modal.js @@ -27,7 +27,6 @@ history_table_modal_options = { "pageLength": 10, "lengthChange": false, "autoWidth": false, - "scrollX": true, "order": [0, 'desc'], "columnDefs": [ { diff --git a/data/interfaces/default/libraries.html b/data/interfaces/default/libraries.html index 53588362..ef4dd613 100644 --- a/data/interfaces/default/libraries.html +++ b/data/interfaces/default/libraries.html @@ -64,28 +64,31 @@ - + + + +<%def name="modalIncludes()"> + - <%def name="javascriptIncludes()"> diff --git a/data/interfaces/default/library.html b/data/interfaces/default/library.html index fd745e57..5e2b362a 100644 --- a/data/interfaces/default/library.html +++ b/data/interfaces/default/library.html @@ -82,9 +82,6 @@ DOCUMENTATION :: END
-
@@ -284,28 +281,6 @@ DOCUMENTATION :: END
- - -
@@ -335,6 +310,34 @@ DOCUMENTATION :: END % endif +<%def name="modalIncludes()"> + + + + + + <%def name="javascriptIncludes()"> diff --git a/data/interfaces/default/logs.html b/data/interfaces/default/logs.html index 96a17f40..497884de 100644 --- a/data/interfaces/default/logs.html +++ b/data/interfaces/default/logs.html @@ -130,8 +130,6 @@
-
@@ -152,6 +150,11 @@
+<%def name="modalIncludes()"> + + + <%def name="javascriptIncludes()"> diff --git a/data/interfaces/default/search.html b/data/interfaces/default/search.html index 5588025b..416202c9 100644 --- a/data/interfaces/default/search.html +++ b/data/interfaces/default/search.html @@ -23,6 +23,9 @@
+<%def name="modalIncludes()"> + + <%def name="javascriptIncludes()"> diff --git a/data/interfaces/default/update_metadata.html b/data/interfaces/default/update_metadata.html index bf851e71..c177b6d1 100644 --- a/data/interfaces/default/update_metadata.html +++ b/data/interfaces/default/update_metadata.html @@ -98,46 +98,6 @@ DOCUMENTATION :: END
  Loading search results...
- @@ -166,6 +126,51 @@ DOCUMENTATION :: END % endif +<%def name="modalIncludes()"> + + + <%def name="javascriptIncludes()"> % if query: diff --git a/data/interfaces/default/user.html b/data/interfaces/default/user.html index 79cacc58..3bf26bd4 100644 --- a/data/interfaces/default/user.html +++ b/data/interfaces/default/user.html @@ -72,8 +72,6 @@ DOCUMENTATION :: END -
@@ -306,28 +304,6 @@ DOCUMENTATION :: END
- - - @@ -357,6 +333,33 @@ DOCUMENTATION :: END % endif +<%def name="modalIncludes()"> + + + + + + <%def name="javascriptIncludes()"> diff --git a/data/interfaces/default/users.html b/data/interfaces/default/users.html index 9765b8da..25087e10 100644 --- a/data/interfaces/default/users.html +++ b/data/interfaces/default/users.html @@ -46,32 +46,35 @@ - - - + + + +<%def name="modalIncludes()"> + + + - <%def name="javascriptIncludes()"> From ca472ff5979d8b8e95261c4dcd66a24ddb4de28e Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sun, 5 Feb 2017 18:55:10 -0800 Subject: [PATCH 136/400] Improved IP address handling (includes IPv6) --- data/interfaces/default/ip_address_modal.html | 14 ++- data/interfaces/default/js/ipaddr.min.js | 1 + data/interfaces/default/js/script.js | 49 ++++++-- .../default/js/tables/history_table.js | 106 ++++++------------ .../default/js/tables/history_table_modal.js | 9 +- .../interfaces/default/js/tables/libraries.js | 11 +- .../default/js/tables/login_logs.js | 37 +++--- .../default/js/tables/media_info_table.js | 9 +- data/interfaces/default/js/tables/user_ips.js | 56 ++++----- data/interfaces/default/js/tables/users.js | 66 ++++------- data/interfaces/default/settings.html | 4 +- plexpy/helpers.py | 26 +++-- plexpy/logger.py | 4 +- plexpy/webserve.py | 6 +- 14 files changed, 178 insertions(+), 220 deletions(-) create mode 100644 data/interfaces/default/js/ipaddr.min.js diff --git a/data/interfaces/default/ip_address_modal.html b/data/interfaces/default/ip_address_modal.html index cb407305..928d4cad 100644 --- a/data/interfaces/default/ip_address_modal.html +++ b/data/interfaces/default/ip_address_modal.html @@ -14,7 +14,12 @@