"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):
/* 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;
<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 %}
--- /dev/null
+{% 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"> </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 %}
--- /dev/null
+{% 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 %}
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
collection_view = CollectionView()
item_view = ItemView()
instrument_view = InstrumentView()
+instrument_alias_view = InstrumentAliasView()
playlist_view = PlaylistView()
profile_view = ProfileView()
geo_view = GeoView()
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 ,
from telemeta.views.core import *
+
class InstrumentView(object):
"""Provide Instrument web UI methods"""
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)