summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-05 18:30:24 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-05 18:31:52 +0200
commit7fb1ff25e2491e94c3446a401e644de9793006f5 (patch)
tree54a97773eef1b633895480a8b8caeb768bf7b43a /ishtar_common
parentd3d84ed7cc5ff3cb9c164838c78cfcee73fbc44e (diff)
downloadIshtar-7fb1ff25e2491e94c3446a401e644de9793006f5.tar.bz2
Ishtar-7fb1ff25e2491e94c3446a401e644de9793006f5.zip
Add images for operation, context records and sources (refs #2927, refs #351)
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms_common.py8
-rw-r--r--ishtar_common/models.py16
-rw-r--r--ishtar_common/templates/ishtar/sheet_source.html43
-rw-r--r--ishtar_common/wizards.py2
4 files changed, 50 insertions, 19 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index f6889ae1f..2788283db 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -649,6 +649,7 @@ class MergeOrganizationForm(MergeForm):
######################
class SourceForm(ManageOldType, forms.Form):
form_label = _(u"Documentation informations")
+ file_upload = True
associated_models = {'source_type': models.SourceType}
title = forms.CharField(label=_(u"Title"),
validators=[validators.MaxLengthValidator(200)])
@@ -677,6 +678,13 @@ class SourceForm(ManageOldType, forms.Form):
required=False)
duplicate = forms.BooleanField(label=_(u"Has a duplicate"),
required=False)
+ image = forms.ImageField(
+ label=_(u"Image"), help_text=mark_safe(
+ _(u"<p>Heavy images are resized to: %(width)dx%(height)d "
+ u"(ratio is preserved).</p>") % {
+ 'width': settings.IMAGE_MAX_SIZE[0],
+ 'height': settings.IMAGE_MAX_SIZE[1]}),
+ required=False, widget=widgets.ImageFileInput())
def __init__(self, *args, **kwargs):
super(SourceForm, self).__init__(*args, **kwargs)
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 186d88f1a..4e46693de 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -331,6 +331,8 @@ class GeneralType(Cached, models.Model):
@classmethod
def _get_initial_types(cls, initial, type_pks):
new_vals = []
+ if not initial:
+ return []
for value in initial:
try:
pk = int(value)
@@ -580,10 +582,21 @@ class ImageModel(models.Model):
null=True)
IMAGE_MAX_SIZE = settings.IMAGE_MAX_SIZE
THUMB_MAX_SIZE = settings.THUMB_MAX_SIZE
+ IMAGE_PREFIX = '/'
class Meta:
abstract = True
+ def __init__(self, *args, **kwargs):
+ super(ImageModel, self).__init__(*args, **kwargs)
+ image = self._meta.get_field_by_name("image")[0]
+ IMAGE_PREFIX = self.IMAGE_PREFIX
+ if not IMAGE_PREFIX.endswith('/'):
+ IMAGE_PREFIX += u'/'
+ image.upload_to = IMAGE_PREFIX
+ thumbnail = self._meta.get_field_by_name("thumbnail")[0]
+ thumbnail.upload_to = IMAGE_PREFIX + "thumbs/"
+
def has_changed(self, field):
if not self.pk:
return True
@@ -2541,7 +2554,7 @@ class Format(GeneralType):
verbose_name_plural = _(u"Formats")
-class Source(models.Model):
+class Source(ImageModel, models.Model):
title = models.CharField(_(u"Title"), max_length=300)
external_id = models.CharField(_(u"External ID"), max_length=12, null=True,
blank=True)
@@ -2576,6 +2589,7 @@ class Source(models.Model):
duplicate = models.BooleanField(_(u"Has a duplicate"), default=False)
TABLE_COLS = ['title', 'source_type', 'authors', 'associated_url']
COL_LINK = ['associated_url']
+ IMAGE_PREFIX = 'sources'
class Meta:
abstract = True
diff --git a/ishtar_common/templates/ishtar/sheet_source.html b/ishtar_common/templates/ishtar/sheet_source.html
index 7d291f37f..08406286d 100644
--- a/ishtar_common/templates/ishtar/sheet_source.html
+++ b/ishtar_common/templates/ishtar/sheet_source.html
@@ -4,26 +4,33 @@
{% block content %}
{% block window_nav %}{% endblock %}
{% block general %}
-{% field "Title" item.title %}
-{% field "Index" item.index %}
-{% field "Source type" item.source_type %}
-{% field "Format type" item.format_type %}
-{% field "Scale" item.scale %}
-{% field_url "Web link" item.associated_url %}
-{% field "Authors" item.authors|add_links:'person' %}
-{% field "Item number" item.item_number %}
-{% field "Ref." item.reference %}
-{% field "Internal ref." item.internal_reference %}
-{% field "Creation date" item.creation_date %}
-{% field "Receipt date" item.receipt_date %}
-{% field "Receipt date in documentation" item.receipt_date_in_documentation %}
-{% field "Has a duplicate" item.duplicate %}
-{% field "Description" item.description %}
-{% field "Comment" item.comment %}
-{% field "Additional information" item.additional_information %}
-{% endblock %}
{% block related %}
{% field "Related item" item.owner %}
{% endblock %}
+
+{% if item.image %}
+<a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}" class='photo'><img src='{{item.thumbnail.url}}'/></a>
+{% endif%}
+
+<ul class='form-flex'>
+{% field_li "Title" item.title %}
+{% field_li "Index" item.index %}
+{% field_li "Source type" item.source_type %}
+{% field_li "Format type" item.format_type %}
+{% field_li "Scale" item.scale %}
+{% field_li_url "Web link" item.associated_url %}
+{% field_li "Authors" item.authors|add_links:'person' %}
+{% field_li "Item number" item.item_number %}
+{% field_li "Ref." item.reference %}
+{% field_li "Internal ref." item.internal_reference %}
+{% field_li "Creation date" item.creation_date %}
+{% field_li "Receipt date" item.receipt_date %}
+{% field_li "Receipt date in documentation" item.receipt_date_in_documentation %}
+{% field_li "Has a duplicate" item.duplicate %}
+{% field_li "Description" item.description %}
+{% field_li "Comment" item.comment %}
+{% field_li "Additional information" item.additional_information %}
+</ul>
+{% endblock %}
{% endblock %}
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index a42e2d8b5..7fc22f1a9 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -26,6 +26,7 @@ from django.contrib.formtools.wizard.views import NamedUrlWizardView, \
from django.contrib.sites.models import Site
from django.core.exceptions import ObjectDoesNotExist
from django.core.files.images import ImageFile
+from django.core.files.storage import default_storage
from django.core.mail import send_mail
from django.db.models.fields.files import FileField
from django.db.models.fields.related import ManyToManyField
@@ -123,6 +124,7 @@ class Wizard(NamedUrlWizardView):
wizard_templates = {}
filter_owns = {}
current_obj_slug = ''
+ file_storage = default_storage
'''
# buggy and unecessary...