from django.core.validators import ValidationError, gettext_lazy
from templatetags.restructuredtext import restructuredtext_has_errors

class IsValidReST(object):
    def __init__(self, error_message=gettext_lazy(
                            "This field has ReST Markup Errors."),
                 include_error=False):
        self.include_error = include_error
        self.error_message = error_message
    def __call__(self, field_data, all_data):
        if self.include_error:
            try:
                restructuredtext_has_errors(field_data, True)
            except Exception, e:            
                raise ValidationError, self.error_message + str(e)
        else:
            if restructuredtext_has_errors(field_data, False):
                raise ValidationError, self.error_message
