From 73db7f1ce6954e573e87e452abf3e57da8f01fd0 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Thu, 9 Jan 2014 10:50:42 +0100 Subject: [PATCH] add templates and fix admin menu --- telemeta/models/instrument.py | 2 +- telemeta/static/telemeta/css/telemeta.css | 2 +- .../static/telemeta/images/collection.png | Bin 0 -> 324 bytes telemeta/templates/telemeta/base.html | 1 + .../telemeta/instrument_alias_edit.html | 52 +++++++++++ .../telemeta/instrument_alias_edit_value.html | 68 ++++++++++++++ telemeta/urls.py | 26 +++++- telemeta/views/instrument.py | 84 ++++++++++++++++++ 8 files changed, 232 insertions(+), 3 deletions(-) create mode 100644 telemeta/static/telemeta/images/collection.png create mode 100644 telemeta/templates/telemeta/instrument_alias_edit.html create mode 100644 telemeta/templates/telemeta/instrument_alias_edit_value.html 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 0000000000000000000000000000000000000000..b65328daad11d75f7b4620e8c12e96e090bd1b03 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*bK<(E-n9)gNb_G!Ix~Gd{NW|gf1c{dog0TwSGv`ijY*d`z*tl?R z*S8QO0|TEq-@ZRD-^14s^{=;0?wM0L3-_$18VTk6?|iFnTAjSgeDe=qjp7ISn?)+U zDaPHsjA{?XZtAWqE6!DYPy#*=56Rxi2XxZCTWp2~Qhx#Q0WO zHe@b1-5AKuvx7N;wr#6Kfd6V_yQNkkV)LPCNET5aU|`hhJ*+MgKL^g4tGMN3ebxT Mp00i_>zopr0Guv-OaK4? literal 0 HcmV?d00001 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) -- 2.39.5