new zoomviewport
authorHarris Baptiste <harris.baptiste@iri.centrepompidou.fr>
Tue, 26 Jul 2016 14:37:43 +0200
changeset 80 9675cdd079df
parent 79 329606de509a (current diff)
parent 77 89bfc5499455 (diff)
child 81 c600162cc2cd
child 83 0d87dab6f3b0
new zoomviewport
src/iconolab/fixtures/demo_data_dump.json
src/iconolab/fixtures/dev_initial_data.json
src/iconolab/templates/iconolab/change_annotation.html
src/iconolab/templates/iconolab/detail_annotation.html
--- a/src/iconolab/fixtures/demo_data.json	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/fixtures/demo_data.json	Tue Jul 26 14:37:43 2016 +0200
@@ -105,28 +105,28 @@
 	    "pk": 3,
 	    "fields": {
 	    	"collection": 1,
-	    	"item_guid": "46ea6b45-caa4-47d5-bd0b-f1f22410b68e"
+	    	"item_guid": "de301942-e60e-4e46-83c2-967bf3838f47"
 	    }
 	},{
 	    "model": "iconolab.ItemMetadata",
 	    "pk": 3,
 	    "fields": {
 	    	"item": 3,
-	    	"domain": "pièce",
-	    	"title": "10c pièce",
+	    	"domain": "dessin",
+	    	"title": "dessin format paysage",
 	    	"description": "",
-	    	"joconde_ref": "1234"
+	    	"joconde_ref": "12345"
 	    }
 	},{
 	    "model": "iconolab.Image",
 	    "pk": 3,
 	    "fields": {
-	    	"image_guid" : "7384a6af-e87b-42b5-b24b-30cadb8adebc",
-	    	"name" : "euro_coin.jpg",
-			"media" : "uploads/euro_coin.jpg",
+	    	"image_guid" : "1a00cdd1-514e-4fd9-87ae-d9872b73143b",
+	    	"name" : "MIC.1.18.jpg",
+			"media" : "uploads/MIC.1.18.jpg",
 			"item": 3,
-			"height": 1200,
-			"width": 1200,
+			"height": 6208,
+			"width": 4704,
 			"created": "2016-03-23 14:13:44.913765+01"
 	    }
 	},{
@@ -141,15 +141,39 @@
 			"tag_count": 0
 	    }
 	},{
+	    "model": "iconolab.Collection",
+	    "pk": 2,
+	    "fields": {
+	    	"name": "stdie",
+	    	"verbose_name": "Musée Saint-Dié"
+	    }
+	},{
+	    "model": "iconolab.Item",
+	    "pk": 4,
+	    "fields": {
+	    	"collection": 2,
+	    	"item_guid": "46ea6b45-caa4-47d5-bd0b-f1f22410b68e"
+	    }
+	},{
+	    "model": "iconolab.ItemMetadata",
+	    "pk": 4,
+	    "fields": {
+	    	"item": 4,
+	    	"domain": "Médaille",
+	    	"title": "Médaille Athènes",
+	    	"description": "Médaille de bronze JO Athènes",
+	    	"joconde_ref": "1234567"
+	    }
+	},{
 	    "model": "iconolab.Image",
 	    "pk": 4,
 	    "fields": {
-	    	"image_guid" : "0ad0ae3e-06cf-4452-9d62-042471ddfdc3",
-	    	"name" : "euro_coin2.jpg",
-			"media" : "uploads/euro_coin2.jpg",
-			"item": 3,
-			"height": 1200,
-			"width": 1200,
+	    	"image_guid" : "7384a6af-e87b-42b5-b24b-30cadb8adebc",
+	    	"name" : "athene_medal1.jpg",
+			"media" : "uploads/athene_medal1.jpg",
+			"item": 4,
+			"height": 704,
+			"width": 704,
 			"created": "2016-03-23 14:13:44.913765+01"
 	    }
 	},{
@@ -164,32 +188,15 @@
 			"tag_count": 0
 	    }
 	},{
-	    "model": "iconolab.Item",
-	    "pk": 4,
-	    "fields": {
-	    	"collection": 1,
-	    	"item_guid": "de301942-e60e-4e46-83c2-967bf3838f47"
-	    }
-	},{
-	    "model": "iconolab.ItemMetadata",
-	    "pk": 4,
-	    "fields": {
-	    	"item": 4,
-	    	"domain": "dessin",
-	    	"title": "dessin format paysage",
-	    	"description": "",
-	    	"joconde_ref": "12345"
-	    }
-	},{
 	    "model": "iconolab.Image",
 	    "pk": 5,
 	    "fields": {
-	    	"image_guid" : "1a00cdd1-514e-4fd9-87ae-d9872b73143b",
-	    	"name" : "MIC.1.18.jpg",
-			"media" : "uploads/MIC.1.18.jpg",
+	    	"image_guid" : "0ad0ae3e-06cf-4452-9d62-042471ddfdc3",
+	    	"name" : "athene_medal2.jpg",
+			"media" : "uploads/athene_medal2.jpg",
 			"item": 4,
-			"height": 6208,
-			"width": 4704,
+			"height": 704,
+			"width": 704,
 			"created": "2016-03-23 14:13:44.913765+01"
 	    }
 	},{
--- a/src/iconolab/fixtures/demo_data_dump.json	Tue Jul 26 14:37:03 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-[{"model": "contenttypes.contenttype", "pk": 1, "fields": {"app_label": "admin", "model": "logentry"}}, {"model": "contenttypes.contenttype", "pk": 2, "fields": {"app_label": "auth", "model": "permission"}}, {"model": "contenttypes.contenttype", "pk": 3, "fields": {"app_label": "auth", "model": "group"}}, {"model": "contenttypes.contenttype", "pk": 4, "fields": {"app_label": "auth", "model": "user"}}, {"model": "contenttypes.contenttype", "pk": 5, "fields": {"app_label": "contenttypes", "model": "contenttype"}}, {"model": "contenttypes.contenttype", "pk": 6, "fields": {"app_label": "sessions", "model": "session"}}, {"model": "contenttypes.contenttype", "pk": 7, "fields": {"app_label": "sites", "model": "site"}}, {"model": "contenttypes.contenttype", "pk": 8, "fields": {"app_label": "django_comments", "model": "comment"}}, {"model": "contenttypes.contenttype", "pk": 9, "fields": {"app_label": "django_comments", "model": "commentflag"}}, {"model": "contenttypes.contenttype", "pk": 10, "fields": {"app_label": "django_comments_xtd", "model": "xtdcomment"}}, {"model": "contenttypes.contenttype", "pk": 11, "fields": {"app_label": "thumbnail", "model": "kvstore"}}, {"model": "contenttypes.contenttype", "pk": 12, "fields": {"app_label": "iconolab", "model": "tag"}}, {"model": "contenttypes.contenttype", "pk": 13, "fields": {"app_label": "iconolab", "model": "tagginginfo"}}, {"model": "contenttypes.contenttype", "pk": 14, "fields": {"app_label": "iconolab", "model": "collection"}}, {"model": "contenttypes.contenttype", "pk": 15, "fields": {"app_label": "iconolab", "model": "item"}}, {"model": "contenttypes.contenttype", "pk": 16, "fields": {"app_label": "iconolab", "model": "itemmetadata"}}, {"model": "contenttypes.contenttype", "pk": 17, "fields": {"app_label": "iconolab", "model": "imagestats"}}, {"model": "contenttypes.contenttype", "pk": 18, "fields": {"app_label": "iconolab", "model": "image"}}, {"model": "contenttypes.contenttype", "pk": 19, "fields": {"app_label": "iconolab", "model": "annotationstats"}}, {"model": "contenttypes.contenttype", "pk": 20, "fields": {"app_label": "iconolab", "model": "annotation"}}, {"model": "contenttypes.contenttype", "pk": 21, "fields": {"app_label": "iconolab", "model": "annotationrevision"}}, {"model": "contenttypes.contenttype", "pk": 22, "fields": {"app_label": "iconolab", "model": "iconolabcomment"}}, {"model": "contenttypes.contenttype", "pk": 23, "fields": {"app_label": "iconolab", "model": "metacategory"}}, {"model": "contenttypes.contenttype", "pk": 24, "fields": {"app_label": "iconolab", "model": "metacategoryinfo"}}, {"model": "contenttypes.contenttype", "pk": 25, "fields": {"app_label": "iconolab", "model": "commentattachement"}}, {"model": "sessions.session", "pk": "ers0g47t4uyve6folp18ud05dri6kzld", "fields": {"session_data": "Njg0ZTU4NjQ3M2FhNmNhYTQ4MWY3OWRhM2MzOTdhNmQxZDRkM2MyNzp7Il9hdXRoX3VzZXJfYmFja2VuZCI6ImRqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kIiwiX2F1dGhfdXNlcl9oYXNoIjoiMTE1YmNmZThiMzc5NGNmNWI3YThlODcwNTRhYWE5OGIzYzg0OTI2NyIsIl9hdXRoX3VzZXJfaWQiOiIyIn0=", "expire_date": "2016-07-15T15:22:32.636Z"}}, {"model": "sites.site", "pk": 1, "fields": {"domain": "example.com", "name": "example.com"}}, {"model": "iconolab.tag", "pk": 1, "fields": {"label": null, "link": "http://dbpedia.org/resource/Human", "description": null, "collection": null}}, {"model": "iconolab.tag", "pk": 2, "fields": {"label": null, "link": "http://dbpedia.org/resource/Mus\u00e9e_Ingres", "description": null, "collection": null}}, {"model": "iconolab.tag", "pk": 3, "fields": {"label": null, "link": "http://fr.dbpedia.org/resource/Lettre", "description": null, "collection": null}}, {"model": "iconolab.tag", "pk": 4, "fields": {"label": "fr.dbpedia.org/resource/Lettre", "link": "http://127.0.0.1:8000/frdbpediaorgresourcelettre", "description": "", "collection": 1}}, {"model": "iconolab.tag", "pk": 5, "fields": {"label": null, "link": "http://fr.dbpedia.org/resource/Planche", "description": null, "collection": null}}, {"model": "iconolab.tagginginfo", "pk": 1, "fields": {"revision": 1, "tag": 1, "accuracy": 4, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 2, "fields": {"revision": 2, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 3, "fields": {"revision": 3, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 4, "fields": {"revision": 3, "tag": 3, "accuracy": 2, "relevancy": 3}}, {"model": "iconolab.tagginginfo", "pk": 5, "fields": {"revision": 4, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 6, "fields": {"revision": 4, "tag": 3, "accuracy": 2, "relevancy": 3}}, {"model": "iconolab.tagginginfo", "pk": 7, "fields": {"revision": 5, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 8, "fields": {"revision": 5, "tag": 4, "accuracy": 1, "relevancy": 1}}, {"model": "iconolab.tagginginfo", "pk": 9, "fields": {"revision": 6, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 10, "fields": {"revision": 6, "tag": 3, "accuracy": 4, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 11, "fields": {"revision": 7, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 12, "fields": {"revision": 7, "tag": 5, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 13, "fields": {"revision": 7, "tag": 3, "accuracy": 4, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 14, "fields": {"revision": 8, "tag": 2, "accuracy": 3, "relevancy": 5}}, {"model": "iconolab.tagginginfo", "pk": 15, "fields": {"revision": 8, "tag": 3, "accuracy": 4, "relevancy": 5}}, {"model": "iconolab.collection", "pk": 1, "fields": {"name": "ingres", "description": ""}}, {"model": "iconolab.item", "pk": 1, "fields": {"collection": 1}}, {"model": "iconolab.item", "pk": 2, "fields": {"collection": 1}}, {"model": "iconolab.itemmetadata", "pk": 1, "fields": {"item": 1, "joconde_ref": "1", "domain": "dessin", "title": "", "description": ""}}, {"model": "iconolab.itemmetadata", "pk": 2, "fields": {"item": 2, "joconde_ref": "2", "domain": "dessin", "title": "", "description": ""}}, {"model": "iconolab.imagestats", "pk": 1, "fields": {"image": 1, "views_count": 0, "annotations_count": 0, "submitted_revisions_count": 0, "comments_count": 0, "folders_inclusion_count": 0, "tag_count": 0}}, {"model": "iconolab.imagestats", "pk": 2, "fields": {"image": 2, "views_count": 0, "annotations_count": 0, "submitted_revisions_count": 0, "comments_count": 0, "folders_inclusion_count": 0, "tag_count": 0}}, {"model": "iconolab.image", "pk": 1, "fields": {"image_guid": "26aec320-dcfe-4cbc-b912-6a6c13e8916e", "name": "MIC.8.10.jpg", "media": "uploads/MIC.8.10.jpg", "item": 1, "height": 2478, "width": 3744, "created": "2016-03-23T13:13:44.913Z"}}, {"model": "iconolab.image", "pk": 2, "fields": {"image_guid": "de734457-b600-4bed-bb60-a03d906b8e6e", "name": "MIC.1.7.jpg", "media": "uploads/MIC.1.7.jpg", "item": 2, "height": 4672, "width": 6171, "created": "2016-03-23T13:13:44.913Z"}}, {"model": "iconolab.annotationstats", "pk": 1, "fields": {"annotation": 1, "submitted_revisions_count": 1, "accepted_revisions_count": 1, "contributors_count": 1, "views_count": 0, "comments_count": 0, "tag_count": 0}}, {"model": "iconolab.annotationstats", "pk": 2, "fields": {"annotation": 2, "submitted_revisions_count": 1, "accepted_revisions_count": 1, "contributors_count": 1, "views_count": 0, "comments_count": 0, "tag_count": 0}}, {"model": "iconolab.metacategory", "pk": 1, "fields": {"collection": 1, "label": "Appel \u00e0 contribution"}}, {"model": "iconolab.metacategory", "pk": 2, "fields": {"collection": 1, "label": "Appel \u00e0 expert"}}, {"model": "iconolab.metacategory", "pk": 3, "fields": {"collection": 1, "label": "R\u00e9f\u00e9rence"}}, {"model": "iconolab.metacategory", "pk": 4, "fields": {"collection": 1, "label": "Accord"}}, {"model": "iconolab.metacategory", "pk": 5, "fields": {"collection": 1, "label": "D\u00e9saccord"}}, {"model": "iconolab.metacategoryinfo", "pk": 1, "fields": {"comment": 2, "metacategory": 1}}, {"model": "iconolab.metacategoryinfo", "pk": 2, "fields": {"comment": 2, "metacategory": 2}}, {"model": "auth.permission", "pk": 1, "fields": {"name": "Can add log entry", "content_type": 1, "codename": "add_logentry"}}, {"model": "auth.permission", "pk": 2, "fields": {"name": "Can change log entry", "content_type": 1, "codename": "change_logentry"}}, {"model": "auth.permission", "pk": 3, "fields": {"name": "Can delete log entry", "content_type": 1, "codename": "delete_logentry"}}, {"model": "auth.permission", "pk": 4, "fields": {"name": "Can add permission", "content_type": 2, "codename": "add_permission"}}, {"model": "auth.permission", "pk": 5, "fields": {"name": "Can change permission", "content_type": 2, "codename": "change_permission"}}, {"model": "auth.permission", "pk": 6, "fields": {"name": "Can delete permission", "content_type": 2, "codename": "delete_permission"}}, {"model": "auth.permission", "pk": 7, "fields": {"name": "Can add group", "content_type": 3, "codename": "add_group"}}, {"model": "auth.permission", "pk": 8, "fields": {"name": "Can change group", "content_type": 3, "codename": "change_group"}}, {"model": "auth.permission", "pk": 9, "fields": {"name": "Can delete group", "content_type": 3, "codename": "delete_group"}}, {"model": "auth.permission", "pk": 10, "fields": {"name": "Can add user", "content_type": 4, "codename": "add_user"}}, {"model": "auth.permission", "pk": 11, "fields": {"name": "Can change user", "content_type": 4, "codename": "change_user"}}, {"model": "auth.permission", "pk": 12, "fields": {"name": "Can delete user", "content_type": 4, "codename": "delete_user"}}, {"model": "auth.permission", "pk": 13, "fields": {"name": "Can add content type", "content_type": 5, "codename": "add_contenttype"}}, {"model": "auth.permission", "pk": 14, "fields": {"name": "Can change content type", "content_type": 5, "codename": "change_contenttype"}}, {"model": "auth.permission", "pk": 15, "fields": {"name": "Can delete content type", "content_type": 5, "codename": "delete_contenttype"}}, {"model": "auth.permission", "pk": 16, "fields": {"name": "Can add session", "content_type": 6, "codename": "add_session"}}, {"model": "auth.permission", "pk": 17, "fields": {"name": "Can change session", "content_type": 6, "codename": "change_session"}}, {"model": "auth.permission", "pk": 18, "fields": {"name": "Can delete session", "content_type": 6, "codename": "delete_session"}}, {"model": "auth.permission", "pk": 19, "fields": {"name": "Can add site", "content_type": 7, "codename": "add_site"}}, {"model": "auth.permission", "pk": 20, "fields": {"name": "Can change site", "content_type": 7, "codename": "change_site"}}, {"model": "auth.permission", "pk": 21, "fields": {"name": "Can delete site", "content_type": 7, "codename": "delete_site"}}, {"model": "auth.permission", "pk": 22, "fields": {"name": "Can add comment", "content_type": 8, "codename": "add_comment"}}, {"model": "auth.permission", "pk": 23, "fields": {"name": "Can change comment", "content_type": 8, "codename": "change_comment"}}, {"model": "auth.permission", "pk": 24, "fields": {"name": "Can delete comment", "content_type": 8, "codename": "delete_comment"}}, {"model": "auth.permission", "pk": 25, "fields": {"name": "Can moderate comments", "content_type": 8, "codename": "can_moderate"}}, {"model": "auth.permission", "pk": 26, "fields": {"name": "Can add comment flag", "content_type": 9, "codename": "add_commentflag"}}, {"model": "auth.permission", "pk": 27, "fields": {"name": "Can change comment flag", "content_type": 9, "codename": "change_commentflag"}}, {"model": "auth.permission", "pk": 28, "fields": {"name": "Can delete comment flag", "content_type": 9, "codename": "delete_commentflag"}}, {"model": "auth.permission", "pk": 29, "fields": {"name": "Can add xtd comment", "content_type": 10, "codename": "add_xtdcomment"}}, {"model": "auth.permission", "pk": 30, "fields": {"name": "Can change xtd comment", "content_type": 10, "codename": "change_xtdcomment"}}, {"model": "auth.permission", "pk": 31, "fields": {"name": "Can delete xtd comment", "content_type": 10, "codename": "delete_xtdcomment"}}, {"model": "auth.permission", "pk": 32, "fields": {"name": "Can add kv store", "content_type": 11, "codename": "add_kvstore"}}, {"model": "auth.permission", "pk": 33, "fields": {"name": "Can change kv store", "content_type": 11, "codename": "change_kvstore"}}, {"model": "auth.permission", "pk": 34, "fields": {"name": "Can delete kv store", "content_type": 11, "codename": "delete_kvstore"}}, {"model": "auth.permission", "pk": 35, "fields": {"name": "Can add tag", "content_type": 12, "codename": "add_tag"}}, {"model": "auth.permission", "pk": 36, "fields": {"name": "Can change tag", "content_type": 12, "codename": "change_tag"}}, {"model": "auth.permission", "pk": 37, "fields": {"name": "Can delete tag", "content_type": 12, "codename": "delete_tag"}}, {"model": "auth.permission", "pk": 38, "fields": {"name": "Can add tagging info", "content_type": 13, "codename": "add_tagginginfo"}}, {"model": "auth.permission", "pk": 39, "fields": {"name": "Can change tagging info", "content_type": 13, "codename": "change_tagginginfo"}}, {"model": "auth.permission", "pk": 40, "fields": {"name": "Can delete tagging info", "content_type": 13, "codename": "delete_tagginginfo"}}, {"model": "auth.permission", "pk": 41, "fields": {"name": "Can add collection", "content_type": 14, "codename": "add_collection"}}, {"model": "auth.permission", "pk": 42, "fields": {"name": "Can change collection", "content_type": 14, "codename": "change_collection"}}, {"model": "auth.permission", "pk": 43, "fields": {"name": "Can delete collection", "content_type": 14, "codename": "delete_collection"}}, {"model": "auth.permission", "pk": 44, "fields": {"name": "Can add item", "content_type": 15, "codename": "add_item"}}, {"model": "auth.permission", "pk": 45, "fields": {"name": "Can change item", "content_type": 15, "codename": "change_item"}}, {"model": "auth.permission", "pk": 46, "fields": {"name": "Can delete item", "content_type": 15, "codename": "delete_item"}}, {"model": "auth.permission", "pk": 47, "fields": {"name": "Can add item metadata", "content_type": 16, "codename": "add_itemmetadata"}}, {"model": "auth.permission", "pk": 48, "fields": {"name": "Can change item metadata", "content_type": 16, "codename": "change_itemmetadata"}}, {"model": "auth.permission", "pk": 49, "fields": {"name": "Can delete item metadata", "content_type": 16, "codename": "delete_itemmetadata"}}, {"model": "auth.permission", "pk": 50, "fields": {"name": "Can add image stats", "content_type": 17, "codename": "add_imagestats"}}, {"model": "auth.permission", "pk": 51, "fields": {"name": "Can change image stats", "content_type": 17, "codename": "change_imagestats"}}, {"model": "auth.permission", "pk": 52, "fields": {"name": "Can delete image stats", "content_type": 17, "codename": "delete_imagestats"}}, {"model": "auth.permission", "pk": 53, "fields": {"name": "Can add image", "content_type": 18, "codename": "add_image"}}, {"model": "auth.permission", "pk": 54, "fields": {"name": "Can change image", "content_type": 18, "codename": "change_image"}}, {"model": "auth.permission", "pk": 55, "fields": {"name": "Can delete image", "content_type": 18, "codename": "delete_image"}}, {"model": "auth.permission", "pk": 56, "fields": {"name": "Can add annotation stats", "content_type": 19, "codename": "add_annotationstats"}}, {"model": "auth.permission", "pk": 57, "fields": {"name": "Can change annotation stats", "content_type": 19, "codename": "change_annotationstats"}}, {"model": "auth.permission", "pk": 58, "fields": {"name": "Can delete annotation stats", "content_type": 19, "codename": "delete_annotationstats"}}, {"model": "auth.permission", "pk": 59, "fields": {"name": "Can add annotation", "content_type": 20, "codename": "add_annotation"}}, {"model": "auth.permission", "pk": 60, "fields": {"name": "Can change annotation", "content_type": 20, "codename": "change_annotation"}}, {"model": "auth.permission", "pk": 61, "fields": {"name": "Can delete annotation", "content_type": 20, "codename": "delete_annotation"}}, {"model": "auth.permission", "pk": 62, "fields": {"name": "Can add annotation revision", "content_type": 21, "codename": "add_annotationrevision"}}, {"model": "auth.permission", "pk": 63, "fields": {"name": "Can change annotation revision", "content_type": 21, "codename": "change_annotationrevision"}}, {"model": "auth.permission", "pk": 64, "fields": {"name": "Can delete annotation revision", "content_type": 21, "codename": "delete_annotationrevision"}}, {"model": "auth.permission", "pk": 65, "fields": {"name": "Can add comment", "content_type": 22, "codename": "add_iconolabcomment"}}, {"model": "auth.permission", "pk": 66, "fields": {"name": "Can change comment", "content_type": 22, "codename": "change_iconolabcomment"}}, {"model": "auth.permission", "pk": 67, "fields": {"name": "Can delete comment", "content_type": 22, "codename": "delete_iconolabcomment"}}, {"model": "auth.permission", "pk": 68, "fields": {"name": "Can moderate comments", "content_type": 22, "codename": "can_moderate"}}, {"model": "auth.permission", "pk": 69, "fields": {"name": "Can add meta category", "content_type": 23, "codename": "add_metacategory"}}, {"model": "auth.permission", "pk": 70, "fields": {"name": "Can change meta category", "content_type": 23, "codename": "change_metacategory"}}, {"model": "auth.permission", "pk": 71, "fields": {"name": "Can delete meta category", "content_type": 23, "codename": "delete_metacategory"}}, {"model": "auth.permission", "pk": 72, "fields": {"name": "Can add meta category info", "content_type": 24, "codename": "add_metacategoryinfo"}}, {"model": "auth.permission", "pk": 73, "fields": {"name": "Can change meta category info", "content_type": 24, "codename": "change_metacategoryinfo"}}, {"model": "auth.permission", "pk": 74, "fields": {"name": "Can delete meta category info", "content_type": 24, "codename": "delete_metacategoryinfo"}}, {"model": "auth.permission", "pk": 75, "fields": {"name": "Can add comment attachement", "content_type": 25, "codename": "add_commentattachement"}}, {"model": "auth.permission", "pk": 76, "fields": {"name": "Can change comment attachement", "content_type": 25, "codename": "change_commentattachement"}}, {"model": "auth.permission", "pk": 77, "fields": {"name": "Can delete comment attachement", "content_type": 25, "codename": "delete_commentattachement"}}, {"model": "auth.user", "pk": 1, "fields": {"password": "pbkdf2_sha256$24000$4t81p9toYpfc$ufZAWaUcF51dpNqHscABIoW7UyoXxYDCRlKFI87vQJM=", "last_login": "2016-07-01T13:33:03.880Z", "is_superuser": false, "username": "contributeur1", "first_name": "", "last_name": "", "email": "", "is_staff": false, "is_active": true, "date_joined": "2016-07-01T13:32:26.158Z", "groups": [], "user_permissions": []}}, {"model": "auth.user", "pk": 2, "fields": {"password": "pbkdf2_sha256$24000$b9CPP5bLU4FM$1IYIBS5y2CIEFV9jHdTdZjvj59hzx+yH5Akc5LsHo+g=", "last_login": "2016-07-01T15:22:32.633Z", "is_superuser": false, "username": "contributeur2", "first_name": "", "last_name": "", "email": "", "is_staff": false, "is_active": true, "date_joined": "2016-07-01T13:32:26.164Z", "groups": [], "user_permissions": []}}, {"model": "django_comments.comment", "pk": 1, "fields": {"content_type": 20, "object_pk": "1", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "Annotation sur la partie de la planche repr\u00e9sentant un homme", "submit_date": "2016-07-01T13:34:02.483Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 2, "fields": {"content_type": 20, "object_pk": "1", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "Est-ce que je peux avoir quelques retours sur cette annotation?", "submit_date": "2016-07-01T13:36:03.256Z", "ip_address": "127.0.0.1", "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 3, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "Cr\u00e9ation d'une annotation sur la partie contenant une lettre", "submit_date": "2016-07-01T14:11:01.851Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 4, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "Ajout d'un tag", "submit_date": "2016-07-01T14:54:04.000Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 5, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "Ajout d'un tag", "submit_date": "2016-07-01T14:55:43.929Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 6, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "Ajout d'un tag", "submit_date": "2016-07-01T15:01:21.951Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 7, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "ajout tag", "submit_date": "2016-07-01T15:03:54.487Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 8, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 1, "user_name": "contributeur1", "user_email": "", "user_url": "", "comment": "travail sur les tags", "submit_date": "2016-07-01T15:22:09.861Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments.comment", "pk": 9, "fields": {"content_type": 20, "object_pk": "2", "site": 1, "user": 2, "user_name": "contributeur2", "user_email": "", "user_url": "", "comment": "Je propose d'enlever le tag planche", "submit_date": "2016-07-01T15:25:30.093Z", "ip_address": null, "is_public": true, "is_removed": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 1, "fields": {"thread_id": 1, "parent_id": 1, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 2, "fields": {"thread_id": 2, "parent_id": 2, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 3, "fields": {"thread_id": 3, "parent_id": 3, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 4, "fields": {"thread_id": 4, "parent_id": 4, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 5, "fields": {"thread_id": 5, "parent_id": 5, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 6, "fields": {"thread_id": 6, "parent_id": 6, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 7, "fields": {"thread_id": 7, "parent_id": 7, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 8, "fields": {"thread_id": 8, "parent_id": 8, "level": 0, "order": 1, "followup": false}}, {"model": "django_comments_xtd.xtdcomment", "pk": 9, "fields": {"thread_id": 9, "parent_id": 9, "level": 0, "order": 1, "followup": false}}, {"model": "iconolab.annotation", "pk": 1, "fields": {"annotation_guid": "a1c22e8b-5e08-40d9-8111-33c5f0a85d87", "image": 2, "source_revision": null, "current_revision": 1, "author": 1, "created": "2016-07-01T13:34:02.459Z"}}, {"model": "iconolab.annotation", "pk": 2, "fields": {"annotation_guid": "9c15fe09-f950-4047-a05b-45f1e483cc55", "image": 2, "source_revision": null, "current_revision": 7, "author": 1, "created": "2016-07-01T14:11:01.824Z"}}, {"model": "iconolab.annotationrevision", "pk": 1, "fields": {"revision_guid": "9db82eea-d66a-42d9-8ada-83b839fa9e3e", "annotation": 1, "parent_revision": null, "merge_parent_revision": null, "author": 1, "title": "Dessin d'homme", "description": "Partie de la planche avec un dessin d'homme", "fragment": "M36.303630363036305,2.125C36.303630363036305,2.125,78.87788778877888,2,78.87788778877888,2C78.87788778877888,2,76.23762376237623,86.875,76.23762376237623,86.875C76.23762376237623,86.875,33.993399339933994,85.875,33.993399339933994,85.875 Z;FREE", "state": 1, "created": "2016-07-01T13:34:02.461Z"}}, {"model": "iconolab.annotationrevision", "pk": 2, "fields": {"revision_guid": "3961d03f-2c49-4a4f-85b3-ba5ab2c0a275", "annotation": 2, "parent_revision": null, "merge_parent_revision": null, "author": 1, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375 Z;FREE", "state": 1, "created": "2016-07-01T14:11:01.826Z"}}, {"model": "iconolab.annotationrevision", "pk": 3, "fields": {"revision_guid": "6f1d2c44-30ea-4db4-a60a-b16d1da7e255", "annotation": 2, "parent_revision": 2, "merge_parent_revision": null, "author": 1, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375C31.51815181518152,58.375,3.4653465346534653,58.75,3.4653465346534653,58.75 Z;FREE", "state": 1, "created": "2016-07-01T14:54:03.985Z"}}, {"model": "iconolab.annotationrevision", "pk": 4, "fields": {"revision_guid": "7b2d3bcc-1d2d-4696-bbb2-78c2f6349777", "annotation": 2, "parent_revision": 3, "merge_parent_revision": null, "author": 1, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375C31.51815181518152,58.375,3.4653465346534653,58.75,3.4653465346534653,58.75 Z;FREE", "state": 1, "created": "2016-07-01T14:55:43.909Z"}}, {"model": "iconolab.annotationrevision", "pk": 5, "fields": {"revision_guid": "ab3d9317-51ac-4c47-bcf0-e7ea2319d781", "annotation": 2, "parent_revision": 4, "merge_parent_revision": null, "author": 1, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375C31.51815181518152,58.375,3.4653465346534653,58.75,3.4653465346534653,58.75 Z;FREE", "state": 1, "created": "2016-07-01T15:01:21.927Z"}}, {"model": "iconolab.annotationrevision", "pk": 6, "fields": {"revision_guid": "ce738038-ffb9-4b61-acb5-20fc23d0abbe", "annotation": 2, "parent_revision": 5, "merge_parent_revision": null, "author": 1, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375C31.51815181518152,58.375,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75 Z;FREE", "state": 1, "created": "2016-07-01T15:03:54.455Z"}}, {"model": "iconolab.annotationrevision", "pk": 7, "fields": {"revision_guid": "67fd4d04-ca32-48cb-82bc-4708b4a897d3", "annotation": 2, "parent_revision": 6, "merge_parent_revision": null, "author": 1, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375C31.51815181518152,58.375,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75 Z;FREE", "state": 1, "created": "2016-07-01T15:22:09.837Z"}}, {"model": "iconolab.annotationrevision", "pk": 8, "fields": {"revision_guid": "0a8899ee-48e2-43bd-9143-da6852d4e23e", "annotation": 2, "parent_revision": 7, "merge_parent_revision": null, "author": 2, "title": "Lettre", "description": "Cette partie de l'image contient une lettre", "fragment": "M3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,2.9702970297029703,91,2.9702970297029703,91C2.9702970297029703,91,31.353135313531354,91.375,31.353135313531354,91.375C31.353135313531354,91.375,31.51815181518152,58.375,31.51815181518152,58.375C31.51815181518152,58.375,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75C3.4653465346534653,58.75,3.4653465346534653,58.75,3.4653465346534653,58.75 Z;FREE", "state": 0, "created": "2016-07-01T15:25:30.078Z"}}, {"model": "iconolab.iconolabcomment", "pk": 1, "fields": {"revision": 1}}, {"model": "iconolab.iconolabcomment", "pk": 2, "fields": {"revision": null}}, {"model": "iconolab.iconolabcomment", "pk": 3, "fields": {"revision": 2}}, {"model": "iconolab.iconolabcomment", "pk": 4, "fields": {"revision": 3}}, {"model": "iconolab.iconolabcomment", "pk": 5, "fields": {"revision": 4}}, {"model": "iconolab.iconolabcomment", "pk": 6, "fields": {"revision": 5}}, {"model": "iconolab.iconolabcomment", "pk": 7, "fields": {"revision": 6}}, {"model": "iconolab.iconolabcomment", "pk": 8, "fields": {"revision": 7}}, {"model": "iconolab.iconolabcomment", "pk": 9, "fields": {"revision": 8}}]
\ No newline at end of file
--- a/src/iconolab/fixtures/dev_initial_data.json	Tue Jul 26 14:37:03 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-[
-	{
-	    "model": "auth.User",
-	    "pk": 1,
-	    "fields": {
-	    	"username": "contributeur1",
-	    	"password": "pbkdf2_sha256$24000$4t81p9toYpfc$ufZAWaUcF51dpNqHscABIoW7UyoXxYDCRlKFI87vQJM="   
-	    }
-	},{
-	    "model": "auth.User",
-	    "pk": 2,
-	    "fields": {
-	    	"username": "contributeur2",
-	    	"password": "pbkdf2_sha256$24000$b9CPP5bLU4FM$1IYIBS5y2CIEFV9jHdTdZjvj59hzx+yH5Akc5LsHo+g="
-	    }
-	},{
-	    "model": "iconolab.Collection",
-	    "pk": 1,
-	    "fields": {
-	    	"name": "ingres"
-	    }
-	},{
-	    "model": "iconolab.Item",
-	    "pk": 1,
-	    "fields": {
-	    	"collection": 1
-	    }
-	},{
-	    "model": "iconolab.ItemMetadata",
-	    "pk": 1,
-	    "fields": {
-	    	"item": 1,
-	    	"domain": "peinture",
-	    	"title": "Napoléon!",
-	    	"description": "une peinture de Napoléon",
-	    	"joconde_ref": "1234"
-	    }
-	},{
-	    "model": "iconolab.Image",
-	    "pk": 1,
-	    "fields": {
-	    	"image_guid" : "26aec320-dcfe-4cbc-b912-6a6c13e8916e",
-	    	"name" : "napoleon.jpg",
-			"media" : "uploads/napoleon.jpg",
-			"item": 1,
-			"height": 1400,
-			"width": 864,
-			"created": "2016-03-23 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.ImageStats",
-	    "pk": 1,
-	    "fields": {
-	    	"image": 1,
-	    	"annotations_count": 1,
-			"submitted_revisions_count": 1,
-			"comments_count": 0,
-			"folders_inclusion_count": 0,
-			"tag_count": 0
-	    }
-	},{
-	    "model": "iconolab.Annotation",
-	    "pk": 1,
-	    "fields": {
-	    	"annotation_guid": "34ae39ae-a9a2-4736-bc59-ba6f00e37f52",
-			"image": 1,
-			"current_revision" : 1,
-			"author": 1,
-			"created": "2016-03-24 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.Annotation",
-	    "pk": 2,
-	    "fields": {
-	    	"annotation_guid": "34ae39ae-a9a2-4736-bc59-ba6f00e37f51",
-			"image": 1,
-			"current_revision" : 2,
-			"author": 1,
-			"created": "2016-03-24 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.Annotation",
-	    "pk": 3,
-	    "fields": {
-	    	"annotation_guid": "34ae39ae-a9a2-4736-bc59-ba6f00e37f53",
-			"image": 1,
-			"current_revision" : 3,
-			"author": 1,
-			"created": "2016-03-24 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.AnnotationStats",
-	    "pk": 1,
-	    "fields": {
-	    	"annotation": 1,
-	    	"submitted_revisions_count": 1,
-			"accepted_revisions_count": 1,
-			"contributors_count": 1,
-			"views_count": 0,
-			"comments_count": 0,
-			"tag_count": 0
-	    }
-	},{
-	    "model": "iconolab.AnnotationRevision",
-	    "pk": 1,
-	    "fields": {
-			"annotation": 1,
-	    	"revision_guid": "b14c8382-b136-42d0-abe1-b0a94f60d9d0",
-			"author": 1,
-			"title": "Annotation sur Napoléon!",
-			"description": "Description exemple",
-	    	"fragment":"M26.720647773279353,23.625C26.720647773279353,23.625,40.48582995951417,26.375,40.48582995951417,26.375C40.48582995951417,26.375,42.71255060728745,26.125,42.71255060728745,26.125C42.71255060728745,26.125,43.11740890688259,21.625,43.11740890688259,21.625C43.11740890688259,21.625,42.10526315789473,16.875,42.10526315789473,16.875C42.10526315789473,16.875,47.16599190283401,14.375,47.16599190283401,14.375C47.16599190283401,14.375,52.63157894736842,14.5,52.63157894736842,14.5C52.63157894736842,14.5,57.28744939271255,16.5,57.28744939271255,16.5C57.28744939271255,16.5,59.10931174089069,18.875,59.10931174089069,18.875C59.10931174089069,18.875,57.48987854251012,20.75,57.48987854251012,20.75C57.48987854251012,20.75,59.311740890688256,22.625,59.311740890688256,22.625C59.311740890688256,22.625,58.502024291497975,26,58.502024291497975,26C58.502024291497975,26,65.58704453441295,27.375,65.58704453441295,27.375C65.58704453441295,27.375,72.06477732793522,27.5,72.06477732793522,27.5C72.06477732793522,27.5,80.76923076923077,13.5,80.76923076923077,13.5C80.76923076923077,13.5,85.22267206477733,13.5,85.22267206477733,13.5C85.22267206477733,13.5,82.5910931174089,16.875,82.5910931174089,16.875C82.5910931174089,16.875,79.55465587044534,22.125,79.55465587044534,22.125C79.55465587044534,22.125,75.91093117408907,26.875,75.91093117408907,26.875C75.91093117408907,26.875,76.3157894736842,30,76.3157894736842,30C76.3157894736842,30,76.3157894736842,33.125,76.3157894736842,33.125C76.3157894736842,33.125,74.2914979757085,35.375,74.2914979757085,35.375C74.2914979757085,35.375,69.4331983805668,37.375,69.4331983805668,37.375C69.4331983805668,37.375,65.1821862348178,40.125,65.1821862348178,40.125C65.1821862348178,40.125,54.453441295546554,41.375,54.453441295546554,41.375C54.453441295546554,41.375,44.534412955465584,40.5,44.534412955465584,40.5C44.534412955465584,40.5,34.61538461538461,37.375,34.61538461538461,37.375C34.61538461538461,37.375,29.757085020242915,33.625,29.757085020242915,33.625C29.757085020242915,33.625,27.327935222672064,29.5,27.327935222672064,29.5C27.327935222672064,29.5,26.720647773279353,23.625,26.720647773279353,23.625Z",
-			"state": 1,
-			"created": "2016-03-25 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.AnnotationRevision",
-	    "pk": 2,
-	    "fields": {
-			"annotation": 2,
-	    	"revision_guid": "b14c8382-b136-42d0-abe1-b0a94f60d9d1",
-			"author": 1,
-			"title": "Une autre annotation sur Napoléon!",
-			"description": "ma nouvelle description",
-			"fragment": "M41.49797570850203,17.375C41.49797570850203,17.375,46.35627530364373,14.25,46.35627530364373,14.25C46.35627530364373,14.25,55.87044534412955,13.625,55.87044534412955,13.625C55.87044534412955,13.625,61.94331983805668,21.375,61.94331983805668,21.375C61.94331983805668,21.375,59.10931174089069,26.875,59.10931174089069,26.875C59.10931174089069,26.875,44.534412955465584,27.375,44.534412955465584,27.375C44.534412955465584,27.375,40.48582995951418,23.875,40.48582995951418,23.875C40.48582995951418,23.875,41.49797570850203,17.375,41.49797570850203,17.375 Z;FREE",
-			"state": 1,
-			"created": "2016-03-25 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.AnnotationRevision",
-	    "pk": 3,
-	    "fields": {
-			"annotation": 3,
-	    	"revision_guid": "b14c8382-b136-42d0-abe1-b0a94f60d9d2",
-			"author": 1,
-			"title": "Ceci est ma nouvelle annotation",
-			"description": "C'est une autre description",
-			"fragment": "M12.955465587044534,23.625C12.955465587044534,23.625,9.7165991902834,17.75,9.7165991902834,17.75C9.7165991902834,17.75,4.65587044534413,12.125,4.65587044534413,12.125C4.65587044534413,12.125,5.870445344129554,4.25,5.870445344129554,4.25C5.870445344129554,4.25,6.680161943319838,1.125,6.680161943319838,1.125C6.680161943319838,1.125,12.753036437246964,1.625,12.753036437246964,1.625C12.753036437246964,1.625,13.157894736842104,9.375,13.157894736842104,9.375C13.157894736842104,9.375,16.194331983805668,13.625,16.194331983805668,13.625C16.194331983805668,13.625,22.267206477732792,17.125,22.267206477732792,17.125C22.267206477732792,17.125,28.74493927125506,22,28.74493927125506,22C28.74493927125506,22,24.493927125506072,25.75,24.493927125506072,25.75C24.493927125506072,25.75,12.955465587044534,23.625,12.955465587044534,23.625 Z;FREE",
-			"state": 1,
-			"created": "2016-03-25 14:13:44.913765+01"
-	    }
-	},{
-	    "model": "iconolab.MetaCategory",
-	    "pk": 1,
-	    "fields": {
-	    	"collection": 1,
-	    	"label": "Appel à contribution"
-	    }
-	},{
-	    "model": "iconolab.MetaCategory",
-	    "pk": 2,
-	    "fields": {
-	    	"collection": 1,
-	    	"label": "Trouble"
-	    }
-	}
-]
\ No newline at end of file
--- a/src/iconolab/models.py	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/models.py	Tue Jul 26 14:37:43 2016 +0200
@@ -186,13 +186,14 @@
     # Call when we're validating an awaiting revision whose parent isn't the current revision OR IF IT WAS CHANGED BY THE ANNOTATION AUTHOR
     @transaction.atomic
     def merge_existing_revision(self, title, description, fragment, tags, revision_to_merge):
-        merged_revision = self.make_new_revision(author=self.author, title=title, description=description, fragment=fragment, tags=tags)
+        merged_revision = self.make_new_revision(author=self.author, title=title, description=description, fragment=fragment, tags_json=tags)
         merged_revision.merge_parent_revision = revision_to_merge
         merged_revision.save()
         revision_to_merge.state = AnnotationRevision.STUDIED
         revision_to_merge.save()
         self.current_revision=merged_revision
         self.save()
+        return merged_revision
 
 
 class AnnotationRevision(models.Model):
--- a/src/iconolab/templates/iconolab/change_annotation.html	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/templates/iconolab/change_annotation.html	Tue Jul 26 14:37:43 2016 +0200
@@ -100,7 +100,7 @@
                     </div>
                     {% endif %}
                     {% csrf_token %}
-                    <fieldset class="form-group {% if form.title.errors %}has-errors{% endif %}">
+                    <fieldset class="form-group {% if form.title.errors %}has-error{% endif %}">
                       <label class="control-label" for="id_{{ form.title.name }}">{{ form.title.label }}</label>
                       {% if form.title.errors %}
                         <div class="alert alert-danger" role="alert">
@@ -113,7 +113,7 @@
                         name="{{ form.title.name }}"
                         id="id_{{ form.title.name }}" value="{% if form.title.value %}{{ form.title.value}}{% endif %}">
                     </fieldset>
-                    <fieldset class="form-group {% if form.description.errors %}has-errors{% endif %}">
+                    <fieldset class="form-group {% if form.description.errors %}has-error{% endif %}">
                       <label class="control-label" for="id_{{ form.description.name }}">{{ form.description.label }}</label>
                       {% if form.description.errors %}
                         <div class="alert alert-danger" role="alert">
@@ -131,7 +131,7 @@
                       <typeahead :tags="{{ tags_data  }}"></typeahead>
                     </fieldset>
 
-                    <fieldset class="form-group">
+                    <fieldset class="form-group {% if form.comment.errors %}has-error{% endif %}">
                       <label class="control-label" for="id_{{ form.comment.name }}">{{ form.comment.label }}</label>
                       {% if form.comment.errors %}
                         <div class="alert alert-danger" role="alert">
--- a/src/iconolab/templates/iconolab/detail_annotation.html	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/templates/iconolab/detail_annotation.html	Tue Jul 26 14:37:43 2016 +0200
@@ -97,7 +97,7 @@
                       {% endif %}
                     {% endif %} revision-link"> 
                     {% if comment.revision.author == annotation.author %}
-                      Voir révision
+                      Voir révision {% if comment.revision.merge_parent_revision %}(fusion){% endif %}
                     {% else %}
                       Voir proposition 
                       {% if comment.revision.state == 0 %}
--- a/src/iconolab/templates/iconolab/detail_item.html	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/templates/iconolab/detail_item.html	Tue Jul 26 14:37:43 2016 +0200
@@ -9,7 +9,7 @@
 {% block content %}
 <div class="row">
 	<div class="col-md-6">
-        {% for image in item.images.all %}
+        {% for image in item.images.all|dictsort:"pk" %}
           <div id="img-{{image.image_guid}}" class="item-detail-image-block {% if forloop.first %}selected{% endif %}">
     		{% thumbnail image.media "500x500" crop=False as im %}
   			   <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
@@ -45,20 +45,21 @@
 
 {% block footer_js %}
 <script>
-	$(".item-detail-image-block:not(.selected)").hide()
-	$(".image-annotations-list").hide()
+	$(".item-detail-image-block:not(.selected)").hide();
+	$(".image-annotations-list").hide();
 	var initialSelectedID = /img\-([0-9a-z\-]+)/.exec($(".item-detail-image-block.selected").attr("id"))[1];
-	$(".item-image-thumbnail#thumb-"+initialSelectedID).hide()
-	$(".image-annotations-list#annotations-"+initialSelectedID).show()
+	$(".item-image-thumbnail#thumb-"+initialSelectedID).hide();
+	$(".image-annotations-list#annotations-"+initialSelectedID).show();
 	$(".item-image-thumbnail").on("click", function(e){
 	    imageID = /thumb\-([0-9a-z\-]+)/.exec($(this).attr("id"))[1];
-	    $(".item-detail-image-block").hide()
-	    $(".item-detail-image-block#img-"+imageID).show()
-	    $(".item-detail-image-block#img-"+imageID).addClass("selected")
-	    $(".item-image-thumbnail").show()
-		$(".item-image-thumbnail#thumb-"+imageID).hide()
-		$(".image-annotations-list").hide()
-		$(".image-annotations-list#annotations-"+imageID).show()
+	    $(".item-detail-image-block").hide();
+	    $(".item-detail-image-block").removeClass("selected");
+	    $(".item-detail-image-block#img-"+imageID).show();
+	    $(".item-detail-image-block#img-"+imageID).addClass("selected");
+	    $(".item-image-thumbnail").show();
+		$(".item-image-thumbnail#thumb-"+imageID).hide();
+		$(".image-annotations-list").hide();
+		$(".image-annotations-list#annotations-"+imageID).show();
 	})
 </script>
 {% endblock %}
\ No newline at end of file
--- a/src/iconolab/templates/iconolab/detail_revision.html	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/templates/iconolab/detail_revision.html	Tue Jul 26 14:37:43 2016 +0200
@@ -27,7 +27,8 @@
                 <br>
                 <a href="{% url 'image_detail' collection_name image_guid %}"><i class="fa fa-picture-o" aria-hidden="true"></i> Revoir l'image </a><br>
                 <a href="{% url 'annotation_detail' collection_name image_guid annotation_guid  %}"><i class="fa fa-reply" aria-hidden="true"></i> Retour sur l'annotation</a><br>
-                {% if revision.parent_revision %}<a href="{% url 'revision_detail' collection_name image_guid annotation_guid revision.parent_revision.revision_guid %}"><i class="fa fa-history" aria-hidden="true"></i> Voir révision précédente</a><br>{% endif %}
+                {% if revision.parent_revision %}<a href="{% url 'revision_detail' collection_name image_guid annotation_guid revision.parent_revision.revision_guid %}"><i class="fa fa-history" aria-hidden="true"></i> Voir {% if revision.merge_parent_revision %}première {% endif %}révision précédente</a><br>{% endif %}
+                {% if revision.merge_parent_revision %}<a href="{% url 'revision_detail' collection_name image_guid annotation_guid revision.merge_parent_revision.revision_guid %}"><i class="fa fa-history" aria-hidden="true"></i> Voir seconde révision précédente</a><br>{% endif %}
 			</div>
 			<div id="revision-detail" class='col-xs-6' style="">
                 <h4>Annotation révisée par {{ revision.author.username}} </h4>
--- a/src/iconolab/templates/iconolab/merge_revision.html	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/templates/iconolab/merge_revision.html	Tue Jul 26 14:37:43 2016 +0200
@@ -33,7 +33,7 @@
         &nbsp;
         <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
         <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
-        <typeahead :tags="{{ current_tags_data  }}"></typeahead>
+        <typeahead id="merge-current-revision-tags" :tags="{{ current_tags_data  }}"></typeahead>
       </fieldset>
       <label>Image: </label><br>
       <label>Commentaire de création: </label>
@@ -51,6 +51,8 @@
     </h4>
     <div id="merge-parent-revision-alert" class="alert alert-warning revision-info-alert">
       Cette révision est la révision à partir de laquelle l'annotation proposée a été créée.
+      
+      {% if parent_revision.revision_guid == current_revision.revision_guid %}<br><b>Note:  Dans ce cas précis, cette révision est identique à la révision courante. </b>{% endif %}
     </div>
     <form class="form">
       <fieldset class="form-group">
@@ -67,19 +69,19 @@
         &nbsp;
         <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
         <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
-        <textarea class="form-control"
-          id="merge-current-revision-description" readonly="readonly">{{ parent_revision.description}}</textarea>
+        <textarea id="merge-parent-revision-description" class="form-control"
+           readonly="readonly">{{ parent_revision.description}}</textarea>
       </fieldset>
       <fieldset class="form-group">
         <label class="control-label">Tags: </label>
         &nbsp;
         <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
         <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
-        <typeahead :tags="{{ current_tags_data  }}"></typeahead>
+        <typeahead id="parent-comment" :tags="{{ current_tags_data  }}"></typeahead>
       </fieldset>
       <label>Image: </label><br>
       <label>Commentaire de création: </label>
-      <div class="alert alert-info" role="alert">
+      <div id="merge-parent-revision-comment" class="alert alert-info" role="alert">
         <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
         <span class="sr-only">Info:</span>
           <b>Révision par {{ parent_revision.author }} <br> le {{ parent_revision.created|date:"d/m/Y" }} à {{ parent_revision.created|time:"H:i" }}</b><br>
@@ -88,8 +90,75 @@
     </form>
   </div>
   <div class="col-md-4">
-    <h3>Révision proposée</h3>
-    {{ proposal_revision.title }} - {{ proposal_revision.description }} - {{ proposal_tags_data }} - {{ proposal_comment }}<br>
+    <h4>Révision proposée</h4>
+    <form class="form" action="{% url 'annotation_merge' collection_name image_guid annotation_guid revision_guid %}" method="POST">
+    {% if merge_form.errors %}
+      <div id="errors" style="display: none;">
+          {% for field in merge_form %}
+            {% if field.errors %}
+              * {{ merge_form.name }}: {{ error|striptags }}
+            {% endif %}
+          {% endfor %}
+      </div>
+      {% endif %}
+      {% csrf_token %}
+      <fieldset class="form-group {% if merge_form.title.errors %}has-error{% endif %}">
+        <label class="control-label" for="id_{{ merge_form.title.name }}">Titre </label>
+        {% if merge_form.title.errors %}
+          <div class="alert alert-danger" role="alert">
+            <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
+            <span class="sr-only">Error:</span>
+              {{ merge_form.title.errors | striptags }}
+          </div>
+        {% endif %}
+        <input type="text" class="form-control"
+          name="{{ merge_form.title.name }}"
+          id="id_{{ merge_form.title.name }}" value="{% if merge_form.title.value %}{{ merge_form.title.value}}{% endif %}">
+      </fieldset>
+      <fieldset class="form-group {% if merge_form.description.errors %}has-error{% endif %}">
+        <label class="control-label" for="id_{{ merge_form.description.name }}">Description: </label>
+        {% if merge_form.description.errors %}
+          <div class="alert alert-danger" role="alert">
+            <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
+            <span class="sr-only">Error:</span>
+              {{ form.description.errors | striptags }}
+          </div>
+        {% endif %}
+        <textarea class="form-control"
+          name="{{ merge_form.description.name }}"
+          id="id_{{ merge_form.description.name }}" >{% if merge_form.description.value %}{{ merge_form.description.value}}{% endif %}</textarea>
+      </fieldset>
+      <fieldset class="form-group">
+        <label class="control-label" for="id_{{ form.tags.name }}">{{ merge_form.tags.label }}: </label>
+        <typeahead :tags="{{ tags_data  }}"></typeahead>
+      </fieldset>
+      <label class="control-label" for="id_{{ form.tags.name }}">Image: </label><br>
+      <label>Commentaire de création: </label>
+      <div id="merge-proposal-revision-comment" class="alert alert-info" role="alert">
+        <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
+        <span class="sr-only">Info:</span>
+          <b>Révision par {{ proposal_revision.author }} <br> le {{ proposal_revision.created|date:"d/m/Y" }} à {{ proposal_revision.created|time:"H:i" }}</b><br>
+          <i class="fa fa-quote-left" aria-hidden="true"></i> {{ proposal_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
+      </div>
+      <fieldset class="form-group {% if merge_form.comment.errors %}has-error{% endif %}">
+        <label class="control-label" for="id_{{ merge_form.comment.name }}">Commentaire de révision:</label>
+        {% if merge_form.comment.errors %}
+          <div class="alert alert-danger" role="alert">
+            <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
+            <span class="sr-only">Error:</span>
+              {{ merge_form.comment.errors | striptags }}
+          </div>
+        {% endif %}
+        <textarea class="form-control"
+          name="{{ merge_form.comment.name }}"
+          id="id_{{ merge_form.comment.name }}" ></textarea>
+      </fieldset>
+      <input type="hidden" name="tags" value="[]"></input>
+      <input v-model="normalizePath" type="hidden" name="fragment" value=";FREE"></input>
+      <button type="submit" class="save btn btn-default btn-sm">Enregister</button>
+            <a class="btn btn-default btn-sm" href="{% url 'revision_detail' collection_name image_guid annotation_guid revision_guid %}" role="button">Retour</a>
+      <br><br>
+    </form>
   </div>
 </div>
 {% endblock %} 
--- a/src/iconolab/views.py	Tue Jul 26 14:37:03 2016 +0200
+++ b/src/iconolab/views.py	Tue Jul 26 14:37:43 2016 +0200
@@ -397,7 +397,6 @@
                 )
             )(request)
         # Auto-reject the revision only if the proper query arg is set
-        print(request.GET)
         if "auto_reject" in request.GET and request.GET["auto_reject"] in ["True", "true", "1", "yes"]:
             annotation.reject_existing_revision(revision) 
             return RedirectView.as_view(
@@ -426,11 +425,59 @@
         context['current_revision'] = annotation.current_revision
         context['current_tags_data'] = annotation.current_revision.get_tags_json()
         context['current_comment'] = annotation.current_revision.creation_comment.first()
+        
+        merge_form = AnnotationRevisionForm(instance=revision)
+        context['merge_form'] = merge_form
         return render(request, 'iconolab/merge_revision.html', context)
     
     def post(self, request, *args, **kwargs):
         # Handle merge form submit here
-        pass
+        success, result = self.check_kwargs(kwargs)
+        if success:
+            (collection, image, annotation, revision) = result
+        else:
+            return result(request)
+        collection_name = kwargs['collection_name']
+        image_guid = kwargs['image_guid']
+        annotation_guid = kwargs['annotation_guid']
+        revision_guid = kwargs['revision_guid']
+        
+        merge_revision_form = AnnotationRevisionForm(request.POST)
+        if merge_revision_form.is_valid():
+            revision_title = merge_revision_form.cleaned_data['title']
+            revision_description = merge_revision_form.cleaned_data['description']
+            revision_fragment = merge_revision_form.cleaned_data['fragment']
+            revision_tags_json = merge_revision_form.cleaned_data['tags']
+            new_revision = annotation.merge_existing_revision(revision_title, revision_description, revision_fragment, revision_tags_json, revision)
+            revision_comment = merge_revision_form.cleaned_data['comment']
+            comment = IconolabComment.objects.create(
+                comment = revision_comment,
+                revision = new_revision,
+                content_type = ContentType.objects.get(app_label='iconolab', model='annotation'),
+                content_object = annotation,
+                site = Site.objects.get(id=settings.SITE_ID),
+                object_pk = annotation.id,
+                user = request.user,
+                user_name = request.user.username
+            )
+            return RedirectView.as_view(url=reverse('annotation_detail', kwargs={'collection_name': collection_name, 'image_guid': image_guid, 'annotation_guid': annotation_guid}))(request)
+        context = self.get_context_data(**kwargs)
+        context['image'] = image
+        context['merge_form'] = merge_revision_form
+        context['annotation'] = annotation
+        # Proposal data
+        context['proposal_revision'] = revision
+        context['proposal_tags_data'] = revision.get_tags_json()
+        context['proposal_comment'] = revision.creation_comment.first()
+        # Parent data
+        context['parent_revision'] = revision.parent_revision
+        context['parent_tags_data'] = revision.parent_revision.get_tags_json()
+        context['parent_comment'] = revision.parent_revision.creation_comment.first()
+        # Current data
+        context['current_revision'] = annotation.current_revision
+        context['current_tags_data'] = annotation.current_revision.get_tags_json()
+        context['current_comment'] = annotation.current_revision.creation_comment.first()
+        return render(request, 'iconolab/merge_revision.html', context)
     
     
 class NotFoundErrorView(View):