mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-07 21:51:14 -07:00
Retrieve newsletter using uuid
This commit is contained in:
parent
c9618322c2
commit
2245e38d40
4 changed files with 60 additions and 27 deletions
|
@ -27,7 +27,11 @@
|
|||
<script>
|
||||
$(document).ready(function () {
|
||||
var frame = $('<iframe></iframe>', {
|
||||
src: 'real_newsletter?newsletter_id=${newsletter_id}&preview=true',
|
||||
% if newsletter_uuid:
|
||||
src: '${http_root}real_newsletter?newsletter_uuid=${newsletter_uuid}',
|
||||
% else:
|
||||
src: '${http_root}real_newsletter?newsletter_id=${newsletter_id}&preview=true',
|
||||
% endif
|
||||
frameborder: '0',
|
||||
style: 'display: none; height: 100vh; width: 100vw;'
|
||||
});
|
||||
|
|
|
@ -91,10 +91,10 @@ def notify(newsletter_id=None, notify_action=None, **kwargs):
|
|||
def set_notify_state(newsletter, notify_action, subject, start_date, end_date):
|
||||
|
||||
if newsletter and notify_action:
|
||||
monitor_db = database.MonitorDatabase()
|
||||
db = database.MonitorDatabase()
|
||||
|
||||
keys = {'timestamp': int(time.time()),
|
||||
'uuid': get_newsletter_uuid()}
|
||||
'uuid': generate_newsletter_uuid()}
|
||||
|
||||
values = {'newsletter_id': newsletter['id'],
|
||||
'agent_id': newsletter['agent_id'],
|
||||
|
@ -104,8 +104,8 @@ def set_notify_state(newsletter, notify_action, subject, start_date, end_date):
|
|||
'start_date': start_date,
|
||||
'end_date': end_date}
|
||||
|
||||
monitor_db.upsert(table_name='newsletter_log', key_dict=keys, value_dict=values)
|
||||
return monitor_db.last_insert_id()
|
||||
db.upsert(table_name='newsletter_log', key_dict=keys, value_dict=values)
|
||||
return db.last_insert_id()
|
||||
else:
|
||||
logger.error(u"Tautulli NewsletterHandler :: Unable to set notify state.")
|
||||
|
||||
|
@ -114,21 +114,26 @@ def set_notify_success(newsletter_log_id):
|
|||
keys = {'id': newsletter_log_id}
|
||||
values = {'success': 1}
|
||||
|
||||
monitor_db = database.MonitorDatabase()
|
||||
monitor_db.upsert(table_name='newsletter_log', key_dict=keys, value_dict=values)
|
||||
db = database.MonitorDatabase()
|
||||
db.upsert(table_name='newsletter_log', key_dict=keys, value_dict=values)
|
||||
|
||||
|
||||
def get_newsletter_uuid():
|
||||
def generate_newsletter_uuid():
|
||||
uuid = ''
|
||||
uuid_exists = 1
|
||||
uuid_exists = 0
|
||||
db = database.MonitorDatabase()
|
||||
|
||||
while not uuid or uuid_exists:
|
||||
if uuid:
|
||||
result = db.select_single(
|
||||
'SELECT EXISTS(SELECT uuid FROM newsletter_log WHERE uuid = ?) as uuid_exists', [uuid])
|
||||
uuid_exists = result['uuid_exists']
|
||||
|
||||
uuid = plexpy.generate_uuid()[:8]
|
||||
result = db.select_single(
|
||||
'SELECT EXISTS(SELECT uuid FROM newsletter_log WHERE uuid = ?) as uuid_exists', [uuid])
|
||||
uuid_exists = result['uuid_exists']
|
||||
|
||||
return uuid
|
||||
|
||||
|
||||
def get_newsletter(newsletter_uuid):
|
||||
db = database.MonitorDatabase()
|
||||
result = db.select_single('SELECT newsletter_id, start_date, end_date FROM newsletter_log '
|
||||
'WHERE uuid = ?', [newsletter_uuid])
|
||||
return result
|
||||
|
|
|
@ -63,14 +63,19 @@ def available_notification_actions():
|
|||
return actions
|
||||
|
||||
|
||||
def get_agent_class(agent_id=None, config=None, email_config=None):
|
||||
def get_agent_class(agent_id=None, config=None, email_config=None, start_date=None, end_date=None):
|
||||
if str(agent_id).isdigit():
|
||||
agent_id = int(agent_id)
|
||||
|
||||
kwargs = {'config': config,
|
||||
'email_config': email_config,
|
||||
'start_date': start_date,
|
||||
'end_date': end_date}
|
||||
|
||||
if agent_id == 0:
|
||||
return RecentlyAdded(config=config, email_config=email_config)
|
||||
return RecentlyAdded(**kwargs)
|
||||
else:
|
||||
return Newsletter(config=config, email_config=email_config)
|
||||
return Newsletter(**kwargs)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
@ -413,7 +418,8 @@ class RecentlyAdded(Newsletter):
|
|||
_TEMPLATE = 'recently_added.html'
|
||||
|
||||
def __init__(self, config=None, email_config=None, start_date=None, end_date=None):
|
||||
super(RecentlyAdded, self).__init__(config=config, email_config=email_config)
|
||||
super(RecentlyAdded, self).__init__(config=config, email_config=email_config,
|
||||
start_date=start_date, end_date=end_date)
|
||||
|
||||
if self.config['incl_libraries'] is None:
|
||||
self.config['incl_libraries'] = []
|
||||
|
@ -435,7 +441,7 @@ class RecentlyAdded(Newsletter):
|
|||
while not done:
|
||||
recent_items = pms_connect.get_recently_added_details(start=str(start), count='10', type=media_type)
|
||||
filtered_items = [i for i in recent_items['recently_added']
|
||||
if helpers.cast_to_int(i['added_at']) > self.start_time]
|
||||
if self.start_time < helpers.cast_to_int(i['added_at']) < self.end_time]
|
||||
if len(filtered_items) < 10:
|
||||
done = True
|
||||
else:
|
||||
|
@ -475,7 +481,7 @@ class RecentlyAdded(Newsletter):
|
|||
show_metadata = pms_connect.get_metadata_details(show_rating_key, media_info=False)
|
||||
children = pms_connect.get_item_children(show_rating_key, get_grandchildren=True)
|
||||
filtered_children = [i for i in children['children_list']
|
||||
if helpers.cast_to_int(i['added_at']) > self.start_time]
|
||||
if self.start_time < helpers.cast_to_int(i['added_at']) < self.end_time]
|
||||
filtered_children.sort(key=lambda x: int(x['parent_media_index']))
|
||||
|
||||
seasons = []
|
||||
|
@ -522,7 +528,7 @@ class RecentlyAdded(Newsletter):
|
|||
artist_metadata = pms_connect.get_metadata_details(artist_rating_key, media_info=False)
|
||||
children = pms_connect.get_item_children(artist_rating_key)
|
||||
filtered_children = [i for i in children['children_list']
|
||||
if helpers.cast_to_int(i['added_at']) > self.start_time]
|
||||
if self.start_time < helpers.cast_to_int(i['added_at']) < self.end_time]
|
||||
filtered_children.sort(key=lambda x: x['added_at'])
|
||||
|
||||
albums = []
|
||||
|
|
|
@ -5513,20 +5513,36 @@ class WebInterface(object):
|
|||
|
||||
@cherrypy.expose
|
||||
@requireAuth(member_of("admin"))
|
||||
def newsletter(self, newsletter_id=None, **kwargs):
|
||||
def newsletter(self, *args, **kwargs):
|
||||
newsletter_uuid = args[0] if args else None
|
||||
newsletter_id = kwargs.pop('newsletter_id', None)
|
||||
return serve_template(templatename="newsletter_preview.html",
|
||||
title="Newsletter",
|
||||
newsletter_id=newsletter_id)
|
||||
newsletter_id=newsletter_id,
|
||||
newsletter_uuid=newsletter_uuid)
|
||||
|
||||
@cherrypy.expose
|
||||
@requireAuth(member_of("admin"))
|
||||
def real_newsletter(self, newsletter_id=None, preview=False, master=False, raw=False, **kwargs):
|
||||
def real_newsletter(self, newsletter_id=None, newsletter_uuid=None, start_date=None, end_date=None,
|
||||
preview=False, master=False, raw=False, **kwargs):
|
||||
if newsletter_uuid:
|
||||
newsletter = newsletter_handler.get_newsletter(newsletter_uuid=newsletter_uuid)
|
||||
|
||||
if newsletter:
|
||||
newsletter_id = newsletter['newsletter_id']
|
||||
start_date = newsletter['start_date']
|
||||
end_date = newsletter['end_date']
|
||||
else:
|
||||
return "This newsletter does not exist"
|
||||
|
||||
if newsletter_id:
|
||||
newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id)
|
||||
|
||||
if newsletter:
|
||||
newsletter_agent = newsletters.get_agent_class(agent_id=newsletter['agent_id'],
|
||||
config=newsletter['config'])
|
||||
config=newsletter['config'],
|
||||
start_date=start_date,
|
||||
end_date=end_date)
|
||||
preview = (preview == 'true')
|
||||
master = (master == 'true')
|
||||
raw = (raw == 'true')
|
||||
|
@ -5537,6 +5553,8 @@ class WebInterface(object):
|
|||
|
||||
return newsletter_agent.generate_newsletter(preview=preview, master=master)
|
||||
|
||||
return "Invalid Newsletter ID #%s" % newsletter_id
|
||||
logger.error(u"Failed to retrieve newsletter: Invalid newsletter_id #%s" % newsletter_id)
|
||||
return "Failed to retrieve newsletter"
|
||||
|
||||
return "Missing newsletter_id parameter"
|
||||
logger.error(u"Failed to retrieve newsletter: Missing newsletter_id parameter.")
|
||||
return "Failed to retrieve newsletter"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue