from rest_framework.renderers import JSONRenderer
from rest_framework import status

class StandardJSONRenderer(JSONRenderer):
    """
    Custom renderer to format API responses in the standard JSON API response structure.
    """
    def render(self, data, accepted_media_type=None, renderer_context=None):
        status_code = renderer_context['response'].status_code

        if status_code == status.HTTP_422_UNPROCESSABLE_ENTITY:
            response_data = {
                "success": False,
                "message": data['detail'] if 'detail' in data else data['message'] if 'message' in data else "",
                "data": None,
                "errors": data['errors'] if 'errors' in data else None
            }
        elif status_code >= 400:
            response_data = {
                "success": False,
                "message": data['detail'] if 'detail' in data else data['message'] if 'message' in data else "",
                "data": None
            }
        elif 'results' in data:
            pagination_data = data.pop('results', [])
            response_data = {
                "success": True,
                "message": "",
                "data": pagination_data,
                "meta": {
                    "count": data.get('count', 0),
                    "prev": data.get('previous', None),
                    "next": data.get('next', None),
                }
            }
        else:
            response_data = {
                "success": True,
                "message": "",
                "data": data
            }

        return super(StandardJSONRenderer, self).render(response_data, accepted_media_type, renderer_context)