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'] = '*' 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 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
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 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 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)