]> git.parisson.com Git - telemeta.git/commitdiff
add templates and fix admin menu
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 9 Jan 2014 09:50:42 +0000 (10:50 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 9 Jan 2014 09:50:42 +0000 (10:50 +0100)
telemeta/models/instrument.py
telemeta/static/telemeta/css/telemeta.css
telemeta/static/telemeta/images/collection.png [new file with mode: 0644]
telemeta/templates/telemeta/base.html
telemeta/templates/telemeta/instrument_alias_edit.html [new file with mode: 0644]
telemeta/templates/telemeta/instrument_alias_edit_value.html [new file with mode: 0644]
telemeta/urls.py
telemeta/views/instrument.py

index d0015f7526b8d82af318e1b6e631ec26ad947b79..f84cc57c98929a1ec2f7d4c961d4cc8a8a98efd1 100644 (file)
@@ -78,7 +78,7 @@ class InstrumentAliasRelation(ModelCore):
     "Instrument family other name"
     alias      = ForeignKey('InstrumentAlias', related_name="other_name", 
                             verbose_name=_('alias'))
-    instrument = ForeignKey('InstrumentAlias', related_name="relation", 
+    instrument = ForeignKey('Instrument', related_name="relation", 
                             verbose_name=_('instrument'))
 
     def __unicode__(self):
index 355b822e8542b6618585edf8e556473390736102..e5c4d38794309745ab0b653ab3132896d4fc61e6 100644 (file)
@@ -534,7 +534,7 @@ color:#FFF;
 /* display block will make the link fill the whole area of LI */
 #nav ul a {
     display:block;
-    height:15px;
+    height: auto;
     padding: 5px 5px;
     font-size: 11px;
     text-align:left;
diff --git a/telemeta/static/telemeta/images/collection.png b/telemeta/static/telemeta/images/collection.png
new file mode 100644 (file)
index 0000000..b65328d
Binary files /dev/null and b/telemeta/static/telemeta/images/collection.png differ
index 76faa6005f39b9dcec6355cbf1b1d62fab5195b0..32962a2c113bb27ba55d7827f5da74884aa96c35 100644 (file)
  <li><a href="{% url telemeta-admin-general %}">{% trans "General" %}</a></li>
  <li><a href="{% url telemeta-admin-enumerations %}">{% trans "Enumerations" %}</a></li>
  <li><a href="{% url telemeta-instrument-edit %}">{% trans "Instruments" %}</a></li>
+ <li><a href="{% url telemeta-instrument-alias-edit %}">{% trans "Instrument aliases" %}</a></li>
  </ul>
  </li>
 {% endif %}
diff --git a/telemeta/templates/telemeta/instrument_alias_edit.html b/telemeta/templates/telemeta/instrument_alias_edit.html
new file mode 100644 (file)
index 0000000..163b299
--- /dev/null
@@ -0,0 +1,52 @@
+{% extends "telemeta/admin.html" %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Instrument aliases" %} - {{ block.super }}{% endblock %}
+
+{% block title %}
+<h1><img src="{{ STATIC_URL }}telemeta/images/admin_red.png" style="vertical-align:middle" /> {% trans "Administration" %} > {% trans "Instrument aliases" %}</h1>
+{% endblock %}
+
+{% block tabcontents %}
+ <form class="addnew" id="_addinstru" method="POST"
+        action="{% url telemeta-instrument-alias-add %}">{% csrf_token %}
+  <fieldset>
+   <legend>{% trans "Add entry" %}</legend>
+   <div class="field">
+    <label>{% trans "Name" %}: <input type="text" name="value"></label>
+
+   </div>
+   <div class="buttons">
+    <br />
+    <a href="#" class="component_icon button icon_add"
+      onclick="document.getElementById('_addinstru').submit(); return false;">{% trans "Add" %}</a>
+   </div>
+  </fieldset>
+ </form>
+ {% if instruments %}
+ <form id="_updateinstru" method="POST" action="{% url telemeta-instrument-alias-update %}">{% csrf_token %}
+  <table class="listing">
+   <thead>
+    <tr><th class="sel">&nbsp;</th><th>{% trans "Name"%}</th></tr>
+   </thead><tbody>
+    {% for record in instruments %}
+    <tr>
+     <td><input type="checkbox" name="sel" value="{{record.id}}" /></td>
+     <td><a href="{% url telemeta-instrument-alias-record-edit record.id %}">
+        {{record.name}}</a></td>
+    </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+  <div class="buttons">
+   <br />
+   <a href="#" class="component_icon button icon_cancel"
+      onclick="document.getElementById('_updateinstru').submit(); return false;">{% trans "Remove selected items" %}</a>
+  </div>
+ </form>
+ {% else %}
+    <p class="help">{% trans "This instrument list is empty" %}</p>
+ {% endif %}
+
+  <br style="clear: right"/>
+{% endblock %}
diff --git a/telemeta/templates/telemeta/instrument_alias_edit_value.html b/telemeta/templates/telemeta/instrument_alias_edit_value.html
new file mode 100644 (file)
index 0000000..5a7d485
--- /dev/null
@@ -0,0 +1,68 @@
+{% extends "telemeta/instrument_alias_edit.html" %}
+{% load i18n %}
+
+{% block extra_javascript %}
+<script type="text/javascript">
+$(document).ready(function(){
+    InitChatWindow("{% url jqchat_ajax room.id %}", null);
+    });
+</script>
+{% endblock extra_javascript %}
+
+{% block tabcontents %}
+
+{% block chat %}
+  <div id="module-set" style="width: 33%;">
+      {% if room %}
+        {% with "Notes" as title %}
+          {% include "telemeta/inc/chat_room.html" %}
+        {% endwith %}
+      {% endif %}
+ </div>
+{% endblock chat %}
+
+ <h4>{% trans "Instruments" %}</h4>
+ <form class="mod" id="addinstru" method="post"
+    action="{% url telemeta-instrument-alias-record-update instrument.id %}">{% csrf_token %}
+  <fieldset>
+   <legend>{% trans "Modify an entry" %}</legend>
+   <div class="field">
+    <label>{% trans "Name" %}: <input type="text" name="value" value="{{instrument.name}}" /></label>
+
+   </div>
+   <br />
+   <div class="buttons">
+        <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('addinstru').submit(); return false;">{% trans "Save" %}</a>
+        <a href="{% url telemeta-instrument-alias-edit %}"
+           class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+   </div>
+  </fieldset>
+ </form>
+
+<form class="mod" id="replinstru" method="post"
+    action="{% url telemeta-instrument-alias-record-replace instrument.id %}">{% csrf_token %}
+  <fieldset>
+   <legend>{% trans "Replace by" %}</legend>
+   <div class="field">
+    <select name="value">
+    {% for record in instruments %}
+      <option value="{{ record.id }}" />{{ record.name }}</option>
+    {% endfor %}
+    </select>
+    <input type="checkbox" name="delete" value="delete"> {% trans "delete value after replacing" %}
+   </div>
+   <br />
+   <div class="buttons">
+        <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('replinstru').submit(); return false;">{% trans "Replace" %}</a>
+        <a href="{% url telemeta-instrument-alias-edit %}"
+           class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+   </div>
+  </fieldset>
+ </form>
+
+
+  <br style="clear: right"/>
+{% endblock %}
index 3a14eff28ec4832eeda88361272e3efa62682fdc..bb85197e1f9029d72ca4e9f7ad2dd65dfa9966c9 100644 (file)
@@ -39,7 +39,7 @@ from django.conf import settings
 from django.views.generic.simple import redirect_to
 from telemeta.models import MediaItem, MediaCollection, MediaItemMarker, MediaCorpus, MediaFonds
 from telemeta.views import HomeView, AdminView, CollectionView, ItemView, \
-                                InstrumentView, PlaylistView, ProfileView, GeoView, \
+                                InstrumentView, InstrumentAliasView, PlaylistView, ProfileView, GeoView, \
                                 LastestRevisionsFeed, ResourceView, UserRevisionsFeed
 from jsonrpc import jsonrpc_site
 import os.path
@@ -53,6 +53,7 @@ admin_view = AdminView()
 collection_view = CollectionView()
 item_view = ItemView()
 instrument_view = InstrumentView()
+instrument_alias_view = InstrumentAliasView()
 playlist_view = PlaylistView()
 profile_view = ProfileView()
 geo_view = GeoView()
@@ -244,6 +245,29 @@ urlpatterns = patterns('',
         instrument_view.replace_instrument_value,
         name="telemeta-instrument-record-replace"),
 
+    # instruments aliases administration
+    url(r'^admin/instrument_aliases/$',
+        instrument_alias_view.edit_instrument ,
+        name="telemeta-instrument-alias-edit"),
+    url(r'^admin/instrument_aliases/add/$',
+        instrument_alias_view.add_to_instrument,
+        name="telemeta-instrument-alias-add"),
+    url(r'^admin/instrument_aliases/update/$',
+        instrument_alias_view.update_instrument,
+        name="telemeta-instrument-alias-update"),
+    url(r'^admin/instrument_aliases/'
+        + r'(?P<value_id>[0-9]+)/$',
+        instrument_alias_view.edit_instrument_value,
+        name="telemeta-instrument-alias-record-edit"),
+    url(r'^admin/instrument_aliases/'
+        + r'(?P<value_id>[0-9]+)/update/$',
+        instrument_alias_view.update_instrument_value,
+        name="telemeta-instrument-alias-record-update"),
+    url(r'^admin/instrument_aliases/'
+        + r'(?P<value_id>[0-9]+)/replace/$',
+        instrument_alias_view.replace_instrument_value,
+        name="telemeta-instrument-alias-record-replace"),
+
     # enumerations administration
     url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/$',
         admin_view.edit_enumeration ,
index 929853eac9bae8f621315b36d7d14071329333c5..1f6d2b3d51dfbef27fc673014c407db70db01541 100644 (file)
@@ -37,6 +37,7 @@
 
 from telemeta.views.core import *
 
+
 class InstrumentView(object):
     """Provide Instrument web UI methods"""
 
@@ -118,3 +119,86 @@ class InstrumentView(object):
             from_record.delete()
 
         return self.edit_instrument(request)
+
+
+class InstrumentAliasView(object):
+    """Provide Instrument alias web UI methods"""
+
+    @method_decorator(permission_required('telemeta.change_instrumentalias'))
+    def edit_instrument(self, request):
+
+        instruments = InstrumentAlias.objects.all().order_by('name')
+        if instruments == None:
+            raise Http404
+        return render(request, 'telemeta/instrument_alias_edit.html', {'instruments': instruments})
+
+    @method_decorator(permission_required('telemeta.add_instrument'))
+    def add_to_instrument(self, request):
+
+        if request.method == 'POST':
+            instrument = InstrumentAlias(name=request.POST['value'])
+            instrument.save()
+
+        return self.edit_instrument(request)
+
+    @method_decorator(permission_required('telemeta.change_instrumentalias'))
+    def update_instrument(self, request):
+
+        if request.method == 'POST':
+            InstrumentAlias.objects.filter(id__in=request.POST.getlist('sel')).delete()
+
+        return self.edit_instrument(request)
+
+    @method_decorator(permission_required('telemeta.change_instrumentalias'))
+    def edit_instrument_value(self, request, value_id):
+        instrument = InstrumentAlias.objects.get(id__exact=value_id)
+        instruments = InstrumentAlias.objects.all().order_by('name')
+        
+        content_type = ContentType.objects.get(app_label="telemeta", model='instrument')        
+        context = {}
+        context['instrument'] = instrument
+        context['instruments'] = instruments
+        context['room'] = get_room(name=instrument._meta.verbose_name, content_type=content_type,
+                                   id=instrument.id)
+        
+        return render(request, 'telemeta/instrument_alias_edit_value.html', context)
+
+    @method_decorator(permission_required('telemeta.change_instrumentalias'))
+    def update_instrument_value(self, request, value_id):
+
+        if request.method == 'POST':
+            instrument = InstrumentAlias.objects.get(id__exact=value_id)
+            instrument.name = request.POST["value"]
+            instrument.save()
+
+        return self.edit_instrument(request)
+
+    @method_decorator(permission_required('telemeta.change_instrumentalias'))
+    def replace_instrument_value(self, request, value_id):
+        if request.method == 'POST':
+            to_value_id = request.POST["value"]
+            delete = False
+            if 'delete' in request.POST.keys():
+                delete = True
+
+        obj_type = InstrumentAlias
+        from_record = InstrumentAlias.objects.get(id__exact=value_id)
+        to_record = InstrumentAlias.objects.get(id__exact=to_value_id)
+        links = [rel.get_accessor_name() for rel in from_record._meta.get_all_related_objects()]
+
+        for link in links:
+            objects = getattr(from_record, link).all()
+            for obj in objects:
+                for name in obj._meta.get_all_field_names():
+                    try: 
+                        field = obj._meta.get_field(name)
+                        if field.rel.to == obj_type:
+                            setattr(obj, name, to_record)
+                            obj.save()
+                    except:
+                        continue
+
+        if delete:
+            from_record.delete()
+
+        return self.edit_instrument(request)