From: yomguy Date: Tue, 8 Mar 2011 00:31:53 +0000 (+0100) Subject: add copy methods, FIXME: remove copied_from_item item tag from the edit form for... X-Git-Tag: 1.1~404 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=024800b36957de965467720d7f14fe63649ff949;p=telemeta.git add copy methods, FIXME: remove copied_from_item item tag from the edit form for performance issues with CREM database, rename templates --- diff --git a/telemeta/models/media.py b/telemeta/models/media.py index c9a4178b..9f900dc6 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -74,14 +74,15 @@ class MediaCollection(MediaResource): 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')) diff --git a/telemeta/templates/telemeta/collection_add.html b/telemeta/templates/telemeta/collection_add.html new file mode 100644 index 00000000..962155bb --- /dev/null +++ b/telemeta/templates/telemeta/collection_add.html @@ -0,0 +1 @@ +{% extends "telemeta_default/collection_add.html" %} diff --git a/telemeta/templates/telemeta/collection_detail_edit.html b/telemeta/templates/telemeta/collection_detail_edit.html deleted file mode 100644 index cf00e17a..00000000 --- a/telemeta/templates/telemeta/collection_detail_edit.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "telemeta_default/collection_detail_edit.html" %} diff --git a/telemeta/templates/telemeta/collection_edit.html b/telemeta/templates/telemeta/collection_edit.html new file mode 100644 index 00000000..e2b1e093 --- /dev/null +++ b/telemeta/templates/telemeta/collection_edit.html @@ -0,0 +1 @@ +{% extends "telemeta_default/collection_edit.html" %} diff --git a/telemeta/templates/telemeta/mediaitem_add.html b/telemeta/templates/telemeta/mediaitem_add.html new file mode 100644 index 00000000..954910dd --- /dev/null +++ b/telemeta/templates/telemeta/mediaitem_add.html @@ -0,0 +1 @@ +{% extends "telemeta_default/mediaitem_add.html" %} diff --git a/telemeta/templates/telemeta/mediaitem_copy.html b/telemeta/templates/telemeta/mediaitem_copy.html new file mode 100644 index 00000000..154f7a0c --- /dev/null +++ b/telemeta/templates/telemeta/mediaitem_copy.html @@ -0,0 +1 @@ +{% extends "telemeta_default/mediaitem_copy.html" %} diff --git a/telemeta/templates/telemeta/mediaitem_detail_edit.html b/telemeta/templates/telemeta/mediaitem_detail_edit.html deleted file mode 100644 index eeeec911..00000000 --- a/telemeta/templates/telemeta/mediaitem_detail_edit.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "telemeta_default/mediaitem_detail_edit.html" %} diff --git a/telemeta/templates/telemeta/mediaitem_edit.html b/telemeta/templates/telemeta/mediaitem_edit.html new file mode 100644 index 00000000..db8aacd1 --- /dev/null +++ b/telemeta/templates/telemeta/mediaitem_edit.html @@ -0,0 +1 @@ +{% extends "telemeta_default/mediaitem_edit.html" %} diff --git a/telemeta/templates/telemeta_default/collection_add.html b/telemeta/templates/telemeta_default/collection_add.html new file mode 100644 index 00000000..19b7d713 --- /dev/null +++ b/telemeta/templates/telemeta_default/collection_add.html @@ -0,0 +1,33 @@ +{% extends "telemeta/collection_detail.html" %} + +{% block submenu %} +
+ {% block tools %} + + + {% endblock tools %} +
+{% endblock %} + + +{% block infos %} +
+
{% csrf_token %} + + {% for field in form %} + {% if not field.html_name == "copied_from_item" %} + + + + + {% endif %} + {% endfor %} +
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
+
+ + + +
+
+
+{% endblock infos%} diff --git a/telemeta/templates/telemeta_default/collection_detail.html b/telemeta/templates/telemeta_default/collection_detail.html index 7e2dcf49..8f37a7ce 100644 --- a/telemeta/templates/telemeta_default/collection_detail.html +++ b/telemeta/templates/telemeta_default/collection_detail.html @@ -16,8 +16,9 @@ {% if user.is_authenticated and perms.telemeta.change_mediacollection %} {% block tools %} - + EDIT + Copy {% endblock tools %} {% endif %} diff --git a/telemeta/templates/telemeta_default/collection_detail_edit.html b/telemeta/templates/telemeta_default/collection_detail_edit.html deleted file mode 100644 index 1a8b17e4..00000000 --- a/telemeta/templates/telemeta_default/collection_detail_edit.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "telemeta/collection_detail.html" %} - -{% block tools %} - - -{% endblock %} - -{% block infos %} -
-
{% csrf_token %} - - {{ form }} -
-
- - - -
-
-
-{% endblock infos%} diff --git a/telemeta/templates/telemeta_default/collection_edit.html b/telemeta/templates/telemeta_default/collection_edit.html new file mode 100644 index 00000000..dfb3f4e1 --- /dev/null +++ b/telemeta/templates/telemeta_default/collection_edit.html @@ -0,0 +1,28 @@ +{% extends "telemeta/collection_detail.html" %} + +{% block tools %} + + +{% endblock %} + +{% block infos %} +
+
{% csrf_token %} + + {% for field in form %} + {% if not field.html_name == "copied_from_item" %} + + + + + {% endif %} + {% endfor %} +
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
+
+ + + +
+
+
+{% endblock infos%} diff --git a/telemeta/templates/telemeta_default/collection_list.html b/telemeta/templates/telemeta_default/collection_list.html index f8a99882..d2ba7761 100644 --- a/telemeta/templates/telemeta_default/collection_list.html +++ b/telemeta/templates/telemeta_default/collection_list.html @@ -4,6 +4,14 @@ {% block head_title %}{% trans "Media Collections" %} - {{ block.super }}{% endblock %} +{% block submenu %} +
+ {% if user.is_authenticated and perms.telemeta.add_mediacollection %} + + {% endif %} +
+{% endblock %} + {% block content %}

