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")
<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>
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
+
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
+
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
+
--- /dev/null
+{% 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 %}
+
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"),
# 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',
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"),
# 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"),
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,})
+