def verifica_cep(cep): cep = cep.replace('-', '') db = Database() response.headers['Access-Control-Allow-Origin'] = '*' try: result = db.get_one(cep, fields={'_id': False}) if not result or not result.has_key('v_date') or expired(result): try: for item in _get_info_from_source(cep): db.insert_or_update(item) except ConnectionError: response.status = '503 Servico Temporariamente Indisponivel' result = db.get_one(cep, fields={'_id': False, 'v_date': False}) response.headers['Cache-Control'] = 'public, max-age=2592000' except ValueError: response.status = '404 O CEP %s informado nao pode ser localizado' % cep return result
def verifica_cep(cep): cep = cep.replace('-', '') db = Database() response.headers['Access-Control-Allow-Origin'] = '*' message = None result = db.get_one(cep, fields={'_id': False}) if not result or expired(result): result = None try: info = _get_info_from_source(cep) except requests.exceptions.RequestException: message = '503 Servico Temporariamente Indisponivel' logger.exception(message) return make_error(message) else: for item in info: db.insert_or_update(item) result = db.get_one(cep, fields={'_id': False, 'v_date': False}) if not result or '__notfound__' in result: message = '404 CEP %s nao encontrado' % cep return make_error(message) result.pop('v_date', None) response.headers['Cache-Control'] = 'public, max-age=2592000' sigla_uf = result['estado'] estado_info = _get_estado_info(db, sigla_uf) if estado_info: result['estado_info'] = estado_info nome_cidade = result['cidade'] cidade_info = _get_cidade_info(db, sigla_uf, nome_cidade) if cidade_info: result['cidade_info'] = cidade_info return format_result(result)
def verifica_cep(cep): cep = cep.replace('-','') db = Database() response.headers['Access-Control-Allow-Origin'] = '*' try: result = db.get_one(cep, fields={ '_id': False }) if not result or not result.has_key('v_date') or expired(result): try: for item in _get_info_from_source(cep): db.insert_or_update(item) except ConnectionError: response.status = '503 Servico Temporariamente Indisponivel' result = db.get_one(cep, fields={ '_id': False, 'v_date': False }) response.headers['Cache-Control'] = 'public, max-age=2592000' except ValueError: response.status = '404 O CEP %s informado nao pode ser localizado' %cep return result
def verifica_cep(cep): cep = cep.replace('-','') db = Database() response.headers['Access-Control-Allow-Origin'] = '*' result = db.get_one(cep, fields={ '_id': False }) if result and result.has_key('v_date') and not expired(result): result.pop('v_date') else: try: info = _get_info_from_source(cep) except ValueError: response.status = '404 O CEP %s informado nao pode ser localizado' % cep return except requests.exceptions.RequestException: response.status = '503 Servico Temporariamente Indisponivel' return for item in info: db.insert_or_update(item) result = db.get_one(cep, fields={ '_id': False, 'v_date': False }) if result: response.headers['Cache-Control'] = 'public, max-age=2592000' return format_result(result) else: response.status = '404 O CEP %s informado nao pode ser localizado' % cep return
def setUp(self): self.db = MongoDb() self.db.insert_or_update({ 'cep': 'UNIQUE_KEY', 'logradouro': 'A', 'bairro': 'A', 'cidade': 'A', 'estado': 'A' })
class MongoDbTest(unittest.TestCase): def setUp(self): self.db = MongoDb() self.db.insert_or_update({ 'cep': 'UNIQUE_KEY', 'logradouro': 'A', 'bairro': 'A', 'cidade': 'A', 'estado': 'A' }) def test_remove_empty_fields(self): ''' Quando um registro é atualizado no banco de dados, as chaves inexistentes devem ser removidas. ''' self.db.insert_or_update({ 'cep': 'UNIQUE_KEY', 'estado': 'B' }) result = self.db.get_one('UNIQUE_KEY') self.assertEqual(result['estado'], 'B') self.assertNotIn('logradouro', result) self.assertNotIn('bairro', result) self.assertNotIn('cidade', result) def tearDown(self): self.db.remove('UNIQUE_KEY')
class CidadeTest(unittest.TestCase): cidade_sp = { 'sigla_uf_nome_cidade': u'SP_SAO PAULO', 'area_km2': '1099', } def setUp(self): self.db = MongoDb() self.db.insert_or_update_cidade(self.cidade_sp) def tearDown(self): self.db._db.ufs.remove() def test_get(self): result = self.db.get_one_cidade(u'SP', u'São Paulo') for key, expected in self.cidade_sp.items(): self.assertEqual(expected, result[key]) def test_get_alt(self): result = self.db.get_one_cidade(u'SP', u'Outro lugar (São Paulo)') self.assertEqual('1099', result['area_km2']) def test_update(self): self.db.insert_or_update_cidade({ 'sigla_uf_nome_cidade': u'SP_SAO PAULO', 'area_km2': '2000', }) result = self.db.get_one_cidade(u'SP', u'São Paulo') self.assertEqual('2000', result['area_km2'])
class MongoDbTest(unittest.TestCase): def setUp(self): self.db = MongoDb() self.db.insert_or_update({ 'cep': 'UNIQUE_KEY', 'logradouro': 'A', 'bairro': 'A', 'cidade': 'A', 'estado': 'A' }) def test_remove_empty_fields(self): ''' Quando um registro é atualizado no banco de dados, as chaves inexistentes devem ser removidas. ''' self.db.insert_or_update({'cep': 'UNIQUE_KEY', 'estado': 'B'}) result = self.db.get_one('UNIQUE_KEY') self.assertEqual(result['estado'], 'B') self.assertNotIn('logradouro', result) self.assertNotIn('bairro', result) self.assertNotIn('cidade', result) def tearDown(self): self.db.remove('UNIQUE_KEY')
def setUpClass(cls): cls.db = MongoDb() cls.db.insert_or_update_uf({ 'sigla': 'SP', 'campo': 'valor', }) cls.db.insert_or_update_cidade({ 'sigla_uf_nome_cidade': u'SP_SAO PAULO', 'area_km2': '1099', })
class UFTest(unittest.TestCase): uf_sp = { 'sigla': 'SP', 'codigo_ibge': '35', 'nome': u'São Paulo', } def setUp(self): self.db = MongoDb() self.db.insert_or_update_uf(self.uf_sp) def tearDown(self): self.db._db.ufs.remove() def test_get(self): result = self.db.get_one_uf_by_nome(u'São Paulo') for key, expected in self.uf_sp.items(): self.assertEqual(expected, result[key]) def test_update(self): self.db.insert_or_update_uf({'sigla': u'SP', 'codigo_ibge': '36'}) result = self.db.get_one_uf_by_nome(u'São Paulo') self.assertEqual('36', result['codigo_ibge']) self.assertEqual('SP', result['sigla'])
class UFTest(unittest.TestCase): uf_sp = { 'sigla': 'SP', 'codigo_ibge': '35', 'nome': u'São Paulo', } def setUp(self): self.db = MongoDb() self.db.insert_or_update_uf(self.uf_sp) def tearDown(self): self.db._db.ufs.remove() def test_get(self): result = self.db.get_one_uf_by_nome(u'São Paulo') for key, expected in self.uf_sp.items(): self.assertEqual(expected, result[key]) def test_update(self): self.db.insert_or_update_uf({ 'sigla': u'SP', 'codigo_ibge': '36' }) result = self.db.get_one_uf_by_nome(u'São Paulo') self.assertEqual('36', result['codigo_ibge']) self.assertEqual('SP', result['sigla'])
def verifica_cep(cep): cep = cep.replace('-', '') db = Database() response.headers['Access-Control-Allow-Origin'] = '*' result = db.get_one(cep, fields={'_id': False}) if result and 'v_date' in result and not expired(result): result.pop('v_date') else: try: info = _get_info_from_source(cep) except ValueError: response.status = "404 O CEP {0} informado nao pode ser " "localizado".format(cep) return except requests.exceptions.RequestException: response.status = '503 Servico Temporariamente Indisponivel' return for item in info: db.insert_or_update(item) result = db.get_one(cep, fields={'_id': False, 'v_date': False}) if result: response.headers['Cache-Control'] = 'public, max-age=2592000' sigla_uf = result['estado'] estado_info = _get_estado_info(db, sigla_uf) if estado_info: result['estado_info'] = estado_info nome_cidade = result['cidade'] cidade_info = _get_cidade_info(db, sigla_uf, nome_cidade) if cidade_info: result['cidade_info'] = cidade_info return format_result(result) else: response.status = '404 O CEP %s informado nao pode ser ' 'localizado' % cep return
def test_insert_notfound(self): db = MongoDb() cep = u'11111111' db.remove(cep) db.insert_or_update({ u'cep': cep, u'_meta': { u'v_date': 'v_date', CepTracker._notfound_key: True, } }) expected = { u'cep': cep, u'estado': u'SP', u'_meta': { u'v_date': 'v_date', } } db.insert_or_update(expected) result = db.get_one(cep, fields={'_id': False}) self.assertEqual(expected, result)
def setUp(self): db = MongoDb() self.collection = db.packtrack._collection self.app = webtest.TestApp(bottle.app())
def setUp(self): self.db = MongoDb() self.db.insert_or_update_cidade(self.cidade_sp)
def setUp(self): self.db = MongoDb() self.db.insert_or_update_uf(self.uf_sp)
from CepTracker import CepTracker, _notfound_key import PackTracker import requests from database import MongoDb as Database from utils import EnableCORS logger = logging.getLogger(__name__) HealthCheck(bottle, "/__health__") app = bottle.default_app() app.catchall = False app_v1 = bottle.Bottle() app_v1.catchall = False jsonp_query_key = 'callback' db = Database() db.create_indexes() def validate_format(callback): def wrapper(*args, **kwargs): output_format = request.query.format if output_format and output_format not in {'json', 'jsonp', 'xml'}: message = "400 Parametro format='%s' invalido." % output_format return make_error(message, output_format='json') return callback(*args, **kwargs) return wrapper def _notfound(record): _meta = record.get('_meta', {})