diff --git a/logs_collector/collector/admin.py b/logs_collector/collector/admin.py
index 08fa41a..e205677 100644
--- a/logs_collector/collector/admin.py
+++ b/logs_collector/collector/admin.py
@@ -1,4 +1,5 @@
from django.contrib import admin, messages
+from django.db.models import F
from django.urls import reverse
from django.utils.html import format_html
from django.utils.translation import ngettext
@@ -66,15 +67,20 @@ class ArchiveAdmin(admin.ModelAdmin):
search_fields = ('ticket',)
list_filter = ('time_create', 'ticket')
+ def get_queryset(self, request):
+ qs = super(ArchiveAdmin, self).get_queryset(request)
+ qs = qs.annotate(file_size=F('size'))
+ return qs
+
def file_size(self, obj):
- return sizify(obj.file.size)
+ return sizify(obj.size)
def file_link(self, obj):
if obj.file:
file_name = obj.file.name.rpartition('/')[-1]
file_path = reverse(
'collector:download',
- kwargs={'path': file_name}
+ kwargs={'path': obj.file}
)
return format_html(
'{file_name}',
@@ -86,6 +92,7 @@ class ArchiveAdmin(admin.ModelAdmin):
file_link.allow_tags = True
file_link.short_description = 'File Download'
+ file_size.admin_order_field = 'file_size'
admin.site.register(Platform, PlatformAdmin)
diff --git a/logs_collector/collector/migrations/0001_initial.py b/logs_collector/collector/migrations/0001_initial.py
index 80282ac..fce79fc 100644
--- a/logs_collector/collector/migrations/0001_initial.py
+++ b/logs_collector/collector/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 4.2 on 2023-08-30 05:52
+# Generated by Django 4.2 on 2023-09-02 09:30
import collector.utils
from django.conf import settings
@@ -47,7 +47,8 @@ class Migration(migrations.Migration):
name='Archive',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('file', models.FileField(blank=True, null=True, upload_to=collector.utils.logs_dir_path)),
+ ('file', models.FileField(upload_to=collector.utils.logs_dir_path)),
+ ('size', models.BigIntegerField(editable=False)),
('md5', models.CharField(editable=False, max_length=1024)),
('time_create', models.DateTimeField(auto_now_add=True)),
('time_update', models.DateTimeField(auto_now=True)),
diff --git a/logs_collector/collector/migrations/0002_alter_archive_file.py b/logs_collector/collector/migrations/0002_alter_archive_file.py
deleted file mode 100644
index 8cc4cd2..0000000
--- a/logs_collector/collector/migrations/0002_alter_archive_file.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated by Django 4.2 on 2023-08-30 08:40
-
-import collector.utils
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('collector', '0001_initial'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='archive',
- name='file',
- field=models.FileField(upload_to=collector.utils.logs_dir_path),
- ),
- ]
diff --git a/logs_collector/collector/models.py b/logs_collector/collector/models.py
index 4e4295f..2296cbd 100644
--- a/logs_collector/collector/models.py
+++ b/logs_collector/collector/models.py
@@ -11,6 +11,7 @@ from .utils import logs_dir_path
class Archive(models.Model):
file = models.FileField(upload_to=logs_dir_path)
+ size = models.BigIntegerField(editable=False)
md5 = models.CharField(max_length=1024, editable=False)
time_create = models.DateTimeField(auto_now_add=True)
time_update = models.DateTimeField(auto_now=True)
@@ -22,6 +23,8 @@ class Archive(models.Model):
)
def save(self, *args, **kwargs):
+ # add file size in bytes
+ self.size = self.file.size
# calculate md5 hash sum and write md5 field to db
with self.file.open('rb') as f:
md5 = hashlib.md5()
diff --git a/logs_collector/collector/templates/collector/includes/ticket_archives.html b/logs_collector/collector/templates/collector/includes/ticket_archives.html
index 4cec5ae..2e55656 100644
--- a/logs_collector/collector/templates/collector/includes/ticket_archives.html
+++ b/logs_collector/collector/templates/collector/includes/ticket_archives.html
@@ -19,7 +19,7 @@
Size:
- {{ archive.file.size|sizify }}
+ {{ archive.size|filesizeformat }}