]> git.parisson.com Git - telemeta.git/commitdiff
add forms to Collection and Item, adapt edit views
authoryomguy <yomguy@parisson.com>
Thu, 17 Feb 2011 23:59:48 +0000 (00:59 +0100)
committeryomguy <yomguy@parisson.com>
Thu, 17 Feb 2011 23:59:48 +0000 (00:59 +0100)
telemeta/models/media.py
telemeta/templates/telemeta_default/collection_detail_edit.html
telemeta/templates/telemeta_default/mediaitem_detail_edit.html
telemeta/web/base.py

index ea360e641d451d9b9fc5a9aae4e9e106e2feab71..a78da49c29c509c51ba80bd8b810a576a5eddcf5 100644 (file)
@@ -204,6 +204,10 @@ class MediaCollection(MediaResource):
     class Meta(MetaCore):
         db_table = 'media_collections'
     
+class MediaCollectionForm(ModelForm):
+    class Meta:
+        model = MediaCollection
+
 class MediaItem(MediaResource):
     "Describe an item"
     element_type = 'item'
@@ -298,6 +302,10 @@ class MediaItem(MediaResource):
 
         return title
 
+class MediaItemForm(ModelForm):
+    class Meta:
+        model = MediaItem
+
 class MediaItemKeyword(ModelCore):
     "Item keyword"
     item    = ForeignKey('MediaItem', verbose_name=_('item'), related_name="keyword_relations")
