Обновление API Utils для работы с медиа

This commit is contained in:
2023-03-14 15:15:36 +03:00
parent 35b1fae88b
commit d4158ae1c0
9 changed files with 113 additions and 25 deletions

View File

@@ -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 {}