From b8e94e0e7cc7576cbaacd3c737d6ffca6b12db53 Mon Sep 17 00:00:00 2001
From: Radek Czajka <radekczajka@nowoczesnapolska.org.pl>
Date: Wed, 22 Oct 2014 11:26:39 +0200
Subject: [PATCH] Fixes #3511: capitalize objects.

---
 .../migrations/0006_auto_20141022_1059.py     | 23 +++++++++++++++++++
 .../migrations/0005_auto_20141022_1001.py     | 12 ++++++++++
 apps/picture/models.py                        |  6 ++++-
 3 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 apps/catalogue/migrations/0006_auto_20141022_1059.py

diff --git a/apps/catalogue/migrations/0006_auto_20141022_1059.py b/apps/catalogue/migrations/0006_auto_20141022_1059.py
new file mode 100644
index 000000000..f36eb0742
--- /dev/null
+++ b/apps/catalogue/migrations/0006_auto_20141022_1059.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+def capitalize_objects(apps, schema_editor):
+    """Capitalize Polish names of things."""
+    Tag = apps.get_model('catalogue', 'Tag')
+    for tag in Tag.objects.filter(category='thing'):
+        tag.name = tag.name_pl = tag.name.capitalize()
+        tag.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('catalogue', '0005_auto_20141016_1337'),
+    ]
+
+    operations = [
+        migrations.RunPython(capitalize_objects),
+    ]
diff --git a/apps/picture/migrations/0005_auto_20141022_1001.py b/apps/picture/migrations/0005_auto_20141022_1001.py
index e5e87387c..677877eae 100644
--- a/apps/picture/migrations/0005_auto_20141022_1001.py
+++ b/apps/picture/migrations/0005_auto_20141022_1001.py
@@ -1,7 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
+from django.core.files.base import ContentFile
 from django.db import models, migrations
+from django.template.loader import render_to_string
+
 
 def rebuild_extra_info(apps, schema_editor):
     Picture = apps.get_model("picture", "Picture")
@@ -10,6 +13,15 @@ def rebuild_extra_info(apps, schema_editor):
     for pic in Picture.objects.all():
         info = dcparser.parse(pic.xml_file.path, PictureInfo)
         pic.extra_info = info.to_dict()
+        areas_json = pic.areas_json
+        for field in areas_json[u'things'].values():
+            field[u'object'] = field[u'object'].capitalize()
+        pic.areas_json = areas_json
+        html_text = unicode(render_to_string('picture/picture_info.html', {
+                    'things': pic.areas_json['things'],
+                    'themes': pic.areas_json['themes'],
+                    }))
+        pic.html_file.save("%s.html" % pic.slug, ContentFile(html_text))
         pic.save()
 
 
diff --git a/apps/picture/models.py b/apps/picture/models.py
index 97dbd0ec2..7ef6ca7cd 100644
--- a/apps/picture/models.py
+++ b/apps/picture/models.py
@@ -170,6 +170,9 @@ class Picture(models.Model):
 
             area_data = {'themes':{}, 'things':{}}
 
+            # Treat all names in picture XML as in default language.
+            lang = settings.LANGUAGE_CODE
+
             for part in picture_xml.partiter():
                 if picture_xml.frame:
                     c = picture_xml.frame[0]
@@ -180,7 +183,8 @@ class Picture(models.Model):
                         objname = objname.strip()
                         tag, created = catalogue.models.Tag.objects.get_or_create(slug=slughifi(objname), category='thing')
                         if created:
-                            tag.name = objname
+                            tag.name = objname.capitalize()
+                            setattr(tag, 'name_%s' % lang, tag.name)
                             tag.sort_key = sortify(tag.name)
                             tag.save()
                         #thing_tags.add(tag)
-- 
2.20.1