--- a/src/iconolab/__init__.py Wed Aug 17 15:20:08 2016 +0200
+++ b/src/iconolab/__init__.py Wed Aug 17 16:46:20 2016 +0200
@@ -0,0 +1,46 @@
+VERSION = (0, 0, 1, "alpha", 0)
+
+VERSION_STR = ".".join(map(lambda i:"%02d" % (i,), VERSION[:2]))
+
+###
+# https://github.com/django/django/blob/1.9.1/django/utils/version.py
+#
+def get_version(version):
+ "Returns a PEP 440-compliant version number from VERSION."
+ version = get_complete_version(version)
+
+ # Now build the two parts of the version number:
+ # main = X.Y[.Z]
+ # sub = .devN - for pre-alpha releases
+ # | {a|b|rc}N - for alpha, beta, and rc releases
+
+ main = get_main_version(version)
+
+ sub = ''
+ if version[3] == 'alpha' and version[4] == 0:
+ sub = '.dev'
+
+ elif version[3] != 'final':
+ mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'rc'}
+ sub = mapping[version[3]] + str(version[4])
+
+ return str(main + sub)
+
+def get_complete_version(version):
+ """
+ then checks for correctness of the tuple provided.
+ """
+ assert len(version) == 5
+ assert version[3] in ('alpha', 'beta', 'rc', 'final')
+
+ return version
+
+def get_main_version(version=None):
+ "Returns main version (X.Y[.Z]) from VERSION."
+ version = get_complete_version(version)
+ parts = 2 if version[2] == 0 else 3
+ return '.'.join(str(x) for x in version[:parts])
+
+__version__ = get_version(VERSION)
+
+default_app_config = 'iconolab.apps.IconolabApp'
Binary file src/iconolab/static/iconolab/img/glossary_example.png has changed
Binary file src/iconolab/static/iconolab/img/logo_IRI_footer.png has changed
Binary file src/iconolab/static/iconolab/img/logo_mcc_footer.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/iconolab/glossary.html Wed Aug 17 16:46:20 2016 +0200
@@ -0,0 +1,71 @@
+{% extends 'iconolab_base.html' %}
+
+{% load staticfiles %}
+
+{% load thumbnail %}
+
+{% load iconolab_tags %}
+
+{% block content %}
+ <div class="row" style="border: 1px solid gray;padding: 15px;">
+ <div class="col-md-9">
+ <h1>Le projet</h1>
+ <p class="text-justify">Iconolab est une plateforme contributive grâce à laquelle les utilisateurs peuvent explorer et annoter des collections (fond) d'images fournis par plusieurs musées et référencés dans la base de données Joconde.
+ <br><br>
+ Sur cette plateforme, il est possible de découper des fragments d'une image et de lui assigner des mots-clés pour en faire une annotation. Les autres utilisateurs de la plateforme peuvent ensuite échanger, débattre et faire évoluer ces annotations.
+ <br><br>
+ Cette page décrit le vocabulaire employé sur la plateforme afin de vous aider à en comprendre le fonctionnement.
+ </p>
+ </div>
+ <div class="col-md-3 text-center">
+ <img src="{% static 'iconolab/img/glossary_example.png' %}" width="200" height="200">
+ <br><h4 class="text-center"><small>Exemple de fragment</small></h6>
+ </div>
+ <div class="col-md-12">
+ <h2>Glossaire <small>Iconolab</small></h2>
+ <div class="row">
+ <div class="col-md-6">
+ <dl class="dl-horizontal">
+ <dt>Fond</dt>
+ <dd class="text-justify">Un "fond" dans Iconolab représente une collection d'objets, chacun présentant une ou plusieurs images sur laquelle les utilisateurs vont pouvoir créer des annotations et commenter sur les annotations</dd>
+ <br>
+
+ <dt>Image</dt>
+ <dd class="text-justify">Une "image" est liée à un objet. C'est l'élément sur lequel les utilisateurs vont pouvoir créer des annotations.</dd>
+ <br>
+
+ <dt>Révision</dt>
+ <dd class="text-justify">Une "révision" est un état de l'annotation à un instant T. Une révision est créée à chaque fois qu'un utilisateur édite une annotation. <br><br> Les utilisateurs peuvent également proposer des révisions sur les annotations des autres utilisateurs. <br><br> La révision acceptée la plus récente est dite "Révision courante" et représente l'état officiel/publié de l'annotation.</dd>
+ <br>
+ <dt>Pertinence et fiabilité <br>des mot-clés</dt>
+ <dd class="text-justify">
+ Chaque mot-clé est accompagné de deux notes qui représentent la pertinence et la fiabilité de celui-ci. C'est à l'utilisateur qui pose les mot-clés d'estimer ces deux notions.<br><br>
+ <ul>
+ <li><b>La pertinence:</b> Indique le niveau de précision du mot-clé, càd si le mot-clé est plus ou moins généraliste dans le contexte où il est posé (Par exemple: Napoléon 3 est un mot-clé plus pertinent que Napoléon)</li>
+ <li><b>La fiabilité:</b> Indique à quel point l'utilisateur est certain que le mot-clé correspond à l'annotation sur laquelle il est posée (par exemple, si un utilisateur pose le mot-clé "église" sur un bâtiment en ruine mais n'est pas certain que ça soit bel et bien une église, il se notera une faible fiabilité)</li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ <div class="col-md-6">
+ <dl class="dl-horizontal">
+ <dt>Objet</dt>
+ <dd class="text-justify">Un "objet" représente le sujet d'une notice Joconde, dans le contexte d'un fonds Iconolab. Il lui est associé une partie des métadonnées de la notice Joconde correspondante (à des fins d'affichage), et une ou plusieurs images.</dd>
+ <br>
+ <dt>Annotation</dt>
+ <dd class="text-justify">
+ Une "annotation" est créée par un utilisateur sur une image. Chaque annotation regroupe les éléments suivants:<br><br>
+ <ul>
+ <li><b>Titre</b></li>
+ <li><b>Description</b></li>
+ <li><b>Mot-clés:</b> un mot-clé est un mot-clé qui sera associé à l'annotation. En plus de cela, chaque mot-clé doit être associé d'une évaluation de "pertinence" (voir plus bas) et de "fiabilité" (voir plus bas)</li>
+ <li><b>Fragments:</b> le fragment est la partie de l'image (découpée à l'aide d'un éditeur) sur laquelle porte l'annotation. S'il n'y a pas de fragment, l'annotation porte sur l'image entière.</li>
+ <li><b>Commentaires:</b> chaque Annotation ouvre un fil de commentaires sur lesquels les utilisateurs vont pouvoir intervenir. Quand on créé une annotation, on doit également indiquer dans un commentaire la raison pour laquelle on a créé cette annotation.</li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
\ No newline at end of file
--- a/src/iconolab/templates/iconolab_base.html Wed Aug 17 15:20:08 2016 +0200
+++ b/src/iconolab/templates/iconolab_base.html Wed Aug 17 16:46:20 2016 +0200
@@ -1,6 +1,7 @@
{% load staticfiles %}
{% load notifications_tags %}
+{% load iconolab_tags %}
<!DOCTYPE html>
<html>
@@ -37,4 +38,17 @@
{% endblock %}
</body>
+ <footer>
+ <div class="container">
+ <hr>
+ <div class="pull-left" style="margin-left:15px;">
+ <h4><small>Version {% version %}</small></h4>
+ </div>
+ <div class="pull-right partners-icons">
+ <a href="http://www.iri.centrepompidou.fr"><img src="{% static 'iconolab/img/logo_IRI_footer.png' %}"></a>
+
+ <a href="http://www.culturecommunication.gouv.fr/"><img src="{% static 'iconolab/img/logo_mcc_footer.png' %}"></a>
+ </div>
+ </div>
+ </footer>
</html>
\ No newline at end of file
--- a/src/iconolab/templates/partials/header.html Wed Aug 17 15:20:08 2016 +0200
+++ b/src/iconolab/templates/partials/header.html Wed Aug 17 16:46:20 2016 +0200
@@ -12,7 +12,7 @@
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
- <li><a href="#">Le projet</a></li>
+ <li><a href="{% url 'iconolab_help' %}">Le projet</a></li>
{% if collection_name %}<li><a href="{% url 'collection_home' collection_name %}">Contribuer</a></li>{% endif %}
</ul>
--- a/src/iconolab/templatetags/iconolab_tags.py Wed Aug 17 15:20:08 2016 +0200
+++ b/src/iconolab/templatetags/iconolab_tags.py Wed Aug 17 16:46:20 2016 +0200
@@ -1,5 +1,6 @@
from django.template import Library
import sys
+from iconolab import __version__
register = Library()
@@ -38,4 +39,8 @@
if len(path_infos) > 1 :
result = path_infos[1]
- return result
\ No newline at end of file
+ return result
+
+@register.simple_tag
+def version():
+ return __version__
\ No newline at end of file
--- a/src/iconolab/urls.py Wed Aug 17 15:20:08 2016 +0200
+++ b/src/iconolab/urls.py Wed Aug 17 16:46:20 2016 +0200
@@ -45,6 +45,7 @@
url(r'^user/(?P<slug>[a-z0-9\-]+)/home/?$', views.iconolab.UserHomeView.as_view(), name="user_home"),
url(r'^user/notifications/all/?$', login_required(views.iconolab.UserNotificationsView.as_view()), name="user_notifications"),
url(r'^errors/404', views.iconolab.NotFoundErrorView.as_view(), name="404error"),
+ url(r'^help/', views.iconolab.HelpView.as_view(), name="iconolab_help"),
url(r'^account/', include('iconolab.auth.urls', namespace='account')),
url(r'^comments/', include('django_comments_xtd.urls')),
url(r'^comments/annotation/post', views.comments.post_comment_iconolab, name="post_comment"),
--- a/src/iconolab/views/iconolab.py Wed Aug 17 15:20:08 2016 +0200
+++ b/src/iconolab/views/iconolab.py Wed Aug 17 16:46:20 2016 +0200
@@ -510,4 +510,7 @@
class NotFoundErrorView(TemplateView):
- template_name="errors/404error.html"
\ No newline at end of file
+ template_name="errors/404error.html"
+
+class HelpView(TemplateView):
+ template_name="iconolab/glossary.html"
\ No newline at end of file