]> git.parisson.com Git - telemeta.git/commitdiff
add performances edit view and templates with formsets, fix 'copied_from_item' overri...
authoryomguy <yomguy@parisson.com>
Mon, 9 May 2011 16:11:03 +0000 (18:11 +0200)
committeryomguy <yomguy@parisson.com>
Mon, 9 May 2011 16:11:03 +0000 (18:11 +0200)
telemeta/models/media.py
telemeta/models/query.py
telemeta/templates/telemeta/mediaitem_performances_edit.html [new file with mode: 0644]
telemeta/templates/telemeta_default/mediaitem_detail.html
telemeta/templates/telemeta_default/mediaitem_edit.html
telemeta/templates/telemeta_default/mediaitem_performances_edit.html [new file with mode: 0644]
telemeta/urls.py
telemeta/web/base.py

index 07dd5a15fbb61bdf5e4551850244f4db9ceda2fd..9c2e85ba6f4c9d060b22fbbd58874c8791e93df7 100644 (file)
@@ -43,6 +43,7 @@ import re
 from telemeta.models.location import LocationRelation, Location
 from telemeta.models.system import Revision
 from telemeta.models.query import *
+from telemeta.models.instrument import *
 from django.forms import ModelForm
 
 
@@ -138,8 +139,8 @@ class MediaCollection(MediaResource):
     objects               = MediaCollectionManager()
 
     def __unicode__(self):
-        if self.title:
-            return self.title
+#        if self.title:
+#            return self.title
 
         return self.code
 
@@ -324,6 +325,10 @@ class MediaItemPerformance(ModelCore):
     class Meta(MetaCore):
         db_table = 'media_item_performances'
 
+class MediaItemPerformanceForm(ModelForm):
+    class Meta:
+        model = MediaItemPerformance
+        
 class MediaPart(MediaResource):
     "Describe an item part"
     element_type = 'part'
@@ -350,8 +355,8 @@ class Playlist(ModelCore):
         db_table = 'playlists'
 
     def __unicode__(self):
-        return self.name
-
+        return self.title
+        
 class PlaylistForm(ModelForm):
     class Meta:
         model = Playlist
@@ -368,7 +373,7 @@ class PlaylistResource(ModelCore):
     class Meta(MetaCore):
         db_table = 'playlist_resources'
         
-
+        
 class MediaItemMarker(MediaResource):
     "2D marker object : text value vs. time"
     
@@ -386,7 +391,10 @@ class MediaItemMarker(MediaResource):
         db_table = 'media_markers'
 
     def __unicode__(self):
-        return self.title
+        if self.title:
+            return self.title
+        else:
+            return self.public_id
 
 class Search(ModelCore):
     "Keywork search"
index 0324abfff26f09dbfd55578bf273feeb3bd713db..450b88ac709d52e7036fbf52da184d247a472b21 100644 (file)
@@ -394,3 +394,17 @@ class LocationManager(CoreManager):
         return self.get_query_set().flatname_map(*args, **kwargs)
     flatname_map.__doc__ = LocationQuerySet.flatname_map.__doc__    
 
+
+#class MediaItemPerformanceQuerySet(CoreQuerySet):
+#    
+#    def by_item(self, item):
+#        return self.filter(item=item)
+#        
+#
+#class MediaItemPerformanceManager(CoreManager):
+#    
+#    def get_query_set(self):
+#        "Return performance query set"
+#        return MediaItemPerformanceQuerySet(self.model)
+    
+        
diff --git a/telemeta/templates/telemeta/mediaitem_performances_edit.html b/telemeta/templates/telemeta/mediaitem_performances_edit.html
new file mode 100644 (file)
index 0000000..d01dd24
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/mediaitem_performances_edit.html" %}
index 9a3bd778e3b073728c118abc00729063551bf410..bf2339ce2468b12fe9d241c81290ff2f2fe44032 100644 (file)
         </div>
         {% endblock musical_data %}
     </div>
+    {% if user.is_authenticated and perms.telemeta.change_mediaitem %}
+      <a href="{% url telemeta-item-performances_edit item.public_id %}" class="component_icon button icon_edit">{% trans "Edit" %}</a>
+    {% endif %}
     <div class="extraInfos">
         {% block general_data %}
         <div>
