Python django.core.files.base 模块,File() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用django.core.files.base.File()

项目:django-validator    作者:romain-li    | 项目源码 | 文件源码
def is_valid(self, value, params):
        if isinstance(value, basestring):
            self.message = _('The {{key}} must be between {min} and {max} characters.').format(
                min=self.min_value,
                max=self.max_value
            )
            return self.min_value <= len(value) <= self.max_value
        elif isinstance(value, File):
            self.message = _('The {{key}} must be between {min} and {max} bytes.').format(
                min=self.min_value,
                max=self.max_value
            )
            return self.min_value <= value.size <= self.max_value
        else:
            self.message = _('The {{key}} must be between {min} and {max}.').format(
                min=self.min_value,
                max=self.max_value
            )
            return self.min_value <= value <= self.max_value
项目:django-config-models    作者:edx    | 项目源码 | 文件源码
def add_view(self, request, form_url='', extra_context=None):
        # Prepopulate new configuration entries with the value of the current config, if given:
        if 'source' in request.GET:
            get = request.GET.copy()
            source_id = int(get.pop('source')[0])
            source = get_object_or_404(self.model, pk=source_id)
            source_dict = models.model_to_dict(source)
            for field_name, field_value in source_dict.items():
                # read files into request.FILES, if:
                # * user hasn't ticked the "clear" checkbox
                # * user hasn't uploaded a new file
                if field_value and isinstance(field_value, File):
                    clear_checkbox_name = '{0}-clear'.format(field_name)
                    if request.POST.get(clear_checkbox_name) != 'on':
                        request.FILES.setdefault(field_name, field_value)
                get[field_name] = field_value
            request.GET = get
        # Call our grandparent's add_view, skipping the parent code
        # because the parent code has a different way to prepopulate new configuration entries
        # with the value of the latest config, which doesn't make sense for keyed models.
        # pylint: disable=bad-super-call
        return super(ConfigurationModelAdmin, self).add_view(request, form_url, extra_context)
项目:weixin_server    作者:duoduo369    | 项目源码 | 文件源码
def add_view(self, request, form_url='', extra_context=None):
        # Prepopulate new configuration entries with the value of the current config, if given:
        if 'source' in request.GET:
            get = request.GET.copy()
            source_id = int(get.pop('source')[0])
            source = get_object_or_404(self.model, pk=source_id)
            source_dict = models.model_to_dict(source)
            for field_name, field_value in source_dict.items():
                # read files into request.FILES, if:
                # * user hasn't ticked the "clear" checkbox
                # * user hasn't uploaded a new file
                if field_value and isinstance(field_value, File):
                    clear_checkbox_name = '{0}-clear'.format(field_name)
                    if request.POST.get(clear_checkbox_name) != 'on':
                        request.FILES.setdefault(field_name, field_value)
                get[field_name] = field_value
            request.GET = get
        # Call our grandparent's add_view, skipping the parent code
        # because the parent code has a different way to prepopulate new configuration entries
        # with the value of the latest config, which doesn't make sense for keyed models.
        # pylint: disable=bad-super-call
        return super(ConfigurationModelAdmin, self).add_view(request, form_url, extra_context)
项目:RobotFrameworkReporter    作者:ivanitskiy    | 项目源码 | 文件源码
def _extarct_only_robot(xmlfile):
    """remove from file not robot's elements
    robot elements are: 'suite' 'statistics' 'errors'
    """

    original_doc = ET.parse(xmlfile)
    root = original_doc.getroot()
    devices = root.find("devices")
    if devices is not None:
        root.remove(devices)

    source = StringIO(ET.tostring(root))
    ets = ETSource(source)
    execution_result = ExecutionResultBuilder(ets).build(Result())
    patched_file = File(BytesIO(force_bytes(source.getvalue())), name=xmlfile.name)
    return (execution_result, patched_file)
