def import_timely_events(self): if not self.user.timely_token: self.response.status = 501 return header = { 'Authorization': 'Bearer ' + self.user.timely_token, 'Content-Type': 'application/json' } if not self.request.get('selected_proj'): self.response.status = 501 return # importo l'utente result = urlfetch.fetch(url='https://api.timelyapp.com/1.0/accounts', headers=header, method=urlfetch.GET) if result.status_code != 200: self.response.set_status(501) return result = json.loads(result.content) selected_proj = json.loads(self.request.get('selected_proj')) since = self.request.get('since') up_to = self.request.get('up_to') if since != '' and not datetime.strptime(since, '%Y-%m-%d'): self.response.set_status(201) self.response.write('Since time is not correct') return if up_to != '' and not datetime.strptime(up_to, '%Y-%m-%d'): self.response.set_status(201) self.response.write('Up_to time is not correct') return num_imported = 0 for proj_id in selected_proj: if since != '' and up_to != '': timely_events_url = 'https://api.timelyapp.com/1.0/%s/projects/%s/events?since=%s&upto=%s' % \ (result[0]['id'], proj_id, since, up_to) else: timely_events_url = 'https://api.timelyapp.com/1.0/%s/projects/%s/events' % (result[0]['id'], proj_id) logging.warn(timely_events_url + " " + self.user.timely_token) events = urlfetch.fetch( url=timely_events_url, headers=header, method=urlfetch.GET) if events.status_code != 200: self.response.set_status(501) return events = json.loads(events.content) if len(events) > 0: num_imported += len(events) # create project new_proj = Project(parent=self.user.key) new_proj.name = events[0]['project']['name'][0:25] new_proj.hourly_rate = events[0]['project']['hour_rate'] new_proj.put() self.user.num_projects += 1 self.user.put() for event in events: if event['duration']['total_minutes'] > 0: start_time = datetime.strptime((event['day'] + ' 00:00'), '%Y-%m-%d %H:%M') end_time = start_time + timedelta(minutes=(event['duration']['total_minutes'])) event_title = event['note'][0:25] event_description = event['note'] billed = True self.save_imported_event(new_proj.key, start_time, end_time, event_title, event_description, billed) if self.request.get('import_planned') == 'true': if (event['estimated_duration']['total_minutes'] - event['duration']['total_minutes']) > 0: start_time = datetime.strptime((event['day'] + ' 00:00'), '%Y-%m-%d %H:%M') end_time = start_time + timedelta( minutes=(event['estimated_duration']['total_minutes'] - event['duration']['total_minutes'])) event_title = 'planned-' + event['note'][0:25] event_description = event['note'] billed = False self.save_imported_event(new_proj.key, start_time, end_time, event_title, event_description, billed) self.response.write(num_imported)