def main(): # Dump task in CSV p = Producteev() criteria={"statuses":[0, 1],} # get active and done tasks file_url = p.export_tasks(criteria)['file']['url'] print "→ Downoald exported file", file_url r,c = p.http.request(file_url) # borrow Producteev http if r['status'] == '200': with gzip.open('producteev_exported.csv.gz','wb') as f: f.write(c) print 'Saved to producteev_exported.csv.gz' else: print 'Failled' print r, c
def main(): # Download every files attached to notes p = Producteev() try: os.mkdir(BACKUPS_DIR) except OSError: pass criteria = {"statuses":[0, 1],} # get active and done tasks filters = {'alias':'files', # tasks with files 'page':1, 'per_page':50, 'sort':'created_at', 'order':'desc' } # Cycle through all available pages before quitting while True: print "Searching page", filters['page'] tasks_list = p.search_tasks(criteria, filters) for task in tasks_list['tasks']: notes_list = p.get_task_notes(task['id']) for note in notes_list['notes']: for file_obj in note['files']: print "→ Downloading", file_obj['title'] r,c = p.http.request(file_obj['url']) # borrow Producteev http object to download file if '200' == r['status']: with open(os.path.join(BACKUPS_DIR, file_obj['title']),'wb') as f: f.write(c) else: print r, c if filters['page']*filters['per_page'] >= tasks_list["total_hits"]: break filters['page']+=1
if __name__ == "__main__": # Parse options parser = OptionParser() parser.add_option("-u", "--username", dest="username", help="Set username", metavar="USERNAME") parser.add_option("-p", "--password", dest="password", help="Set password", metavar="PASSWORD") parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Print status messages to stdout") (options, args) = parser.parse_args() # Make clients client = Producteev(API_KEY, SECRET_KEY) client.login(options.username, options.password) # Get time print client.get_time() # Get user user = client.users.me print user.timezone print user.default_dashboard print user.colleagues # Get task with id 9909041 t = client.tasks.get(9909041) print t.title print t.labels
def setUp(self): self.client = Producteev(API_KEY, SECRET_KEY) self.client.login(username, password)
class TestProducteev(unittest.TestCase): """ Test class for producteev module. """ def setUp(self): self.client = Producteev(API_KEY, SECRET_KEY) self.client.login(username, password) def test_tasks(self): # Test new and get t1 = self.client.tasks.new('New test task') t2 = self.client.tasks.get(t1) self.assertEqual(t1, t2) # Test list_all self.assertTrue(t1, self.client.tasks.list_all()) # Test delete self.assertTrue(t1.delete()) def test_labels(self): # Test new and get dashboard_id = self.client.users.me.default_dashboard.id l1 = self.client.labels.new('New label', dashboard_id) l2 = self.client.labels.get(l1) self.assertEqual(l1, l2) # Test list self.assertTrue(l1, self.client.labels.list()) # Test delete self.assertTrue(l2.delete()) def test_users(self): me = self.client.users.me # Test get fullname fn = me.full_name f_l = '%s %s' % (me.firstname, me.lastname) self.assertEqual(fn, f_l) # Test sort by from producteev.users import SORT_BY ds = me.sort_by me.sort_by = SORT_BY[0] self.assertEqual(me.sort_by, SORT_BY[0]) me.sort_by = 1 self.assertEqual(me.sort_by, SORT_BY[1]) me.sort_by = ds # Test get user u = self.client.users.get(me.id) self.assertEqual(me, u) u = self.client.users.get(me) self.assertEqual(me, u) u = self.client.users.get(str(me.id)) self.assertEqual(me, u) def test_dashboars(self): # Test default dashboard dd = self.client.users.me.default_dashboard self.assertTrue(dd in self.client.dashboards.list) # Test new and get d1 = self.client.dashboards.new('New dashboard') d2 = self.client.dashboards.get(d1) self.assertEqual(d1, d2) # Test list self.assertTrue(d1 in self.client.dashboards.list) # Test set default dashboard self.client.users.me.default_dashboard = d1 dd = self.client.users.me.default_dashboard self.assertEqual(dd, d1) self.client.users.me.default_dashboard = dd # Test delete self.assertTrue(d1.delete()) def test_subtasks(self): # Test new t1 = self.client.tasks.new('New test task') st1 = self.client.subtasks.new(t1, 'New subtask') self.assertTrue(st1 in t1.subtasks) # Test delete self.assertTrue(st1.delete()) self.assertTrue(t1.delete()) def test_activities(self): # TODO pass