项目:WPS-4th    作者:Fastcampus-WPS    | 项目源码 | 文件源码
def authenticate(self, facebook_id, extra_fields=None):
        url_profile = 'https://graph.facebook.com/{user_id}/picture'.format(
            user_id=facebook_id,
        )
        params = {
            'type': 'large',
            'width': '500',
            'height': '500',
        }

        # ????? ???? ??
        temp_file = NamedTemporaryFile(delete=False)
        # ??? ???? URL? get??, stream? True??
        r = requests.get(url_profile, params, stream=True)
        # ???? URL?? ?? ???? ???
        _, file_ext = os.path.splitext(r.url)

        file_ext = re.sub(r'(\.[^?]+).*', r'\1', file_ext)
        # ???? ?? ID.??? ? file_name? ??
        file_name = '{}{}'.format(
            facebook_id,
            file_ext
        )
        # stream?? ??? response?? 1024bytes??? ???? ?? ????? ??
        for chunk in r.iter_content(1024):
            temp_file.write(chunk)

        # facebook_id? username? MyUser? ?????
        # defaults?? ???? ??
        defaults = {
            'first_name': extra_fields.get('first_name', ''),
            'last_name': extra_fields.get('last_name', ''),
            'email': extra_fields.get('email', ''),
        }
        user, user_created = MyUser.objects.get_or_create(
            defaults=defaults,
            username=facebook_id
        )
        # ImageField? save???? ???? Django?? ???? File??? ??
        user.img_profile.save(file_name, File(temp_file))
        return user
项目:django-elasticsearch-dsl-drf    作者:barseghyanartur    | 项目源码 | 文件源码
def django_file(cls, extension=None):
        """Generates a random file.

        Example:

        >>> from factory import DjangoModelFactory
        >>>
        >>> class ProductFactory(DjangoModelFactory):
        >>>     "Product factory."
        >>>
        >>>     # ...
        >>>
        >>>     image_file = Faker('django_file', extension='image')
        >>>     video_file = Faker('django_file', extension='video')
        >>>     text_file = Faker('django_file', extension='text')
        >>>
        >>>     # ...

        :param extension: File extension.
        :type extension: str
        :return: File object.
        """

        fake = FakerFaker()
        django_file = get_temporary_file(fake.file_name(extension=extension))
        return File(django_file)
项目:django-validator    作者:romain-li    | 项目源码 | 文件源码
def test_file(self):
        """
        Test for file upload decorator.
        """

        @FILE('f', type='file')
        def view(request, f):
            self.assertIsInstance(f, File)

        test_file = io.StringIO()
        self.post(view, data={'f': test_file})
项目:django-validator    作者:romain-li    | 项目源码 | 文件源码
def is_valid(self, value, params):
        if isinstance(value, basestring):
            self.message = _('The {{key}} must be at least {min} characters.').format(min=self.min_value)
            return len(value) >= self.min_value
        elif isinstance(value, File):
            self.message = _('The {{key}} must be at least {min} bytes.'.format(min=self.min_value))
            return value.size >= self.min_value
        else:
            self.message = _('The {{key}} must be at least {min}.').format(min=self.min_value)
            return value >= self.min_value
项目:django-validator    作者:romain-li    | 项目源码 | 文件源码
def is_valid(self, value, params):
        if isinstance(value, basestring):
            self.message = _('The {{key}} may not be greater than {max} characters.').format(max=self.max_value)
            return len(value) <= self.max_value
        elif isinstance(value, File):
            self.message = _('The {{key}} must not be at greater {max} bytes.'.format(max=self.max_value))
            return value.size <= self.max_value
        else:
            self.message = _('The {{key}} may not be greater than {max}.').format(max=self.max_value)
            return value <= self.max_value
项目:CodingDojo    作者:ComputerSocietyUNB    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:CodingDojo    作者:ComputerSocietyUNB    | 项目源码 | 文件源码
def __hash__(self):
        return hash(self.name)

    # The standard File contains most of the necessary properties, but
    # FieldFiles can be instantiated without a name, so that needs to
    # be checked for here.
