]> git.parisson.com Git - telemeta.git/commitdiff
CBV for collection edit and detail, rm collection player
authorGuillaume Pellerin <yomguy@parisson.com>
Fri, 19 Sep 2014 01:34:35 +0000 (03:34 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Fri, 19 Sep 2014 01:35:31 +0000 (03:35 +0200)
telemeta/forms/media.py
telemeta/templates/telemeta/collection_detail.html
telemeta/templates/telemeta/collection_edit.html
telemeta/templates/telemeta/collection_list.html
telemeta/templates/telemeta/inc/collection_list.html
telemeta/templates/telemeta/inc/mediaitem_list.html
telemeta/templates/telemeta/mediaitem_list.html
telemeta/urls.py
telemeta/views/collection.py
telemeta/views/resource.py

index 0711595752b273542cf4935dad89a57c65506cbd..7fb4ba0a426a7a0f3bafbcfad5914dff38c391c5 100644 (file)
@@ -150,3 +150,13 @@ class CorpusRelatedInline(InlineFormSet):
 
     model = MediaCorpusRelated
 
+
+class CollectionRelatedInline(InlineFormSet):
+
+    model = MediaCollectionRelated
+
+
+class ItemRelatedInline(InlineFormSet):
+
+    model = MediaItemRelated
+
index e6de75da6ef819a0b6a371f60c3242ce458d3d54..0f9b3726325b6c4962878bbe7d961f20ae7e1f4e 100644 (file)
               (<a href="{% url "telemeta-collection-m3u" collection.public_id %}">M3U</a>,
               <a href="{% url "telemeta-collection-xspf" collection.public_id %}">XSPF</a>)</h3>
              </div>
-                <!-- This is Jeroen Wijering's Flash MP3 Player,
-                  under CC Attribution-NonCommercial-ShareAlike 2.0 license
-                  from: http://www.jeroenwijering.com/?item=Flash_MP3_Player-->
-                <p id="collection_player_c">
-                  <a href="http://www.macromedia.com/go/getflashplayer">Get Flash</a> to see this player.
-                </p>
-                <script type="text/javascript">
-                  var so = new SWFObject('{{ STATIC_URL }}telemeta/swf/mp3player.swf','playlist','362','200','7');
-                  so.addVariable("file","{% url "telemeta-collection-xspf" collection.public_id %}");
-                  so.addVariable("displayheight","0");
-                  so.addParam("wmode", "opaque");
-                  so.write('collection_player_c');
-                </script>
             </div>
         </div>
         {% endif %}
index a03ebbab18983419215573840f8603debe1799f7..147e496090008bf4250865f1a98287552e1b8a68 100644 (file)
@@ -1,43 +1,62 @@
 {% extends "telemeta/collection_detail.html" %}
 {% load i18n %}
 {% load telemeta_utils %}
+{% load bootstrap3 %}
 
 {% block title %}
     <img src="{{ STATIC_URL }}telemeta/images/collections_red.png" style="vertical-align:middle" /> Collection : {{ collection }}
 {% endblock %}
+
 {% block title_buttons %}
-    <a href="{% url "telemeta-collection-detail" collection.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
-    <a href="#" class="component_icon button icon_save"
-   onclick="document.getElementById('_editCollectionForm').submit(); return false;">{% trans "Save" %}</a>
+    <a href="{% url "telemeta-collection-detail" object.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
 {% endblock %}
 
 {% block infos %}
-     <div class="infos">
-      <form method="post" id="_editCollectionForm" action="">{% csrf_token %}
-       <table>
-       <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
-       {% for field in form %}
-       <tr>
-        {% if field.html_name == "copied_from_item" %}
-            <td>{{ field.label_tag.as_hidden }}</td><td>{{ field.as_hidden }}</td>
-        {% else %}
-            <tr><td class="error">{{ field.errors }}</td></tr>
-            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
-        {% endif %}
-        </tr>
-       {% endfor %}
-     <tr>
-      <td style="padding-top: 1em">{% trans "Related media" %}:</td>
-      <td style="padding-top: 1em"><a href="{% url "telemeta-collection-related_edit" collection.public_id %}" class="component_icon button icon_edit">{% trans "Edit"%} {% trans "related media"%}</a></td>
-    </tr>
-       </table>
-        <div align="center" style="margin-top:3ex;">
-         <a href="{% url "telemeta-collection-detail" collection.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
-         <a href="#" class="component_icon button icon_save"
-   onclick="document.getElementById('_editCollectionForm').submit(); return false;">{% trans "Save" %}</a>
-        </div>
-      </form>
-     </div>
+
+  <div>
+  <form method="post" id="_editForm" action="">{% csrf_token %}
+
+    <ul class="nav nav-tabs" role="tablist">
+      <li class="active"><a href="#general" role="tab" data-toggle="tab">General</a></li>
+      <li><a href="#related" role="tab" data-toggle="tab">Related media</a></li>
+    </ul>
+
+    <div class="tab-content">
+
+      <div class="tab-pane fade in active" id="general">
+        <script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
+        <script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
+        <script type="text/javascript" src="/static/admin/js/actions.min.js"></script>
+
+        {{ form.media }}
+        {% bootstrap_form form %}
+      </div>
+
+      <div class="tab-pane" id="related">
+        {% for formset in inlines %}
+          {{ formset.management_form }}
+          {% for form in formset %}
+           <hr />
+           {% bootstrap_form form %}
+          {# {{ form.as_table }} #}
+          {% endfor %}
+        {% endfor %}
+      </div>
+
+    </div>
+
+
+    <div align="center" style="margin-top:3ex;">
+           <a href="{% url "telemeta-collection-detail" object.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+           {% if perms.telemeta.change_mediacollection %}
+            <input type="submit" value="Enregistrer" class="default" name="_save"/>
+           {% endif %}
+           {# <a href="#" class="component_icon button icon_save" id="submit_button">{% trans "Save" %}</a> #}
+    </div>
+
+   </form>
+  </div>
+
 {% endblock infos%}
 
 {% block delete %}
index 79d7cab68e216ff017d17af6164e899399ebf615..a50e1689545934e419d116685ddb9f7d1c73f06d 100644 (file)
   </ul>
 </div>
 
-   {% if user.is_authenticated and perms.telemeta.add_mediacollection %}
+    {% if user.is_authenticated and perms.telemeta.add_mediacollection %}
       <a href="{% url "telemeta-collection-add" %}" class="component_icon button icon_add">{% trans "Add" %}</a>
-   {% endif %}
+    {% endif %}
 {% endblock %}
 
 {% block content %}
 <div class="fullpage">
+{% with object_list as collections %}
 {% include "telemeta/inc/collection_list.html" %}
-</div>
+{% endwith %}
 {% endblock %}
index 64c11409862c3d9dc4904795cb69a2b772cb0870..d215e8185b52ae62931829ef833e840546b8844e 100644 (file)
@@ -1,7 +1,7 @@
 {% load telemeta_utils %}
 {% load i18n %}
 
-{% if object_list %}
+{% if collections %}
 
 <table class="listing">
 <tr>
@@ -12,7 +12,7 @@
     <th>{% trans "Recording period" %}</th>
     <th>{% trans "Sound" %}</th>
 </tr>
-{% for collection in object_list %}
+{% for collection in collections %}
 <tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
     <td class="highlight">
         <a href="{% url "telemeta-collection-detail" collection.public_id %}">{{ collection.title }}</a>
index 041f86e1c2b198c1133b1284b95434354eee5c21..bcd53d3c80f5127b7e0c23d300d95ce4fb9003bc 100644 (file)
@@ -1,7 +1,7 @@
 {% load telemeta_utils %}
 {% load i18n %}
 
-{% if object_list %}
+{% if items %}
 
 <table class="listing">
 <tr>
@@ -16,7 +16,7 @@
     <th>{% trans "Year of recording" %}</th>
     <th>{% trans "Sound" %}</th>
 </tr>
-{% for item in object_list %}
+{% for item in items %}
 <tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
     <td class="highlight">
         <a href="{% url "telemeta-item-detail" item.public_id %}">{{ item }}</a>
index 014deda567101ba3f5bbb314166859a774a47f31..df1a3d81df305a01f14d19c536575d8ebdc92f3a 100644 (file)
@@ -37,7 +37,9 @@
 {% endblock %}
 
 {% block content %}
+{% with object_list as items %}
 <div class="fullpage">
 {% include "telemeta/inc/mediaitem_list.html" %}
 </div>
+{% endwith %}
 {% endblock %}
index b67b93435f24ac45fde6e9890cb2e9256c97b1d4..728005bf4406d8f53d17dd246eebbdafbea3eceb 100644 (file)
@@ -127,8 +127,7 @@ urlpatterns = patterns('',
     url(r'^archives/collections_published/$', CollectionPublishedListView.as_view(), name="telemeta-collections-published"),
     url(r'^archives/collections_sound/$', CollectionSoundListView.as_view(), name="telemeta-collections-sound"),
 
-    url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/$', collection_view.collection_detail,
-        dict(template="telemeta/collection_detail.html"), name="telemeta-collection-detail"),
+    url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/$', CollectionDetailView.as_view(), name="telemeta-collection-detail"),
     url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', collection_view.collection_detail,
         dict(template="telemeta/collection_detail_dc.html"), name="telemeta-collection-dublincore"),
     url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/collection_xspf.xml$',
@@ -139,8 +138,7 @@ urlpatterns = patterns('',
         collection_view.collection_playlist,
         dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"),
         name="telemeta-collection-m3u"),
-    url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', collection_view.collection_edit,
-        dict(template='telemeta/collection_edit.html'), name="telemeta-collection-edit"),
+    url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', CollectionEditView.as_view(), name="telemeta-collection-edit"),
     url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', collection_view.collection_copy,
         dict(template='telemeta/collection_edit.html'), name="telemeta-collection-copy"),
     url(r'^archives/collection_new/add/$', collection_view.collection_add,
@@ -159,9 +157,8 @@ urlpatterns = patterns('',
     # Generic resources
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/$', ResourceListView.as_view(), name="telemeta-resource-list"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/$', ResourceDetailView.as_view(), name="telemeta-resource-detail"),
-    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/edit2/$', ResourceFormSetView.as_view(), name="telemeta-resource-detail2"),
-    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', ResourceDetailDCView.as_view(), name="telemeta-resource-dublincore"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', ResourceEditView.as_view(), name="telemeta-resource-edit"),
+    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', ResourceDetailDCView.as_view(), name="telemeta-resource-dublincore"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', ResourceCopyView.as_view(), name="telemeta-resource-copy"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)_add$', ResourceAddView.as_view(), name="telemeta-resource-add"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/delete/$', ResourceDeleteView.as_view(), name="telemeta-resource-delete"),
index 74cdf88dec5d193fe3108a3658d3be4742309801..3d35cfc604e75df3edf4d64a7439c0bdb2ee1288 100644 (file)
@@ -52,7 +52,7 @@ class CollectionView(object):
             messages.error(request, title)
             return render(request, 'telemeta/messages.html', {'description' : description})
 
