# 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 = 'Комменты'