]> git.parisson.com Git - telemeta.git/commitdiff
try with Foundation
authorGuillaume Pellerin <yomguy@parisson.com>
Tue, 16 Sep 2014 12:19:22 +0000 (14:19 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Tue, 16 Sep 2014 12:19:22 +0000 (14:19 +0200)
15 files changed:
setup.py
telemeta/forms/media.py
telemeta/static/telemeta/css/telemeta.css
telemeta/templates/telemeta/base.html
telemeta/templates/telemeta/inc/children_list.html
telemeta/templates/telemeta/inc/resource_list.html
telemeta/templates/telemeta/inc/resource_related.html
telemeta/templates/telemeta/login.html
telemeta/templates/telemeta/resource_detail.html
telemeta/urls.py
telemeta/views/core.py
telemeta/views/home.py
telemeta/views/item.py
telemeta/views/resource.py
tools/dev/make_doc.sh

index 9a9e5a103f15b519120b109c8d5193c52f5318cf..7bb4762cc62bdd1ffd2b072b9b3bf79db256524e 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -40,8 +40,13 @@ setup(
         'psutil',
         'pyyaml',
         'python-ebml',
+        'django-extra-views',
+        'django-ajax-selects',
+        'django-breadcrumbs',
   ],
-  dependency_links = ['https://github.com/yomguy/django-json-rpc/tarball/0.6.2',]
+  dependency_links = ['https://github.com/yomguy/django-json-rpc/tarball/0.6.2',
+                      'https://github.com/elo80ka/django-dynamic-formset/tarball/master',
+                      ]
   platforms=['OS Independent'],
   license='CeCILL v2',
   classifiers = CLASSIFIERS,
index a506f4383d352ff198c22599908df5cf0c98df3e..60639cfc1ac30cae32a4efb80bcb1f57d0b61d18 100644 (file)
@@ -35,6 +35,9 @@
 import django.forms as forms
 from django.forms import ModelForm
 from telemeta.models import *
+from extra_views import CreateWithInlinesView, UpdateWithInlinesView, InlineFormSet
+from extra_views.generic import GenericInlineFormSet
+
 
 class MediaFondsForm(ModelForm):
     children = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=MediaCorpus.objects.all())
@@ -42,31 +45,36 @@ class MediaFondsForm(ModelForm):
     class Meta:
         model = MediaFonds
 
+
 class MediaFondsRelatedForm(ModelForm):
     class Meta:
         model = MediaFondsRelated
 
+
 class MediaCorpusForm(ModelForm):
     children = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                               queryset=MediaCollection.objects.all())
-
     class Meta:
         model = MediaCorpus
 
+
 class MediaCorpusRelatedForm(ModelForm):
     class Meta:
         model = MediaCorpusRelated
 
+
 class MediaCollectionForm(ModelForm):
     class Meta:
         model = MediaCollection
     def clean_doctype_code(self):
         return self.cleaned_data['doctype_code'] or 0
 
+
 class MediaCollectionRelatedForm(ModelForm):
     class Meta:
         model = MediaCollectionRelated
 
+
 class MediaItemForm(ModelForm):
     class Meta:
         model = MediaItem
@@ -80,14 +88,17 @@ class MediaItemForm(ModelForm):
         super(MediaItemForm, self).__init__(*args, **kwargs)
         self.fields.insert(18, 'comment', self.fields['comment'])
 
+
 class MediaItemRelatedForm(ModelForm):
     class Meta:
         model = MediaItemRelated
 
+
 class MediaItemKeywordForm(ModelForm):
     class Meta:
         model = MediaItemKeyword
 
+
 class MediaItemPerformanceForm(ModelForm):
     class Meta:
         model = MediaItemPerformance
@@ -97,7 +108,16 @@ class MediaItemPerformanceForm(ModelForm):
         self.fields['instrument'].queryset = Instrument.objects.order_by('name')
         self.fields['alias'].queryset = InstrumentAlias.objects.order_by('name')
 
