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.db.models import F | ||||
| from django.urls import reverse | ||||
| from django.utils.html import format_html | ||||
| from django.utils.translation import ngettext | ||||
| @ -67,20 +66,15 @@ 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.size) | ||||
|         return sizify(obj.file.size) | ||||
| 
 | ||||
|     def file_link(self, obj): | ||||
|         if obj.file: | ||||
|             file_name = obj.file.name.rpartition('/')[-1] | ||||
|             file_path = reverse( | ||||
|                 'collector:download', | ||||
|                 kwargs={'path': obj.file} | ||||
|                 kwargs={'path': file_name} | ||||
|             ) | ||||
|             return format_html( | ||||
|                 '<a href="{file_path}">{file_name}</a>', | ||||
| @ -92,7 +86,6 @@ 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) | ||||
|  | ||||
| @ -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 | ||||
| from django.conf import settings | ||||
| @ -47,8 +47,7 @@ class Migration(migrations.Migration): | ||||
|             name='Archive', | ||||
|             fields=[ | ||||
|                 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||||
|                 ('file', models.FileField(upload_to=collector.utils.logs_dir_path)), | ||||
|                 ('size', models.BigIntegerField(editable=False)), | ||||
|                 ('file', models.FileField(blank=True, null=True, upload_to=collector.utils.logs_dir_path)), | ||||
|                 ('md5', models.CharField(editable=False, max_length=1024)), | ||||
|                 ('time_create', models.DateTimeField(auto_now_add=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): | ||||
|     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) | ||||
| @ -23,8 +22,6 @@ 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() | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
|     <br> | ||||
|   <small> | ||||
|     <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> | ||||
|   <div class="row"> | ||||
|     <div class="d-flex justify-content-sm-start justify-content-between" > | ||||
|  | ||||
| @ -13,6 +13,31 @@ def get_platforms(): | ||||
|     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') | ||||
| def clean_filename(filename: str) -> str: | ||||
|     """delete prefix ticket number folder for template | ||||
|  | ||||
| @ -7,11 +7,6 @@ | ||||
| {% endblock %} | ||||
| 
 | ||||
| {% 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="container"> | ||||
|     <div class="row"> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user