项目:CodingDojo    作者:ComputerSocietyUNB    | 项目源码 | 文件源码
def get_prep_value(self, value):
        "Returns field's value prepared for saving into a database."
        value = super(FileField, self).get_prep_value(value)
        # Need to convert File objects provided via a form to unicode for database insertion
        if value is None:
            return None
        return six.text_type(value)
项目:NarshaTech    作者:KimJangHyeon    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:Scrum    作者:prakharchoudhary    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:django    作者:alexsukhrin    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:tumanov_castleoaks    作者:Roamdev    | 项目源码 | 文件源码
def __init__(self, request, stream, filename=None, *args, **kwargs):
        if isinstance(stream, str):
            stream = open(stream, 'rb')

        super().__init__(streaming_content=stream, *args, **kwargs)

        # filename
        if filename is None:
            if hasattr(stream, 'name'):
                filename = os.path.basename(stream.name)
            else:
                filename = 'file'

        # size
        if isinstance(stream, File):
            self['Content-Length'] = stream.size
        elif hasattr(stream, 'name'):
            self['Content-Length'] = os.path.getsize(stream.name)

        type_name, encoding = mimetypes.guess_type(filename)
        if type_name is None:
            type_name = 'application/octet-stream'
        self['Content-Type'] = type_name
        if encoding is not None:
            self['Content-Encoding'] = encoding

        # To inspect details for the below code, see http://greenbytes.de/tech/tc2231/
        if 'HTTP_USER_AGENT' in request.META and 'MSIE' in request.META['HTTP_USER_AGENT']:
            # IE does not support internationalized filename at all.
            # It can only recognize internationalized URL, so we do the trick via routing rules.
            filename_header = ''
        else:
            # For others like Firefox, we follow RFC2231 (encoding extension in HTTP headers).
            filename_header = 'filename*=UTF-8\'\'%s' % quote(filename)

        self['Content-Disposition'] = 'attachment; ' + filename_header
项目:Gypsy    作者:benticarlos    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:DjangoBlog    作者:0daybug    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:fieldsight-kobocat    作者:awemulya    | 项目源码 | 文件源码
def test_media_file_hash(self):
        name = "screenshot.png"
        media_file = os.path.join(
            self.this_directory, 'fixtures', 'transportation', name)
        m = MetaData.objects.create(
            data_type='media', xform=self.xform, data_value=name,
            data_file=File(open(media_file), name),
            data_file_type='image/png')
        f = open(media_file)
        media_hash = 'md5:%s' % hashlib.md5(f.read()).hexdigest()
        f.close()
        meta_hash = m.hash
        self.assertEqual(meta_hash, media_hash)
        self.assertEqual(m.file_hash, media_hash)
项目:fieldsight-kobocat    作者:awemulya    | 项目源码 | 文件源码
def setUp(self):
        super(self.__class__, self).setUp()
        self._publish_transportation_form_and_submit_instance()
        self.media_file = "1335783522563.jpg"
        media_file = os.path.join(
            self.this_directory, 'fixtures',
            'transportation', 'instances', self.surveys[0], self.media_file)
        self.instance = Instance.objects.all()[0]
        self.attachment = Attachment.objects.create(
            instance=self.instance,
            media_file=File(open(media_file), media_file))
项目:wanblog    作者:wanzifa    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:tabmaster    作者:NicolasMinghetti    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:trydjango18    作者:lucifer-yqh    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:trydjango18    作者:wei0104    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:My-Web-Server-Framework-With-Python2.7    作者:syjsu    | 项目源码 | 文件源码
def write(self, content):
        if 'w' not in self._mode:
            raise AttributeError("File was opened for read-only access.")
        self.file = StringIO(content)
        self._is_dirty = True
项目:YouPBX    作者:JoneXiong    | 项目源码 | 文件源码
def write(self, content):
        if 'w' not in self._mode:
            raise AttributeError("File was opened for read-only access.")

        self.file.write(force_bytes(content))
        self._is_dirty = True
        self._is_read = True
