]> git.parisson.com Git - telemeta.git/commitdiff
fix item copy with format
authoryomguy <yomguy@parisson.com>
Mon, 21 May 2012 15:59:19 +0000 (17:59 +0200)
committeryomguy <yomguy@parisson.com>
Mon, 21 May 2012 15:59:19 +0000 (17:59 +0200)
telemeta/templates/telemeta/mediaitem_copy.html
telemeta/views/base.py

index 64bbaac73dd488121b88f5f716a1a75094f0ad51..1d888e159db2f8eba328a182bda6668857a1628c 100644 (file)
 {% endblock %}
 
 {% block content %}
-  {% block infos %}    
+  {% block infos %}
     <div class="infos">
      <form enctype="multipart/form-data" id="_mediaItemCopyForm" method="post" action="">{% csrf_token %}
      <ul>{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</ul>
       <table>
+      {% for form in forms %}
        {% for field in form %}
             <tr>
-            {% if field.html_name == "copied_from_item" %}
+            {% if field.html_name in hidden_fields %}
                 <td>{{ field.label_tag.as_hidden }}{{ field.as_hidden }}</td>
             {% else %}
                 <tr><td class="error">{{ field.errors }}</td></tr>
@@ -40,6 +41,7 @@
             {% endif %}
             </tr>
        {% endfor %}
+       {% endfor %}
        </table>
        <div align="center" style="margin-top:3ex;">
            <a href="{% url telemeta-item-detail item.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
@@ -48,7 +50,7 @@
        </div>
      </form>
     </div>
-  {% endblock infos %}  
+  {% endblock infos %}
 {% endblock %}
 
 {% block delete %}
index a88d255bb19cd07464fe6efdb5cb89ccd0c8e198..3e00f940e140731ea807c86c948270f33e942e54 100644 (file)
@@ -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):