Advertisement
Guest User

possible_alternative.py

a guest
Jul 2nd, 2018
469
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.85 KB | None | 0 0
  1.  
  2. from ozpy.mailbox import Mailbox
  3. import sys
  4. from pprint import pprint
  5. import os
  6.  
  7. """
  8. Example of fetching Zimbra task and task list (recursively).
  9. """
  10.  
  11. class MyMailbox(Mailbox):
  12.    
  13.     def get_task(self, folder):
  14.         """
  15.         Fetch task detail using SearchRequest
  16.         https://files.zimbra.com/docs/soap_api/8.7.11/api-reference/zimbraMail/Search.html
  17.         """
  18.         body = {
  19.             "sortBy":"taskDueAsc",
  20.             "tz":{"id":"Asia/Bangkok"},
  21.             "locale":{"_content":"en_US"},
  22.             "offset":0,
  23.             "limit":100,
  24.             "query":"in:\"{}\"".format(folder),
  25.             "types":"task",
  26.             "needExp":1
  27.         }
  28.         urn = "urn:zimbraMail"
  29.         return self.send("Search", body, urn)  
  30.  
  31.     def get_task_folders(self):
  32.         """
  33.         Get list of task folder using GetFolderRequest
  34.         https://files.zimbra.com/docs/soap_api/8.7.11/api-reference/zimbraMail/GetFolder.html
  35.         """
  36.         urn = "urn:zimbraMail"
  37.         body = {
  38.             'folder': {'path': '/'},
  39.             'view': 'Contacts'
  40.         }
  41.         return self.send("GetFolder", body, urn)   
  42.        
  43.  
  44. mbx = MyMailbox(
  45.         username="user3@hovedkvarteret.no",
  46.         password="user3_passwrd",
  47.         soapurl="https://mail.hovedkvarteret.no/service/soap",
  48. )
  49.  
  50.  
  51. def fetch(name, instance):
  52.     """
  53.     Fetch task and sub-task recursively
  54.     """
  55.     name = os.path.join(name, instance['name'])
  56.     # print out task folder path
  57.     print("{} {}".format("-"*10,name))
  58.     task_req = mbx.get_task(name)
  59.  
  60.     # iterrate all task within task folder if any
  61.     if task_req.has_key('task'):
  62.         for task in task_req['task']:
  63.             print('* {} - progress: {} % - location: {}'.format(
  64.                 task['name'],
  65.                 task['percentComplete'],
  66.                 task['loc']
  67.             ))
  68.    
  69.     # loop if there are subfolder
  70.     if instance.has_key("folder"):
  71.         for folder in instance['folder']:
  72.             fetch(name, folder)
  73.  
  74. response = mbx.get_task_folders()
  75.  
  76. # get parent of task folder
  77. for parent_folder in response['folder'][0]['folder']:
  78.     fetch("", parent_folder)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement