rabbitmq/job_notification.py (25 lines of code) (raw):
import lxml.etree as ET
from xml.sax.saxutils import unescape
import re
pair_splitter = re.compile(r'^(\w{2}-\d+)=(.*)$')
class JobNotification(object):
"""
This class abstracts the Vidispine job notification document to allow for easier reading
"""
def __init__(self, jsondict: dict):
self._content = jsondict
def __getattr__(self, item):
for entry in self._content["field"]:
if entry["key"]==item:
return entry["value"]
return None
def __str__(self):
return "{type} job for {filename} by {user}".format(type=self.type,filename=self.originalFilename,user=self.username)
def file_paths(self):
"""
returns a dictionary of relative file path/file ID pairs, from the filePathMap parameter
:return: dictionary
"""
if self.filePathMap is None:
return None
pairs = self.filePathMap.split(',')
def split_pair(pair): #can't be sure that there will be no = in the filename
result = pair_splitter.match(pair)
if result:
return (result.group(1), result.group(2))
else:
return None
return dict([result for result in [split_pair(pair) for pair in pairs] if result is not None])