logs-collector/logs_collector/collector/utils.py

62 lines
1.5 KiB
Python
Raw Normal View History

2023-07-29 12:56:42 +08:00
import os
2023-08-11 21:12:51 +08:00
from django_filters import NumberFilter
2023-07-29 12:56:42 +08:00
def logs_dir_path(instance, filename):
2023-08-11 21:12:51 +08:00
"""
file will be uploaded to
MEDIA_ROOT_FOR_SENSITIVE_FILES/<ticket-token>/<filename>
"""
2023-08-11 09:38:47 +08:00
return f'{instance.ticket.number}/{filename}'
2023-07-29 12:56:42 +08:00
def get_file_size(file_path, unit='bytes'):
file_size = os.path.getsize(file_path)
exponents_map = {'bytes': 0, 'kb': 1, 'mb': 2, 'gb': 3}
if unit not in exponents_map:
raise ValueError("Must select from \
['bytes', 'kb', 'mb', 'gb']")
else:
size = file_size / 1024 ** exponents_map[unit]
return round(size, 3)
def is_ajax(request):
2023-08-04 09:15:25 +08:00
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
return True
class PageTitleViewMixin:
title = 'Collector'
def get_title(self, *args, **kwargs):
"""
Return the class title attr by default,
but you can override this method to further customize
"""
return self.title
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = self.get_title()
return context
2023-08-11 21:12:51 +08:00
class DateTimeFilterMixin:
year__gte = NumberFilter(
field_name='time_create',
lookup_expr='year__gte'
)
year__lte = NumberFilter(
field_name='time_create',
lookup_expr='year__lte'
)
month__gte = NumberFilter(
field_name='time_create',
lookup_expr='month__gte'
)
month__lte = NumberFilter(
field_name='time_create',
lookup_expr='month__lte'
)