index 542e4fc323bb7f9463e34a6ed05c5764c79d4255..0a0afcb1b0d7021cad76accd84c7073e93efb1f8 100644 (file)
              {% endif %}
              {% endif %}
         </tr>
+        {% else %}
+           <tr><td>{{ field.label_tag.as_hidden }}{{ field.as_hidden }}</td></tr>
         {% endif %}
        {% endfor %}
        </table>
        <div align="center">
-
         <a href="{% url telemeta-item-detail item.public_id %}"
            class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
         <a href="#" class="component_icon button icon_save"
diff --git a/telemeta/templates/telemeta_default/mediaitem_performances_edit.html b/telemeta/templates/telemeta_default/mediaitem_performances_edit.html
new file mode 100644 (file)
index 0000000..abb5114
--- /dev/null
@@ -0,0 +1,51 @@
+{% extends "telemeta/mediaitem_detail.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block extra_javascript %}
+{% endblock %}
+
+  {% block title %}
+    <img src="images/item.png" style="vertical-align:middle" /> <h1>Item : {{ item }}</h1>
+  {% endblock %}
+  {% block title_buttons %}
+   <a href="{% url telemeta-item-detail item.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+  {% endblock %}
+
+{% block content %}
+  {% block infos %}    
+    <div class="infos">
+     <form method="post" id="_editPerformanceForm" action="">{% csrf_token %}
+
+    {{ formset.management_form }}
+    {% for form in formset.forms %}
+      <table>
+        <tr><td><b>Performance :</b><td></td></tr>
+        {% for field in form %}
+        <tr>
+        {% if not "media_item" in field.html_name %}
+            {% if "id" in field.html_name %}
+                <td>{{ field.label_tag.as_hidden }}</td><td>{{ field.as_hidden }}</td>
+            {% else %}
+                <td>{{ field.label_tag }}: </td><td>{{ field }}</td>
+            {% endif %}
+        {% else %}
+            <td>{{ field.label_tag.as_hidden }}</td><td>{{ field.as_hidden }}</td>
+        {% endif %}
+        </tr>
+        {% endfor %}
+       </table>
+    {% endfor %}
+      
+      <div align="center">
+        <a href="{% url telemeta-item-detail item.public_id %}"
+           class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+        <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('_editPerformanceForm').submit(); return false;">{% trans "Save" %}</a>
+       </div>
+    
+     </form>
+    </div>
+       
+  {% endblock infos %}
+{% endblock content %}
index 3eba1216c699b27b6e7e6fa100e1d87e39bea6af..ca70ed14428c276db7e76e2351bd950bf3796583 100644 (file)
@@ -97,6 +97,8 @@ urlpatterns = patterns('',
         dict(template='telemeta/mediaitem_add.html'), name="telemeta-item-add"),
     url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/player/$', web_view.item_detail,
         dict(template='telemeta/mediaitem_player.html'), name="telemeta-item-player"),
+    url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/performances/$', web_view.item_performances_edit,
+        dict(template='telemeta/mediaitem_performances_edit.html'), name="telemeta-item-performances_edit"),
 
     # Markers
     url(r'^markers/(?P<marker_id>[A-Za-z0-9]+)/$', web_view.item_detail, name="telemeta-item-detail-marker"),
index 5127b90588f88a6c49f02e8752e575ca54cc9bd8..15689cc1aa0ce851eb8ff8c9fa89c816e5a6ebe0 100644 (file)
@@ -350,6 +350,22 @@ class WebView(object):
                     'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), "form": form, 
                     'previous' : previous, 'next' : next, 
                     })
+    
+    @method_decorator(permission_required('telemeta.change_mediaitem'))
+    def item_performances_edit(self, request, public_id, template):
+        item = MediaItem.objects.get(public_id=public_id)
+        PerformanceFormSet = modelformset_factory(MediaItemPerformance)
+        queryset = MediaItemPerformance.objects.filter(media_item=item)
+        if request.method == 'POST':
+            formset = PerformanceFormSet(data=request.POST, queryset=queryset)
+            if formset.is_valid():
+                formset.save()
+                return HttpResponseRedirect('/items/'+public_id)
+        else:
+            formset = PerformanceFormSet(queryset=queryset)
+        return render(request, template, 
+                    {'item': item, 'formset': formset,})
+    
         
     @method_decorator(permission_required('telemeta.add_mediaitem'))
     def item_add(self, request, template='telemeta/mediaitem_add.html'):