+
 class PlaylistForm(ModelForm):
     class Meta:
         model = Playlist
 
+
+class FondsRelatedInline(InlineFormSet):
+    model = MediaFondsRelated
+
+
+class CorpusRelatedInline(InlineFormSet):
+    model = MediaCorpusRelated
+
index c11e2ac0bd923682fbfd840fcb12e36e7a084b03..26f77425687b68d6e52a160941dd4e59487d3a90 100644 (file)
@@ -1,15 +1,28 @@
 body {margin: 0; padding: 0;}
+
 a {text-decoration: none; color: #969696;}
+
 a img {border: none;}
-html, input, select, textarea, h1, h2, h3, h4, h5, h6 {
-    font-size: 100%;
-}
+
 body {
-    font: 0.8125em/1em Verdana, sans-serif;
+    font: 0.8125em/1em verdana, sans-serif;
     line-height: 1.3em;
     color: #333;
     background: #FFF;
     margin: 0em;
+    text-rendering: optimizeLegibility;
+}
+
+table, caption, tbody, tfoot, thead, tr, th, td {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    outline: 0;
+    font-size: 100%;
+    vertical-align: baseline;
+    background: transparent;
+    /*width: auto;
+    height: auto;*/
 }
 
 /*a:link, a:visited {
@@ -297,7 +310,7 @@ label.disabled { color: #d7d7d7 }
 /* Quick search */
 #quick_search {
     position: absolute;
-    top: 1.7em;
+    top: 1.2em;
     left: 35%;
     background-color: #6a0307;
     padding: 0.3em 0em 0.3em 0.3em;
@@ -305,36 +318,29 @@ label.disabled { color: #d7d7d7 }
     -webkit-border-radius: 8px 8px 8px 8px;
     border-radius: 8px 8px 8px 8px;
 }
+
 #quick_search form {
     float: left;
     margin-right: 12px;
 }
-#quick_search p {
-    margin-top: .3em;
-    clear: left;
-}
 
-#quick_search a {
-    font-size: .8em;
-    font-weight: bold;
-    vertical-align: middle;
-}
 
 #quick_search input {
     vertical-align: middle;
-    font-size: .8em;
-    margin-right: 0;
+    font-size: .9em;
+    margin-right: 0.5em;
     -moz-border-radius: 5px 5px 5px 5px;
     -webkit-border-radius: 5px 5px 5px 5px;
     border-radius: 5px 5px 5px 5px;
 }
+
 #quick_search_pattern {
     background: #FFF url(search_bg.png) no-repeat;
     padding: .4em .1em;
-    padding-left: 25px;
     width: 180px;
     color: #555;
     font-weight: bold;
+    float: left;
 }
 
 /* Authentication */
@@ -359,15 +365,23 @@ label.disabled { color: #d7d7d7 }
     font-weight: bold;
 }
 
+
 form.login {
-    font-size: 0.8em;
+    font-size: 0.9em;
     float: left;
     margin-top: 2em;
     margin-bottom: 4em;
-    padding: .5em;
-    border: 1px dotted #888;
+    border: 0px dotted #888;
+    padding: 1em;
+    background-color: #FFF;
+    -moz-border-radius: 8px 0px 8px 8px;
+    -webkit-border-radius: 8px 0px 8px 8px;
+    border-radius: 8px 0px 8px 8px;
 }
 
+.login-text{
+    background-color: white;
+}
 .login-error {
     color: #BB0000;
 }
@@ -439,7 +453,6 @@ form.login .submit {
 /* Main navigation bar  (borrowed from Trac) */
 #menu {
     background-color: #6a0307 ;
-    font: normal verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
     border-top: .25em solid #6a0307;
     padding-left:26px;
 }
@@ -458,7 +471,7 @@ form.login .submit {
     moz-border-radius-topright: 5px 5px;
     border-top-right-radius: 5px 5px;
     font-weight: bold;
-    font-size: 14px;
+    font-size: 15px;
     padding: .5em 1em;
 }
 #menu a:hover, #menu a.active{
