Refactor test script arg splitting

This commit is contained in:
JonnyWong16 2018-06-29 12:36:35 -07:00
parent ae49b08e19
commit 2e290d0b0c
2 changed files with 13 additions and 7 deletions

View file

@ -338,6 +338,12 @@ def notify(notifier_id=None, notify_action=None, stream_data=None, timeline_data
subject = kwargs.pop('subject', 'Tautulli')
body = kwargs.pop('body', 'Test Notification')
script_args = kwargs.pop('script_args', [])
if script_args and isinstance(script_args, basestring):
# Attemps to format test script args for the user
script_args = [arg.decode(plexpy.SYS_ENCODING, 'ignore')
for arg in shlex.split(script_args.encode(plexpy.SYS_ENCODING, 'ignore'))]
else:
# Get the subject and body strings
subject_string = notifier_config['notify_text'][notify_action]['subject']
@ -421,7 +427,7 @@ def set_notify_state(notifier, notify_action, subject='', body='', script_args='
session = session or {}
script_args = json.dumps([s.decode(plexpy.SYS_ENCODING) for s in script_args]) if script_args else None
script_args = json.dumps(script_args) if script_args else None
keys = {'timestamp': int(time.time()),
'session_key': session.get('session_key', None),
@ -1028,7 +1034,7 @@ def build_notify_text(subject='', body='', notify_action=None, parameters=None,
if agent_id == 15:
try:
script_args = [custom_formatter.format(arg, **parameters)
script_args = [custom_formatter.format(arg, **parameters).decode(plexpy.SYS_ENCODING, 'ignore')
for arg in shlex.split(subject.encode(plexpy.SYS_ENCODING, 'ignore'))]
except LookupError as e:
logger.error(u"Tautulli NotificationHandler :: Unable to parse parameter %s in script argument. Using fallback." % e)

View file

@ -3083,14 +3083,14 @@ class SCRIPTS(Notifier):
script = [script]
# For manual notifications
if script_args and isinstance(script_args, basestring):
# attemps for format it for the user
script_args = [arg for arg in shlex.split(script_args.encode(plexpy.SYS_ENCODING, 'ignore'))]
# if script_args and isinstance(script_args, basestring):
# # attemps for format it for the user
# script_args = [arg for arg in shlex.split(script_args.encode(plexpy.SYS_ENCODING, 'ignore'))]
# Windows handles unicode very badly.
# https://bugs.python.org/issue19264
# if script_args and os.name == 'nt':
# script_args = [arg.encode(plexpy.SYS_ENCODING, 'ignore') for arg in script_args]
if script_args: # and os.name == 'nt':
script_args = [arg.encode(plexpy.SYS_ENCODING, 'ignore') for arg in script_args]
# Allow overrides for shitty systems
if prefix and script_args: