]> git.parisson.com Git - telemeta.git/commitdiff
add fund and corpus templates (NOT finished *break* UI now)
authorGuillaume Pellerin <yomguy@parisson.com>
Fri, 27 Jan 2012 15:16:18 +0000 (16:16 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Fri, 27 Jan 2012 15:16:18 +0000 (16:16 +0100)
14 files changed:
telemeta/models/media.py
telemeta/templates/telemeta_default/base.html
telemeta/templates/telemeta_default/corpus_add.html [new file with mode: 0644]
telemeta/templates/telemeta_default/corpus_detail.html [new file with mode: 0644]
telemeta/templates/telemeta_default/corpus_edit.html [new file with mode: 0644]
telemeta/templates/telemeta_default/corpus_list.html [new file with mode: 0644]
telemeta/templates/telemeta_default/fund_add.html [new file with mode: 0644]
telemeta/templates/telemeta_default/fund_detail.html [new file with mode: 0644]
telemeta/templates/telemeta_default/fund_edit.html [new file with mode: 0644]
telemeta/templates/telemeta_default/fund_list.html [new file with mode: 0644]
telemeta/templates/telemeta_default/inc/corpus_list.html [new file with mode: 0644]
telemeta/templates/telemeta_default/inc/fund_list.html [new file with mode: 0644]
telemeta/urls.py
telemeta/views/base.py

index 09b170c32766fd9466a484b1f37ade7fd2a07175..9bfd4f2bc2bd0ee41fce2812278a6be9b48a0c33 100644 (file)
@@ -89,11 +89,10 @@ class MediaResource(ModelCore):
 class MediaBaseResource(MediaResource):
     "Describe a base resource"
 
-    # General informations
-    reference             = CharField(_('reference'), unique=True, null=True)
     title                 = CharField(_('title'), required=True)
     description           = CharField(_('description'))
     code                  = CharField(_('code'), unique=True, required=True)
+    reference             = CharField(_('reference'), unique=True, null=True)
     public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES,
                                       max_length=16, default="metadata")
 
index 12959fa2abc216dd0bac2cb0e36cc9e5d78c4702..173a3a71ad8c0208a89f7095496231671421c1b7 100644 (file)
@@ -98,8 +98,8 @@
 
  <li><a href="{% url telemeta-archives %}" class="green">{% trans "Archives" %}</a>
   <ul>
-     <li><a href="/funds">{% trans "Funds" %}</a></li>
-     <li><a href="/corpus">{% trans "Corpus" %}</a></li>
+     <li><a href="{% url telemeta-funds %}">{% trans "Funds" %}</a></li>
+     <li><a href="{% url telemeta-corpus %}">{% trans "Corpus" %}</a></li>
      <li><a href="{% url telemeta-collections %}">{% trans "Collections" %}</a></li>
      <li><a href="{% url telemeta-items %}">{% trans "Items" %}</a></li>
   </ul>