index d1b369c99ee19149b7b6802f5314fa12742c7d28..90505e964c6ce98569e974c7a0d5f57303739008 100644 (file)
@@ -1,36 +1,36 @@
-{% extends "telemeta/base.html" %}\r
-{% load telemeta_utils %}\r
-{% load i18n %}\r
-\r
-{% block head_title %}{% trans "Collection" %}{{collection|prepend:': '}} - {{ block.super }}{% endblock %}\r
-\r
-{% block stylesheets %}\r
-{{ block.super }}\r
-<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "css/timeside.css" %}" />\r
-<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "skins/lab/style.css" %}" />\r
-<link rel="stylesheet" type="text/css" href="{% url telemeta-css "player.css" %}" />\r
-{% endblock %}\r
-{% block extra_javascript %}\r
-{% endblock %}\r
-\r
-{% if collection %}\r
-\r
-{% block submenu %}\r
-    <div><a href="{% url telemeta-collection-dublincore collection.public_id %}">Dublin Core</a></div>\r
-{% endblock %}\r
-\r
-{% block content %}\r
-    <h3>Collection: {{ collection }}</h3>\r
-        <div class="infos">\r
-        <form method="POST" action="">{% csrf_token %}\r
-        <table>\r
-            {{ formset }}\r
-        </table>\r
-        <input type="submit" value="save">\r
-        </form>\r
-        </div>\r
-{% endblock %}\r
-{% else %}\r
-    <p>No such collection</p>\r
-{% endif %}\r
-\r
+{% extends "telemeta/base.html" %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Collection" %}{{collection|prepend:': '}} - {{ 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 %}
+
+{% if collection %}
+
+{% block submenu %}
+    <div><a href="{% url telemeta-collection-dublincore collection.public_id %}">Dublin Core</a></div>
+{% endblock %}
+
+{% block content %}
+    <h3>Collection: {{ collection }}</h3>
+        <div class="infos">
+        <form method="POST" action="">{% csrf_token %}
+        <table>
+             {{ form }}
+        </table>
+        <input type="submit" value="save">
+        </form>
+        </div>
+{% endblock %}
+{% else %}
+    <p>No such collection</p>
+{% endif %}
+
index c88b2c44ca6943125529bf930c25ac09e73b43ea..20fe1be05ab528d4c12463f05fd7aab19301b60a 100644 (file)
-{% extends "telemeta/base.html" %}\r
-{% load telemeta_utils %}\r
-{% load i18n %}\r
-\r
-{% block head_title %}{% trans "Item" %}{{item|prepend:': '}} - {{ block.super }}{% endblock %}\r
-\r
-{% block stylesheets %}\r
-{{ block.super }}\r
-<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "css/timeside.css" %}" />\r
-      <link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "skins/lab/style.css" %}" />\r
-      <link rel="stylesheet" type="text/css" href="{% url telemeta-css "player.css" %}" />\r
-      {% endblock %}\r
-      {% block extra_javascript %}\r
-\r
-<script src="{% url telemeta-js "wz_jsgraphics.js" %}" type="text/javascript"></script>\r
-<script src="{% url telemeta-js "soundmanager2.js" %}" type="text/javascript"></script>\r
-<script src="{% url telemeta-timeside "src/timeside.js" %}" type="text/javascript"></script>\r
-<script src="{% url telemeta-js "playerUtils.js" %}" type="text/javascript"></script>\r
-\r
-<script type="text/javascript">\r
-    soundManager.url = '{% url telemeta-swf "./" %}';\r
-    soundManager.flashVersion = 9;\r
-    soundManager.useMovieStar = true; // enable MP4/M4A/AAC\r
-    soundManager.debugMode = false;\r
-    set_player_image_url('{% url telemeta-item-visualize item.public_id,visualizer_id,"WIDTH","HEIGHT" %}');\r
-    load_player({{ item.approx_duration.as_seconds }});\r
-</script>\r
-\r
-{% endblock %}\r
-\r
-\r
-{% if item %}\r
-{% block submenu %}\r
-    <div>\r
-    <a href="{% url telemeta-item-detail item.public_id %}"><button>EXIT</button></a>\r
-    <a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a>\r
-    </div>\r
-{% endblock %}\r
-\r
-{% block content %}\r
-<h3>Item : {{ item }}</h3>\r
-<div class="{% if item.file %}with-rightcol{% endif %}">\r
-\r
-    {% if item.file %}\r
-    <div id="player_maximized" class="ts-skin-lab">\r
-        <a href="#" class="toggle">Minimize</a>\r
-        <div class="wazing"></div>\r
-    </div>\r
-    <div id="rightcol">\r
-        <div id="player_minimized" class="ts-skin-lab">\r
-            <a href="#" class="toggle">Maximize</a>\r
-            <div class="wazing"></div>\r
-            <div id="player" class="ts-player">\r
-                <div class="ts-viewer">\r
-                    <div class="ts-wave">\r
-                        <div class="ts-image-container">\r
-                            <a href="{% url telemeta-item-export item.public_id,"mp3" %}">\r
-                               <img class="ts-image" src="{% url telemeta-item-visualize item.public_id,visualizer_id,360,130 %}"\r
-                                 alt="" /></a>\r
-                        </div>\r
-                    </div>\r
-                </div>\r
-            </div>\r
-        </div>\r
-\r
-        <div class="markers_div" id="markers_div_id"></div>\r
-        <div id="item_edit">\r
-            <div class="item_visualization" id="item_markers_id">\r
-            </div>\r
-            <div class="item_visualization" id="item_visualization_id">\r
-                <form id="visualizer_id_form" method="get" action="#">\r
-                    <!--\r
-                    <select name="visualizer_id" onchange="this.form.submit()">\r
-                        {% for v in visualizers %}\r
-                        <option value="{{ v.id }}" {% ifequal v.id visualizer_id %} selected="selected" {% endifequal %}>\r
-                        {{v.name}}</option>\r
-                        {% endfor %}\r
-                    </select>\r
-                    -->\r
-                    <select id="visualizer_id" name="visualizer_id">\r
-                        {% for v in visualizers %}\r
-                        <option value="{% url telemeta-item-visualize item.public_id,v.id,"WIDTH","HEIGHT" %}">\r
-                                {{v.name}}</option>\r
-                        {% endfor %}\r
-                    </select>\r
-                    <input type="submit" value="Set" />\r
-                </form>\r
-\r
-                <div class="analyzer">\r
-                    <table width="100%">\r
-                        <tr class="analyzer-title">\r
-                            <td>Property</td>\r
-                            <td>Value</td>\r
-                            <td>Unit</td>\r
-                        </tr>\r
-                        {% for analyser in analysers %}\r
-                        <tr class="analyzer-line">\r
-                            <td>\r
-                                {{ analyser.name }}\r
-                            </td>\r
-                            <td>\r
-                                {{ analyser.value }}\r
-                            </td>\r
-                            <td>\r
-                                {{ analyser.unit }}\r
-                            </td>\r
-                        </tr>\r
-                        {% endfor %}\r
-                    </table>\r
-                </div>\r
-                <!--\r
-                        <form method="get" action="#">\r
-                            <p>&nbsp;Vamp plugin analysis</p>\r
-                            <select name="vamp_id">\r
-                            {% for plugin in vamp_plugins %}\r
-                            <option value="{{ plugin }}" {% ifequal plugin vamp_id %} selected="selected" {% endifequal %}>\r
-                            {{ plugin }}</option>\r
-                            {% endfor %}\r
-                            </select>\r
-                            <input type="submit" value="Get" />\r
-                        </form>\r
-                -->\r
-            </div>\r
-        </div>\r
-        {% if audio_export_enabled %}\r
-        <div class="exporter">\r
-            <p>{% trans "Download:" %}\r
-                {% for format in export_formats %}\r
-                <a href="{% url telemeta-item-export item.public_id,format.extension %}">{{ format.name }}</a>\r
-                {% endfor %}</p>\r
-        </div>\r
-        {% endif %}\r
-\r
-    </div>\r
-    {% endif %}\r
-\r
-<div class="infos">\r
- <form method="POST" action="">{% csrf_token %}\r
-   <table>\r
-     {{ formset }}\r
-   </table>\r
-  <input type="submit" value="save">\r
- </form>\r
-</div>\r
-\r
-</div> <!-- with-rightcol -->\r
-\r
-{% endblock %}\r
-\r
-{% else %}\r
-    <p>No such item</p>\r
-{% endif %}\r
+{% extends "telemeta/base.html" %}
+{% load telemeta_utils %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Item" %}{{item|prepend:': '}} - {{ 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 %}
+
+<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;
+    soundManager.useMovieStar = true; // enable MP4/M4A/AAC
+    soundManager.debugMode = false;
+    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>
+    <a href="{% url telemeta-item-detail item.public_id %}"><button>EXIT</button></a>
+    <a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a>
+    </div>
+{% endblock %}
+
+{% block content %}
+<h3>Item : {{ item }}</h3>
+<div class="{% if item.file %}with-rightcol{% endif %}">
+
+    {% if item.file %}
+    <div id="player_maximized" class="ts-skin-lab">
+        <a href="#" class="toggle">Minimize</a>
+        <div class="wazing"></div>
+    </div>
+    <div id="rightcol">
+        <div id="player_minimized" class="ts-skin-lab">
+            <a href="#" class="toggle">Maximize</a>
+            <div class="wazing"></div>
+            <div id="player" class="ts-player">
+                <div class="ts-viewer">
+                    <div class="ts-wave">
+                        <div class="ts-image-container">
+                            <a href="{% url telemeta-item-export item.public_id,"mp3" %}">
+                               <img class="ts-image" src="{% url telemeta-item-visualize item.public_id,visualizer_id,360,130 %}"
+                                 alt="" /></a>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="markers_div" id="markers_div_id"></div>
+        <div id="item_edit">
+            <div class="item_visualization" id="item_markers_id">
+            </div>
+            <div class="item_visualization" id="item_visualization_id">
+                <form id="visualizer_id_form" method="get" action="#">
+                    <!--
+                    <select name="visualizer_id" onchange="this.form.submit()">
+                        {% for v in visualizers %}
+                        <option value="{{ v.id }}" {% ifequal v.id visualizer_id %} selected="selected" {% endifequal %}>
+                        {{v.name}}</option>
+                        {% endfor %}
+                    </select>
+                    -->
+                    <select id="visualizer_id" name="visualizer_id">
+                        {% for v in visualizers %}
+                        <option value="{% url telemeta-item-visualize item.public_id,v.id,"WIDTH","HEIGHT" %}">
+                                {{v.name}}</option>
+                        {% endfor %}
+                    </select>
+                    <input type="submit" value="Set" />
+                </form>
+
+                <div class="analyzer">
+                    <table width="100%">
+                        <tr class="analyzer-title">
+                            <td>Property</td>
+                            <td>Value</td>
+                            <td>Unit</td>
+                        </tr>
+                        {% for analyser in analysers %}
+                        <tr class="analyzer-line">
+                            <td>
+                                {{ analyser.name }}
+                            </td>
+                            <td>
+                                {{ analyser.value }}
+                            </td>
+                            <td>
+                                {{ analyser.unit }}
+                            </td>
+                        </tr>
+                        {% endfor %}
+                    </table>
+                </div>
+                <!--
+                        <form method="get" action="#">
+                            <p>&nbsp;Vamp plugin analysis</p>
+                            <select name="vamp_id">
+                            {% for plugin in vamp_plugins %}
+                            <option value="{{ plugin }}" {% ifequal plugin vamp_id %} selected="selected" {% endifequal %}>
+                            {{ plugin }}</option>
+                            {% endfor %}
+                            </select>
+                            <input type="submit" value="Get" />
+                        </form>
+                -->
+            </div>
+        </div>
+        {% if audio_export_enabled %}
+        <div class="exporter">
+            <p>{% trans "Download:" %}
+                {% for format in export_formats %}
+                <a href="{% url telemeta-item-export item.public_id,format.extension %}">{{ format.name }}</a>
+                {% endfor %}</p>
+        </div>
+        {% endif %}
+
+    </div>
+    {% endif %}
+
+<div class="infos">
+ <form method="POST" action="">{% csrf_token %}
+   <table>
+     {{ form }}
+   </table>
+  <input type="submit" value="save">
+ </form>
+</div>
+
+</div> <!-- with-rightcol -->
+
+{% endblock %}
+
+{% else %}
+    <p>No such item</p>
+{% endif %}
index 62bdee59a4765658b45a8d919e92fafb890eb06c..ba3beb8bab1b5db55a8d7aad3c63a0258fde74af 100644 (file)
@@ -52,7 +52,7 @@ from django.contrib.auth.decorators import login_required
 from django.core.context_processors import csrf
 from django.forms.models import modelformset_factory
 
-from telemeta.models import MediaItem, Location, MediaCollection, EthnicGroup
+from telemeta.models import MediaItem, Location, MediaCollection, EthnicGroup, MediaCollectionForm, MediaItemForm
 from telemeta.models import dublincore, Enumeration, MediaItemMarker
 import telemeta.interop.oai as oai
 from telemeta.interop.oaidatasource import TelemetaOAIDataSource
@@ -94,7 +94,7 @@ class WebView(object):
 
     graphers = timeside.core.processors(timeside.api.IGrapher)
     decoders = timeside.core.processors(timeside.api.IDecoder)
-    encoders= timeside.core.processors(timeside.api.IEncoder)
+    encoders = timeside.core.processors(timeside.api.IEncoder)
     analyzers = timeside.core.processors(timeside.api.IAnalyzer)
     cache = TelemetaCache(settings.TELEMETA_DATA_CACHE_DIR)
     cache_export = TelemetaCache(settings.TELEMETA_EXPORT_CACHE_DIR)
@@ -117,14 +117,14 @@ class WebView(object):
 
     def collection_detail_edit(self, request, public_id, template='telemeta/collection_detail_edit.html'):
         collection = MediaCollection.objects.get(public_id=public_id)
-        MediaCollectionFormSet = modelformset_factory(MediaCollection)
         if request.method == 'POST':
-            formset = MediaCollectionFormSet(request.POST, request.FILES, queryset=MediaCollection.objects.filter(code=public_id))
-            if formset.is_valid():
-                formset.save()
+            form = MediaCollectionForm(request.POST, request.FILES, instance=collection)
+            if form.is_valid():
+                form.save()
         else:
-            formset = MediaCollectionFormSet(queryset=MediaCollection.objects.filter(code=public_id))
-        return render(request, template, {'collection': collection, "formset": formset,})
+            form = MediaCollectionForm(instance=collection)
+        
+        return render(request, template, {'collection': collection, "form": form,})
 
     def item_previous_next(self, item):
         # Get previous and next items
@@ -205,18 +205,17 @@ class WebView(object):
         previous, next = self.item_previous_next(item)
         analyzers = self.item_analyze(item)
         
-        MediaItemFormSet = modelformset_factory(MediaItem)
         if request.method == 'POST':
-            formset = MediaItemFormSet(request.POST, request.FILES, queryset=MediaItem.objects.filter(code=public_id))
-            if formset.is_valid():
-                formset.save()
+            form = MediaItemForm(request.POST, request.FILES, instance=item)
+            if form.is_valid():
+                form.save()
         else:
-            formset = MediaItemFormSet(queryset=MediaItem.objects.filter(code=public_id))
+            form = MediaItemForm(instance=item)
         
         return render(request, template, 
                     {'item': item, 'export_formats': formats, 
                     'visualizers': graphers, 'visualizer_id': grapher_id,'analysers': analyzers,  #FIXME analysers
-                    'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), "formset": formset
+                    'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), "form": form
                     'previous' : previous, 'next' : next, 
                     })