def respond(self, message): """ Respond to requests about the last seven days of data TODO: Loop over all stories and report stats on each """ seven_days_ago = datetime.datetime.now() - datetime.timedelta(days=7) stories = Story.select().where(Story.tracking_started > seven_days_ago) slugs = Set() for story in stories: # print story.name story_slugs = story.slug.split(',') for slug in story_slugs: slugs.add(slug) try: team = self.config.get_team_for_story(stories[0]) except: team = self.config.get_default_team() total_users = self.get_user_data(team=team, start_date='7daysAgo') total_users = int(total_users['rows'][0][0]) total_users = "{:,}".format(total_users) npr_linger = NPRLingerRate() linger_rows = npr_linger.get_linger_data(team=team, start_date='7daysAgo') median = NPRLingerRate.get_median(linger_rows) linger_histogram_url = npr_linger.get_histogram_url(linger_rows, median) attachments = [{ "fallback": "linger update", "color": "#eeeeee", "title": "Time spent on graphics over the last week", "image_url": linger_histogram_url }] text = "In the past 7 days, I've tracked {0} stories and {1} graphics.".format(len(stories), len(slugs)) text += "\n\n" text += "{0} people looked at graphics on the property. Here's how much time they spent:".format(total_users) fields = [] for story in stories: fields.append({ "title": story.name.strip(), "value": "<{0}|{1}>".format(story.url, story.slug.strip()), "short": True }) attachments.append({ "fallback": "linger update", "color": "#eeeeee", # "title": "What we have done", "fields": fields }) return { 'text': text, 'attachments': attachments }
def test_get_median(self): test_data = [ [60, 25], [90, 50], [120, 25], ] median = NPRLingerRate.get_median(test_data) self.assertEqual(median['total_people'], 100) self.assertEqual(median['raw_avg_seconds'], 90) self.assertEqual(median['minutes'], 1) self.assertEqual(median['seconds'], 30)
def test_get_median(self): test_data = [ [60, 25], [90, 50], [120, 25], ] median = NPRLingerRate.get_median(test_data) self.assertEqual(median['total_people'], 100) self.assertEqual(median['raw_avg_seconds'], 90) self.assertEqual(median['minutes'], 1) self.assertEqual(median['seconds'], 30)
def respond(self, message): """ Respond to requests about the last seven days of data TODO: Loop over all stories and report stats on each """ seven_days_ago = datetime.datetime.now() - datetime.timedelta(days=7) stories = Story.select().where(Story.tracking_started > seven_days_ago) slugs = Set() for story in stories: # print story.name story_slugs = story.slug.split(',') for slug in story_slugs: slugs.add(slug) try: team = self.config.get_team_for_story(stories[0]) except: team = self.config.get_default_team() total_users = self.get_user_data(team=team, start_date='7daysAgo') total_users = int(total_users['rows'][0][0]) total_users = "{:,}".format(total_users) npr_linger = NPRLingerRate() linger_rows = npr_linger.get_linger_data(team=team, start_date='7daysAgo') median = NPRLingerRate.get_median(linger_rows) linger_histogram_url = npr_linger.get_histogram_url( linger_rows, median) attachments = [{ "fallback": "linger update", "color": "#eeeeee", "title": "Time spent on graphics over the last week", "image_url": linger_histogram_url }] text = "In the past 7 days, I've tracked {0} stories and {1} graphics.".format( len(stories), len(slugs)) text += "\n\n" text += "{0} people looked at graphics on the property. Here's how much time they spent:".format( total_users) fields = [] for story in stories: fields.append({ "title": story.name.strip(), "value": "<{0}|{1}>".format(story.url, story.slug.strip()), "short": True }) attachments.append({ "fallback": "linger update", "color": "#eeeeee", # "title": "What we have done", "fields": fields }) return {'text': text, 'attachments': attachments}