Skip to content
Snippets Groups Projects
PostmonServer.py 1.74 KiB
Newer Older
from bottle import route, run, response
from CepTracker import CepTracker
from requests import ConnectionError
from correios import Correios
from database import MongoDb as Database
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_source(cep):
	info = tracker.track(cep)

	if len(info) == 0:
		raise ValueError()

	return info

Alê Borba's avatar
Alê Borba committed
def verifica_cep(cep):
	cep = cep.replace('-','')

	response.headers['Access-Control-Allow-Origin'] = '*'
		result = db.get_one(cep, fields={ '_id': False })
		if not result or not result.has_key('v_date') or expired(result):
				for item in _get_info_from_source(cep):
Alê Borba's avatar
Alê Borba committed
					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'

		response.status = '404 O CEP %s informado nao pode ser localizado' %cep
Alê Borba's avatar
Alê Borba committed
@route('/track/ect/<track>')
def track_ect(track):
	try:
		encomenda = Correios.encomenda(track)

		result = []
		for status in encomenda.status:
			resposta = dict()
			
			resposta['data'] = status.data
			resposta['local'] = status.local
			resposta['situacao'] = status.situacao
			resposta['detalhes'] = status.detalhes
			result.append(resposta)
		return json.dumps(result)
	except AttributeError:
Alê Borba's avatar
Alê Borba committed
		response.status = '404 O pacote %s informado nao pode ser localizado'
Alê Borba's avatar
Alê Borba committed

def _standalone(port=9876):
Alê Borba's avatar
Alê Borba committed
    run(host='localhost', port=port)