-        playlists = get_playlists(request)
+        playlists = get_playlists_names(request)
 
         related_media = MediaCollectionRelated.objects.filter(collection=collection)
         check_related_media(related_media)
@@ -225,6 +225,15 @@ class CollectionPackageView(View):
         return super(CollectionPackageView, self).dispatch(*args, **kwargs)
 
 
+class CollectionViewMixin(object):
+
+    model = MediaCollection
+
+    def get_object(self):
+        self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk
+        return get_object_or_404(self.model, pk=self.pk)
+
+
 class CollectionListView(ListView):
 
     model = MediaCollection
@@ -253,40 +262,48 @@ class CollectionSoundListView(CollectionListView):
     queryset = MediaCollection.objects.sound().order_by('code', 'old_code')
 
 
-class CollectionViewMixin(object):
-
-    model = MediaCollection
-    type = 'collection'
-
-
 class CollectionDetailView(CollectionViewMixin, DetailView):
 
-
-    def get_object(self):
-        return self.model.objects.get(code=self.kwargs['public_id'])
+    template_name = 'telemeta/collection_detail.html'
 
     def get_context_data(self, **kwargs):
         context = super(CollectionDetailView, self).get_context_data(**kwargs)
         collection = self.get_object()
         items = collection.items.enriched()