{% trans "Media Collections" %}

diff --git a/telemeta/templates/telemeta_default/mediaitem_add.html b/telemeta/templates/telemeta_default/mediaitem_add.html new file mode 100644 index 00000000..b5c1ae39 --- /dev/null +++ b/telemeta/templates/telemeta_default/mediaitem_add.html @@ -0,0 +1,49 @@ +{% extends "telemeta/base.html" %} +{% load telemeta_utils %} +{% load i18n %} + +{% block head_title %}{% trans "Item" %}- {{ block.super }}{% endblock %} + + +{% if item %} +{% block submenu %} +
+ {% if perms.telemeta.add_mediaitem %} + {% block tools %} + + + {% endblock tools %} + + {% endif %} +
+{% endblock %} + +{% block content %} +

Item : NEW

+ + {% block infos %} +
+
{% csrf_token %} + + {% for field in form %} + {% if not field.html_name == "copied_from_item" %} + + + + + {% endif %} + {% endfor %} +
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
+
+ + + +
+
+
+ {% endblock infos %} + +{% endblock %} +{% else %} +

No such item

+{% endif %} diff --git a/telemeta/templates/telemeta_default/mediaitem_copy.html b/telemeta/templates/telemeta_default/mediaitem_copy.html new file mode 100644 index 00000000..0cca0bc8 --- /dev/null +++ b/telemeta/templates/telemeta_default/mediaitem_copy.html @@ -0,0 +1,39 @@ +{% extends "telemeta/mediaitem_detail.html" %} +{% load telemeta_utils %} +{% load i18n %} + +{% block head_title %}{% trans "Item" %}- {{ block.super }}{% endblock %} + +{% block extra_javascript %} +{% endblock %} + +{% block submenu %} +
+ {% if user.is_authenticated and perms.telemeta.add_mediaitem %} + {% block tools %} + + + {% endblock tools %} + {% endif %} +
+{% endblock %} + +{% block content %} +

Item : {{ item }}

