from __future__ import absolute_import, unicode_literals

import json

from draftjs_exporter.html import HTML

from wagtail.wagtailcore.rich_text import RichText
from wagtaildraftail.settings import get_exporter_config


class DraftText(RichText):
    def __init__(self, value, **kwargs):
        super(DraftText, self).__init__(value or '{}', **kwargs)
        self.exporter = HTML(get_exporter_config())

    def get_json(self):
        return self.source

    def __html__(self):
        return self.exporter.render(json.loads(self.source))

from __future__ import absolute_import, unicode_literals

import json

from django.utils.functional import cached_property

from draftjs_exporter.html import HTML

from wagtail.wagtailcore.rich_text import RichText
from wagtaildraftail.settings import get_exporter_config


class DraftText(RichText):
    def __init__(self, value, **kwargs):
        super(DraftText, self).__init__(value or '{}', **kwargs)
        self.exporter = HTML(get_exporter_config())

    def get_json(self):
        return self.source

    @cached_property
    def _html(self):
        return self.exporter.render(json.loads(self.source))

    def __html__(self):
        return self._html

    def __eq__(self, other):
        return self.__html__() == other.__html__()

Implement equality check for DraftText nodes
Implement equality check for DraftText nodes

Compare the (cached) rendered html of a node

  from __future__ import absolute_import, unicode_literals
  
  import json
+ 
+ from django.utils.functional import cached_property
  
  from draftjs_exporter.html import HTML
  
  from wagtail.wagtailcore.rich_text import RichText
  from wagtaildraftail.settings import get_exporter_config
  
  
  class DraftText(RichText):
      def __init__(self, value, **kwargs):
          super(DraftText, self).__init__(value or '{}', **kwargs)
          self.exporter = HTML(get_exporter_config())
  
      def get_json(self):
          return self.source
  
+     @cached_property
-     def __html__(self):
+     def _html(self):
          return self.exporter.render(json.loads(self.source))
  
+     def __html__(self):
+         return self._html
+ 
+     def __eq__(self, other):
+         return self.__html__() == other.__html__()
+ 
Implement equality check for DraftText nodes
## Code Before:
from __future__ import absolute_import, unicode_literals

import json

from draftjs_exporter.html import HTML

from wagtail.wagtailcore.rich_text import RichText
from wagtaildraftail.settings import get_exporter_config


class DraftText(RichText):
    def __init__(self, value, **kwargs):
        super(DraftText, self).__init__(value or '{}', **kwargs)
        self.exporter = HTML(get_exporter_config())

    def get_json(self):
        return self.source

    def __html__(self):
        return self.exporter.render(json.loads(self.source))

## Instruction:
Implement equality check for DraftText nodes
## Code After:
from __future__ import absolute_import, unicode_literals

import json

from django.utils.functional import cached_property

from draftjs_exporter.html import HTML

from wagtail.wagtailcore.rich_text import RichText
from wagtaildraftail.settings import get_exporter_config


class DraftText(RichText):
    def __init__(self, value, **kwargs):
        super(DraftText, self).__init__(value or '{}', **kwargs)
        self.exporter = HTML(get_exporter_config())

    def get_json(self):
        return self.source

    @cached_property
    def _html(self):
        return self.exporter.render(json.loads(self.source))

    def __html__(self):
        return self._html

    def __eq__(self, other):
        return self.__html__() == other.__html__()
