import logging
from rest_framework import exceptions

logger = logging.getLogger("django")

class GenericError(exceptions.APIException):
    def __init__(self, detail, status_code):
        self.detail = detail
        self.status_code = status_code
        
def handle_exception(e):
    logger.exception(e)
    if isinstance(e, GenericError):
        raise e    
    if isinstance(e, exceptions.ValidationError):
        raise GenericError({"code": "bad_request", "description": e.get_full_details()},400)  
    
    raise GenericError({"code": "internal_error",
                    "description":
                    "An internal error has occurred."},500)