コード例 #1
0
 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)
コード例 #2
0
ファイル: tasks.py プロジェクト: maximsch2/flow-dashboard
 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)
コード例 #3
0
ファイル: api.py プロジェクト: maximsch2/flow-dashboard
 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})
コード例 #4
0
ファイル: api.py プロジェクト: maximsch2/flow-dashboard
 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)
コード例 #5
0
 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)