<commit_before>from django.db import models
from django.core.serializers.json import DjangoJSONEncoder
from django.utils import simplejson as json
from django.utils.translation import ugettext_lazy as _

from django.forms.fields import Field
from django.forms.util import ValidationError as FormValidationError

class JSONFormField(Field):
    def clean(self, value):

        if not value and not self.required:
            return None

        value = super(JSONFormField, self).clean(value)

        if isinstance(value, basestring):
            try:
                json.loads(value)
            except ValueError:
                raise FormValidationError(_("Enter valid JSON"))
        return value

class JSONField(models.TextField):
    """JSONField is a generic textfield that serializes/unserializes JSON objects"""

    # Used so to_python() is called
    __metaclass__ = models.SubfieldBase

    def __init__(self, *args, **kwargs):
        self.dump_kwargs = kwargs.pop('dump_kwargs', {'cls': DjangoJSONEncoder})
        self.load_kwargs = kwargs.pop('load_kwargs', {})

        super(JSONField, self).__init__(*args, **kwargs)

    def to_python(self, value):
        """Convert string value to JSON"""
        if isinstance(value, basestring):
            try:
                return json.loads(value, **self.load_kwargs)
            except ValueError:
                pass
        return value

    def get_db_prep_value(self, value, connection, prepared=False):
        """Convert JSON object to a string"""

        if isinstance(value, basestring):
            return value
        return json.dumps(value, **self.dump_kwargs)

    def value_to_string(self, obj):
        value = self._get_val_from_obj(obj)
        return self.get_prep_value(value)

    def value_from_object(self, obj):
        return json.dumps(super(JSONField, self).value_from_object(obj))

    def formfield(self, **kwargs):

        if "form_class" not in kwargs:
            kwargs["form_class"] = JSONFormField

        field = super(JSONField, self).formfield(**kwargs)

        if not field.help_text:
            field.help_text = "Enter valid JSON"

        return field
<commit_msg>update TemplateField<commit_after>from django.db import models
from django.utils.translation import ugettext_lazy as _

from django.forms.fields import Field
from django.forms.util import ValidationError as FormValidationError
from django.template import TemplateSyntaxError

from django.template.loader import get_template

class TemplateFormField(Field):
    description = "Field to store valide template path"

    def __init__(self,*args,**kwargs):
        self.max_length = kwargs.pop('max_length') or 255
        super(TemplateFormField,self).__init__(*args,**kwargs)
    
    def clean(self,value):
        if not value and not self.required:
            return None

        value = super(TemplateFormField,self).clean(value)

        if isinstance(value, basestring):
            try :
                get_template(value)
            except TemplateSyntaxError,e:
                raise FormValidationError('%s' %  e)
            except:
                raise FormValidationError(_('Template %s does not existe' % value))
        else:
            raise FormValidationError(_('Not string instance' % value))
        return value             

class TemplateField(models.CharField):
    """ Field to store valid template path"""
    __metaclass__ = models.SubfieldBase


    def db_type(self, connection):
        return 'char(%s)' % self.max_length

    def get_internal_type(self):
        return "CharField"

    #def to_python(self,value):
    #    return value             

    def get_db_prep_value(self, value, connection, prepared=False):
        return value

    def value_to_string(self, obj):
        value = self._get_val_from_obj(obj)
        return self.get_db_prep_value(value)

    def value_from_object(self, obj):
        value= super(TemplateField, self).value_from_object(obj)
        return value

    def formfield(self, **kwargs):

        if "form_class" not in kwargs:
            kwargs["form_class"] = TemplateFormField

        field = super(TemplateField, self).formfield(**kwargs)

        if not field.help_text:
            field.help_text = "Enter valide template path"

        return field


{'fraction_non_alphanumeric': 0.08871901783646051, 'fraction_numerical': 0.0006949270326615705, 'mean_word_length': 2.719207579672696, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2476098', 'n_tokens_mistral': 1198, 'n_tokens_neox': 1153, 'n_words': 314}