-        items = items.order_by('code', 'old_code')
+        context['collection'] = collection
+        context['items'] = items.order_by('code', 'old_code')
 
         if collection.public_access == 'none' and not (request.user.is_staff or request.user.is_superuser):
             mess = ugettext('Access not allowed')
             title = ugettext('Collection') + ' : ' + public_id + ' : ' + mess
             description = ugettext('Please login or contact the website administator to get a private access.')
             messages.error(request, title)
-            return render(request, 'telemeta/messages.html', {'description' : description})
+            return render(self.request, 'telemeta/messages.html', {'description' : description})
 
-        playlists = get_playlists(self.request)
-        related_media = MediaCollectionRelated.objects.filter(collection=collection)
-        check_related_media(related_media)
-        parents = MediaCorpus.objects.filter(children=collection)
+        context['playlists'] = get_playlists_names(self.request)
+        context['related_media'] = MediaCollectionRelated.objects.filter(collection=collection)
+        check_related_media(context['related_media'])
+        context['parents'] = MediaCorpus.objects.filter(children=collection)
         revisions = Revision.objects.filter(element_type='collection',
                                             element_id=collection.id).order_by('-time')
         if revisions:
-            last_revision = revisions[0]
+            context['last_revision'] = revisions[0]
         else:
-            last_revision = None
+            context['last_revision'] = None
 
         return context
