Refactor some newsletter code

This commit is contained in:
JonnyWong16 2018-01-14 15:31:32 -08:00
parent 28efaf73c7
commit 09ea81ccd2
5 changed files with 104 additions and 104 deletions

View file

@ -522,7 +522,7 @@
function previewNewsletter() { function previewNewsletter() {
showMsg('<i class="fa fa-check"></i>&nbsp; Check pop-up blocker if no response.', false, true, 2000); showMsg('<i class="fa fa-check"></i>&nbsp; Check pop-up blocker if no response.', false, true, 2000);
window.open('preview_newsletter?newsletter_id=' + $('#newsletter_id').val()); window.open('newsletter?newsletter_id=' + $('#newsletter_id').val() + '&preview=true');
} }
function sendTestNewsletter() { function sendTestNewsletter() {

View file

@ -1,4 +1,8 @@
<% from plexpy.notification_handler import PILLOW %> % if data:
<%
from plexpy.notification_handler import PILLOW
recently_added = data['recently_added']
%>
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
@ -615,7 +619,7 @@
<div class="card-background" style="background-color: #3F4245;background-position: center;background-size: cover;width: 100%;height: 100%;"> <div class="card-background" style="background-color: #3F4245;background-position: center;background-size: cover;width: 100%;height: 100%;">
% endif % endif
<div class="card-poster-container" style="width: 150px;margin: 3px;border: 1px solid rgba(255,255,255,.1);float: left;position: relative;z-index: 1;height: 225px;"> <div class="card-poster-container" style="width: 150px;margin: 3px;border: 1px solid rgba(255,255,255,.1);float: left;position: relative;z-index: 1;height: 225px;">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank" style="color: #3498db;text-decoration: underline;"> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank" style="color: #3498db;text-decoration: underline;">
<div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + movie['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else movie['poster_url']});background-color: #3F4245;background-position: center;background-size: cover;height: 100%;width: 100%;"> <div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + movie['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else movie['poster_url']});background-color: #3F4245;background-position: center;background-size: cover;height: 100%;width: 100%;">
<div class="card-poster-overlay" style="background: url(https://cdn.discordapp.com/attachments/334355557706235906/401064397780287489/newsletter-view-on-plex-flat.png) bottom right no-repeat;width: 100%;height: 100%;"></div> <div class="card-poster-overlay" style="background: url(https://cdn.discordapp.com/attachments/334355557706235906/401064397780287489/newsletter-view-on-plex-flat.png) bottom right no-repeat;width: 100%;height: 100%;"></div>
</div> </div>
@ -623,7 +627,7 @@
</div> </div>
<div class="card-info-container" style="margin: 4px;width: 332px;float: left;position: relative;z-index: 1;height: 225px;"> <div class="card-info-container" style="margin: 4px;width: 332px;float: left;position: relative;z-index: 1;height: 225px;">
<div class="card-info-title nowrap" style="white-space: nowrap;border-bottom: 1px solid rgba(255, 255, 255, .1);line-height: 20px;font-size: 15px;padding: 5px;text-overflow: ellipsis;overflow: hidden;"> <div class="card-info-title nowrap" style="white-space: nowrap;border-bottom: 1px solid rgba(255, 255, 255, .1);line-height: 20px;font-size: 15px;padding: 5px;text-overflow: ellipsis;overflow: hidden;">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank" style="color: #ffffff;text-decoration: none;">${movie['title']}</a> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank" style="color: #ffffff;text-decoration: none;">${movie['title']}</a>
</div> </div>
<div class="card-info-body" style="padding: 5px;text-overflow: ellipsis;overflow: hidden;min-height: 157px;"> <div class="card-info-body" style="padding: 5px;text-overflow: ellipsis;overflow: hidden;min-height: 157px;">
% if movie['tagline']: % if movie['tagline']:
@ -703,7 +707,7 @@
<div class="card-background" style="background-color: #3F4245;background-position: center;background-size: cover;width: 100%;height: 100%;"> <div class="card-background" style="background-color: #3F4245;background-position: center;background-size: cover;width: 100%;height: 100%;">
% endif % endif
<div class="card-poster-container" style="width: 150px;margin: 3px;border: 1px solid rgba(255,255,255,.1);float: left;position: relative;z-index: 1;height: 225px;"> <div class="card-poster-container" style="width: 150px;margin: 3px;border: 1px solid rgba(255,255,255,.1);float: left;position: relative;z-index: 1;height: 225px;">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank" style="color: #3498db;text-decoration: underline;"> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank" style="color: #3498db;text-decoration: underline;">
<div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + show['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else show['poster_url']});background-color: #3F4245;background-position: center;background-size: cover;height: 100%;width: 100%;"> <div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + show['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else show['poster_url']});background-color: #3F4245;background-position: center;background-size: cover;height: 100%;width: 100%;">
<div class="card-poster-overlay" style="background: url(https://cdn.discordapp.com/attachments/334355557706235906/401064397780287489/newsletter-view-on-plex-flat.png) bottom right no-repeat;width: 100%;height: 100%;"></div> <div class="card-poster-overlay" style="background: url(https://cdn.discordapp.com/attachments/334355557706235906/401064397780287489/newsletter-view-on-plex-flat.png) bottom right no-repeat;width: 100%;height: 100%;"></div>
</div> </div>
@ -711,7 +715,7 @@
</div> </div>
<div class="card-info-container" style="margin: 4px;width: 332px;float: left;position: relative;z-index: 1;height: 225px;"> <div class="card-info-container" style="margin: 4px;width: 332px;float: left;position: relative;z-index: 1;height: 225px;">
<div class="card-info-title nowrap" style="white-space: nowrap;border-bottom: 1px solid rgba(255, 255, 255, .1);line-height: 20px;font-size: 15px;padding: 5px;text-overflow: ellipsis;overflow: hidden;"> <div class="card-info-title nowrap" style="white-space: nowrap;border-bottom: 1px solid rgba(255, 255, 255, .1);line-height: 20px;font-size: 15px;padding: 5px;text-overflow: ellipsis;overflow: hidden;">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank" style="color: #ffffff;text-decoration: none;">${show['title']}</a> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank" style="color: #ffffff;text-decoration: none;">${show['title']}</a>
</div> </div>
<div class="card-info-body" style="padding: 5px;text-overflow: ellipsis;overflow: hidden;min-height: 157px;"> <div class="card-info-body" style="padding: 5px;text-overflow: ellipsis;overflow: hidden;min-height: 157px;">
<div class="nowrap mb5" style="margin-bottom: 5px;white-space: nowrap;color: #ffffff;font-size: 12px;text-overflow: ellipsis;overflow: hidden;"> <div class="nowrap mb5" style="margin-bottom: 5px;white-space: nowrap;color: #ffffff;font-size: 12px;text-overflow: ellipsis;overflow: hidden;">
@ -813,7 +817,7 @@
<div class="card-background" style="background-color: #3F4245;background-position: center;background-size: cover;width: 100%;height: 100%;"> <div class="card-background" style="background-color: #3F4245;background-position: center;background-size: cover;width: 100%;height: 100%;">
% endif % endif
<div class="card-poster-container" style="width: 150px;margin: 3px;border: 1px solid rgba(255,255,255,.1);float: left;position: relative;z-index: 1;height: 150px;"> <div class="card-poster-container" style="width: 150px;margin: 3px;border: 1px solid rgba(255,255,255,.1);float: left;position: relative;z-index: 1;height: 150px;">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank" style="color: #3498db;text-decoration: underline;"> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank" style="color: #3498db;text-decoration: underline;">
<div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + album['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else album['poster_url']});background-color: #3F4245;background-position: center;background-size: cover;height: 100%;width: 100%;"> <div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + album['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else album['poster_url']});background-color: #3F4245;background-position: center;background-size: cover;height: 100%;width: 100%;">
<div class="card-poster-overlay" style="background: url(https://cdn.discordapp.com/attachments/334355557706235906/401064397780287489/newsletter-view-on-plex-flat.png) bottom right no-repeat;width: 100%;height: 100%;"></div> <div class="card-poster-overlay" style="background: url(https://cdn.discordapp.com/attachments/334355557706235906/401064397780287489/newsletter-view-on-plex-flat.png) bottom right no-repeat;width: 100%;height: 100%;"></div>
</div> </div>
@ -821,7 +825,7 @@
</div> </div>
<div class="card-info-container" style="margin: 4px;width: 332px;float: left;position: relative;z-index: 1;height: 150px;"> <div class="card-info-container" style="margin: 4px;width: 332px;float: left;position: relative;z-index: 1;height: 150px;">
<div class="card-info-title nowrap" style="white-space: nowrap;border-bottom: 1px solid rgba(255, 255, 255, .1);line-height: 20px;font-size: 15px;padding: 5px;text-overflow: ellipsis;overflow: hidden;"> <div class="card-info-title nowrap" style="white-space: nowrap;border-bottom: 1px solid rgba(255, 255, 255, .1);line-height: 20px;font-size: 15px;padding: 5px;text-overflow: ellipsis;overflow: hidden;">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank" style="color: #ffffff;text-decoration: none;">${album['title']}</a> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank" style="color: #ffffff;text-decoration: none;">${album['title']}</a>
</div> </div>
<div class="card-info-body" style="padding: 5px;text-overflow: ellipsis;overflow: hidden;min-height: 82px;"> <div class="card-info-body" style="padding: 5px;text-overflow: ellipsis;overflow: hidden;min-height: 82px;">
<div class="nowrap mb5" style="margin-bottom: 5px;white-space: nowrap;color: #ffffff;font-size: 12px;text-overflow: ellipsis;overflow: hidden;"> <div class="nowrap mb5" style="margin-bottom: 5px;white-space: nowrap;color: #ffffff;font-size: 12px;text-overflow: ellipsis;overflow: hidden;">
@ -883,3 +887,4 @@
</table> </table>
</body> </body>
</html> </html>
% endif

