Exemple #1
0
 def test_save_exception(self):
     with media_root():
         storage = RandomFilenameFileSystemStorage(
             randomfilename_length=DEFAULT_LENGTH)
         name = storage.save('foo/bar.txt', ContentFile('Hello world!'))
         self.assertRaises(IOError, storage.save, name + posixpath.sep,
                           ContentFile('Hello world!'))
Exemple #2
0
class FrontPage(models.Model):
    cover_photo = models.ImageField("cover_photo",
                                    upload_to="frontpage/files/",
                                    storage=RandomFilenameFileSystemStorage(),
                                    null=True)
    cover_photo_full = models.ImageField(
        "cover_photo_full",
        upload_to="frontpage/files/",
        storage=RandomFilenameFileSystemStorage(),
        null=True)
    cover_photo_crop_bbox_left = models.IntegerField(null=True)
    cover_photo_crop_bbox_upper = models.IntegerField(null=True)
    cover_photo_crop_bbox_right = models.IntegerField(null=True)
    cover_photo_crop_bbox_lower = models.IntegerField(null=True)

    region = models.ForeignKey(Region)
class PageFile(models.Model):
    file = models.FileField(ugettext_lazy("file"),
                            upload_to='pages/files/',
                            storage=RandomFilenameFileSystemStorage())
    name = models.CharField(max_length=255, blank=False)
    # TODO: Create PageSlugField for this purpose
    slug = models.CharField(max_length=255,
                            blank=False,
                            db_index=True,
                            validators=[validate_page_slug])
    region = models.ForeignKey(Region, null=True)

    _rough_type_map = [(r'^audio', 'audio'), (r'^video', 'video'),
                       (r'^application/pdf', 'pdf'),
                       (r'^application/msword', 'word'),
                       (r'^text/html', 'html'), (r'^text', 'text'),
                       (r'^image', 'image'),
                       (r'^application/vnd.ms-powerpoint', 'powerpoint'),
                       (r'^application/vnd.ms-excel', 'excel')]

    def get_absolute_url(self):
        return reverse('pages:file',
                       kwargs={
                           'slug': self.slug,
                           'file': self.name,
                           'region': self.region
                       })

    @property
    def attached_to_page(self):
        try:
            p = Page.objects.get(slug=self.slug, region=self.region)
        except Page.DoesNotExist:
            p = Page(slug=self.slug,
                     name=clean_name(self.slug),
                     region=self.region)
        return p

    @property
    def rough_type(self):
        mime = self.mime_type
        if mime:
            for regex, rough_type in self._rough_type_map:
                if re.match(regex, mime):
                    return rough_type
        return 'unknown'

    @property
    def mime_type(self):
        return mimetypes.guess_type(self.name)[0]

    def is_image(self):
        return self.rough_type == 'image'

    class Meta:
        unique_together = ('slug', 'region', 'name')
        ordering = ['-id']
Exemple #4
0
 def test_save(self):
     with media_root():
         storage = RandomFilenameFileSystemStorage(
             randomfilename_length=DEFAULT_LENGTH)
         name1 = storage.save('foo/bar.txt', ContentFile('Hello world!'))
         storage.delete(name1)
         self.assertFilename(name1, 'foo/bar.txt')
         name2 = storage.save('foo/bar.txt', ContentFile('Hello world!'))
         storage.delete(name2)
         self.assertFilename(name2, 'foo/bar.txt')
         self.assertNotEqual(name1, name2)
Exemple #5
0
 def test_get_available_name(self):
     with media_root():
         storage = RandomFilenameFileSystemStorage(
             randomfilename_length=DEFAULT_LENGTH)
         self.assertFilename(storage.get_available_name(''), '')
         self.assertFilename(storage.get_available_name('foo'), 'foo')
         self.assertFilename(storage.get_available_name('foo.txt'),
                             'foo.txt')
         self.assertFilename(storage.get_available_name('foo/bar'),
                             'foo/bar')
         self.assertFilename(storage.get_available_name('foo/bar.txt'),
                             'foo/bar.txt')
Exemple #6
0
class PageFile(models.Model):
    file = models.FileField(upload_to='pages/files/',
                            storage=RandomFilenameFileSystemStorage())
    name = models.CharField(max_length=255)
    slug = models.SlugField(max_length=255, editable=False)

    _rough_type_map = [(r'^audio', 'audio'), (r'^video', 'video'),
                       (r'^application/pdf', 'pdf'),
                       (r'^application/msword', 'word'),
                       (r'^text/html', 'html'), (r'^text', 'text'),
                       (r'^image', 'image'),
                       (r'^application/vnd.ms-powerpoint', 'powerpoint'),
                       (r'^application/vnd.ms-excel', 'excel')]

    def get_absolute_url(self):
        return reverse('pages:file',
                       kwargs={
                           'slug': self.slug,
                           'file': self.name
                       })

    @property
    def attached_to_page(self):
        try:
            p = Page.objects.get(slug=self.slug)
        except Page.DoesNotExist:
            p = Page(slug=self.slug, name=clean_name(self.slug))
        return p

    @property
    def rough_type(self):
        mime = self.mime_type
        if mime:
            for regex, rough_type in self._rough_type_map:
                if re.match(regex, mime):
                    return rough_type
        return 'unknown'

    @property
    def mime_type(self):
        return mimetypes.guess_type(self.name)[0]

    def is_image(self):
        return self.rough_type == 'image'

    class Meta:
        unique_together = ('slug', 'name')
        ordering = ['-id']