def get(self): from services.github import GithubClient last_date = self.request.get('date') if last_date: last_date = tools.fromISODate(last_date) else: last_date = (datetime.today() - timedelta(days=1)) users = User.SyncActive('github') res = {} td_put = [] for user in users: gh_client = GithubClient(user) if gh_client._can_run(): date_range = [(last_date - timedelta(days=x)).date() for x in range(self.GH_COMMIT_OVERLAP)] logging.debug("Running SyncGithub cron for %s on %s..." % (user, date_range)) commits_dict = gh_client.get_contributions_on_date_range( date_range) if commits_dict is not None: for date, n_commits in commits_dict.items(): td = TrackingDay.Create(user, date) td.set_properties({'commits': n_commits}) td_put.append(td) else: logging.debug("Github updater can't run") if td_put: ndb.put_multi(td_put) self.json_out(res)
def get(self): from services.github import GithubClient date = self.request.get('date') if date: date = tools.fromISODate(date).date() else: date = (datetime.today() - timedelta(days=1)).date() users = User.SyncActive('github') res = {} td_put = [] for user in users: gh_client = GithubClient(user) logging.debug("Running SyncGithub cron for %s on %s..." % (user, date)) if gh_client._can_run(): commits = gh_client.get_contributions_on_day(date) if commits is not None: td = TrackingDay.Create(user, date) td.set_properties({'commits': commits}) td_put.append(td) res = td.json() else: logging.debug("Github updater can't run") if td_put: ndb.put_multi(td_put) self.json_out(res, debug=True)
def update(self, d): ''' Update a single TrackingDay() object with properties defined via JSON key(str) -> value(str) ''' date = None _date = self.request.get('date') if _date: date = tools.fromISODate(_date) data_json = tools.getJson(self.request.get('data')) # JSON td = TrackingDay.Create(self.user, date) # Get or create if data_json: td.set_properties(data_json) td.put() self.success = True self.set_response({'tracking_day': td.json() if td else None})
def get(self, d): # TODO: Async fetches with_habits = self.request.get_range('with_habits', default=0) == 1 with_tracking = self.request.get_range('with_tracking', default=1) == 1 with_goals = self.request.get_range('with_goals', default=1) == 1 with_tasks = self.request.get_range('with_tasks', default=1) == 1 date_start = self.request.get('date_start') date_end = self.request.get('date_end') dt_start, dt_end = tools.fromISODate(date_start), tools.fromISODate( date_end) iso_dates = [] habits = [] today = datetime.today() habitdays = [] goals = [] journals, iso_dates = MiniJournal.Fetch(self.user, dt_start, dt_end) if with_habits: habits = Habit.Active(self.user) habitdays = HabitDay.Range(self.user, habits, dt_start, dt_end) if with_tracking: tracking_days = TrackingDay.Range(self.user, dt_start, dt_end) if with_goals: goals = Goal.Year(self.user, today.year) if with_tasks: tasks = Task.DueInRange(self.user, dt_start, dt_end, limit=100) self.set_response( { 'dates': iso_dates, 'journals': [j.json() for j in journals if j], 'habits': [h.json() for h in habits], 'goals': [g.json() for g in goals], 'tasks': [t.json() for t in tasks], 'tracking_days': [p.json() for p in tracking_days], 'habitdays': tools.lookupDict(habitdays, keyprop="key_id", valueTransform=lambda hd: hd.json()) }, success=True)
def get(self): from services.gfit import FitClient users = User.SyncActive('gfit') res = {} date = (datetime.today() - timedelta(days=1)).date() for user in users: fit_enabled = bool(user.get_integration_prop('gfit_activities')) logging.debug("Running SyncFromGoogleFit cron for %s on %s..." % (user, date)) if fit_enabled: fit_client = FitClient(user) if fit_client: var_durations = fit_client.aggregate_activity_durations( date) logging.debug(var_durations) if var_durations: td = TrackingDay.Create(user, date) td.set_properties(var_durations) td.put() else: logging.debug("Fit not authorized") self.json_out(res, debug=True)