From 5addd731fd7278e18be04e1e4ca37b93d0e8a1d2 Mon Sep 17 00:00:00 2001 From: yomguy Date: Mon, 21 May 2012 17:59:19 +0200 Subject: [PATCH] fix item copy with format --- .../templates/telemeta/mediaitem_copy.html | 8 +++--- telemeta/views/base.py | 27 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/telemeta/templates/telemeta/mediaitem_copy.html b/telemeta/templates/telemeta/mediaitem_copy.html index 64bbaac7..1d888e15 100644 --- a/telemeta/templates/telemeta/mediaitem_copy.html +++ b/telemeta/templates/telemeta/mediaitem_copy.html @@ -18,14 +18,15 @@ {% endblock %} {% block content %} - {% block infos %} + {% block infos %}
{% csrf_token %}
    {% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
+ {% for form in forms %} {% for field in form %} - {% if field.html_name == "copied_from_item" %} + {% if field.html_name in hidden_fields %} {% else %} @@ -40,6 +41,7 @@ {% endif %} {% endfor %} + {% endfor %}
{{ field.label_tag.as_hidden }}{{ field.as_hidden }}
{{ field.errors }}
{% trans "Cancel" %} @@ -48,7 +50,7 @@
- {% endblock infos %} + {% endblock infos %} {% endblock %} {% block delete %} diff --git a/telemeta/views/base.py b/telemeta/views/base.py index a88d255b..3e00f940 100644 --- a/telemeta/views/base.py +++ b/telemeta/views/base.py @@ -801,12 +801,18 @@ class ItemView(object): if request.method == 'POST': source_item = MediaItem.objects.get(public_id=public_id) item = MediaItem() - form = MediaItemForm(data=request.POST, files=request.FILES, instance=item) - if form.is_valid(): - form.save() - code = form.cleaned_data['code'] + format = Format() + item_form = MediaItemForm(data=request.POST, files=request.FILES, instance=item, prefix='item') + format_form = FormatForm(data=request.POST, instance=format, prefix='format') + + if item_form.is_valid(): + item_form.save() + code = item_form.cleaned_data['code'] if not code: code = str(item.id) + if format_form.is_valid(): + format.item = item + format_form.save() performances = MediaItemPerformance.objects.filter(media_item=source_item) for performance in performances: @@ -829,11 +835,16 @@ class ItemView(object): items = MediaItem.objects.filter(collection=item.collection) item.code = auto_code(items, item.collection.code) item.approx_duration = '' - form = MediaItemForm(instance=item) - form.code = item.code - form.file = None + item_form = MediaItemForm(instance=item, prefix='item') + format, created = Format.objects.get_or_create(item=item) + format_form = FormatForm(instance=format, prefix='format') + item_form.code = item.code + item_form.file = None + + forms = [item_form, format_form] + hidden_fields = ['item-copied_from_item', 'format-item'] - return render(request, template, {'item': item, "form": form}) + return render(request, template, {'item': item, "forms": forms, 'hidden_fields': hidden_fields,}) @method_decorator(permission_required('telemeta.delete_mediaitem')) def item_delete(self, request, public_id): -- 2.39.5