diff --git a/telemeta/templates/telemeta_default/corpus_add.html b/telemeta/templates/telemeta_default/corpus_add.html
new file mode 100644 (file)
index 0000000..e6e63e9
--- /dev/null
@@ -0,0 +1,35 @@
+{% extends "telemeta/corpus_detail.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block title %}
+    <img src="{% url telemeta-images "corpus_red.png" %}" style="vertical-align:middle" /> Corpus : NEW
+{% endblock %}
+
+{% block title_buttons %}
+     <a href="{% url telemeta-corpus %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+{% endblock %}
+
+{% block infos %}
+        <div class="infos">
+        <form method="post" id ="_addCorpusForm" action="">{% csrf_token %}
+        <table>
+        <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
+        {% for field in form %}
+         <tr>
+            <tr><td class="error">{{ field.errors }}</td></tr>
+            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        </tr>
+        {% endfor %}
+        </table>
+        <div align="center" style="margin-top:3ex;">
+            <a href="{% url telemeta-corpus %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+            <a href="#" class="component_icon button icon_save"
+                onclick="document.getElementById('_addCorpusForm').submit(); return false;">{% trans "Save" %}</a>
+        </div>
+        </form>
+        </div>
+{% endblock infos%}
+
+{% block delete %}
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/corpus_detail.html b/telemeta/templates/telemeta_default/corpus_detail.html
new file mode 100644 (file)
index 0000000..b7e4b1d
--- /dev/null
@@ -0,0 +1,74 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block head_title %}{% trans "Corpus" %}{{corpus|prepend:' : '}} - {{ block.super }}{% endblock %}
+
+{% block extra_javascript %}
+{% endblock %}
+
+{% if corpus %}
+
+{% block title %}
+    <img src="{% url telemeta-images "corpuss_red.png" %}" style="vertical-align:middle" /> 
+    Collection : 
+    <a href="{% url telemeta-corpus-detail corpus.public_id %}">{{ corpus.title }}</a>
+{% endblock %}
+
+{% block title_buttons %}
+  <div class="fixedWidthAsPlayer">
+    {% if user.is_authenticated and perms.telemeta.change_mediacorpus %}
+      <a href="{% url telemeta-corpus-edit corpus.public_id %}" class="component_icon button icon_edit">{% trans "Edit" %}</a>
+      <a href="{% url telemeta-corpus-copy corpus.public_id %}" class="component_icon button icon_copy">{% trans "Copy" %}</a>
+     {% endif %}
+    {% if user.is_authenticated %}
+    <a href=# id ="_add_to_playlist" class="component_icon button icon_add_to_playlist">{% trans "Add to playlist" %}</a>
+    {% endif %}
+    <a href="{% url telemeta-corpus-dublincore corpus.public_id %}" class="component_icon button icon_dublin_core">Dublin Core</a>
+   </div>
+{% endblock %}
+
+{% block content %}
+      {% block infos %}
+        <div class="intro">
+            <span><img src="{% url telemeta-images "collection_title.png" %}" style="vertical-align:middle" /> {% if corpus.items.count %}{{ corpus.collections.count }} {% ifequal corpus.collections.count 1 %}item{% else %}collections{% endifequal %}{% else %}No collection% endif %}</span>
+        </div>
+        <div class="infos">
+        {% block general_info %}
+            <dl class="listing">
+                {% dl_field corpus "reference" %}
+                {% dl_field corpus "title"  %}
+                {% dl_field corpus "description" %}
+                {% dl_field corpus "code" %}
+            </dl>
+        {% endblock general_info %}
+        
+        <div class="extraInfos">
+            {% block related %}
+                {% include "telemeta/inc/corpus_related.html" %}
+            {% endblock related %}
+        </div>
+        
+        <div class="extraInfos">
+        <h4><img src="{% url telemeta-images "item_title.png" %}" style="vertical-align:middle" /> Collections</h4>
+        {% with "1" as location_name %}
+            {% include "telemeta/inc/mediacollection_list.html" %}
+        {% endwith %}
+        </div>
+
+        {% endblock infos %}
+    </div>
+{% endblock %}
+
+{% block delete %}
+{% if user.is_authenticated and perms.telemeta.delete_mediacorpus %}
+ <a href="#" onclick="if(confirm(gettrans('delete the corpus permanently?'))){window.location.href='{% url telemeta-corpus-delete corpus.public_id %}';};return false;"
+        class="component_icon button icon_delete" style="float:right;margin-top:0.5em;margin-bottom:1em">{% trans "Delete" %}</a>
+{% endif %}
+
+{% endblock %}
+
+{% else %}
+    <p>No such corpus</p>
+{% endif %}
+
diff --git a/telemeta/templates/telemeta_default/corpus_edit.html b/telemeta/templates/telemeta_default/corpus_edit.html
new file mode 100644 (file)
index 0000000..23c56e7
--- /dev/null
@@ -0,0 +1,34 @@
+{% extends "telemeta/corpus_detail.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block title %}
+    <img src="{% url telemeta-images "corpus_red.png" %}" style="vertical-align:middle" /> Corpus : {{ corpus }}
+{% endblock %}
+{% block title_buttons %}
+    <a href="{% url telemeta-corpus-detail corpus.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+{% endblock %}
+
+{% block infos %}
+     <div class="infos">
+      <form method="post" id="_editCollectionForm" action="">{% csrf_token %}
+       <table>
+       <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
+       {% for field in form %}
+       <tr>
+            <tr><td class="error">{{ field.errors }}</td></tr>
+            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        </tr>
+       {% endfor %}
+       </table>
+        <div align="center" style="margin-top:3ex;">
+         <a href="{% url telemeta-corpus-detail corpus.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+         <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('_editCollectionForm').submit(); return false;">{% trans "Save" %}</a>
+        </div>
+      </form>
+     </div>
+{% endblock infos%}
+
+{% block delete %}
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/corpus_list.html b/telemeta/templates/telemeta_default/corpus_list.html
new file mode 100644 (file)
index 0000000..8486c0a
--- /dev/null
@@ -0,0 +1,24 @@
+{% extends "telemeta/base.html" %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Media Corpus" %} - {{ block.super }}{% endblock %}
+
+{% block title%}
+ <img src="{% url telemeta-images "corpus_red.png" %}" style="vertical-align:middle" /> {% trans "Media Corpus" %}
+{% endblock %}
+
+{% block title_buttons %}
+     <a href="{% url telemeta-corpus %}" class="component_icon button icon_filter">{% trans "All" %}</a>
+    {% if user.is_authenticated and perms.telemeta.add_mediacorpus %}
+      <a href="{% url telemeta-corpus-add %}" class="component_icon button icon_add">{% trans "Add" %}</a>
+    {% endif %}
+{% endblock %}
+
+{% block content %}
+{% with object_list as corpus %}
+<div class="fullpage">
+{% include "telemeta/inc/corpus_list.html" %}
+</div>
+{% endwith %}
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/fund_add.html b/telemeta/templates/telemeta_default/fund_add.html
new file mode 100644 (file)
index 0000000..7ae7d36
--- /dev/null
@@ -0,0 +1,35 @@
+{% extends "telemeta/fund_detail.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block title %}
+    <img src="{% url telemeta-images "fund_red.png" %}" style="vertical-align:middle" /> Corpus : NEW
+{% endblock %}
+
+{% block title_buttons %}
+     <a href="{% url telemeta-fund %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+{% endblock %}
+
+{% block infos %}
+        <div class="infos">
+        <form method="post" id ="_addCorpusForm" action="">{% csrf_token %}
+        <table>
+        <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
+        {% for field in form %}
+         <tr>
+            <tr><td class="error">{{ field.errors }}</td></tr>
+            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        </tr>
+        {% endfor %}
+        </table>
+        <div align="center" style="margin-top:3ex;">
+            <a href="{% url telemeta-fund %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+            <a href="#" class="component_icon button icon_save"
+                onclick="document.getElementById('_addCorpusForm').submit(); return false;">{% trans "Save" %}</a>
+        </div>
+        </form>
+        </div>
+{% endblock infos%}
+
+{% block delete %}
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/fund_detail.html b/telemeta/templates/telemeta_default/fund_detail.html
new file mode 100644 (file)
index 0000000..0df73c7
--- /dev/null
@@ -0,0 +1,74 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block head_title %}{% trans "Funds" %}{{fund|prepend:' : '}} - {{ block.super }}{% endblock %}
+
+{% block extra_javascript %}
+{% endblock %}
+
+{% if fund %}
+
+{% block title %}
+    <img src="{% url telemeta-images "funds_red.png" %}" style="vertical-align:middle" /> 
+    Collection : 
+    <a href="{% url telemeta-fund-detail fund.public_id %}">{{ fund.title }}</a>
+{% endblock %}
+
+{% block title_buttons %}
+  <div class="fixedWidthAsPlayer">
+    {% if user.is_authenticated and perms.telemeta.change_mediafund %}
+      <a href="{% url telemeta-fund-edit fund.public_id %}" class="component_icon button icon_edit">{% trans "Edit" %}</a>
+      <a href="{% url telemeta-fund-copy fund.public_id %}" class="component_icon button icon_copy">{% trans "Copy" %}</a>
+     {% endif %}
+    {% if user.is_authenticated %}
+    <a href=# id ="_add_to_playlist" class="component_icon button icon_add_to_playlist">{% trans "Add to playlist" %}</a>
+    {% endif %}
+    <a href="{% url telemeta-fund-dublincore fund.public_id %}" class="component_icon button icon_dublin_core">Dublin Core</a>
+   </div>
+{% endblock %}
+
+{% block content %}
+      {% block infos %}
+        <div class="intro">
+            <span><img src="{% url telemeta-images "corpus_title.png" %}" style="vertical-align:middle" /> {% if fund.corpus.count %}{{ fund.corpus.count }} {% ifequal fund.corpus.count 1 %}item{% else %}corpus{% endifequal %}{% else %}No corpus% endif %}</span>
+        </div>
+        <div class="infos">
+        {% block general_info %}
+            <dl class="listing">
+                {% dl_field fund "reference" %}
+                {% dl_field fund "title"  %}
+                {% dl_field fund "description" %}
+                {% dl_field fund "code" %}
+            </dl>
+        {% endblock general_info %}
+        
+        <div class="extraInfos">
+            {% block related %}
+                {% include "telemeta/inc/fund_related.html" %}
+            {% endblock related %}
+        </div>
+        
+        <div class="extraInfos">
+        <h4><img src="{% url telemeta-images "copus_title.png" %}" style="vertical-align:middle" /> Corpus</h4>
+        {% with "1" as location_name %}
+            {% include "telemeta/inc/corpus_list.html" %}
+        {% endwith %}
+        </div>
+
+        {% endblock infos %}
+    </div>
+{% endblock %}
+
+{% block delete %}
+{% if user.is_authenticated and perms.telemeta.delete_mediafund %}
+ <a href="#" onclick="if(confirm(gettrans('delete the fund permanently?'))){window.location.href='{% url telemeta-fund-delete fund.public_id %}';};return false;"
+        class="component_icon button icon_delete" style="float:right;margin-top:0.5em;margin-bottom:1em">{% trans "Delete" %}</a>
+{% endif %}
+
+{% endblock %}
+
+{% else %}
+    <p>No such fund</p>
+{% endif %}
+
diff --git a/telemeta/templates/telemeta_default/fund_edit.html b/telemeta/templates/telemeta_default/fund_edit.html
new file mode 100644 (file)
index 0000000..8a1520f
--- /dev/null
@@ -0,0 +1,34 @@
+{% extends "telemeta/fund_detail.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block title %}
+    <img src="{% url telemeta-images "fund_red.png" %}" style="vertical-align:middle" /> Fund : {{ fund }}
+{% endblock %}
+{% block title_buttons %}
+    <a href="{% url telemeta-fund-detail fund.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+{% endblock %}
+
+{% block infos %}
+     <div class="infos">
+      <form method="post" id="_editCollectionForm" action="">{% csrf_token %}
+       <table>
+       <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
+       {% for field in form %}
+       <tr>
+            <tr><td class="error">{{ field.errors }}</td></tr>
+            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        </tr>
+       {% endfor %}
+       </table>
+        <div align="center" style="margin-top:3ex;">
+         <a href="{% url telemeta-fund-detail fund.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+         <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('_editCollectionForm').submit(); return false;">{% trans "Save" %}</a>
+        </div>
+      </form>
+     </div>
+{% endblock infos%}
+
+{% block delete %}
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/fund_list.html b/telemeta/templates/telemeta_default/fund_list.html
new file mode 100644 (file)
index 0000000..0c89303
--- /dev/null
@@ -0,0 +1,24 @@
+{% extends "telemeta/base.html" %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Media Funds" %} - {{ block.super }}{% endblock %}
+
+{% block title%}
+ <img src="{% url telemeta-images "funds_red.png" %}" style="vertical-align:middle" /> {% trans "Media Funds" %}
+{% endblock %}
+
+{% block title_buttons %}
+     <a href="{% url telemeta-funds %}" class="component_icon button icon_filter">{% trans "All" %}</a>
+    {% if user.is_authenticated and perms.telemeta.add_mediafunds %}
+      <a href="{% url telemeta-funds-add %}" class="component_icon button icon_add">{% trans "Add" %}</a>
+    {% endif %}
+{% endblock %}
+
+{% block content %}
+{% with object_list as funds %}
+<div class="fullpage">
+{% include "telemeta/inc/fund_list.html" %}
+</div>
+{% endwith %}
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/inc/corpus_list.html b/telemeta/templates/telemeta_default/inc/corpus_list.html
new file mode 100644 (file)
index 0000000..1e50ea3
--- /dev/null
@@ -0,0 +1,31 @@
+{% load telemeta_utils %}
+{% load i18n %}
+{% if corpi %}
+{% if hits %}
+
+<p class="pagination">
+{% blocktrans %}Corpus {{ first_on_page }} to {{ last_on_page }} on {{ hits }}{% endblocktrans %}
+| Pages : {% if pages == 1 %}1{% else %}{% if is_paginated %}{% load paginator %}{% paginator 5 %}{% endif %}{% endif %}
+</p>
+{% endif %}
+<table class="listing">
+<tr>
+    <th class="highlight">{% trans "Title" %}</th>
+    <th>{% trans "Description" %}</th>
+    <th>{% trans "Code" %}</th>
+    <th>{% trans "Reference" %}</th>
+</tr>
+{% for corpus in corpi %}
+<tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
+    <td class="highlight">
+        <a href="{% url telemeta-corpus-detail corpus.public_id %}">{{ corpus.title }}</a>
+    </td>
+    <td>{{ corpus.code }}</td>
+    <td>{{ corpus.reference }}</td>
+</tr>
+{% endfor %}
+</table>
+{% else %}
+    <p>{% trans "No corpus" %}</p>
+{% endif %}
+
diff --git a/telemeta/templates/telemeta_default/inc/fund_list.html b/telemeta/templates/telemeta_default/inc/fund_list.html
new file mode 100644 (file)
index 0000000..00f5e8d
--- /dev/null
@@ -0,0 +1,31 @@
+{% load telemeta_utils %}
+{% load i18n %}
+{% if funds %}
+{% if hits %}
+
+<p class="pagination">
+{% blocktrans %}Funds {{ first_on_page }} to {{ last_on_page }} on {{ hits }}{% endblocktrans %}
+| Pages : {% if pages == 1 %}1{% else %}{% if is_paginated %}{% load paginator %}{% paginator 5 %}{% endif %}{% endif %}
+</p>
+{% endif %}
+<table class="listing">
+<tr>
+    <th class="highlight">{% trans "Title" %}</th>
+    <th>{% trans "Description" %}</th>
+    <th>{% trans "Code" %}</th>
+    <th>{% trans "Reference" %}</th>
+</tr>
+{% for fund in funds %}
+<tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
+    <td class="highlight">
+        <a href="{% url telemeta-funds-detail funds.public_id %}">{{ fund.title }}</a>
+    </td>
+    <td>{{ fund.code }}</td>
+    <td>{{ fund.reference }}</td>
+</tr>
+{% endfor %}
+</table>
+{% else %}
+    <p>{% trans "No fund" %}</p>
+{% endif %}
+
index 7b5be5264bc6da3a26b716019d3511f831e2d6d4..191e15fcaf28d5fe8093abfe0a5941305a2b6983 100644 (file)
@@ -111,7 +111,7 @@ urlpatterns = patterns('',
         dict(template='telemeta/mediaitem_edit.html'), name="telemeta-item-edit"),
     url(r'^archives/items/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', item_view.item_copy,
         dict(template='telemeta/mediaitem_copy.html'), name="telemeta-item-copy"),
-    url(r'^item/add/$', item_view.item_add,
+    url(r'^archives/item_new/add/$', item_view.item_add,
         dict(template='telemeta/mediaitem_add.html'), name="telemeta-item-add"),
     url(r'^archives/items/(?P<public_id>[A-Za-z0-9._-]+)/player/(?P<width>[0-9]+)x(?P<height>[0-9]+)/$', item_view.item_detail,
         dict(template='telemeta/mediaitem_player.html'), name="telemeta-item-player"),
@@ -130,9 +130,9 @@ urlpatterns = patterns('',
     # collections
     url(r'^archives/collections/$', 'django.views.generic.list_detail.object_list',
         dict(all_collections, paginate_by=20, template_name="telemeta/collection_list.html"), name="telemeta-collections"),
-    url(r'^collections_unpublished/$', 'django.views.generic.list_detail.object_list',
+    url(r'^archives/collections_unpublished/$', 'django.views.generic.list_detail.object_list',
         dict(all_collections_unpublished, paginate_by=20, template_name="telemeta/collection_list.html"), name="telemeta-collections-unpublished"),
-    url(r'^collections_published/$', 'django.views.generic.list_detail.object_list',
+    url(r'^archives/collections_published/$', 'django.views.generic.list_detail.object_list',
         dict(all_collections_published, paginate_by=20, template_name="telemeta/collection_list.html"), name="telemeta-collections-published"),
     url(r'^archives/collections/?page=(?P<page>[0-9]+)$', 
         'django.views.generic.list_detail.object_list',
@@ -153,7 +153,7 @@ urlpatterns = patterns('',
         dict(template='telemeta/collection_edit.html'), name="telemeta-collection-edit"),
     url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', collection_view.collection_copy,
         dict(template='telemeta/collection_edit.html'), name="telemeta-collection-copy"),
-    url(r'^collection/add/$', collection_view.collection_add,
+    url(r'^archives/collection_new/add/$', collection_view.collection_add,
         dict(template='telemeta/collection_add.html'), name="telemeta-collection-add"),
     url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/add_item/$', item_view.item_add,
         dict(template='telemeta/mediaitem_add.html'), name="telemeta-collection-additem"),
@@ -168,10 +168,30 @@ urlpatterns = patterns('',
     # Corpus
     url(r'^archives/corpus/$', 'django.views.generic.list_detail.object_list',
         dict(all_corpus, paginate_by=20, template_name="telemeta/corpus_list.html"), name="telemeta-corpus"),
+    url(r'^archives/corpus/(?P<public_id>[A-Za-z0-9._-]+)/$', corpus_view.corpus_detail,
+        dict(template="telemeta/corpus_detail.html"), name="telemeta-corpus-detail"),
+    url(r'^archives/corpus/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', corpus_view.corpus_detail,
+        dict(template="telemeta/corpus_detail_dc.html"), name="telemeta-corpus-dublincore"),
+    url(r'^archives/corpus/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', corpus_view.corpus_edit,
+        dict(template='telemeta/corpus_edit.html'), name="telemeta-corpus-edit"),
+    url(r'^archives/corpus/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', corpus_view.corpus_copy,
+        dict(template='telemeta/corpus_edit.html'), name="telemeta-corpus-copy"),
+    url(r'^archives/corpus_new/add/$', corpus_view.corpus_add,
+        dict(template='telemeta/corpus_add.html'), name="telemeta-corpus-add"),
         
     # Funds
     url(r'^archives/funds/$', 'django.views.generic.list_detail.object_list',
-        dict(all_funds, paginate_by=20, template_name="telemeta/fund_list.html"), name="telemeta-fund"),
+        dict(all_funds, paginate_by=20, template_name="telemeta/fund_list.html"), name="telemeta-funds"),
+    url(r'^archives/funds/(?P<public_id>[A-Za-z0-9._-]+)/$', fund_view.fund_detail,
+        dict(template="telemeta/fund_detail.html"), name="telemeta-fund-detail"),
+    url(r'^archives/funds/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', fund_view.fund_detail,
+        dict(template="telemeta/fund_detail_dc.html"), name="telemeta-fund-dublincore"),
+    url(r'^archives/funds/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', fund_view.fund_edit,
+        dict(template='telemeta/fund_edit.html'), name="telemeta-fund-edit"),
+    url(r'^archives/funds/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', fund_view.fund_copy,
+        dict(template='telemeta/fund_edit.html'), name="telemeta-fund-copy"),
+    url(r'^archives/fund/add/$', fund_view.fund_add,
+        dict(template='telemeta/fund_add.html'), name="telemeta-fund-add"),
         
     # search
     url(r'^search/$', general_view.search, name="telemeta-search"),
index 188de05a1b9dbb75d2a1c39b29c4028033305d1a..1bed4a0901f8ec0c2d12b27cf5ba18193a632352 100644 (file)
@@ -1471,3 +1471,115 @@ class CorpusView(object):
             formset = MediaCorpusRelatedFormSet(instance=corpus)
 
         return render(request, template, {'corpus': corpus, 'formset': formset,})
+
+class CorpusView(object):
+    """Provide Corpuss web UI methods"""
+
+    def corpus_detail(self, request, public_id, template='telemeta/corpus_detail.html'):
+        corpus = MediaCorpus.objects.get(public_id=public_id)
+        collections = corpus.collections.enriched()
+        collections = collections.order_by('code')
+
+        if corpus.public_access == 'none' and not (request.user.is_staff or request.user.is_superuser):
+            mess = ugettext('Access not allowed')
+            title = ugettext('Corpus') + ' : ' + public_id + ' : ' + mess
+            description = ugettext('Please login or contact the website administator to get a private access.')
+            messages.error(request, title)
+            return render(request, 'telemeta/messages.html', {'description' : description})
+
+        related_media = MediaCorpusRelated.objects.filter(corpus=corpus)
+        check_related_media(related_media)
+        
+        return render(request, template, {'corpus': corpus, 'collections': collections, 'related_media': related_media})
+
+    @method_decorator(permission_required('telemeta.change_mediacorpus'))
+    def corpus_edit(self, request, public_id, template='telemeta/corpus_edit.html'):
+        corpus = MediaCorpus.objects.get(public_id=public_id)
+        if request.method == 'POST':
+            form = MediaCorpusForm(data=request.POST, files=request.FILES, instance=corpus)
+            if form.is_valid():
+                code = form.cleaned_data['code']
+                if not code:
+                    code = public_id
+                form.save()
+                corpus.set_revision(request.user)
+                return HttpResponseRedirect('/archives/corpus/'+code)
+        else:
+            form = MediaCorpusForm(instance=corpus)
+
+        return render(request, template, {'corpus': corpus, "form": form,})
+
+    @method_decorator(permission_required('telemeta.add_mediacorpus'))
+    def corpus_add(self, request, template='telemeta/corpus_add.html'):
+        corpus = MediaCorpus()
+        if request.method == 'POST':
+            form = MediaCorpusForm(data=request.POST, files=request.FILES, instance=corpus)
+            if form.is_valid():
+                code = form.cleaned_data['code']
+                if not code:
+                    code = public_id
+                form.save()
+                corpus.set_revision(request.user)
+                return HttpResponseRedirect('/archives/corps/'+code)
+        else:
+            form = MediaCorpusForm(instance=corpus)
+
+        return render(request, template, {'corpus': corpus, "form": form,})
+
+    @method_decorator(permission_required('telemeta.add_mediacorpus'))
+    def corpus_copy(self, request, public_id, template='telemeta/corpus_edit.html'):
+        if request.method == 'POST':
+            corpus = MediaCorpus()
+            form = MediaCorpusForm(data=request.POST, files=request.FILES, instance=corpus)
+            if form.is_valid():
+                code = form.cleaned_data['code']
+                if not code:
+                    code = public_id
+                form.save()
+                corpus.set_revision(request.user)
+                return HttpResponseRedirect('/archives/corpus/'+code)
+        else:
+            corpus = MediaCorpus.objects.get(public_id=public_id)
+            form = MediaCorpusForm(instance=corpus)
+
+        return render(request, template, {'corpus': corpus, "form": form,})
+
+    def corpus_playlist(self, request, public_id, template, mimetype):
+        try:
+            corpus = MediaCorpus.objects.get(public_id=public_id)
+        except ObjectDoesNotExist:
+            raise Http404
+
+        template = loader.get_template(template)
+        context = RequestContext(request, {'corpus': corpus, 'host': request.META['HTTP_HOST']})
+        return HttpResponse(template.render(context), mimetype=mimetype)
+
+    @method_decorator(permission_required('telemeta.delete_mediacorpus'))
+    def corpus_delete(self, request, public_id):
+        """Delete a given corpus"""
+        corpus = MediaCorpus.objects.get(public_id=public_id)
+        corpus.delete()
+        return HttpResponseRedirect('/archives/corpus/')
+
+    def related_media_corpus_stream(self, request, corpus_public_id, media_id):
+        corpus = MediaCorpus.objects.get(public_id=corpus_public_id)
+        media = MediaCorpusRelated.objects.get(corpus=corpus, id=media_id)
+        response = HttpResponse(stream_from_file(media.file.path), mimetype=media.mime_type)
+#        response['Content-Disposition'] = 'attachment'
+        return response
+
+    @method_decorator(permission_required('telemeta.change_mediacorpus'))
+    def related_media_edit(self, request, public_id, template):
+        corpus = MediaCorpus.objects.get(public_id=public_id)
+        MediaCorpusRelatedFormSet = inlineformset_factory(MediaCorpus, MediaCorpusRelated, form=MediaCorpusRelatedForm)
+        if request.method == 'POST':
+            formset = MediaCorpusRelatedFormSet(data=request.POST, files=request.FILES, instance=corpus)
+            if formset.is_valid():
+                formset.save()
+                corpus.set_revision(request.user)
+                return HttpResponseRedirect('/archives/corpus/'+public_id)
+        else:
+            formset = MediaCorpusRelatedFormSet(instance=corpus)
+
+        return render(request, template, {'corpus': corpus, 'formset': formset,})
+