@@ -566,7 +579,7 @@ color:#FFF;
     color: #FFF;
     font-size: 10px;
     border-top: 1px solid;
-    height: 31px;
+    height: 42px;
     padding: 0.5em 0.5em 1.1em 0.5em;
     margin-top: 2.5em;
 }
@@ -910,7 +923,12 @@ img.align-left {
     clear: right;
 }
 
-#module-set .module {
+#module-set-left {
+    float: left;
+    clear: left;
+}
+
+.module {
     border: 1px solid #000;
     background-image: url(../images/grid_bg.png);
     padding: 0.2em;
@@ -920,29 +938,36 @@ img.align-left {
     border-radius: 11px 0px 11px 11px;
 }
 
-#module-set .module h3 {
-    color: #FFF;
+.module h3 {
+    color: white;
     font-size: 1.1em;
     font-weight: bold;
 }
 
-#module-set .module a:hover {
+.module-title {
+    color: white;
+    font-size: 1.1em;
+    font-weight: bold;
+}
+
+
+.module a:hover {
     text-decoration: none;
 }
 
-#module-set .module div {
+.module div {
         -moz-border-radius: 8px 0px 8px 8px;
         -webkit-border-radius: 8px 0px 8px 8px;
         border-radius: 8px 0px 8px 8px;
        }
 
-#module-set .module img {
+.module img {
         -moz-border-radius: 8px 0px 8px 8px;
         -webkit-border-radius: 8px 0px 8px 8px;
         border-radius: 8px 0px 8px 8px;
        }
 
-#module-set .module ul, li {
+.module ul, li {
         -moz-border-radius: 8px 0px 8px 8px;
         -webkit-border-radius: 8px 0px 8px 8px;
         border-radius: 8px 0px 8px 8px;
@@ -1123,6 +1148,7 @@ a.image-link {
     color:#444;
     text-decoration: none;
     margin:0;
+    font: 0.9em/1.2em sans-serif;
 }
 .component + .component, .component + .component_icon, .component_icon + .component ,
 .component_icon + .component_icon{
index f7b6666a0306e9b9d704657ac76228e0ffb8631f..4cbabbd52788e250ddc9d8998766ee0cdc89a14d 100644 (file)
@@ -7,11 +7,17 @@
 
 <head>
 <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+<meta charset="utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<link rel="alternate" href="/rss" title="RSS 2.0" type="application/rss+xml" />
+
 <title>{%block head_title %}{% description %} - Telemeta{% endblock %}</title>
 
 {% block stylesheets %}
+<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/app.css" />
 <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/telemeta.css" />
-<link rel="alternate" href="/rss" title="RSS 2.0" type="application/rss+xml" />
+
+
 <!--[if IE]>
 <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/telemeta_ie.css" />
 <![endif]-->
 
 {% block javascript %}
 <script src="{% url "django.views.i18n.javascript_catalog" %}" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}timeside/js/libs/jquery-1.6.min.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}telemeta/bower_components/jquery/dist/jquery.min.js" type="text/javascript"></script>
 <script src="{{ STATIC_URL }}telemeta/js/locale.js" type="text/javascript"></script>
 <script src="{{ STATIC_URL }}telemeta/js/application.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}telemeta/bower_components/modernizr/modernizr.js"></script>
 {% if user.is_authenticated %}
 <script type='text/javascript'>var CURRENT_USER_NAME="{{ user.username }}";</script>
 {% else %}
@@ -72,8 +79,7 @@
 <div id="quick_search">
 <form action="{% url "telemeta-search" %}" id="_quickSearchForm" method="get">
 <input type="text" id="quick_search_pattern" name="pattern" />
-<a href="#" class="component button"
-                onclick="document.getElementById('_quickSearchForm').submit(); return false;">{% trans "Search" %}</a>
+<a href="#" class="component button" onclick="document.getElementById('_quickSearchForm').submit();">{% trans "Search" %}</a>
 </form>
 </div>
 
 {% block postman_menu %}
 {% endblock postman_menu %}
 
+{% if breadcrumbs %}
+<ul class="breadcrumbs">
+  <li><a href="#">Home</a></li>
+  <li><a href="#">Features</a></li>
+  <li class="unavailable"><a href="#">Gene Splicing</a></li>
+  <li class="current"><a href="#">Cloning</a></li>
+</ul>
+{% endif %}
+
 <div id="content">
     <table id="content_header"><tr>
             <td class="leftcol"><h1>{% block title %}{% endblock %}</h1></td>
             <td class="rightcol">{% block title_buttons %}{% endblock %}</td>
     </tr></table>
-{% block content %}{% endblock %}
-<div class="nett"></div>
-{% block delete %}{% endblock %}
+
+  {% block content %}{% endblock %}
+  {% block delete %}{% endblock %}
+
 </div>
 
 {% block body %}
 {% block footer %}
 <div id="footer">
  <hr />
- <table width="100%">
-  <tr>
-   <td>
+ <div class="row">
+  <div class="small-2 columns">
     <a id="telemeta_powered" href="{% telemeta_url %}" target="_blank"><img src="{{ STATIC_URL }}telemeta/images/logo_mini_2.png"
    alt="Telemeta Powered"/></a>
-    <p class="left">
-    {% trans "Powered by" %} <a href="{% telemeta_url %}" target="_blank"><strong>Telemeta {% telemeta_version %}</strong></a><br />
-    {% trans "By" %} <a href="http://www.parisson.com/">Parisson SARL</a>
-    </p>
-   </td>
-   <td>
-    <p class="center">
+   <span style="font-weight: bold;"><br />&nbsp;v{% telemeta_version %}</span>
+  </div>
+  <div class="small-8 columns">
+    <center>
     {% trans "Usage of the archives in the respect of cultural heritage of the original communities." %}
-    </p>
-   </td>
-   <td>
-    <p class="right">
+    </center>
+  </div>
+  <div class="small-2 columns">
     Copyright &copy; {% current_year %} {% organization %}<br />
     <a href="{% url "telemeta-flatpage" "legal_notices" %}">{% trans "Legal notices" %}</a>
-    </p>
-   </td>
-  </tr>
- </table>
+  </div>
+ </div>
 </div>
 {% endblock %}
 </div>
 {% block analytics %}
 {% endblock analytics %}
 
+<script src="{{ STATIC_URL }}telemeta/bower_components/jquery/dist/jquery.min.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}telemeta/bower_components/fastclick/lib/fastclick.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}telemeta/bower_components/foundation/js/foundation.min.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}telemeta/js/app.js" type="text/javascript"></script>
 </body>
 </html>
index 0ebadcba4b10c75c900782dd36311498d20d5437..17fe187efe51259208050e976dff198b7db2066c 100644 (file)
@@ -15,7 +15,7 @@
     <th class="highlight">{% trans "Title" %}</th>
     <th>{% trans "Description" %}</th>
     <th>{% trans "Code" %}</th>
-    <th>{% trans "Sound" %}</th>
+    <th width="5%">{% trans "Sound" %}</th>
 </tr>
 {% for child in children %}
 {% if child.code %}
index f7271c355f1d4f0949b80b150bafdc63f366d39c..935d082e902b23d321cd221fa48dbe97dd15336f 100644 (file)
@@ -7,10 +7,10 @@
 
 <table class="listing">
 <tr>
-    <th class="highlight">{% trans "Title" %}</th>
+    <th class="highlight" width="15%">{% trans "Title" %}</th>
     <th>{% trans "Description" %}</th>
-    <th>{% trans "Code" %}</th>
-    <th>{% trans "Sound" %}</th>
+    <th width="15%">{% trans "Code" %}</th>
+    <th width="5%">{% trans "Sound" %}</th>
 </tr>
 {% for resource in resources %}
 <tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
index 4905aedc0bda6e9cfb86314bab9435af76ad7368..730d91399272092548f0730e230dd54202327dfa 100644 (file)
@@ -10,7 +10,7 @@
                     <thead>
                         <tr>
                             <td>{% trans "Media" %}</td>
-                            <td>{% trans "Preview" %}</td>
+                            <td width="25%">{% trans "Preview" %}</td>
                         </tr>
                     </thead>
                     <tbody>
index 28aa0a53983e4afdf349c58cb23774b8ce1e8143..5291c752e8d720474aca1887244300b80af572d6 100644 (file)
@@ -1,10 +1,6 @@
 {% extends "telemeta/base.html" %}
 {% load i18n %}
 
-{% block title %}
- <img src="{{ STATIC_URL }}telemeta/images/user_red.png" style="vertical-align:middle" /> {% trans "User authentication" %}
-{% endblock %}
-
 {% block content %}
 <script>
 $(document).ready(function() {
@@ -15,18 +11,43 @@ $(document).ready(function() {
     });
 });
 </script>
+
+
+<div id="module-set-left" class="row">
+{{ block.super }}
+<div class="large-4 columns">&nbsp;</div>
+<div class="module large-4 columns">
+    <span class="module-title"><img src="{{ STATIC_URL }}telemeta/images/user_red.png" style="vertical-align:middle" />
+    {% trans "User authentication" %}</span>
+
+<div style="background-color: white; align: center; padding: 1em;">
+
+<form id="_loginForm" method="post" action="{% url "telemeta-login" %}">{% csrf_token %}
+
 {% if form.errors %}
 <p class="login-error">{% trans "Your username and password didn't match. Please try again." %}</p>
 {% endif %}
-<form class="login" id="_loginForm" method="post" action="{% url "telemeta-login" %}">{% csrf_token %}
+
 <p>
+<label>
 {{ form.username.label_tag }}
-{{ form.username }}<br />
+{{ form.username }}
+</label>
+<label>
 {{ form.password.label_tag }}
 {{ form.password }}
-</p>
-<a href="#" class="component_icon button icon_login" style="float: right;" onclick="document.getElementById('_loginForm').submit(); return false;">{% trans "Sign in" %}</a>
+</label>
+
+<a href="#" class="component_icon button icon_login" style="float: right;" onclick="('#_loginForm').submit();">{% trans "Sign in" %}</a>
+
 <input type="hidden" name="next" value="{{ next }}" />
-<span style="align: right; font-weight: bold;"><a href="{% url "telemeta-password-reset" %}">{% trans "Password forgotten" %} ?</a></span>
+
+<span><a href="{% url "telemeta-password-reset" %}">{% trans "Password forgotten" %} ?</a></span>
+</p>
+
 </form>
+</div>
+</div>
+<div class="large-4 columns">&nbsp;</div>
+</div>
 {% endblock %}
index a16b1c3c5b80b21ce900ba450901ea047cf566dc..0040e3cb939373debf0dae807ac0e108b89bccce 100644 (file)
@@ -54,8 +54,8 @@ jQuery(document).ready(function(){
 {% block content %}
       {% block infos %}
         <div class="intro">
-
         </div>
+
         <div class="infos">
         {% block general_info %}
             <dl class="listing">
@@ -93,16 +93,17 @@ jQuery(document).ready(function(){
         {% endwith %}
         </div>
 
-        {% endblock infos %}
-    </div>
-{% endblock %}
+      </div>
+    {% endblock infos %}
+
+{% endblock content %}
 
 {% block delete %}
 <a href="{% url "telemeta-resource-dublincore" type resource.public_id %}" style="float:left;margin-top:0.5em;margin-bottom:1em" class="component_icon button icon_dublin_core">Dublin Core</a>
 {% if user.is_authenticated and perms.telemeta.delete_mediaresource %}
  <a href="{% url "telemeta-resource-delete" type resource.public_id %}" class="component_icon button icon_delete" style="float:right;margin-top:0.5em;margin-bottom:1em">{% trans "Delete" %}</a>
 {% endif %}
-{% endblock %}
+{% endblock delete %}
 
 {% else %}
     <p>{% trans "No such resource" %}</p>
index 363e5c38df07e84e1b4d576ce825048f353e634c..b67b93435f24ac45fde6e9890cb2e9256c97b1d4 100644 (file)
@@ -159,6 +159,7 @@ 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._-]+)/copy/$', ResourceCopyView.as_view(), name="telemeta-resource-copy"),
@@ -167,12 +168,10 @@ urlpatterns = patterns('',
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related_edit/$', resource_view.related_edit,  dict(template='telemeta/resource_related_edit.html'), name="telemeta-resource-related_edit"),
-    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/xml/$', resource_view.detail,
-        {'format': 'dublin_core_xml'},
-        name="telemeta-resource-dublincore-xml"),
-    url(r'^archives/$', home_view.search, name="telemeta-archives"),
+
 
     # search
+    # url(r'^archives/$', home_view.search, name="telemeta-archives"),
     url(r'^search/$', home_view.search, name="telemeta-search"),
     url(r'^search/collections/$', home_view.search, {'type': 'collections'},
         name="telemeta-search-collections"),
index c86cf177357b362e58a0e2f46ae03cb3818b1996..89954036dd184fd26c3ef6c0376dca30aeae3745 100644 (file)
@@ -223,6 +223,18 @@ def get_playlists(request, user=None):
             playlists.append({'playlist': playlist, 'resources': resources})
     return playlists
 
+
+def get_playlists_names(request, user=None):
+    if not user:
+        user = request.user
+    playlists = []
+    if user.is_authenticated():
+        user_playlists = user.playlists.all()
+        for playlist in user_playlists:
+            playlists.append({'playlist': playlist})
+    return playlists
+
+
 def check_related_media(medias):
     for media in medias:
         if not media.mime_type:
index f0d365bdf61237d72233395440ddcd0f7c795727..b8b6a1d7d063d0509ea7549a397725958f6cff8c 100644 (file)
@@ -37,6 +37,7 @@
 
 from telemeta.views.core import *
 
+
 class HomeView(object):
     """Provide general web UI methods"""
 
index 0d29d2fe25cb294130d6be983e91a86b9e5f43e7..ccbbb4499fc34ca0121843d29029d13c23a0ecec 100644 (file)
@@ -144,7 +144,7 @@ class ItemView(ItemBaseMixin):
         if 'quicktime' in mime_type:
             mime_type = 'video/mp4'
 
-        playlists = get_playlists(request)
+        playlists = get_playlists_names(request)
         related_media = MediaItemRelated.objects.filter(item=item)
         check_related_media(related_media)
         revisions = Revision.objects.filter(element_type='item', element_id=item.id).order_by('-time')
@@ -632,4 +632,3 @@ class ItemPublishedListView(ItemListView):
 class ItemSoundListView(ItemListView):
 
     queryset = MediaItem.objects.sound().order_by('code', 'old_code')
-
index 00c05eaa1a91fe6f4c47bb56a96f8435fc1372fc..f4b58399f30ea1db4a67ebfdb00b39240aab03a0 100644 (file)
@@ -90,8 +90,6 @@ class ResourceView(object):
                         'related_media': related_media, 'parents': parents, 'playlists': playlists,
                         'last_revision': last_revision })
 
-    @jsonrpc_method('telemeta.change_fonds')
-    @jsonrpc_method('telemeta.change_corpus')
     def edit(self, request, type, public_id, template='telemeta/resource_edit.html'):
         self.setup(type)
         resource = self.model.objects.get(code=public_id)
@@ -108,8 +106,6 @@ class ResourceView(object):
             form = self.form(instance=resource)
         return render(request, template, {'resource': resource, 'type': type, 'form': form,})
 
-    @jsonrpc_method('telemeta.add_fonds')
-    @jsonrpc_method('telemeta.add_corpus')
     def add(self, request, type, template='telemeta/resource_add.html'):
         self.setup(type)
         resource = self.model()
@@ -126,8 +122,6 @@ class ResourceView(object):
             form = self.form(instance=resource)
         return render(request, template, {'resource': resource, 'type': type, 'form': form,})
 
-    @jsonrpc_method('telemeta.add_fonds')
-    @jsonrpc_method('telemeta.add_corpus')
     def copy(self, request, type, public_id, template='telemeta/resource_edit.html'):
         self.setup(type)
         if request.method == 'POST':
@@ -156,8 +150,6 @@ class ResourceView(object):
         context = RequestContext(request, {'resource': resource, 'host': request.META['HTTP_HOST']})
         return HttpResponse(template.render(context), mimetype=mimetype)
 
-    @jsonrpc_method('telemeta.del_fonds')
-    @jsonrpc_method('telemeta.del_corpus')
     def delete(self, request, type, public_id):
         self.setup(type)
         resource = self.model.objects.get(code=public_id)
@@ -205,6 +197,7 @@ class ResourceMixin(View):
                 'related': MediaCorpusRelated,
                 'related_form': MediaCorpusRelatedForm,
                 'parent': MediaFonds,
+                'inlines': [CorpusRelatedInline,]
                 },
             'fonds':
                 {'model': MediaFonds,
@@ -212,15 +205,18 @@ class ResourceMixin(View):
                 'related': MediaFondsRelated,
                 'related_form': MediaFondsRelatedForm,
                 'parent': None,
+                'inlines': [FondsRelatedInline,]
                 }
             }
 
     def setup(self, type):
         self.model = self.types[type]['model']
         self.form = self.types[type]['form']