View file

@ -1,4 +1,8 @@
<% from plexpy.notification_handler import PILLOW %> % if data:
<%
from plexpy.notification_handler import PILLOW
recently_added = data['recently_added']
%>
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
@ -615,7 +619,7 @@
<div class="card-background"> <div class="card-background">
% endif % endif
<div class="card-poster-container"> <div class="card-poster-container">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank"> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank">
<div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + movie['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else movie['poster_url']})"> <div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + movie['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else movie['poster_url']})">
<div class="card-poster-overlay"></div> <div class="card-poster-overlay"></div>
</div> </div>
@ -623,7 +627,7 @@
</div> </div>
<div class="card-info-container"> <div class="card-info-container">
<div class="card-info-title nowrap"> <div class="card-info-title nowrap">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank">${movie['title']}</a> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${movie['rating_key']}" title="${movie['title']}" target="_blank">${movie['title']}</a>
</div> </div>
<div class="card-info-body"> <div class="card-info-body">
% if movie['tagline']: % if movie['tagline']:
@ -703,7 +707,7 @@
<div class="card-background"> <div class="card-background">
% endif % endif
<div class="card-poster-container"> <div class="card-poster-container">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank"> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank">
<div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + show['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else show['poster_url']});"> <div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + show['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else show['poster_url']});">
<div class="card-poster-overlay"></div> <div class="card-poster-overlay"></div>
</div> </div>
@ -711,7 +715,7 @@
</div> </div>
<div class="card-info-container"> <div class="card-info-container">
<div class="card-info-title nowrap"> <div class="card-info-title nowrap">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank">${show['title']}</a> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${link_rating_key}" title="${link_title}" target="_blank">${show['title']}</a>
</div> </div>
<div class="card-info-body"> <div class="card-info-body">
<div class="nowrap mb5"> <div class="nowrap mb5">
@ -813,7 +817,7 @@
<div class="card-background"> <div class="card-background">
% endif % endif
<div class="card-poster-container"> <div class="card-poster-container">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank"> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank">
<div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + album['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else album['poster_url']});"> <div class="card-poster" style="background-image: url(${'pms_image_proxy?img=' + album['thumb'] + '&width=300&height=450&fallback=poster&refresh=true' if preview else album['poster_url']});">
<div class="card-poster-overlay"></div> <div class="card-poster-overlay"></div>
</div> </div>
@ -821,7 +825,7 @@
</div> </div>
<div class="card-info-container"> <div class="card-info-container">
<div class="card-info-title nowrap"> <div class="card-info-title nowrap">
<a href="${plexpy_config['pms_web_url']}#!/server/${plexpy_config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank">${album['title']}</a> <a href="${parameters['pms_web_url']}#!/server/${parameters['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${album['rating_key']}" title="${album['title']}" target="_blank">${album['title']}</a>
</div> </div>
<div class="card-info-body"> <div class="card-info-body">
<div class="nowrap mb5"> <div class="nowrap mb5">
@ -883,3 +887,4 @@
</table> </table>
</body> </body>
</html> </html>
% endif

View file

@ -236,7 +236,8 @@ def send_newsletter(newsletter_id=None, subject=None, notify_action='', newslett
email_config=newsletter_config['email_config']) email_config=newsletter_config['email_config'])
return agent.send(subject=subject, return agent.send(subject=subject,
action=notify_action.split('on_')[-1], action=notify_action.split('on_')[-1],
newsletter_log_id=newsletter_log_id, **kwargs) newsletter_log_id=newsletter_log_id,
**kwargs)
else: else:
logger.debug(u"Tautulli Newsletters :: Notification requested but no newsletter_id received.") logger.debug(u"Tautulli Newsletters :: Notification requested but no newsletter_id received.")
@ -270,7 +271,8 @@ class Newsletter(object):
self.parameters = {'server_name': plexpy.CONFIG.PMS_NAME} self.parameters = {'server_name': plexpy.CONFIG.PMS_NAME}
self.is_preview = False self.is_preview = False
self.master_template = False
self.data = {}
def set_config(self, config=None, default=None): def set_config(self, config=None, default=None):
return self._validate_config(config=config, default=default) return self._validate_config(config=config, default=default)
@ -288,19 +290,62 @@ class Newsletter(object):
return new_config return new_config
def _render_template(self, **kwargs): def retrieve_data(self):
if self.master_template: pass
def _has_data(self):
return False
def raw_data(self, preview=False):
if preview:
self.is_preview = True
self.retrieve_data()
return {'title': self.NAME,
'parameters': self.parameters,
'data': self.data}
def generate_newsletter(self, preview=False, master=False):
if preview:
self.is_preview = True
if master:
template = self._TEMPLATE_MASTER template = self._TEMPLATE_MASTER
else: else:
template = self._TEMPLATE template = self._TEMPLATE
self.retrieve_data()
return serve_template( return serve_template(
templatename=template, templatename=template,
title=self.NAME, title=self.NAME,
parameters=self.parameters, parameters=self.parameters,
**kwargs data=self.data,
preview=self.is_preview
) )
def send(self, subject='', **kwargs):
subject = self.format_subject(subject or self.email_config['subject'])
newsletter = self.generate_newsletter()
if not self._has_data():
logger.warn(u"Tautulli Newsletters :: %s newsletter has no data. Newsletter not sent." % self.NAME)
return False
if self.email_config['notifier']:
return send_notification(
notifier_id=self.email_config['notifier'],
subject=subject,
body=newsletter
)
else:
email = EMAIL(config=self.email_config)
return email.notify(
subject=subject,
body=newsletter
)
def format_subject(self, subject): def format_subject(self, subject):
subject = subject or self._DEFAULT_EMAIL_CONFIG['subject'] subject = subject or self._DEFAULT_EMAIL_CONFIG['subject']
@ -317,39 +362,6 @@ class Newsletter(object):
return subject return subject
def retrieve_data(self):
pass
def generate_newsletter(self):
pass
def preview(self, master=False):
self.is_preview = True
if master:
self.master_template = True
self.retrieve_data()
return self.generate_newsletter()
def send(self, subject='', **kwargs):
self.retrieve_data()
subject = self.format_subject(subject or self.email_config['subject'])
newsletter = self.generate_newsletter()
if self.email_config['notifier']:
return send_notification(
notifier_id=self.email_config['notifier'],
subject=subject,
body=newsletter
)
else:
email = EMAIL(config=self.email_config)
return email.notify(
subject=subject,
body=newsletter
)
def return_config_options(self): def return_config_options(self):
config_options = [] config_options = []
return config_options return config_options
@ -388,13 +400,8 @@ class RecentlyAdded(Newsletter):
self.parameters['start_date'] = self.start_date self.parameters['start_date'] = self.start_date
self.parameters['end_date'] = self.end_date self.parameters['end_date'] = self.end_date
self.parameters['pms_identifier'] = plexpy.CONFIG.PMS_IDENTIFIER
self.plexpy_config = { self.parameters['pms_web_url'] = plexpy.CONFIG.PMS_WEB_URL
'pms_identifier': plexpy.CONFIG.PMS_IDENTIFIER,
'pms_web_url': plexpy.CONFIG.PMS_WEB_URL
}
self.recently_added = {}
def _get_recently_added(self, media_type=None): def _get_recently_added(self, media_type=None):
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
@ -516,15 +523,16 @@ class RecentlyAdded(Newsletter):
media_types = {s['section_type'] for s in self._get_sections() media_types = {s['section_type'] for s in self._get_sections()
if str(s['section_id']) in self.config['incl_libraries']} if str(s['section_id']) in self.config['incl_libraries']}
recently_added = {}
for media_type in media_types: for media_type in media_types:
if media_type not in self.recently_added: if media_type not in recently_added:
self.recently_added[media_type] = self._get_recently_added(media_type) recently_added[media_type] = self._get_recently_added(media_type)
if not self.is_preview: if not self.is_preview:
# Upload posters and art to Imgur # Upload posters and art to Imgur
movies = self.recently_added.get('movie', []) movies = recently_added.get('movie', [])
shows = self.recently_added.get('show', []) shows = recently_added.get('show', [])
artists = self.recently_added.get('artist', []) artists = recently_added.get('artist', [])
albums = [a for artist in artists for a in artist['album']] albums = [a for artist in artists for a in artist['album']]
for item in movies + shows + albums: for item in movies + shows + albums:
@ -545,14 +553,19 @@ class RecentlyAdded(Newsletter):
blur=True) blur=True)
item['art_url'] = art_info.get('blur_art_url', '') item['art_url'] = art_info.get('blur_art_url', '')
return self.recently_added self.data['recently_added'] = recently_added
def generate_newsletter(self): return self.data
return self._render_template(
recently_added=self.recently_added, def _has_data(self):
plexpy_config=self.plexpy_config, recently_added = self.data.get('recently_added')
preview=self.is_preview if recently_added and \
) recently_added.get('movie') or \
recently_added.get('show') or \
recently_added.get('artist'):
return True
return False
def _get_sections(self): def _get_sections(self):
return libraries.Libraries().get_sections() return libraries.Libraries().get_sections()

