コード例 #1
0
ファイル: forms.py プロジェクト: martinmacko47/chcemvediet
    def validate(self, value):
        super(AttachmentsField, self).validate(value)

        if self.max_count is not None and len(value) > self.max_count:
            msg = _(u'attachments:AttachmentsField:error:max_count')
            raise ValidationError(msg.format(max_count=self.max_count, count=len(value)))

        if self.max_size is not None:
            for attachment in value:
                if attachment.size > self.max_size:
                    msg = _(u'attachments:AttachmentsField:error:max_size')
                    raise ValidationError(msg.format(
                            max_size=filesize(self.max_size),
                            size=filesize(attachment.size),
                            attachment=attachment,
                            ))

        if self.max_total_size is not None:
            total_size = sum(a.size for a in value)
            if total_size > self.max_total_size:
                msg = _(u'attachments:AttachmentsField:error:max_total_size')
                raise ValidationError(msg.format(
                        max_total_size=filesize(self.max_total_size),
                        total_size=filesize(total_size),
                        ))
コード例 #2
0
 def test_supported_sizes(self):
     self.assertEqual(filesize(1023), u'1023 bytes')
     self.assertEqual(filesize(1024), u'1.0 kB')
     self.assertEqual(filesize(1024*1024), u'1.0 MB')
     self.assertEqual(filesize(1024*1024*1024), u'1.0 GB')
     self.assertEqual(filesize(1024*1024*1024*1024), u'1.0 TB')
     self.assertEqual(filesize(1024*1024*1024*1024*1024), u'1.0 PB')
コード例 #3
0
ファイル: test_misc.py プロジェクト: viliambalaz/chcemvediet
 def test_supported_sizes(self):
     self.assertEqual(filesize(1023), u'1023 bytes')
     self.assertEqual(filesize(1024), u'1.0 kB')
     self.assertEqual(filesize(1024 * 1024), u'1.0 MB')
     self.assertEqual(filesize(1024 * 1024 * 1024), u'1.0 GB')
     self.assertEqual(filesize(1024 * 1024 * 1024 * 1024), u'1.0 TB')
     self.assertEqual(filesize(1024 * 1024 * 1024 * 1024 * 1024), u'1.0 PB')
コード例 #4
0
ファイル: admin.py プロジェクト: zuffova/chcemvediet
 def size_field(self, attachment):
     return filesize(attachment.size) if attachment.size is not None else u'--'
コード例 #5
0
ファイル: admin.py プロジェクト: zuffova/chcemvediet
 def size_column(self, attachment):
     return filesize(attachment.size)
コード例 #6
0
class AttachmentAdmin(admin.ModelAdmin):
    date_hierarchy = u'created'
    list_display = [
        u'id',
        decorate(
            lambda o: admin_obj_format(o.generic_object),
            short_description=u'Generic Object',
            admin_order_field=u'generic_type__name',
        ),
        decorate(
            lambda o: admin_obj_format(o, u'{obj.file.name}', link=u'download'
                                       ),
            short_description=u'File',
            admin_order_field=u'file',
        ),
        u'name',
        u'content_type',
        u'created',
        decorate(
            lambda o: filesize(o.size),
            short_description=u'Size',
            admin_order_field=u'size',
        ),
    ]
    list_filter = [
        u'created',
        u'content_type',
        u'generic_type',
    ]
    search_fields = [
        u'=id',
        u'=generic_id',
        u'generic_type__name',
        u'file',
        u'name',
        u'content_type',
    ]
    ordering = [
        u'-id',
    ]
    exclude = [
        u'file',
    ]
    readonly_fields = []
    raw_id_fields = []
    inlines = []

    def get_queryset(self, request):
        queryset = super(AttachmentAdmin, self).get_queryset(request)
        queryset = queryset.prefetch_related(u'generic_object')
        return queryset

    def download_view(self, request, attachment_pk):
        attachment = Attachment.objects.get_or_404(pk=attachment_pk)
        return download(request, attachment)

    def get_urls(self):
        info = self.model._meta.app_label, self.model._meta.model_name
        download_view = self.admin_site.admin_view(self.download_view)
        urls = patterns(
            '',
            url(r'^(.+)/download/$',
                download_view,
                name=u'{}_{}_download'.format(*info)),
        )
        return urls + super(AttachmentAdmin, self).get_urls()
コード例 #7
0
 def size_field(self, attachment):
     return filesize(
         attachment.size) if attachment.size is not None else u'--'
コード例 #8
0
 def size_column(self, attachment):
     return filesize(attachment.size)
コード例 #9
0
ファイル: test_misc.py プロジェクト: viliambalaz/chcemvediet
 def test_negative_sizes(self):
     self.assertEqual(filesize(-47), u'-47 bytes')
     self.assertEqual(filesize(-3847), u'-3.8 kB')
コード例 #10
0
ファイル: test_misc.py プロジェクト: viliambalaz/chcemvediet
 def test_random_sizes(self):
     self.assertEqual(filesize(3847), u'3.8 kB')
     self.assertEqual(filesize(3834547), u'3.7 MB')
     self.assertEqual(filesize(49573834547), u'46.2 GB')
     self.assertEqual(filesize(344749573834547), u'313.5 TB')
コード例 #11
0
ファイル: test_misc.py プロジェクト: viliambalaz/chcemvediet
 def test_too_big_sizes(self):
     self.assertEqual(filesize(1024 * 1024 * 1024 * 1024 * 1024 * 1024),
                      u'1024.0 PB')
     self.assertEqual(
         filesize(1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024),
         u'1048576.0 PB')
コード例 #12
0
ファイル: test_misc.py プロジェクト: viliambalaz/chcemvediet
 def test_zero_bytes(self):
     self.assertEqual(filesize(0), u'0 bytes')
コード例 #13
0
 def test_negative_sizes(self):
     self.assertEqual(filesize(-47), u'-47 bytes')
     self.assertEqual(filesize(-3847), u'-3.8 kB')
コード例 #14
0
 def test_random_sizes(self):
     self.assertEqual(filesize(3847), u'3.8 kB')
     self.assertEqual(filesize(3834547), u'3.7 MB')
     self.assertEqual(filesize(49573834547), u'46.2 GB')
     self.assertEqual(filesize(344749573834547), u'313.5 TB')
コード例 #15
0
 def test_too_big_sizes(self):
     self.assertEqual(filesize(1024*1024*1024*1024*1024*1024), u'1024.0 PB')
     self.assertEqual(filesize(1024*1024*1024*1024*1024*1024*1024), u'1048576.0 PB')
コード例 #16
0
 def test_zero_bytes(self):
     self.assertEqual(filesize(0), u'0 bytes')