You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

47 lines
1.7 KiB

# encoding=utf-8
import base64
import uuid
from django.core.files.base import ContentFile
from django.db import models
class FileManager(models.Manager):
def upload_as_base64(self, file_base64, ext):
if "data:" in file_base64:
my_str = file_base64[file_base64.index(";base64,")+8:]
file_source = ContentFile(base64.b64decode(my_str), name='time.' + ext)
file = self.create(original=file_source)
return file
raise ValueError()
class File(models.Model):
token = models.UUIDField(verbose_name="Ключ", default=uuid.uuid4, editable=False)
original = models.FileField(max_length=255, verbose_name='Файл', upload_to="files", unique=True)
name = models.CharField(max_length=255, null=True, blank=True, verbose_name='Видимое имя файла')
objects = FileManager()
def __str__(self):
return '%s %s' % (self.name or "Без имени", self.original)
class Meta:
verbose_name = 'Файл'
verbose_name_plural = 'Файлы'
class Comment(models.Model):
user_key = models.UUIDField(verbose_name="Ссылка на юзера", editable=False)
text = models.TextField(default="", verbose_name="Текст комментария")
files = models.ManyToManyField(to=File, blank=True, verbose_name='Файлы')
token = models.UUIDField(verbose_name="Ключ", default=uuid.uuid4, editable=False)
date = models.DateTimeField(auto_now_add=True, verbose_name="Дата коментария")
def __str__(self):
return '%s' % self.token
class Meta:
verbose_name = 'Коммент'
verbose_name_plural = 'Комменты'