def test_parse_datetime(self): from tornado_utils import parse_datetime from tornado_utils import DatetimeParseError r = parse_datetime('1285041600000') self.assertEqual(r.year, 2010) r = parse_datetime('1283140800') self.assertEqual(r.year, 2010) r = parse_datetime('1286744467.0') self.assertEqual(r.year, 2010) self.assertRaises(DatetimeParseError, parse_datetime, 'junk')
def get(self): what = self.get_argument('what') timestamp = self.get_argument('timestamp') items = [] _days = lambda x: datetime.timedelta(days=x) if what == 'Questions': when = parse_datetime(timestamp) search = {'state': 'PUBLISHED', 'publish_date': {'$gte': when - _days(7), '$lt': when - _days(0)}} questions = (self.db.Question.collection .find(search)) for question in questions: url = get_question_slug_url(question) items.append({'url': url, 'text': question['text']}) elif what == 'Contributors': when = parse_datetime(timestamp) search = {'state': 'PUBLISHED', 'publish_date': {'$gte': when - _days(7), '$lt': when - _days(0)}} questions = (self.db.Question.collection .find(search)) users = defaultdict(int) for question in questions: users[question['author'].id] += 1 as_list = [(c, i) for i, c in users.items()] as_list.sort() as_list.reverse() for count, _id in as_list: user = self.db.User.one({'_id': _id}) text = "%s (%s)" % (user.username, count) items.append({'text': text}) else: raise HTTPError(404, "Invalid argument %r" % what) self.write_json(dict(items=items))