-# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
#
from django.db import models, transaction
import catalogue.models
from PIL import Image
-from django.utils.translation import gettext_lazy as _
from newtagging import managers
from os import path
class PictureArea(models.Model):
picture = models.ForeignKey('picture.Picture', models.CASCADE, related_name='areas')
- area = models.TextField(_('area'), default='{}', editable=False)
+ area = models.TextField('obszar', default='{}', editable=False)
kind = models.CharField(
- _('kind'), max_length=10, blank=False, null=False, db_index=True,
- choices=(('thing', _('thing')), ('theme', _('theme'))))
+ 'typ', max_length=10, blank=False, null=False, db_index=True,
+ choices=(('thing', 'przedmiot'), ('theme', 'motyw'))
+ )
objects = models.Manager()
tagged = managers.ModelTaggedItemManager(catalogue.models.Tag)
def get_area_json(self):
return json.loads(self.area)
- @cached_render('picture/picturearea_short.html')
- def midi_box(self):
- themes = self.tags.filter(category='theme')
- things = self.tags.filter(category='thing')
- return {
- 'area': self,
- 'theme': themes[0] if themes else None,
- 'thing': things[0] if things else None,
- }
-
- def clear_cache(self):
- clear_cached_renders(self.midi_box)
-
class Picture(models.Model):
"""
Picture resource.
"""
- title = models.CharField(_('title'), max_length=32767)
- slug = models.SlugField(_('slug'), max_length=120, db_index=True, unique=True)
- sort_key = models.CharField(_('sort key'), max_length=120, db_index=True, editable=False)
+ title = models.CharField('tytuł', max_length=32767)
+ slug = models.SlugField('slug', max_length=120, db_index=True, unique=True)
+ sort_key = models.CharField('klucz sortowania', max_length=120, db_index=True, editable=False)
sort_key_author = models.CharField(
- _('sort key by author'), max_length=120, db_index=True, editable=False, default='')
- created_at = models.DateTimeField(_('creation date'), auto_now_add=True, db_index=True)
- changed_at = models.DateTimeField(_('creation date'), auto_now=True, db_index=True)
- xml_file = models.FileField(_('xml file'), upload_to="xml", storage=picture_storage)
- image_file = ImageField(_('image file'), upload_to="images", storage=picture_storage)
- html_file = models.FileField(_('html file'), upload_to="html", storage=picture_storage)
- areas_json = models.TextField(_('picture areas JSON'), default='{}', editable=False)
- extra_info = models.TextField(_('extra information'), default='{}')
+ 'klucz sortowania wg autora', max_length=120, db_index=True, editable=False, default='')
+ created_at = models.DateTimeField('data utworzenia', auto_now_add=True, db_index=True)
+ changed_at = models.DateTimeField('data zmiany', auto_now=True, db_index=True)
+ xml_file = models.FileField('plik xml', upload_to="xml", storage=picture_storage)
+ image_file = ImageField('plik obrazu', upload_to="images", storage=picture_storage)
+ html_file = models.FileField('plik html', upload_to="html", storage=picture_storage)
+ areas_json = models.TextField('obszary w JSON', default='{}', editable=False)
+ extra_info = models.TextField('dodatkowa informacja', default='{}')
culturepl_link = models.CharField(blank=True, max_length=240)
wiki_link = models.CharField(blank=True, max_length=240)
class Meta:
ordering = ('sort_key_author', 'sort_key')
- verbose_name = _('picture')
- verbose_name_plural = _('pictures')
+ verbose_name = 'obraz'
+ verbose_name_plural = 'obrazy'
def get_extra_info_json(self):
return json.loads(self.extra_info or '{}')
picture.title = str(picture_xml.picture_info.title)
picture.extra_info = json.dumps(picture_xml.picture_info.to_dict())
- picture_tags = set(catalogue.models.Tag.tags_from_info(picture_xml.picture_info))
+ picture_tags = set([t for (t, rel) in catalogue.models.Tag.tags_from_info(picture_xml.picture_info)])
for tag in picture_tags:
if not tag.for_pictures:
tag.for_pictures = True
'picture': self,
}
- @cached_render('picture/picture_short.html')
- def midi_box(self):
- return {
- 'picture': self,
- }
-
def related_themes(self):
return catalogue.models.Tag.objects.usage_for_queryset(
self.areas.all(), counts=True).filter(category__in=('theme', 'thing'))
def clear_cache(self):
clear_cached_renders(self.mini_box)
- clear_cached_renders(self.midi_box)