View file

@ -5288,34 +5288,6 @@ class WebInterface(object):
def get_plexpy_url(self, **kwargs): def get_plexpy_url(self, **kwargs):
return helpers.get_plexpy_url() return helpers.get_plexpy_url()
@cherrypy.expose
@requireAuth()
def newsletter(self, **kwargs):
news_letter = newsletters.Newsletter()
config = {
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER,
"pms_web_url": plexpy.CONFIG.PMS_WEB_URL
}
return serve_template(templatename="newsletter_template.html",
title="Newsletter",
recently_added=news_letter.recently_added,
start_date=news_letter.start_date,
end_date=news_letter.end_date,
config=config)
@cherrypy.expose
@cherrypy.tools.json_out()
@requireAuth()
def newsletter_raw(self, **kwargs):
news_letter = newsletters.Newsletter()
if news_letter.recently_added:
return news_letter.recently_added
else:
return None
@cherrypy.expose @cherrypy.expose
@cherrypy.tools.json_out() @cherrypy.tools.json_out()
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
@ -5518,13 +5490,18 @@ class WebInterface(object):
@cherrypy.expose @cherrypy.expose
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
def preview_newsletter(self, newsletter_id=None, master=False, **kwargs): def newsletter(self, newsletter_id=None, preview=False, master=False, raw=False, **kwargs):
if newsletter_id: if newsletter_id:
newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id) newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id)
newsletter_agent = newsletters.get_agent_class(agent_id=newsletter['agent_id'], config=newsletter['config']) newsletter_agent = newsletters.get_agent_class(agent_id=newsletter['agent_id'], config=newsletter['config'])
if newsletter_agent: if newsletter_agent:
return newsletter_agent.preview(master=master) preview = (preview == 'true')
if raw:
return json.dumps(newsletter_agent.raw_data(preview=preview))
return newsletter_agent.generate_newsletter(preview=preview, master=master)
return "Invalid newsletter id %s" % newsletter_id return "Invalid newsletter id %s" % newsletter_id