项目:YouPBX    作者:JoneXiong    | 项目源码 | 文件源码
def _save(self, name, content):
        cleaned_name = self._clean_name(name)
        name = self._normalize_name(cleaned_name)

        if hasattr(content, 'open'):
            # Since Django 1.6, content should be a instance
            # of `django.core.files.File`
            content.open()

        res = self._put_file(name, content)
        content.close()
        return '/%s'%res
项目:ims    作者:ims-team    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:lifesoundtrack    作者:MTG    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:lifesoundtrack    作者:MTG    | 项目源码 | 文件源码
def __hash__(self):
        return hash(self.name)

    # The standard File contains most of the necessary properties, but
    # FieldFiles can be instantiated without a name, so that needs to
    # be checked for here.
项目:lifesoundtrack    作者:MTG    | 项目源码 | 文件源码
def get_prep_value(self, value):
        "Returns field's value prepared for saving into a database."
        value = super(FileField, self).get_prep_value(value)
        # Need to convert File objects provided via a form to unicode for database insertion
        if value is None:
            return None
        return six.text_type(value)
项目:django-open-lecture    作者:DmLitov4    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:travlr    作者:gauravkulkarni96    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:gougo    作者:amaozhao    | 项目源码 | 文件源码
def _set_file(self, value):
        if value is not None and not isinstance(value, File):
            value = File(value)
        self._file = value
        self._committed = False
项目:logo-gen    作者:jellene4eva    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:liberator    作者:libscie    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:liberator    作者:libscie    | 项目源码 | 文件源码
def __hash__(self):
        return hash(self.name)

    # The standard File contains most of the necessary properties, but
    # FieldFiles can be instantiated without a name, so that needs to
    # be checked for here.
项目:liberator    作者:libscie    | 项目源码 | 文件源码
def get_prep_value(self, value):
        "Returns field's value prepared for saving into a database."
        value = super(FileField, self).get_prep_value(value)
        # Need to convert File objects provided via a form to unicode for database insertion
        if value is None:
            return None
        return six.text_type(value)
项目:gmail_scanner    作者:brandonhub    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:djanoDoc    作者:JustinChavez    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:djanoDoc    作者:JustinChavez    | 项目源码 | 文件源码
def __hash__(self):
        return hash(self.name)

    # The standard File contains most of the necessary properties, but
    # FieldFiles can be instantiated without a name, so that needs to
    # be checked for here.
项目:djanoDoc    作者:JustinChavez    | 项目源码 | 文件源码
def get_prep_value(self, value):
        "Returns field's value prepared for saving into a database."
        value = super(FileField, self).get_prep_value(value)
        # Need to convert File objects provided via a form to unicode for database insertion
        if value is None:
            return None
        return six.text_type(value)
项目:CSCE482-WordcloudPlus    作者:ggaytan00    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:tissuelab    作者:VirtualPlants    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:producthunt    作者:davidgengler    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:django-rtc    作者:scifiswapnil    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:geekpoint    作者:Lujinghu    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:Sentry    作者:NetEaseGame    | 项目源码 | 文件源码
def getfile(self, *args, **kwargs):
        if self.blob:
            return self.blob.getfile()
        return FileObj(ChunkedFileBlobIndexWrapper(FileBlobIndex.objects.filter(
            file=self,
        ).select_related('blob').order_by('offset')), 'rb')
项目:django-next-train    作者:bitpixdigital    | 项目源码 | 文件源码
def _set_name(self, name):
        # Sanitize the file name so that it can't be dangerous.
        if name is not None:
            # Just use the basename of the file -- anything else is dangerous.
            name = os.path.basename(name)

            # File names longer than 255 characters can cause problems on older OSes.
            if len(name) > 255:
                name, ext = os.path.splitext(name)
                ext = ext[:255]
                name = name[:255 - len(ext)] + ext

        self._name = name
项目:django-next-train    作者:bitpixdigital    | 项目源码 | 文件源码
def __hash__(self):
        return hash(self.name)

    # The standard File contains most of the necessary properties, but
    # FieldFiles can be instantiated without a name, so that needs to
    # be checked for here.