Newer
Older
####################################################################
# A simple Correios API to get the CEP informations
#
# author: Alexandre Borba
# Igor Hercowitz
#
####################################################################
from correios import CepTracker
def expired(record_date):
from datetime import datetime, timedelta
WEEKS = 26 #6 months
now = datetime.now()
return ( now - record_date['v_date'] >= timedelta(weeks=WEEKS))
def _get_info_from_correios(cep):
tracker = CepTracker()
return tracker.track(cep)
result = ceps.find_one({"cep":cep}, fields={"_id":False})
from datetime import date
#if not result or expired(date(2012, 4, 1)):
info = None
if not result or not result.has_key('v_date'):
info = _get_info_from_correios(cep)
map(lambda x: ceps.save(x), info)
result = ceps.find_one({"cep":cep}, fields={'_id':False, 'v_date':False})
elif expired(result):
info = _get_info_from_correios(cep)
map(lambda x: ceps.update({"cep": x['cep']}, {"$set":x}), info)
result = ceps.find_one({"cep":cep}, fields={"_id":False,'v_date':False})
else:
result = ceps.find_one({"cep":cep}, fields={"_id":False,'v_date':False})
@error(500)
def error500(code):
result_error = json.dumps({'error':'500'})
def _standalone(port=9876):
run(host='localhost', port=port)