From: Guillaume Pellerin Date: Thu, 9 Jan 2014 09:50:42 +0000 (+0100) Subject: add templates and fix admin menu X-Git-Tag: 1.4.5-1~13 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=73db7f1ce6954e573e87e452abf3e57da8f01fd0;p=telemeta.git add templates and fix admin menu --- diff --git a/telemeta/models/instrument.py b/telemeta/models/instrument.py index d0015f75..f84cc57c 100644 --- a/telemeta/models/instrument.py +++ b/telemeta/models/instrument.py @@ -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): diff --git a/telemeta/static/telemeta/css/telemeta.css b/telemeta/static/telemeta/css/telemeta.css index 355b822e..e5c4d387 100644 --- a/telemeta/static/telemeta/css/telemeta.css +++ b/telemeta/static/telemeta/css/telemeta.css @@ -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 index 00000000..b65328da Binary files /dev/null and b/telemeta/static/telemeta/images/collection.png differ diff --git a/telemeta/templates/telemeta/base.html b/telemeta/templates/telemeta/base.html index 76faa600..32962a2c 100644 --- a/telemeta/templates/telemeta/base.html +++ b/telemeta/templates/telemeta/base.html @@ -117,6 +117,7 @@
  • {% trans "General" %}
  • {% trans "Enumerations" %}
  • {% trans "Instruments" %}
  • +
  • {% trans "Instrument aliases" %}
  • {% endif %} diff --git a/telemeta/templates/telemeta/instrument_alias_edit.html b/telemeta/templates/telemeta/instrument_alias_edit.html new file mode 100644 index 00000000..163b2999 --- /dev/null +++ b/telemeta/templates/telemeta/instrument_alias_edit.html @@ -0,0 +1,52 @@ +{% extends "telemeta/admin.html" %} +{% load i18n %} + +{% block head_title %}{% trans "Instrument aliases" %} - {{ block.super }}{% endblock %} + +{% block title %} +

    {% trans "Administration" %} > {% trans "Instrument aliases" %}

    +{% endblock %} + +{% block tabcontents %} +
    {% csrf_token %} +
    + {% trans "Add entry" %} +
    + + +
    + +
    +
    + {% if instruments %} +
    {% csrf_token %} + + + + + {% for record in instruments %} + + + + + {% endfor %} + +
     {% trans "Name"%}
    + {{record.name}}
    + +
    + {% else %} +

    {% trans "This instrument list is empty" %}

    + {% endif %} + +
    +{% 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 index 00000000..5a7d485c --- /dev/null +++ b/telemeta/templates/telemeta/instrument_alias_edit_value.html @@ -0,0 +1,68 @@ +{% extends "telemeta/instrument_alias_edit.html" %} +{% load i18n %} + +{% block extra_javascript %} + +{% endblock extra_javascript %} + +{% block tabcontents %} + +{% block chat %} +
    + {% if room %} + {% with "Notes" as title %} + {% include "telemeta/inc/chat_room.html" %} + {% endwith %} + {% endif %} +
    +{% endblock chat %} + +

    {% trans "Instruments" %}

    +
    {% csrf_token %} +
    + {% trans "Modify an entry" %} +
    + + +
    +
    + +
    +
    + +
    {% csrf_token %} +
    + {% trans "Replace by" %} +
    + + {% trans "delete value after replacing" %} +
    +
    + +
    +
    + + + +
    +{% endblock %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 3a14eff2..bb85197e 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -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[0-9]+)/$', + instrument_alias_view.edit_instrument_value, + name="telemeta-instrument-alias-record-edit"), + url(r'^admin/instrument_aliases/' + + r'(?P[0-9]+)/update/$', + instrument_alias_view.update_instrument_value, + name="telemeta-instrument-alias-record-update"), + url(r'^admin/instrument_aliases/' + + r'(?P[0-9]+)/replace/$', + instrument_alias_view.replace_instrument_value, + name="telemeta-instrument-alias-record-replace"), + # enumerations administration url(r'^admin/enumerations/(?P[0-9a-z]+)/$', admin_view.edit_enumeration , diff --git a/telemeta/views/instrument.py b/telemeta/views/instrument.py index 929853ea..1f6d2b3d 100644 --- a/telemeta/views/instrument.py +++ b/telemeta/views/instrument.py @@ -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)