Source code for oioioi.contestlogo.models

import os.path

from django.db import models
from django.utils import timezone
from django.utils.text import get_valid_filename
from django.utils.translation import gettext_lazy as _

from oioioi.contests.models import Contest
from oioioi.filetracker.fields import FileField


[docs]def make_logo_filename(instance, filename): return 'logo/%s/%s' % ( instance.contest.id, get_valid_filename(os.path.basename(filename)), )
[docs]def make_icon_filename(instance, filename): return 'icons/%s/%s' % ( instance.contest.id, get_valid_filename(os.path.basename(filename)), )
[docs]class ContestIcon(models.Model):
[docs] contest = models.ForeignKey( Contest, verbose_name=_("contest"), on_delete=models.CASCADE )
[docs] image = FileField(upload_to=make_icon_filename, verbose_name=_("icon image"))
[docs] updated_at = models.DateTimeField(default=timezone.now)
[docs] def save(self, *args, **kwargs): self.updated_at = timezone.now() return super(ContestIcon, self).save(*args, **kwargs)
@property
[docs] def filename(self): return os.path.split(self.image.name)[1]
[docs] class Meta(object):
[docs] verbose_name = _("contest icon")
[docs] verbose_name_plural = _("contest icons")