gbazilio/nfebrasil

View on GitHub
api/views.py

Summary

Maintainability
A
0 mins
Test Coverage
from oauth2_provider.decorators import protected_resource

from rest_framework.decorators import api_view
from rest_framework.response import Response

from api.decorators import embed_driver
from api.errors_helper import error_response
from api.navigator import NFeNavigator

application_webdrivers = {}


@api_view(['GET'])
@protected_resource(scopes=['read'])
def get_nfe(request, nfe_key):
    return _get_nfe(request, nfe_key)


@embed_driver(application_webdrivers)
def _get_nfe(request, nfe_key):

    # TODO: load nfe info from cache, if possible

    navigator = NFeNavigator(request.driver)

    try:
        captcha = request.GET['captcha']
    except KeyError:
        try:
            _captcha_src = navigator.get_captcha()
        except ValueError as e:
            request.driver.quit()
            return error_response(e.args[0])
        return Response({'captcha_src': _captcha_src})

    try:
        nfe_json = navigator.get_nfe(captcha, nfe_key)
    except ValueError as e:
        return error_response(e.args[0])

    return Response(nfe_json)