Compare commits
No commits in common. "a3d29cd86723082d3c4a9a407ab1b516a47c3716" and "332764fca237ff31db3dea7e01ce47d3f8bfdabc" have entirely different histories.
a3d29cd867
...
332764fca2
@ -1,5 +1,4 @@
|
|||||||
from django.contrib import admin, messages
|
from django.contrib import admin, messages
|
||||||
from django.db.models import F
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
from django.utils.translation import ngettext
|
from django.utils.translation import ngettext
|
||||||
@ -67,20 +66,15 @@ class ArchiveAdmin(admin.ModelAdmin):
|
|||||||
search_fields = ('ticket',)
|
search_fields = ('ticket',)
|
||||||
list_filter = ('time_create', '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):
|
def file_size(self, obj):
|
||||||
return sizify(obj.size)
|
return sizify(obj.file.size)
|
||||||
|
|
||||||
def file_link(self, obj):
|
def file_link(self, obj):
|
||||||
if obj.file:
|
if obj.file:
|
||||||
file_name = obj.file.name.rpartition('/')[-1]
|
file_name = obj.file.name.rpartition('/')[-1]
|
||||||
file_path = reverse(
|
file_path = reverse(
|
||||||
'collector:download',
|
'collector:download',
|
||||||
kwargs={'path': obj.file}
|
kwargs={'path': file_name}
|
||||||
)
|
)
|
||||||
return format_html(
|
return format_html(
|
||||||
'<a href="{file_path}">{file_name}</a>',
|
'<a href="{file_path}">{file_name}</a>',
|
||||||
@ -92,7 +86,6 @@ class ArchiveAdmin(admin.ModelAdmin):
|
|||||||
|
|
||||||
file_link.allow_tags = True
|
file_link.allow_tags = True
|
||||||
file_link.short_description = 'File Download'
|
file_link.short_description = 'File Download'
|
||||||
file_size.admin_order_field = 'file_size'
|
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(Platform, PlatformAdmin)
|
admin.site.register(Platform, PlatformAdmin)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Generated by Django 4.2 on 2023-09-02 09:30
|
# Generated by Django 4.2 on 2023-08-30 05:52
|
||||||
|
|
||||||
import collector.utils
|
import collector.utils
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -47,8 +47,7 @@ class Migration(migrations.Migration):
|
|||||||
name='Archive',
|
name='Archive',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('file', models.FileField(upload_to=collector.utils.logs_dir_path)),
|
('file', models.FileField(blank=True, null=True, upload_to=collector.utils.logs_dir_path)),
|
||||||
('size', models.BigIntegerField(editable=False)),
|
|
||||||
('md5', models.CharField(editable=False, max_length=1024)),
|
('md5', models.CharField(editable=False, max_length=1024)),
|
||||||
('time_create', models.DateTimeField(auto_now_add=True)),
|
('time_create', models.DateTimeField(auto_now_add=True)),
|
||||||
('time_update', models.DateTimeField(auto_now=True)),
|
('time_update', models.DateTimeField(auto_now=True)),
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
# 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),
|
||||||
|
),
|
||||||
|
]
|
@ -11,7 +11,6 @@ from .utils import logs_dir_path
|
|||||||
|
|
||||||
class Archive(models.Model):
|
class Archive(models.Model):
|
||||||
file = models.FileField(upload_to=logs_dir_path)
|
file = models.FileField(upload_to=logs_dir_path)
|
||||||
size = models.BigIntegerField(editable=False)
|
|
||||||
md5 = models.CharField(max_length=1024, editable=False)
|
md5 = models.CharField(max_length=1024, editable=False)
|
||||||
time_create = models.DateTimeField(auto_now_add=True)
|
time_create = models.DateTimeField(auto_now_add=True)
|
||||||
time_update = models.DateTimeField(auto_now=True)
|
time_update = models.DateTimeField(auto_now=True)
|
||||||
@ -23,8 +22,6 @@ class Archive(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
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
|
# calculate md5 hash sum and write md5 field to db
|
||||||
with self.file.open('rb') as f:
|
with self.file.open('rb') as f:
|
||||||
md5 = hashlib.md5()
|
md5 = hashlib.md5()
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<br>
|
<br>
|
||||||
<small>
|
<small>
|
||||||
<b>Size:</b>
|
<b>Size:</b>
|
||||||
<span style="word-wrap: break-word">{{ archive.size|filesizeformat }}</span>
|
<span style="word-wrap: break-word">{{ archive.file.size|sizify }}</span>
|
||||||
</small>
|
</small>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="d-flex justify-content-sm-start justify-content-between" >
|
<div class="d-flex justify-content-sm-start justify-content-between" >
|
||||||
|
@ -13,6 +13,31 @@ def get_platforms():
|
|||||||
return Platform.objects.all()
|
return Platform.objects.all()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='sizify')
|
||||||
|
def sizify(value: int) -> str:
|
||||||
|
"""Simple kb/mb/gb size snippet for templates:
|
||||||
|
|
||||||
|
{{ Archive.file.size|sizify }}
|
||||||
|
|
||||||
|
Args:
|
||||||
|
value (int): size of file from Filefield
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: format human readable size like 4.2 Gb
|
||||||
|
"""
|
||||||
|
|
||||||
|
if value < 512000:
|
||||||
|
value = value / 1024.0
|
||||||
|
ext = 'Kb'
|
||||||
|
elif value < 4194304000:
|
||||||
|
value = value / 1048576.0
|
||||||
|
ext = 'Mb'
|
||||||
|
else:
|
||||||
|
value = value / 1073741824.0
|
||||||
|
ext = 'Gb'
|
||||||
|
return f'{round(value, 2)} {ext}'
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='clean_filename')
|
@register.filter(name='clean_filename')
|
||||||
def clean_filename(filename: str) -> str:
|
def clean_filename(filename: str) -> str:
|
||||||
"""delete prefix ticket number folder for template
|
"""delete prefix ticket number folder for template
|
||||||
|
@ -7,11 +7,6 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<style>
|
|
||||||
.asteriskField {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="d-flex min-vh-100 align-items-center py-4" cz-shortcut-listen="true">
|
<div class="d-flex min-vh-100 align-items-center py-4" cz-shortcut-listen="true">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user