+ + {% block infos %} +
+
{% csrf_token %} + + {{ form }} +
+
+ + + +
+
+
+ {% endblock infos %} + +{% endblock %} diff --git a/telemeta/templates/telemeta_default/mediaitem_detail.html b/telemeta/templates/telemeta_default/mediaitem_detail.html index 24a12700..27aef506 100644 --- a/telemeta/templates/telemeta_default/mediaitem_detail.html +++ b/telemeta/templates/telemeta_default/mediaitem_detail.html @@ -2,21 +2,20 @@ {% 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 }} - {% endblock %} - {% block extra_javascript %} +{% endblock %} +{% block extra_javascript %} - - {% endblock %} - {% if item %} {% block submenu %}
- - - - - -
- Dublin Core - - {% if user.is_authenticated and perms.telemeta.change_mediaitem %} - {% block tools %} - EDIT - {% endblock tools %} - {% endif %} - PREVIOUS - NEXT -
+ {% block tools %} + Dublin Core + {% if user.is_authenticated and perms.telemeta.change_mediaitem %} + + EDIT + Copy + + {% endif %} + PREVIOUS + NEXT + {% endblock tools %}
{% endblock %} diff --git a/telemeta/templates/telemeta_default/mediaitem_detail_edit.html b/telemeta/templates/telemeta_default/mediaitem_detail_edit.html deleted file mode 100644 index d74d06f9..00000000 --- a/telemeta/templates/telemeta_default/mediaitem_detail_edit.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "telemeta/mediaitem_detail.html" %} - - {% block tools %} - - - {% endblock tools %} - - {% block infos %} -
-
{% csrf_token %} - - {{ form }} -
-
- - - -
-
-
- {% endblock infos %} diff --git a/telemeta/templates/telemeta_default/mediaitem_edit.html b/telemeta/templates/telemeta_default/mediaitem_edit.html new file mode 100644 index 00000000..60d3bea5 --- /dev/null +++ b/telemeta/templates/telemeta_default/mediaitem_edit.html @@ -0,0 +1,28 @@ +{% extends "telemeta/mediaitem_detail.html" %} + + {% block tools %} + + + {% endblock tools %} + + {% block infos %} +
+
{% csrf_token %} + + {% for field in form %} + {% if not field.html_name == "copied_from_item" %} + + + + + {% endif %} + {% endfor %} +
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
+
+ + + +
+
+
+ {% endblock infos %} diff --git a/telemeta/templates/telemeta_default/mediaitem_list.html b/telemeta/templates/telemeta_default/mediaitem_list.html index b20e8d8c..5bbf9228 100644 --- a/telemeta/templates/telemeta_default/mediaitem_list.html +++ b/telemeta/templates/telemeta_default/mediaitem_list.html @@ -4,6 +4,15 @@ {% block head_title %}{% trans "Media Items" %} - {{ block.super }}{% endblock %} + +{% block submenu %} +
+ {% if user.is_authenticated and perms.telemeta.add_mediaitem %} + + {% endif %} +
+{% endblock %} + {% block content %}

{% trans "Media Items" %}

{% with object_list as items %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 218ef40d..e9bac7b3 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -84,9 +84,12 @@ urlpatterns = patterns('', web_view.item_playlist, dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-item-xspf"), - url(r'^items/(?P[A-Za-z0-9._-]+)/edit/$', - web_view.item_detail_edit, - name="telemeta-item-detail-edit"), + url(r'^items/(?P[A-Za-z0-9._-]+)/edit/$', web_view.item_edit, + dict(template='telemeta/mediaitem_edit.html'), name="telemeta-item-edit"), + url(r'^items/(?P[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', @@ -108,8 +111,12 @@ urlpatterns = patterns('', web_view.collection_playlist, dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), name="telemeta-collection-m3u"), - url(r'^collections/(?P[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[A-Za-z0-9._-]+)/edit/$', web_view.collection_edit, + dict(template='telemeta/collection_edit.html'), name="telemeta-collection-edit"), + url(r'^collections/(?P[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"), diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 6a74fcb2..1bb3efb9 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -117,7 +117,7 @@ class WebView(object): 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) @@ -126,9 +126,33 @@ class WebView(object): 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 = [] @@ -188,7 +212,7 @@ class WebView(object): }) @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) @@ -222,6 +246,34 @@ class WebView(object): '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'