Merge branch 'development'

This commit is contained in:
Javier Goizueta 2016-12-20 16:43:42 +01:00
commit ed1386d571
3 changed files with 20 additions and 3 deletions

View File

@ -1,6 +1,15 @@
from datetime import date, timedelta from datetime import date, timedelta
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from calendar import monthrange
def last_day_of_month(year, month):
"""last valid day of a month"""
return monthrange(year, month)[1]
def latest_valid_date(year, month, day):
"""latest date not later than the day specified"""
valid_day = min(day, last_day_of_month(year, month))
return date(year, month, valid_day)
class UserMetricsService: class UserMetricsService:
""" Class to manage all the user info """ """ Class to manage all the user info """
@ -143,9 +152,9 @@ class UserMetricsService:
today = date.today() today = date.today()
if end_period_day > today.day: if end_period_day > today.day:
temp_date = today + relativedelta(months=-1) temp_date = today + relativedelta(months=-1)
date_from = date(temp_date.year, temp_date.month, end_period_day) date_from = latest_valid_date(temp_date.year, temp_date.month, end_period_day)
else: else:
date_from = date(today.year, today.month, end_period_day) date_from = latest_valid_date(today.year, today.month, end_period_day)
return date_from, today return date_from, today

View File

@ -10,7 +10,7 @@ from setuptools import setup, find_packages
setup( setup(
name='cartodb_services', name='cartodb_services',
version='0.12.3', version='0.12.4',
description='CartoDB Services API Python Library', description='CartoDB Services API Python Library',

View File

@ -23,6 +23,10 @@ class TestUserService(TestCase):
amount=400) amount=400)
assert us.used_quota(self.NOKIA_GEOCODER, date.today()) == 400 assert us.used_quota(self.NOKIA_GEOCODER, date.today()) == 400
def test_user_quota_for_a_month_shorter_than_end_day(self):
us = self.__build_user_service('test_user', end_date=date(2016,1,31))
assert us.used_quota(self.NOKIA_GEOCODER, date(2016,2,10)) == 0
def test_org_used_quota_for_a_day(self): def test_org_used_quota_for_a_day(self):
us = self.__build_user_service('test_user', orgname='test_org') us = self.__build_user_service('test_user', orgname='test_org')
increment_service_uses(self.redis_conn, 'test_user', increment_service_uses(self.redis_conn, 'test_user',
@ -30,6 +34,10 @@ class TestUserService(TestCase):
amount=400) amount=400)
assert us.used_quota(self.NOKIA_GEOCODER, date.today()) == 400 assert us.used_quota(self.NOKIA_GEOCODER, date.today()) == 400
def test_org_quota_quota_for_a_month_shorter_than_end_day(self):
us = self.__build_user_service('test_user', orgname='test_org', end_date=date(2016,1,31))
assert us.used_quota(self.NOKIA_GEOCODER, date(2016,2,10)) == 0
def test_user_not_amount_in_used_quota_for_month_should_be_0(self): def test_user_not_amount_in_used_quota_for_month_should_be_0(self):
us = self.__build_user_service('test_user') us = self.__build_user_service('test_user')
assert us.used_quota(self.NOKIA_GEOCODER, date.today()) == 0 assert us.used_quota(self.NOKIA_GEOCODER, date.today()) == 0