+
+
+class CollectionEditView(CollectionViewMixin, UpdateWithInlinesView):
+
+    template_name = 'telemeta/collection_edit.html'
+    inlines = [CollectionRelatedInline, ]
+
+    def form_valid(self, form):
+        messages.info(self.request, _("You have successfully updated your collection."))
+        return super(CollectionEditView, self).form_valid(form)
+
+    def get_success_url(self):
+        return reverse_lazy('telemeta-collection-detail', kwargs={'public_id':self.kwargs['public_id']})
+
+
index cd36723dd395b8b4be4d09c3c9efd97013433873..b342f42b9c667f1c3267e32f49eb7ad7984810cb 100644 (file)
@@ -293,23 +293,6 @@ class ResourceDetailDCView(ResourceDetailView):
     template_name = "telemeta/resource_detail_dc.html"
 
 
-class ResourceEditView(ResourceSingleMixin, UpdateView):
-
-    template_name = 'telemeta/resource_edit.html'
-
-    def get_form_class(self):
-        self.type = self.kwargs['type']
-        self.setup(self.type)
-        return self.form
-
-    def form_valid(self, form):
-        messages.info(self.request, _("You have successfully updated your resource."))
-        return super(ResourceEditView, self).form_valid(form)
-
-    def get_success_url(self):
-        return reverse_lazy('telemeta-resource-detail', kwargs={'type':self.kwargs['type'], 'public_id':self.kwargs['public_id']})
-
-
 class ResourceAddView(ResourceMixin, CreateView):
 
     template_name = 'telemeta/resource_add.html'
@@ -344,10 +327,9 @@ class ResourceDeleteView(ResourceSingleMixin, DeleteView):
          return reverse_lazy('telemeta-resource-list', kwargs={'type':self.kwargs['type']})
 
 
+class ResourceEditView(ResourceSingleMixin, UpdateWithInlinesView):
 
-class ResourceFormSetView(ResourceSingleMixin, UpdateWithInlinesView):
-
-    template_name = 'telemeta/resource_edit2.html'
+    template_name = 'telemeta/resource_edit.html'
 
     def get_success_url(self):
         return reverse_lazy('telemeta-resource-detail', kwargs={'type':self.kwargs['type'], 'public_id':self.kwargs['public_id']})