import os import reversion from django.conf import settings from django.db import models from django.utils import timezone from various.utils import aux_generate_filename from mamweb.models.base import SeminarModelBase from .reseni import Reseni def generate_filename(self, filename): return os.path.join( settings.SEMINAR_RESENI_DIR, aux_generate_filename(self, filename) ) @reversion.register(ignore_duplicates=True) class PrilohaReseni(SeminarModelBase): class Meta: db_table = 'seminar_priloha_reseni' verbose_name = 'Příloha řešení' verbose_name_plural = 'Přílohy řešení' ordering = ['reseni', 'vytvoreno'] # Interní ID id = models.AutoField(primary_key=True) reseni = models.ForeignKey( Reseni, verbose_name='řešení', related_name='prilohy', on_delete=models.CASCADE, ) vytvoreno = models.DateTimeField( 'vytvořeno', default=timezone.now, blank=True, editable=False, ) soubor = models.FileField('soubor', upload_to=generate_filename) poznamka = models.TextField( 'neveřejná poznámka', blank=True, help_text='Neveřejná poznámka k příloze řešení (plain text), např. o původu', ) res_poznamka = models.TextField( 'poznámka řešitele', blank=True, help_text='Poznámka k příloze řešení, např. co daný soubor obsahuje', ) def __str__(self): return str(self.soubor) def split(self): """Vrátí cestu rozsekanou po složkách. To se hodí v templatech""" # Věřím, že tohle funguje, případně použít os.path nebo pathlib. return self.soubor.url.split('/')