first views with empty templates
authorcavaliet
Mon, 28 Jan 2013 18:35:10 +0100
changeset 9 aee87529a698
parent 7 4edf6745bda5
child 10 696ff663ea8e
first views with empty templates
.hgignore
src/egonomy/config.py.tmpl
src/egonomy/settings.py
src/egonomy/static/egonomy/css/egonomy.css
src/egonomy/static/egonomy/img/empty.gif
src/egonomy/templates/egonomy_annotate_picture.html
src/egonomy/templates/egonomy_base.html
src/egonomy/templates/egonomy_home.html
src/egonomy/urls.py
src/egonomy/views.py
web/static/.keepme
--- a/.hgignore	Thu Jan 24 17:44:10 2013 +0100
+++ b/.hgignore	Mon Jan 28 18:35:10 2013 +0100
@@ -2,4 +2,8 @@
 ^virtualenv/web/project-boot\.py$
 ^virtualenv/web/env/
 syntax: regexp
-^src/egonomy/config\.py$
\ No newline at end of file
+^src/egonomy/config\.py$
+syntax: regexp
+^web/static/site$
+syntax: regexp
+^\.pydevproject$
\ No newline at end of file
--- a/src/egonomy/config.py.tmpl	Thu Jan 24 17:44:10 2013 +0100
+++ b/src/egonomy/config.py.tmpl	Mon Jan 28 18:35:10 2013 +0100
@@ -1,15 +1,22 @@
+# -*- coding: utf-8 -*-
+import os, logging
+
+BASE_DIR = os.path.dirname(os.path.abspath(__file__)).rstrip("/")+"/"
+BASE_URL = '/egonomy/'
+WEB_URL = 'http://localhost/'
+STATIC_URL = BASE_URL + 'static/site/'
 
 DEBUG = True
 
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
-        'NAME': '',                      # Or path to database file if using sqlite3.
+        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
+        'NAME': 'egonomy',                      # Or path to database file if using sqlite3.
         # The following settings are not used with sqlite3:
         'USER': '',
         'PASSWORD': '',
-        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
-        'PORT': '',                      # Set to empty string for default.
+        'HOST': 'localhost',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
+        'PORT': '5432',                      # Set to empty string for default.
     }
 }
 
@@ -21,37 +28,35 @@
 
 # Language code for this installation. All choices can be found here:
 # http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
+LANGUAGE_CODE = 'fr-fr'
 
 SITE_ID = 1
 
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/var/www/example.com/media/"
-MEDIA_ROOT = ''
+BASE_STATIC_ROOT = os.path.abspath(BASE_DIR + "../../web/static/").rstrip("/")+"/"
+MEDIA_ROOT = BASE_STATIC_ROOT + "media/"
+# Absolute path to the directory that static files (js, css, swf...)
+# DO NOT forget to do command line ./manage.py collectstatic to gather static media into the web/static folder
+STATIC_ROOT = BASE_STATIC_ROOT + "site/"
+
 
 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
 # trailing slash.
 # Examples: "http://example.com/media/", "http://media.example.com/"
 MEDIA_URL = ''
 
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/var/www/example.com/static/"
-STATIC_ROOT = ''
-
-# URL prefix for static files.
-# Example: "http://example.com/static/", "http://static.example.com/"
-STATIC_URL = '/static/'
 
 # Make this unique, and don't share it with anybody.
-SECRET_KEY = 'z0^ex@s2*e@x00x1gq83c+(6xjxyi5*gfadu)+1mijvr%4g!@$'
+SECRET_KEY = 'abc123'
 
 # A sample logging configuration. The only tangible logging
 # performed by this configuration is to send an email to
 # the site admins on every HTTP 500 error when DEBUG=False.
 # See http://docs.djangoproject.com/en/dev/topics/logging for
 # more details on how to customize your logging configuration.
