예제 #1
0
 def label_from_instance(self, obj):
     """
     Return a readable representation for use with eg. select widgets.
     """
     desc = smart_text(obj)
     ident = smart_text(self.to_native(obj))
     if desc == ident:
         return desc
     return "%s - %s" % (desc, ident)
예제 #2
0
 def valid_value(self, value):
     """
     Check to see if the provided value is a valid choice.
     """
     for k, v in self.choices:
         if isinstance(v, (list, tuple)):
             # This is an optgroup, so look inside the group for options
             for k2, v2 in v:
                 if value == smart_text(k2) or value == k2:
                     return True
         else:
             if value == smart_text(k) or value == k:
                 return True
     return False
def get_view_description(view_cls, html=False):
    """
    Given a view class, return a textual description to represent the view.
    This name is used in the browsable API, and in OPTIONS responses.

    This function is the default for the `VIEW_DESCRIPTION_FUNCTION` setting.
    """
    description = view_cls.__doc__ or ''
    description = formatting.dedent(smart_text(description))
    if html:
        return formatting.markup_description(description)
    return description
예제 #4
0
    def from_native(self, value):
        if isinstance(value, six.string_types):
            return value

        if value is None:
            if not self.allow_none:
                return ''
            else:
                # Return None explicitly because smart_text(None) == 'None'. See #1834 for details
                return None

        return smart_text(value)
예제 #5
0
    def __init__(self, source=None, label=None, help_text=None):
        self.parent = None

        self.creation_counter = Field.creation_counter
        Field.creation_counter += 1

        self.source = source

        if label is not None:
            self.label = smart_text(label)
        else:
            self.label = None

        if help_text is not None:
            self.help_text = strip_multiple_choice_msg(smart_text(help_text))
        else:
            self.help_text = None

        self._errors = []
        self._value = None
        self._name = None
예제 #6
0
    def from_native(self, data):
        if self.queryset is None:
            raise Exception(
                'Writable related fields must include a `queryset` argument')

        try:
            return self.queryset.get(**{self.slug_field: data})
        except ObjectDoesNotExist:
            raise ValidationError(self.error_messages['does_not_exist'] %
                                  (self.slug_field, smart_text(data)))
        except (TypeError, ValueError):
            msg = self.error_messages['invalid']
            raise ValidationError(msg)
예제 #7
0
    def from_native(self, data):
        if self.queryset is None:
            raise Exception(
                'Writable related fields must include a `queryset` argument')

        try:
            return self.queryset.get(pk=data)
        except ObjectDoesNotExist:
            msg = self.error_messages['does_not_exist'] % smart_text(data)
            raise ValidationError(msg)
        except (TypeError, ValueError):
            received = type(data).__name__
            msg = self.error_messages['incorrect_type'] % received
            raise ValidationError(msg)
예제 #8
0
 def from_native(self, value):
     """
     Validates that the input is a decimal number. Returns a Decimal
     instance. Returns None for empty values. Ensures that there are no more
     than max_digits in the number, and no more than decimal_places digits
     after the decimal point.
     """
     if value in validators.EMPTY_VALUES:
         return None
     value = smart_text(value).strip()
     try:
         value = Decimal(value)
     except DecimalException:
         raise ValidationError(self.error_messages['invalid'])
     return value