Обновление API Utils для работы с медиа
This commit is contained in:
@@ -8,6 +8,8 @@ from hashlib import sha512, sha256
|
||||
|
||||
from django.db.models import Q
|
||||
|
||||
from django.db.utils import ProgrammingError
|
||||
|
||||
from .api_errors import *
|
||||
import re
|
||||
|
||||
@@ -27,7 +29,10 @@ class City(models.Model):
|
||||
|
||||
@staticmethod
|
||||
def to_choices():
|
||||
return list(City.objects.order_by('name').values_list('code', 'name'))
|
||||
try:
|
||||
return list(City.objects.order_by('name').values_list('code', 'name'))
|
||||
except ProgrammingError:
|
||||
return []
|
||||
|
||||
@staticmethod
|
||||
async def get_by_code(code):
|
||||
@@ -115,6 +120,30 @@ class Account(models.Model):
|
||||
return self.name != '' and self.surname != '' and self.city_id is not None
|
||||
|
||||
|
||||
class Media(models.Model):
|
||||
user = models.ForeignKey(Account, on_delete=models.SET_NULL, null=True)
|
||||
storage_name = models.CharField(max_length=100, verbose_name="Файл в хранилище")
|
||||
original_name = models.CharField(max_length=100, verbose_name="Имя файла", default="")
|
||||
upload_datetime = models.DateTimeField(default=datetime.now, editable=False)
|
||||
|
||||
@staticmethod
|
||||
async def get_by_id(user_id: int, media_id: int):
|
||||
m = Media.objects.filter(user_id=user_id, id=media_id).select_related('executoraccount', 'city')
|
||||
return await m.afirst()
|
||||
|
||||
@staticmethod
|
||||
async def get_media():
|
||||
pass
|
||||
|
||||
def generate_storage_name(self):
|
||||
if self.storage_name is None:
|
||||
source_str = f"{self.original_name} {self.original_name} {self.upload_datetime} {self.user.id}"
|
||||
self.storage_name = sha512(bytearray(source_str, 'utf-8')).hexdigest()
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user}: \"{self.original_name}\" ({self.id})"
|
||||
|
||||
|
||||
def _executor_additional_info_default():
|
||||
return {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user