+        self.form_class = self.types[type]['form']
         self.related = self.types[type]['related']
         self.related_form = self.types[type]['related_form']
         self.parent = self.types[type]['parent']
+        self.inlines = self.types[type]['inlines']
         self.type = type
 
     def get_object(self):
@@ -238,6 +234,11 @@ class ResourceMixin(View):
 
 class ResourceSingleMixin(ResourceMixin):
 
+    def get_queryset(self):
+        self.type = self.kwargs['type']
+        self.setup(self.type)
+        return self
+
     def get_object(self):
         # super(CorpusDetailView, self).get_object()
         self.type = self.kwargs['type']
@@ -250,7 +251,7 @@ class ResourceSingleMixin(ResourceMixin):
         resource = self.get_object()
         related_media = self.related.objects.filter(resource=resource)
         check_related_media(related_media)
-        playlists = get_playlists(self.request)
+        playlists = get_playlists_names(self.request)
         revisions = Revision.objects.filter(element_type=self.type, element_id=self.pk).order_by('-time')
         context['resource'] = resource
         context['type'] = self.type
@@ -338,3 +339,11 @@ class ResourceDeleteView(ResourceSingleMixin, DeleteView):
     def get_success_url(self):
          return reverse_lazy('telemeta-resource-list', kwargs={'type':self.kwargs['type']})
 
+
+
+class ResourceFormSetView(ResourceSingleMixin, UpdateWithInlinesView):
+
+    template_name = 'telemeta/resource_edit2.html'
+
+    def get_success_url(self):
+        return reverse_lazy('telemeta-resource-detail', kwargs={'type':self.kwargs['type'], 'public_id':self.kwargs['public_id']})
index ea65a982db2e096bd8f166b1dfc85fb7916325c7..08eaf7374a977b0c241aef52402f90bc17a23b9c 100755 (executable)
@@ -5,6 +5,6 @@ app="telemeta"
 dir=/home/$USER/dev/$app/doc/
 server="angus.parisson.com"
 
-epydoc -n $app -u https://github.com/yomguy/DeeFuzzer -o $dir $app/
-rsync -a --delete $dir $server:/var/www/files/doc/$app/
+epydoc -n $app -u https://github.com/yomguy/Telemeta -o $dir $app/
+rsync -a $dir $server:/var/www/files/doc/$app/