/
tro37295
/
Learnone
Обзор
Документация
Войти
/
tro37295
/
Learnone
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
ficha
modules/services/utils.py
65 строк
2 KB
George Trofimov
Проект развернут в контейнере
02 апр 2024, 10:44
02 апр 2024, 10:44
f4279cc
Код
Авторство
О чём код?
import os from django.core.files.storage import FileSystemStorage from jobportal import settings from urllib.parse import urljoin from datetime import datetime from uuid import uuid4 from pytils.translit import slugify from PIL import Image, ImageOps def unique_slugify(instance, slug): """ Генератор уникальных SLUG для моделей, в случае существования такого SLUG. """ model = instance.__class__ unique_slug = slugify(slug) while model.objects.filter(slug=unique_slug).exists(): unique_slug = f'{unique_slug}-{uuid4().hex[:8]}' return unique_slug def get_client_ip(request): """ Получение IP адреса """ x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: ip = request.META.get('REMOTE_ADDR') return ip class CkeditorCustomStorage(FileSystemStorage): """ Кастомное расположение для медиа файлов редактора """ def get_folder_name(self): return datetime.now().strftime('%Y/%m/%d') def get_valid_name(self, name): return name def _save(self, name, content): folder_name =self.get_folder_name() name = os.path.join(folder_name, self.get_valid_name(name)) return super()._save(name, content) location = os.path.join(settings.MEDIA_URL, 'uploads/') base_url = urljoin(settings.MEDIA_URL, 'uploads/') def image_compress(image_path, height, width): """ Оптимизация изображений """ img = Image.open(image_path) if img.mode != 'RGB': img = img.convert('RGB') if img.height > height or img.width > width: output_size = (height, width) img.thumbnail(output_size) img = ImageOps.exif_transpose(img) img.save(image_path, format='JPEG', quality=90, optimize=True)