Exemple #1
0
 def __call__(self, attrs):
     self.enforce_required_fields(attrs)
     queryset = self.queryset
     queryset = self.filter_queryset(attrs, queryset)
     queryset = self.exclude_current_instance(attrs, queryset)
     if qs_exists(queryset):
         message = self.message.format(date_field=self.date_field)
         raise ValidationError({self.field: message}, code='unique')
Exemple #2
0
 def validate_query(self, value):
     forbidden = ['insert', 'update', 'delete', 'grant', 'show']
     for i in range(len(forbidden)):
         forbidden.append('({}'.format(forbidden[i]))
     if any(
             map(
                 lambda x: ' {} '.format(value.lower()).find(' {} '.format(
                     x)) != -1, forbidden)):
         raise ValidationError('forbidden query')
     return value
Exemple #3
0
 def enforce_required_fields(self, attrs):
     """
     The `UniqueFor<Range>Validator` classes always force an implied
     'required' state on the fields they are applied to.
     """
     missing_items = {
         field_name: self.missing_message
         for field_name in [self.field, self.date_field]
         if field_name not in attrs
     }
     if missing_items:
         raise ValidationError(missing_items, code='required')
Exemple #4
0
def translate_validation(error_dict):
    """
    Translate a Django ErrorDict into its DRF ValidationError.
    """
    # it's necessary to lazily import the exception, as it can otherwise create
    # an import loop when importing django_filters inside the project settings.
    from jet_django.deps.rest_framework.exceptions import ValidationError, ErrorDetail

    exc = OrderedDict(
        (key, [ErrorDetail(e.message, code=e.code) for e in error_list])
        for key, error_list in error_dict.as_data().items())

    return ValidationError(exc)
Exemple #5
0
    def __call__(self, attrs):
        self.enforce_required_fields(attrs)
        queryset = self.queryset
        queryset = self.filter_queryset(attrs, queryset)
        queryset = self.exclude_current_instance(attrs, queryset)

        # Ignore validation if any field is None
        checked_values = [
            value for field, value in attrs.items() if field in self.fields
        ]
        if None not in checked_values and qs_exists(queryset):
            field_names = ', '.join(self.fields)
            message = self.message.format(field_names=field_names)
            raise ValidationError(message, code='unique')
Exemple #6
0
    def enforce_required_fields(self, attrs):
        """
        The `UniqueTogetherValidator` always forces an implied 'required'
        state on the fields it applies to.
        """
        if self.instance is not None:
            return

        missing_items = {
            field_name: self.missing_message
            for field_name in self.fields if field_name not in attrs
        }
        if missing_items:
            raise ValidationError(missing_items, code='required')
Exemple #7
0
 def __call__(self, value):
     queryset = self.queryset
     queryset = self.filter_queryset(value, queryset)
     queryset = self.exclude_current_instance(queryset)
     if qs_exists(queryset):
         raise ValidationError(self.message, code='unique')