def total_users(self, s_date, e_date): key = 'total_users_' + s_date.strftime('%Y-%m-%d') + e_date.strftime('%Y-%m-%d') visitors_from_cache = memcache.get(key) if visitors_from_cache: return visitors_from_cache total_users = User.count() + 470 interval = {} val = 0 result = [] # s_date = datetime.strptime(start_date, '%Y-%m-%d') # e_date = datetime.strptime(end_date, '%Y-%m-%d') days = (e_date - s_date).days + 1 for item in range(0, days): date_str = (e_date - timedelta(days=item)).strftime('%Y-%m-%d') interval.update({date_str: 0}) for user in User.all(): if s_date > user.created_at: break if user.created_at > e_date: interval[e_date.strftime('%Y-%m-%d')] += 1 continue interval[user.created_at.strftime('%Y-%m-%d')] += 1 for item in range(0, days): date_str = (e_date - timedelta(days=item)).strftime('%Y-%m-%d') val += interval.get(date_str) result.append([total_users - val, date_str]) result.reverse() memcache.add(key, result, 180) return result
def total_users(self, s_date, e_date): key = 'total_users_' + s_date.strftime('%Y-%m-%d') + e_date.strftime( '%Y-%m-%d') visitors_from_cache = memcache.get(key) if visitors_from_cache: return visitors_from_cache total_users = User.count() + 470 interval = {} val = 0 result = [] # s_date = datetime.strptime(start_date, '%Y-%m-%d') # e_date = datetime.strptime(end_date, '%Y-%m-%d') days = (e_date - s_date).days + 1 for item in range(0, days): date_str = (e_date - timedelta(days=item)).strftime('%Y-%m-%d') interval.update({date_str: 0}) for user in User.all(): if s_date > user.created_at: break if user.created_at > e_date: interval[e_date.strftime('%Y-%m-%d')] += 1 continue interval[user.created_at.strftime('%Y-%m-%d')] += 1 for item in range(0, days): date_str = (e_date - timedelta(days=item)).strftime('%Y-%m-%d') val += interval.get(date_str) result.append([total_users - val, date_str]) result.reverse() memcache.add(key, result, 180) return result
def test_total_user_count(self): ok_(User.count() >= 0)
def it_returns_the_total_number_of_users(self): with mock.patch.object(User, 'count') as mock_count: mock_count.return_value = 100 eq_(100, User.count())