X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/6c7d6a5cf471f39a5e8f8e4f42fb428fb4c42e4e..636fd34b05155b81691222ad80c4a3746d0c2fc1:/apps/cover/models.py?ds=sidebyside diff --git a/apps/cover/models.py b/apps/cover/models.py index 5574f345..d83dad39 100644 --- a/apps/cover/models.py +++ b/apps/cover/models.py @@ -3,10 +3,8 @@ # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # -import re -from urlparse import urljoin -from django.conf import settings from django.core.files.base import ContentFile +from django.core.files.storage import FileSystemStorage from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver @@ -15,14 +13,22 @@ from django.contrib.sites.models import Site from cover.utils import URLOpener +class OverwriteStorage(FileSystemStorage): + + def get_available_name(self, name, max_length=None): + self.delete(name) + return name + + class Image(models.Model): title = models.CharField(max_length=255, verbose_name=_('title')) author = models.CharField(max_length=255, verbose_name=_('author')) license_name = models.CharField(max_length=255, verbose_name=_('license name')) license_url = models.URLField(max_length=255, blank=True, verbose_name=_('license URL')) - source_url = models.URLField(verbose_name=_('source URL')) - download_url = models.URLField(unique=True, verbose_name=_('image download URL'), null = True) - file = models.ImageField(upload_to='cover/image', editable=True, verbose_name=_('file')) + source_url = models.URLField(verbose_name=_('source URL'), null=True, blank=True) + download_url = models.URLField(unique=True, verbose_name=_('image download URL'), null=True, blank=True) + file = models.ImageField( + upload_to='cover/image', storage=OverwriteStorage(), editable=True, verbose_name=_('file')) class Meta: verbose_name = _('cover image') @@ -33,7 +39,7 @@ class Image(models.Model): @models.permalink def get_absolute_url(self): - return ('cover_image', [self.id]) + return 'cover_image', [self.id] def get_full_url(self): return "http://%s%s" % (Site.objects.get_current().domain, self.get_absolute_url()) @@ -44,5 +50,3 @@ def download_image(sender, instance, **kwargs): if instance.pk and not instance.file: t = URLOpener().open(instance.download_url).read() instance.file.save("%d.jpg" % instance.pk, ContentFile(t)) - - \ No newline at end of file