from __future__ import unicode_literals

from django.core.serializers.json import DjangoJSONEncoder
from django_react_templatetags.mixins import RepresentationMixin


def json_encoder_cls_factory(context):
    class ReqReactRepresentationJSONEncoder(ReactRepresentationJSONEncoder):
        context = None

    ReqReactRepresentationJSONEncoder.context = context
    return ReqReactRepresentationJSONEncoder


class ReactRepresentationJSONEncoder(DjangoJSONEncoder):
    '''
    Custom json encoder that adds support for RepresentationMixin
    '''

    def default(self, o):
        if isinstance(o, RepresentationMixin):
            # Allow backwards compability with react_representation prop
            if not hasattr(o, 'to_react_representation'):
                return o.react_representation

            args = [self.context if hasattr(self, 'context') else None]
            args = [x for x in args if x is not None]

            return o.to_react_representation(*args)

        return super(ReactRepresentationJSONEncoder, self).default(o)

from __future__ import unicode_literals

from django.core.serializers.json import DjangoJSONEncoder
from django_react_templatetags.mixins import RepresentationMixin


def json_encoder_cls_factory(context):
    class ReqReactRepresentationJSONEncoder(ReactRepresentationJSONEncoder):
        context = None

    ReqReactRepresentationJSONEncoder.context = context
    return ReqReactRepresentationJSONEncoder


class ReactRepresentationJSONEncoder(DjangoJSONEncoder):
    '''
    Custom json encoder that adds support for RepresentationMixin
    '''

    def default(self, o):
        if isinstance(o, RepresentationMixin):
            args = [self.context if hasattr(self, 'context') else None]
            args = [x for x in args if x is not None]

            return o.to_react_representation(*args)

        return super(ReactRepresentationJSONEncoder, self).default(o)

Drop support for reacct_representation property
Drop support for reacct_representation property

  from __future__ import unicode_literals
  
  from django.core.serializers.json import DjangoJSONEncoder
  from django_react_templatetags.mixins import RepresentationMixin
  
  
  def json_encoder_cls_factory(context):
      class ReqReactRepresentationJSONEncoder(ReactRepresentationJSONEncoder):
          context = None
  
      ReqReactRepresentationJSONEncoder.context = context
      return ReqReactRepresentationJSONEncoder
  
  
  class ReactRepresentationJSONEncoder(DjangoJSONEncoder):
      '''
      Custom json encoder that adds support for RepresentationMixin
      '''
  
      def default(self, o):
          if isinstance(o, RepresentationMixin):
-             # Allow backwards compability with react_representation prop
-             if not hasattr(o, 'to_react_representation'):
-                 return o.react_representation
- 
              args = [self.context if hasattr(self, 'context') else None]
              args = [x for x in args if x is not None]
  
              return o.to_react_representation(*args)
  
          return super(ReactRepresentationJSONEncoder, self).default(o)
  
Drop support for reacct_representation property
## Code Before:
from __future__ import unicode_literals

from django.core.serializers.json import DjangoJSONEncoder
from django_react_templatetags.mixins import RepresentationMixin


def json_encoder_cls_factory(context):
    class ReqReactRepresentationJSONEncoder(ReactRepresentationJSONEncoder):
        context = None

    ReqReactRepresentationJSONEncoder.context = context
    return ReqReactRepresentationJSONEncoder


class ReactRepresentationJSONEncoder(DjangoJSONEncoder):
    '''
    Custom json encoder that adds support for RepresentationMixin
    '''

    def default(self, o):
        if isinstance(o, RepresentationMixin):
            # Allow backwards compability with react_representation prop
            if not hasattr(o, 'to_react_representation'):
                return o.react_representation

            args = [self.context if hasattr(self, 'context') else None]
            args = [x for x in args if x is not None]

            return o.to_react_representation(*args)

        return super(ReactRepresentationJSONEncoder, self).default(o)

## Instruction:
Drop support for reacct_representation property
## Code After:
from __future__ import unicode_literals

from django.core.serializers.json import DjangoJSONEncoder
from django_react_templatetags.mixins import RepresentationMixin


def json_encoder_cls_factory(context):
    class ReqReactRepresentationJSONEncoder(ReactRepresentationJSONEncoder):
        context = None

    ReqReactRepresentationJSONEncoder.context = context
    return ReqReactRepresentationJSONEncoder


class ReactRepresentationJSONEncoder(DjangoJSONEncoder):
    '''
    Custom json encoder that adds support for RepresentationMixin
    '''

    def default(self, o):
        if isinstance(o, RepresentationMixin):
            args = [self.context if hasattr(self, 'context') else None]
            args = [x for x in args if x is not None]

            return o.to_react_representation(*args)

        return super(ReactRepresentationJSONEncoder, self).default(o)
