--- 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 :</th>
+ <td>Lorem Ipsum, Ceci est la description de l'œuvre représentée dans l'image.</td>
+ </tr>
+ <tr>
+ <th>Auteur :</th>
+ <td>Marcel Duchamp</td>
+ </tr>
+ <tr>
+ <th>Période :</th>
+ <td>XXème siècle</td>
+ </tr>
+ <tr>
+ <th>Site de Production :</th>
+ <td>Paris, France</td>
+ </tr>
+ <tr>
+ <th>Localisation :</th>
+ <td>Musée du Louvre, Paris.</td>
+ </tr>
+ <tr>
+ <th>Mots-clés RMN :</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 :</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 » {% 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>© 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))
+
+