Пример #1
0
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
Пример #3
0
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
Пример #4
0
 def setUp(self):
     self.client = Producteev(API_KEY, SECRET_KEY)
     self.client.login(username, password)
Пример #5
0
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
Пример #6
0
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
Пример #7
0
 def setUp(self):
     self.client = Producteev(API_KEY, SECRET_KEY)
     self.client.login(username, password)
Пример #8
0
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