mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-03-12 04:35:40 -07:00
108 lines
3.9 KiB
Python
108 lines
3.9 KiB
Python
class MailboxMessage(object):
|
|
def __init__(self, api, message):
|
|
self.id = message['convId']
|
|
self.conv = Conversation(api, self.id)
|
|
self.subject = message['subject']
|
|
self.unread = message['unread']
|
|
self.sticky = message['sticky']
|
|
self.fwd_id = message['forwardedId']
|
|
self.fwd_name = message['forwardedName']
|
|
self.sender_id = message['senderId']
|
|
self.username = message['username']
|
|
self.donor = message['donor']
|
|
self.warned = message['warned']
|
|
self.enabled = message['enabled']
|
|
self.date = message['date']
|
|
|
|
def __repr__(self):
|
|
return "MailboxMessage ID %s - %s %s %s" % (self.id, self.subject, self.sender_id, self.username)
|
|
|
|
|
|
class ConversationMessage(object):
|
|
def __init__(self, msg_resp):
|
|
self.id = msg_resp['messageId']
|
|
self.sender_id = msg_resp['senderId']
|
|
self.sender_name = msg_resp['senderName']
|
|
self.sent_date = msg_resp['sentDate']
|
|
self.bb_body = msg_resp['bbBody']
|
|
self.body = msg_resp['body']
|
|
|
|
def __repr__(self):
|
|
return "ConversationMessage ID %s - %s %s" % (self.id, self.sender_name, self.sent_date)
|
|
|
|
|
|
class Conversation(object):
|
|
def __init__(self, api, conv_id):
|
|
self.id = conv_id
|
|
self.parent_api = api
|
|
self.subject = None
|
|
self.sticky = None
|
|
self.messages = []
|
|
|
|
def __repr__(self):
|
|
return "Conversation ID %s - %s" % (self.id, self.subject)
|
|
|
|
def set_conv_data(self, conv_resp):
|
|
assert self.id == conv_resp['convId']
|
|
self.subject = conv_resp['subject']
|
|
self.sticky = conv_resp['sticky']
|
|
self.messages = [ConversationMessage(m) for m in conv_resp['messages']]
|
|
|
|
def update_conv_data(self):
|
|
response = self.parent_api.request(action='inbox',
|
|
type='viewconv', id=self.id)
|
|
self.set_conv_data(response)
|
|
|
|
|
|
class Mailbox(object):
|
|
"""
|
|
This class represents the logged in user's inbox/sentbox
|
|
"""
|
|
def __init__(self, parent_api, boxtype='inbox', page='1', sort='unread'):
|
|
self.parent_api = parent_api
|
|
self.boxtype = boxtype
|
|
self.current_page = page
|
|
self.total_pages = None
|
|
self.sort = sort
|
|
self.messages = None
|
|
|
|
def set_mbox_data(self, mbox_resp):
|
|
"""
|
|
Takes parsed JSON response from 'inbox' action on api
|
|
and updates the available subset of mailbox information.
|
|
"""
|
|
self.current_page = mbox_resp['currentPage']
|
|
self.total_pages = mbox_resp['pages']
|
|
self.messages = \
|
|
[MailboxMessage(self.parent_api, m) for m in mbox_resp['messages']]
|
|
|
|
def update_mbox_data(self):
|
|
response = self.parent_api.request(action='inbox',
|
|
type=self.boxtype, page=self.current_page, sort=self.sort)
|
|
self.set_mbox_data(response)
|
|
|
|
def next_page(self):
|
|
if not self.total_pages:
|
|
raise ValueError("call update_mbox_data() first")
|
|
total_pages = int(self.total_pages)
|
|
cur_page = int(self.current_page)
|
|
if cur_page < total_pages:
|
|
return Mailbox(self.parent_api, self.boxtype,
|
|
str(cur_page + 1), self.sort)
|
|
raise ValueError("Already at page %d/%d" % (cur_page, total_pages))
|
|
|
|
def prev_page(self):
|
|
if not self.total_pages:
|
|
raise ValueError("call update_mbox_data() first")
|
|
total_pages = int(self.total_pages)
|
|
cur_page = int(self.current_page)
|
|
if cur_page > 1:
|
|
return Mailbox(self.parent_api, self.boxtype,
|
|
str(cur_page - 1), self.sort)
|
|
raise ValueError("Already at page %d/%d" % (cur_page, total_pages))
|
|
|
|
def __repr__(self):
|
|
return "Mailbox: %s %s Page %s/%s" \
|
|
% (self.boxtype, self.sort,
|
|
self.current_page, self.total_pages)
|