published_code_regex = '[A-Za-z0-9._-]*'
unpublished_code_regex = '[A-Za-z0-9._-]*'
code_regex = '(?:%s|%s)' % (published_code_regex, unpublished_code_regex)
-
- reference = CharField(_('reference'), unique=True, null=True)
- physical_format = WeakForeignKey('PhysicalFormat', related_name="collections",
- verbose_name=_('archive format'))
- old_code = CharField(_('old code'), unique=True, null=True)
+
code = CharField(_('code'), unique=True, required=True)
+ old_code = CharField(_('old code'), unique=True, null=True)
+ reference = CharField(_('reference'), unique=True, null=True)
title = CharField(_('title'), required=True)
alt_title = CharField(_('original title / translation'))
+ physical_format = WeakForeignKey('PhysicalFormat', related_name="collections",
+ verbose_name=_('archive format'))
+
physical_items_num = IntegerField(_('number of components (medium / piece)'))
publishing_status = WeakForeignKey('PublishingStatus', related_name="collections",
verbose_name=_('secondary edition'))
--- /dev/null
+{% extends "telemeta_default/collection_add.html" %}
+++ /dev/null
-{% extends "telemeta_default/collection_detail_edit.html" %}
--- /dev/null
+{% extends "telemeta_default/collection_edit.html" %}
--- /dev/null
+{% extends "telemeta_default/mediaitem_add.html" %}
--- /dev/null
+{% extends "telemeta_default/mediaitem_copy.html" %}
+++ /dev/null
-{% extends "telemeta_default/mediaitem_detail_edit.html" %}
--- /dev/null
+{% extends "telemeta_default/mediaitem_edit.html" %}
--- /dev/null
+{% extends "telemeta/collection_detail.html" %}
+
+{% block submenu %}
+ <div>
+ {% block tools %}
+ <a href="{% url telemeta-collections %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+ {% endblock tools %}
+ </div>
+{% endblock %}
+
+
+{% block infos %}
+ <div class="infos">
+ <form method="POST" action="">{% csrf_token %}
+ <table>
+ {% for field in form %}
+ {% if not field.html_name == "copied_from_item" %}
+ <tr>
+ <tr><td>{{ field.errors }}</td></tr>
+ <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ <div align="center">
+ <a href="{% url telemeta-collections %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+ <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save"/>
+ </div>
+ </form>
+ </div>
+{% endblock infos%}
{% if user.is_authenticated and perms.telemeta.change_mediacollection %}
{% block tools %}
- <a href="{% url telemeta-collection-detail-edit collection.public_id %}">
+ <a href="{% url telemeta-collection-edit collection.public_id %}">
<img src="images/edit_page.png" alt="EDIT" style="vertical-align:middle" /></a>
+ <a href="{% url telemeta-collection-copy collection.public_id %}">Copy</a>
{% endblock tools %}
{% endif %}
+++ /dev/null
-{% extends "telemeta/collection_detail.html" %}
-
-{% block tools %}
- <a href="{% url telemeta-collection-detail collection.public_id %}">
- <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
-{% endblock %}
-
-{% block infos %}
- <div class="infos">
- <form method="POST" action="">{% csrf_token %}
- <table>
- {{ form }}
- </table>
- <div align="center">
- <a href="{% url telemeta-collection-detail collection.public_id %}">
- <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
- <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save"/>
- </div>
- </form>
- </div>
-{% endblock infos%}
--- /dev/null
+{% extends "telemeta/collection_detail.html" %}
+
+{% block tools %}
+ <a href="{% url telemeta-collection-detail collection.public_id %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+{% endblock %}
+
+{% block infos %}
+ <div class="infos">
+ <form method="POST" action="">{% csrf_token %}
+ <table>
+ {% for field in form %}
+ {% if not field.html_name == "copied_from_item" %}
+ <tr>
+ <tr><td>{{ field.errors }}</td></tr>
+ <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ <div align="center">
+ <a href="{% url telemeta-collection-detail collection.public_id %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+ <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save"/>
+ </div>
+ </form>
+ </div>
+{% endblock infos%}
{% block head_title %}{% trans "Media Collections" %} - {{ block.super }}{% endblock %}
+{% block submenu %}
+ <div class="buttons">
+ {% if user.is_authenticated and perms.telemeta.add_mediacollection %}
+ <button><a href="{% url telemeta-collection-add %}">Add</a></button>
+ {% endif %}
+ </div>
+{% endblock %}
+
{% block content %}
<h3>{% trans "Media Collections" %}</h3>
--- /dev/null
+{% extends "telemeta/base.html" %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Item" %}- {{ block.super }}{% endblock %}
+
+
+{% if item %}
+{% block submenu %}
+<div>
+ {% if perms.telemeta.add_mediaitem %}
+ {% block tools %}
+ <a href="{% url telemeta-item-detail item.public_id %}">
+ <img src="images/edit_cancel.png" /></a>
+ {% endblock tools %}
+
+ {% endif %}
+</div>
+{% endblock %}
+
+{% block content %}
+<h3><img src="images/item.png" style="vertical-align:middle" /> Item : NEW</h3>
+
+ {% block infos %}
+ <div class="infos">
+ <form method="POST" action="">{% csrf_token %}
+ <table>
+ {% for field in form %}
+ {% if not field.html_name == "copied_from_item" %}
+ <tr>
+ <tr><td>{{ field.errors }}</td></tr>
+ <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ <div align="center">
+ <a href="{% url telemeta-item-detail item.public_id %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+ <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save" />
+ </div>
+ </form>
+ </div>
+ {% endblock infos %}
+</div> <!-- with-rightcol -->
+{% endblock %}
+{% else %}
+<p>No such item</p>
+{% endif %}
--- /dev/null
+{% extends "telemeta/mediaitem_detail.html" %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Item" %}- {{ block.super }}{% endblock %}
+
+{% block extra_javascript %}
+{% endblock %}
+
+{% block submenu %}
+<div>
+ {% if user.is_authenticated and perms.telemeta.add_mediaitem %}
+ {% block tools %}
+ <a href="{% url telemeta-item-detail item.public_id %}">
+ <img src="images/edit_cancel.png" /></a>
+ {% endblock tools %}
+ {% endif %}
+</div>
+{% endblock %}
+
+{% block content %}
+<h3><img src="images/item.png" style="vertical-align:middle" /> Item : {{ item }}</h3>
+
+ {% block infos %}
+ <div class="infos">
+ <form method="POST" action="">{% csrf_token %}
+ <table>
+ {{ form }}
+ </table>
+ <div align="center">
+ <a href="{% url telemeta-item-detail item.public_id %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+ <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save" />
+ </div>
+ </form>
+ </div>
+ {% endblock infos %}
+
+{% endblock %}
{% load telemeta_utils %}
{% load i18n %}
-{% block head_title %}{% trans "Item" %}{{item|prepend:': '}} - {{ block.super }}{% endblock %}
+{% block head_title %}{% trans "Item" %}- {{ block.super }}{% endblock %}
{% block stylesheets %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "css/timeside.css" %}" />
<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "skins/lab/style.css" %}" />
<link rel="stylesheet" type="text/css" href="{% url telemeta-css "player.css" %}" />
- {% endblock %}
- {% block extra_javascript %}
+{% endblock %}
+{% block extra_javascript %}
<script src="{% url telemeta-js "wz_jsgraphics.js" %}" type="text/javascript"></script>
<script src="{% url telemeta-js "soundmanager2.js" %}" type="text/javascript"></script>
<script src="{% url telemeta-timeside "src/timeside.js" %}" type="text/javascript"></script>
<script src="{% url telemeta-js "playerUtils.js" %}" type="text/javascript"></script>
-
<script type="text/javascript">
soundManager.url = '{% url telemeta-swf "./" %}';
soundManager.flashVersion = 9;
set_player_image_url('{% url telemeta-item-visualize item.public_id,visualizer_id,"WIDTH","HEIGHT" %}');
load_player({{ item.approx_duration.as_seconds }});
</script>
-
{% endblock %}
-
{% if item %}
{% block submenu %}
<div>
- <table>
- <tr>
- <td align="left">
- <a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a>
- </td>
- <td align="right">
- {% if user.is_authenticated and perms.telemeta.change_mediaitem %}
- {% block tools %}
- <a href="{% url telemeta-item-detail-edit item.public_id %}"><img src="images/edit_page.png" alt="EDIT"></a>
- {% endblock tools %}
- {% endif %}
- <a href="{% url telemeta-item-detail previous %}"><img src="images/previous.png" alt="PREVIOUS"></a>
- <a href="{% url telemeta-item-detail next %}"><img src="images/next.png" alt="NEXT"></a>
- </td>
- </tr>
- </table>
+ {% block tools %}
+ <a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a>
+ {% if user.is_authenticated and perms.telemeta.change_mediaitem %}
+
+ <a href="{% url telemeta-item-edit item.public_id %}"><img src="images/edit_page.png" style="vertical-align:middle" alt="EDIT" /></a>
+ <a href="{% url telemeta-item-copy item.public_id %}">Copy</a>
+
+ {% endif %}
+ <a href="{% url telemeta-item-detail previous %}"><img src="images/previous.png" style="vertical-align:middle" alt="PREVIOUS" /></a>
+ <a href="{% url telemeta-item-detail next %}"><img src="images/next.png" style="vertical-align:middle" alt="NEXT" /></a>
+ {% endblock tools %}
</div>
{% endblock %}
+++ /dev/null
-{% extends "telemeta/mediaitem_detail.html" %}
-
- {% block tools %}
- <a href="{% url telemeta-item-detail item.public_id %}">
- <img src="images/edit_cancel.png" /></a>
- {% endblock tools %}
-
- {% block infos %}
- <div class="infos">
- <form method="POST" action="">{% csrf_token %}
- <table>
- {{ form }}
- </table>
- <div align="center">
- <a href="{% url telemeta-item-detail item.public_id %}">
- <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
- <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save" />
- </div>
- </form>
- </div>
- {% endblock infos %}
--- /dev/null
+{% extends "telemeta/mediaitem_detail.html" %}
+
+ {% block tools %}
+ <a href="{% url telemeta-item-detail item.public_id %}">
+ <img src="images/edit_cancel.png" /></a>
+ {% endblock tools %}
+
+ {% block infos %}
+ <div class="infos">
+ <form method="POST" action="">{% csrf_token %}
+ <table>
+ {% for field in form %}
+ {% if not field.html_name == "copied_from_item" %}
+ <tr>
+ <tr><td>{{ field.errors }}</td></tr>
+ <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ <div align="center">
+ <a href="{% url telemeta-item-detail item.public_id %}">
+ <img src="images/edit_cancel.png" style="vertical-align:middle" /></a>
+ <input type="image" src="images/save_changes.png" style="vertical-align:middle" value="save" />
+ </div>
+ </form>
+ </div>
+ {% endblock infos %}
{% block head_title %}{% trans "Media Items" %} - {{ block.super }}{% endblock %}
+
+{% block submenu %}
+ <div class="buttons">
+ {% if user.is_authenticated and perms.telemeta.add_mediaitem %}
+ <button><a href="{% url telemeta-item-add %}">Add</a></button>
+ {% endif %}
+ </div>
+{% endblock %}
+
{% block content %}
<h3>{% trans "Media Items" %}</h3>
{% with object_list as items %}
web_view.item_playlist,
dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"),
name="telemeta-item-xspf"),
- url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/edit/$',
- web_view.item_detail_edit,
- name="telemeta-item-detail-edit"),
+ url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', web_view.item_edit,
+ dict(template='telemeta/mediaitem_edit.html'), name="telemeta-item-edit"),
+ url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', web_view.item_copy,
+ dict(template='telemeta/mediaitem_copy.html'), name="telemeta-item-copy"),
+ url(r'^item/add/$', web_view.item_add,
+ dict(template='telemeta/mediaitem_add.html'), name="telemeta-item-add"),
# collections
url(r'^collections/$', 'django.views.generic.list_detail.object_list',
web_view.collection_playlist,
dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"),
name="telemeta-collection-m3u"),
- url(r'^collections/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', web_view.collection_detail_edit,
- dict(template='telemeta/collection_detail_edit.html'), name="telemeta-collection-detail-edit"),
+ url(r'^collections/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', web_view.collection_edit,
+ dict(template='telemeta/collection_edit.html'), name="telemeta-collection-edit"),
+ url(r'^collections/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', web_view.collection_copy,
+ dict(template='telemeta/collection_edit.html'), name="telemeta-collection-copy"),
+ url(r'^collection/add/$', web_view.collection_add,
+ dict(template='telemeta/collection_add.html'), name="telemeta-collection-add"),
# search
url(r'^search/$', web_view.search, name="telemeta-search"),
return render(request, template, {'collection': collection})
@method_decorator(permission_required('telemeta.change_mediacollection'))
- def collection_detail_edit(self, request, public_id, template='telemeta/collection_detail_edit.html'):
+ def collection_edit(self, request, public_id, template='telemeta/collection_edit.html'):
collection = MediaCollection.objects.get(public_id=public_id)
if request.method == 'POST':
form = MediaCollectionForm(request.POST, request.FILES, instance=collection)
return HttpResponseRedirect('/collections/'+public_id)
else:
form = MediaCollectionForm(instance=collection)
-
return render(request, template, {'collection': collection, "form": form,})
+ @method_decorator(permission_required('telemeta.add_mediacollection'))
+ def collection_add(self, request, template='telemeta/collection_add.html'):
+ collection = MediaCollection()
+ if request.method == 'POST':
+ form = MediaCollectionForm(request.POST, request.FILES, instance=collection)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect('/collections/'+form.cleaned_data['code'])
+ else:
+ form = MediaCollectionForm(instance=collection)
+ return render(request, template, {'collection': collection, "form": form,})
+
+ @method_decorator(permission_required('telemeta.add_mediacollection'))
+ def collection_copy(self, request, public_id, template='telemeta/collection_edit.html'):
+ collection = MediaCollection.objects.get(public_id=public_id)
+ new_collection = MediaCollection()
+ if request.method == 'POST':
+ form = MediaCollectionForm(request.POST, request.FILES, instance=new_collection)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect('/collections/'+form.cleaned_data['code'])
+ else:
+ form = MediaCollectionForm(instance=collection)
+ return render(request, template, {'collection': collection, "form": form,})
+
def item_previous_next(self, item):
# Get previous and next items
pks = []
})
@method_decorator(permission_required('telemeta.change_mediaitem'))
- def item_detail_edit(self, request, public_id, template='telemeta/mediaitem_detail_edit.html'):
+ def item_edit(self, request, public_id, template='telemeta/mediaitem_edit.html'):
"""Show the details of a given item"""
item = MediaItem.objects.get(public_id=public_id)
'previous' : previous, 'next' : next,
})
+ @method_decorator(permission_required('telemeta.add_mediaitem'))
+ def item_add(self, request, template='telemeta/mediaitem_add.html'):
+ """Show the details of a given item"""
+ item = MediaItem()
+ if request.method == 'POST':
+ form = MediaItemForm(request.POST, request.FILES, instance=item)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect('/items/'+form.cleaned_data['code'])
+ else:
+ form = MediaItemForm(instance=item)
+ return render(request, template, {'item': item, "form": form})
+
+
+ @method_decorator(permission_required('telemeta.add_mediaitem'))
+ def item_copy(self, request, public_id, template='telemeta/mediaitem_copy.html'):
+ """Show the details of a given item"""
+ item = MediaItem.objects.get(public_id=public_id)
+ new_item = MediaItem()
+ if request.method == 'POST':
+ form = MediaItemForm(request.POST, request.FILES, instance=new_item)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect('/items/'+form.cleaned_data['code'])
+ else:
+ form = MediaItemForm(instance=item)
+ return render(request, template, {'item': item, "form": form})
+
def item_analyze(self, item):
public_id = str(item.public_id)
analyze_file = public_id + '.xml'