+#LOG_FILE = os.path.abspath(os.path.join(BASE_DIR,"../../run/log/log.txt"))
+#LOG_LEVEL = logging.DEBUG
+#logging.basicConfig(filename=LOG_FILE, level=LOG_LEVEL)
+
 LOGGING = {
     'version': 1,
     'disable_existing_loggers': False,
--- a/src/egonomy/settings.py	Thu Jan 24 17:44:10 2013 +0100
+++ b/src/egonomy/settings.py	Mon Jan 28 18:35:10 2013 +0100
@@ -116,10 +116,9 @@
     'django.contrib.sites',
     'django.contrib.messages',
     'django.contrib.staticfiles',
-    # Uncomment the next line to enable the admin:
-    # 'django.contrib.admin',
-    # Uncomment the next line to enable admin documentation:
-    # 'django.contrib.admindocs',
+    'django.contrib.admin',
+    'django.contrib.admindocs',
+    'egonomy',
 )
 
 # A sample logging configuration. The only tangible logging
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/static/egonomy/css/egonomy.css	Mon Jan 28 18:35:10 2013 +0100
@@ -0,0 +1,306 @@
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed, 
+figure, figcaption, footer, header, hgroup, 
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    font-size: 100%;
+    font: inherit;
+    vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure, 
+footer, header, hgroup, menu, nav, section {
+    display: block;
+}
+body {
+    line-height: 1;
+}
+ol, ul {
+    list-style: none;
+}
+blockquote, q {
+    quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+    content: '';
+    content: none;
+}
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+.clear{
+    clear: both;
+}
+
+input::-moz-focus-inner {
+    border: 0 none;
+    padding: 0;
+}
+
+/* END RESET.CSS */
+
+html {
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+body {
+    background: #FFFFFF;
+}
+
+a {
+    text-decoration: none; color: inherit;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+.fullwidth {
+    width: 100%; float: left; clear: both;
+}
+
+header, .main {
+    width: 968px; margin: 0 auto;
+}
+
+.header-wrap {
+    background: #666666; /* Old browsers */
+    background: -moz-linear-gradient(top,  #666666 20%, #333333 80%); /* FF3.6+ */
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(20%,#666666), color-stop(80%,#333333)); /* Chrome,Safari4+ */
+    background: -webkit-linear-gradient(top,  #666666 20%,#333333 80%); /* Chrome10+,Safari5.1+ */
+    background: -o-linear-gradient(top,  #666666 20%,#333333 80%); /* Opera 11.10+ */
+    background: -ms-linear-gradient(top,  #666666 20%,#333333 80%); /* IE10+ */
+    background: linear-gradient(to bottom,  #666666 20%,#333333 80%); /* W3C */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#666666', endColorstr='#333333',GradientType=0 ); /* IE6-9 */
+}
+
+header {
+    height: 40px; 
+}
+
+
+h1 {
+    font-weight: bold;
+    font-size: 24px;
+    text-shadow: 1px 1px 1px #000; color: #f0f0f0;
+}
+
+nav {
+    text-align: right; color: #ffffff; font-size: 13px; margin: 5px 0;
+}
+
+h2 {
+    font-size: 18px; font-weight: bold; color: #003366;
+    margin: 10px 0 5px; padding-bottom: 5px; border-bottom: 1px solid #666;
+}
+
+h3 {
+    font-size: 13px; font-weight: bold; color: #555555; margin: 4px 0;
+}
+
+h4 {
+    font-size: 12px; font-style: italic; margin: 4px 0;
+}
+
+p {
+    font-size: 11px; margin: 4px 0;
+}
+
+strong {
+    font-weight: bold;
+}
+
+.main-wrap {
+    background: #ffffff; /* Old browsers */
+    background: -moz-linear-gradient(top,  #f0f0f0 20%, #ffffff 80%); /* FF3.6+ */
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(20%,#f0f0f0), color-stop(80%,#ffffff)); /* Chrome,Safari4+ */
+    background: -webkit-linear-gradient(top,  #f0f0f0 20%,#ffffff 80%); /* Chrome10+,Safari5.1+ */
+    background: -o-linear-gradient(top,  #f0f0f0 20%,#ffffff 80%); /* Opera 11.10+ */
+    background: -ms-linear-gradient(top,  #f0f0f0 20%,#ffffff 80%); /* IE10+ */
+    background: linear-gradient(to bottom,  #f0f0f0 20%,#ffffff 80%); /* W3C */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f0f0f0', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */
+}
+
+footer {
+    margin: 40px 0 20px; padding: 10px 0 0; border-top: 1px solid #666;
+}
+
+.footer-list li {
+    float: right; margin-left: 10px;
+}
+
+.search-field {
+    box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    width: 100%; border: none; background: #d0e0FF;
+    padding: 2px; margin: 3px 0; height: 20px;
+    font-size: 13px;
+}
+
+.placeholder {
+    background: #d0e0FF;
+}
+
+.column {
+    float: left; margin: 6px 0 6px 16px;
+}
+
+.subcol {
+    float: left; margin: 2px 0 4px 12px;
+}
+
+.column-third {
+    float: left; width: 312px;
+}
+
+.column-third:nth-child(3n+1) {
+    margin-left: 0; clear: left;
+}
+
+.subcol-third-third {
+    width: 96px; 
+}
+
+.subcol-third-third:nth-child(3n+1) {
+    margin-left: 0; clear: left;
+}
+
+.column-half {
+    width: 476px;
+}
+
+.column-half:nth-child(2n+1) {
+    margin-left: 0; clear: left;
+}
+
+.subcol-half-fourth {
+    width: 110px;
+}
+
+.subcol-half-fourth:nth-child(4n+1) {
+    margin-left: 0; clear: left;
+}
+
+.column-full {
+    margin-left: 0; width: 968px;
+}
+
+.subcol-eighth {
+    width: 110px;
+}
+
+.subcol-eighth:nth-child(even) {
+    margin-left: 13px;
+}
+
+.subcol-eighth:nth-child(8n+1) {
+    margin-left: 0; clear: left;
+}
+
+.center-image {
+    text-align: center;
+}
+
+.image-and-fragment {
+    position: relative; margin: 0 auto; display: inline-block;
+}
+
+.center-image img {
+    display: inline-block;
+}
+/*
+.image-and-fragment img:after {
+    content: "."; display: block; clear: both; width: 0; line-height: 0; visibility: hidden;
+}
+*/
+.image-and-fragment svg {
+    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
+}
+
+/* STYLES SPECIFIQUES A home.html */
+
+.homeviz {
+    float: left; width: 968px; height: 400px; margin: 2px 0 4px;
+}
+
+/* STYLES SPECIFIQUES A image.html */
+
+.fullphoto {
+    width: 476px; height: 350px;
+}
+
+.image-metadata {
+    width: 100%; margin: 30px 0 0; font-size: 14px;
+}
+
+.image-metadata th {
+    font-weight: bold; width: 152px; text-align: left; padding: 4px 10px 4px 0; vertical-align: top;
+}
+
+.image-metadata td {
+    width: 314px; padding: 4px 0;
+}
+
+.image-metadata textarea {
+    box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    width: 100%; border: 1px solid #6699FF; background: none;
+    padding: 2px; margin: 3px 0; height: 120px;
+    font-size: 13px;
+}
+
+.image-keywords {
+    width: 100%; margin: 10px 0 0;
+}
+
+.image-keywords th {
+    font-size: 14px; font-weight: bold; text-align: left; padding: 4px 0 4px 0; width: 33%;
+}
+
+.image-keywords tbody tr:nth-child(odd) {
+    background: #e0e0e0;
+}
+
+.image-keywords td {
+    font-size: 13px; text-align: left; padding: 4px 4px 4px 0;
+}
+
+.add-button {
+    background: #D0E0FF; margin: 5px 0; padding: 6px; border-radius: 4px; color: #003366;
+    font-weight: bold; font-size: 13px; float: left;
+}
+
+.big-button {
+    background: #D0E0FF; margin: 10px 0 10px 16px; padding: 8px; border-radius: 4px; color: #003366;
+    font-weight: bold; font-size: 15px; width: 214px; text-align: center; float: left;
+}
+
+.big-button:first-child {
+    margin-left: 0;
+}
+
+.highlight {
+    background: #ffff80;
+}
+
Binary file src/egonomy/static/egonomy/img/empty.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/templates/egonomy_annotate_picture.html	Mon Jan 28 18:35:10 2013 +0100
@@ -0,0 +1,129 @@
+{% extends "egonomy_base.html" %}
+{% load static %}
+{% load i18n %}
+
+{% block title %}{% trans "Annotate a picture" %}{% endblock %}
+
+{% block content %}
+                <div class="fullwidth">
+                    <div class="column column-half">
+                        <h2>Titre de l'image</h2>
+                        <div class="fullphoto placeholder">
+                            Photo à annoter
+                        </div>
+                    </div>
+                    <div class="column column-half">
+                        <form action="#">
+                        <table class="image-metadata">
+                            <tr>
+                                <th>Description&nbsp;:</th>
+                                <td>Lorem Ipsum, Ceci est la description de l'&oelig;uvre représentée dans l'image.</td>
+                            </tr>
+                            <tr>
+                                <th>Auteur&nbsp;:</th>
+                                <td>Marcel Duchamp</td>
+                            </tr>
+                            <tr>
+                                <th>Période&nbsp;:</th>
+                                <td>XXème siècle</td>
+                            </tr>
+                            <tr>
+                                <th>Site de Production&nbsp;:</th>
+                                <td>Paris, France</td>
+                            </tr>
+                            <tr>
+                                <th>Localisation&nbsp;:</th>
+                                <td>Musée du Louvre, Paris.</td>
+                            </tr>
+                            <tr>
+                                <th>Mots-clés RMN&nbsp;:</th>
+                                <td>Art contemporain, Art conceptuel, Cyclisme</td>
+                            </tr>
+                            <tr>
+                                <th>Mots-clés Utilisateurs</th>
+                                <td><textarea class="user-keywords">Modernité, Ready-made</textarea></td>
+                            </tr>
+                            <tr>
+                                <th> </th>
+                                <td><input class="user-submit" type="submit" value="Enregistrer les mots-clés" /></td>
+                            </tr>
+                            <tr>
+                                <th>Dernière modification&nbsp;:</th>
+                                <td>le 23 janvier 2013 par Utilisateur17</td>
+                            </tr>
+                        </table>
+                        </form>
+                        <div class="fullwidth">
+                            <a href="#" class="big-button">Créer un fragment</a>
+                        </div>
+                    </div>
+                </div>
+                <div class="fullwidth">
+                    <div class="column column-full">
+                        <h2>Fragments de cette image</h2>
+                        <ul class="fullwidth">
+                            <li class="subcol subcol-eighth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="img/empty.gif" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M 0 .5 L .5 0 L 1 .5 L .5 1 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <p>Annoté par <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-eighth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="img/empty.gif" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M .2 .5 L .7 .2 L .8 .7 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <p>Annoté par <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-eighth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="img/empty.gif" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M .3 .1 L .55 .15 L .6 .6 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <p>Annoté par <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-eighth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="img/empty.gif" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M .2 .5 L .7 .2 L .8 .7 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <p>Annoté par <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-eighth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="img/empty.gif" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M .2 .5 L .7 .2 L .8 .7 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <p>Annoté par <strong>Julien75</strong></p>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/templates/egonomy_base.html	Mon Jan 28 18:35:10 2013 +0100
@@ -0,0 +1,45 @@
+{% load static %}
+{% load i18n %}
+{#% load analytics %#}
+<!DOCTYPE html>
+<html lang="fr">
+    {% block head %}
+    <head>
+        <meta charset="utf-8" />
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+        <title>TagItAll by eGonomy &raquo; {% block title %}Base{% endblock %}</title>
+        {% block css_declaration %}
+	    {% endblock %}
+	    {% block css_import %}
+        <link rel="stylesheet" href="{% static 'egonomy/css/egonomy.css' %}" />
+	    {% endblock %}
+	    {% block css_page %}
+	    {% endblock %}
+    </head>
+    {% endblock %}
+    <body>
+        <div class="header-wrap fullwidth">
+            <header>
+                <h1 class="column column-third"><a href="{% url 'home' %}">TagItAll {% trans "by" %} eGonomy</a></h1>
+                <form class="column column-third">
+                    <input class="search-field" type="search" placeholder="{% trans 'Search' %}" />
+                </form>
+                <nav class="column column-third">
+                    <a href="#">{% trans "Login" %}</a>
+                </nav>
+            </header>
+        </div>
+        <div class="main-wrap fullwidth">
+            <div class="main">
+                {% block content %}
+                {% endblock %}
+                <footer class="fullwidth">
+                    <ul class="footer-list">
+                        <li>&copy; IRI 2013</li>
+                    </ul>
+                </footer>
+            </div>
+        </div>
+    {#% analytics %#}
+    </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/templates/egonomy_home.html	Mon Jan 28 18:35:10 2013 +0100
@@ -0,0 +1,109 @@
+{% extends "egonomy_base.html" %}
+{% load static %}
+{% load i18n %}
+
+{% block title %}{% trans "Home" %}{% endblock %}
+
+{% block content %}
+                <div class="fullwidth">
+                
+                    <!-- Liste des dernières images annotées -->
+                    <div class="column column-half">
+                        <h2>{% trans "Last annotated pictures" %}</h2>
+                        <ul class="fullwidth">
+                            <li class="subcol subcol-half-fourth">
+                                <a href="{% url 'annotate_picture' %}">
+                                <div class="center-image">
+                                    <img src="{% static 'egonomy/img/empty.gif' %}" width="110" height="82" class="placeholder" />
+                                </div>
+                                <h3>Titre de l'image</h3></a>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-half-fourth">
+                                <a href="{% url 'annotate_picture' %}">
+                                <div class="center-image">
+                                    <img src="{% static 'egonomy/img/empty.gif' %}" width="82" height="110" class="placeholder" />
+                                </div>
+                                <h3>Titre de l'image</h3></a>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-half-fourth">
+                                <a href="{% url 'annotate_picture' %}">
+                                <div class="center-image">
+                                    <img src="{% static 'egonomy/img/empty.gif' %}" width="110" height="82" class="placeholder" />
+                                </div>
+                                <h3>Titre de l'image</h3></a>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-half-fourth">
+                                <a href="{% url 'annotate_picture' %}">
+                                <div class="center-image">
+                                    <img src="{% static 'egonomy/img/empty.gif' %}" width="110" height="110" class="placeholder" />
+                                </div>
+                                <h3>Titre de l'image</h3></a>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                        </ul>
+                    </div>
+                    
+                    <!-- Liste des derniers fragments modifiés -->
+                    <div class="column column-half">
+                        <h2>{% trans "Last modified fragments" %}</h2>
+                        <ul class="fullwidth">
+                            <li class="subcol subcol-half-fourth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="{% static 'egonomy/img/empty.gif' %}" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M 0 .5 L .5 0 L 1 .5 L .5 1 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <h4>{% trans "Fragment from" %} <a href="{% url 'annotate_picture' %}">Titre de l'image</a></h4>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-half-fourth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="{% static 'egonomy/img/empty.gif' %}" width="82" height="110" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M .2 .5 L .7 .2 L .8 .7 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <h4>{% trans "Fragment from" %} <a href="{% url 'annotate_picture' %}">Titre de l'image</a></h4>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-half-fourth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="{% static 'egonomy/img/empty.gif' %}" width="110" height="82" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M .2 .5 L .7 .2 L .8 .7 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <h4>{% trans "Fragment from" %} <a href="{% url 'annotate_picture' %}">Titre de l'image</a></h4>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                            <li class="subcol subcol-half-fourth">
+                                <div class="center-image">
+                                    <div class="image-and-fragment">
+                                        <img src="{% static 'egonomy/img/empty.gif' %}" width="110" height="110" class="placeholder" />
+                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewbox="0 0 1 1" preserveAspectRatio="none">
+                                            <path d="M 0 .5 L .5 0 L 1 .5 L .5 1 Z" stroke="red" stroke-width=".02" fill="red" fill-opacity=".3" />
+                                        </svg>
+                                    </div>
+                                </div>
+                                <h3>Titre du fragment</h3>
+                                <h4>{% trans "Fragment from" %} <a href="{% url 'annotate_picture' %}">Titre de l'image</a></h4>
+                                <p>{% trans "Annotated by" %} <strong>Julien75</strong></p>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+{% endblock %}
+
--- a/src/egonomy/urls.py	Thu Jan 24 17:44:10 2013 +0100
+++ b/src/egonomy/urls.py	Mon Jan 28 18:35:10 2013 +0100
@@ -1,17 +1,17 @@
 from django.conf.urls import patterns, include, url
+from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
 # Uncomment the next two lines to enable the admin:
-# from django.contrib import admin
-# admin.autodiscover()
+from django.contrib import admin
+admin.autodiscover()
 
 urlpatterns = patterns('',
-    # Examples:
-    # url(r'^$', 'egonomy.views.home', name='home'),
-    # url(r'^egonomy/', include('egonomy.foo.urls')),
+    url(r'^$', 'egonomy.views.home', name='home'),
+    url(r'^annotate/$', 'egonomy.views.annotate_picture', name='annotate_picture'),
 
     # Uncomment the admin/doc line below to enable admin documentation:
-    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
+    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
     # Uncomment the next line to enable the admin:
-    # url(r'^admin/', include(admin.site.urls)),
+    url(r'^admin/', include(admin.site.urls)),
 )
+urlpatterns += staticfiles_urlpatterns()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/egonomy/views.py	Mon Jan 28 18:35:10 2013 +0100
@@ -0,0 +1,21 @@
+from django.conf import settings
+#from django.contrib.auth.models import Group, User
+#from django.core.paginator import Paginator, InvalidPage, EmptyPage
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+
+
+
+def home(request):
+    
+    return render_to_response("egonomy_home.html",
+                              {'any_var': "coucou"},
+                              context_instance=RequestContext(request))
+
+def annotate_picture(request):
+    
+    return render_to_response("egonomy_annotate_picture.html",
+                              {'any_var': "coucou"},
+                              context_instance=RequestContext(request))
+
+