HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/unlimited-leads/Unlimited-Leads-Be/unlimited_leads/renderers.py
from rest_framework.renderers import JSONRenderer

class CustomJSONRenderer(JSONRenderer):
    def render(self, data, accepted_media_type=None, renderer_context=None):
        if isinstance(data, dict):
            if 'errors' in data:
                # If there are errors, extract the error messages
                error_messages = []
                
                # Iterate through the errors to format them
                if isinstance(data['errors'], dict):
                    for field, errors in data['errors'].items():
                        # If there's more than one error for a field, you can choose how to handle it
                        for error in errors:
                            if error == 'This field is required.':
                                error_field = str(field).replace('_', ' ').title()
                                error_messages.append(f"{error_field} is required")  # Include field name in the message
                            else:
                                error_messages.append(f"{error}")  # Include only the error message
                elif isinstance(data['errors'], list):
                    error_messages = data['errors'][0] if data['errors'] else "Found unknown renderer error"
                else:
                    error_messages = data['errors']
                        
                # Replace errors with the formatted error messages
                data['errors'] = error_messages
            
            elif "detail" in data: 
                data['errors'] = data.pop('detail')
                
        return super().render(data, accepted_media_type, renderer_context)