From 28fe20b28e5891af9010e9ba57620bf227fa0577 Mon Sep 17 00:00:00 2001 From: olivier <> Date: Mon, 15 Feb 2010 23:02:27 +0000 Subject: [PATCH] allow to edit all simple enumerations in admin --- telemeta/htdocs/css/telemeta.css | 1 + telemeta/locale/fr/LC_MESSAGES/django.mo | Bin 8632 -> 9103 bytes telemeta/locale/fr/LC_MESSAGES/django.po | 156 +++++++++++------- telemeta/models/enum.py | 50 +++--- telemeta/models/media.py | 4 +- telemeta/models/query.py | 2 +- .../telemeta_default/enumeration_edit.html | 19 ++- .../enumeration_edit_value.html | 13 +- telemeta/tests/model_tests.py | 8 +- telemeta/web/base.py | 12 +- 10 files changed, 162 insertions(+), 103 deletions(-) diff --git a/telemeta/htdocs/css/telemeta.css b/telemeta/htdocs/css/telemeta.css index 67a1b22f..2a88cbd4 100644 --- a/telemeta/htdocs/css/telemeta.css +++ b/telemeta/htdocs/css/telemeta.css @@ -46,6 +46,7 @@ a img { border: none; } #content { position: relative; } + #content ul, #content ul ul, #content ol { list-style: square; padding: .7em; diff --git a/telemeta/locale/fr/LC_MESSAGES/django.mo b/telemeta/locale/fr/LC_MESSAGES/django.mo index fb8c3f24279a03a990e922ad246fa6fe246d625c..23567f701b8e785e7ab215d522832bba21e242fd 100644 GIT binary patch delta 3963 zcmYk832anF7{_PJf=Ihiw?a$H@t`f00v<)c3TP{b$RSd+c$eCJ$l~r6_ox)HE24r{ zxt0nlpaN>@5e-E}ysa1$6Ym4>Xw*cFNC+PBiogH9!7%Cn{buIP`@V0!Z)Rcdly&E( zzYO|23~d)0geLVg<|}x4A0D&=0b?rRCvXV#_cew;Q_7GV z%px9opMp8?dT%~$+UWFR;!fy?o1lE(4RhfxI2k?(Pk;yEiBMj8gZ^+d90Ij|7S#I% zkeE%xj+etS#_OQ`?14Q^+L&kQOkmkmT( zU<$mQ2cZlPf?8i{ISOk1Sg1g2VIi!u^GgcIKeo&=CY0KCsGV$qs`+-PfObFy^e~jc z-FEyk)MNCcLm5d+ZBIZ3 zRL-;u8lVoL3*{&bWoQ}H4sL`xl(#^gjrH&>xD{&sXOKVhBMZYV?VL)GdlC|F)rCk7R80um_y{@WMrP$^jtRom@Q5k3y}!P9pB6{u3Y0~NrxP=P_3u7~;fH&HsOSsT=SZHHvrJO~~5n&o$JIOASC zRH~7%99BbKnFgq{vl1%c%}|GLCsgg9g9>E7o&Ol7weS}@O37bPJIpEdQd$6&i6YA( zFo$uOeP03f{b(q|XF%DR3FUYm)L{!-u7Ezqmm{^?RsYR&CZkKyHArm%qKsxc(mhqX z%tQ8>I;KC{_7m_Xq*|*@K(`=m$VIcz2z0dFM(0e`e+Hd<&?2Pzx1+O>YIU@2vYq*s zCtJ3_jp$~iOf@1k)mQCWv2j-W^I%57(~<5}6Pk)v zpc~OCXbp-YwTY-9+w=a#(zUn?orH2w2RaX3r<10mc?mk2^KK+Jqh_=UEkU|hYmwUZ9=1WZnU|@brNpG zZA!W!C!BPn2{XU3#my|tKd*FgIKkTgjW`-cmnK`yh2dnxHT8{=RM%tq-}wBAWNV~r zLvUk{Y%eonz%~A{XO5fD)iI#PSG=S-m2~5#)}xb(x!C}^JKfCtg_j*y8;hkPZag!l zXkVTp?(XzL?)ttc;47Y^pu9mAHu67sC?#@lccea(} d^wjp;u9br)=VT5K4R*afbidD=%WNJt>_55AtM>o^ delta 3501 zcmZ9O3rv<(7{|}YMa>Hr72!h^h>L<^-tqcLYAT9p3ZmtWkivw|B1BE%GcmlT<|_%h zSo-Kg1y)-+99t<7b>|Hol-oxT6}_ndRy_j#W4ob!JBHjn>g zjIXg{P_?1$L^0^kAY(4VbB}PNMRhPH6}n+}I2MM$d>9N%U?^N>xz^6t*!jIMfcf|B z_y>>>=2O_#7@zq9qa6d^!IAJP42N!_bcVfP8<+um!%RC~26@zMu>D$?NdGWYfQwKG zUWVzg5ptO>WUKik*oOEf6(f*=0Z@U{p%Ti3WN31r0?mg?$P4vcr5&$^t?BQE9pORP z9-fBs^9|%Om$-F<*I`!}9EN}5n|KVp&>Jelp_UV%b|DwGf_Zkl&~hnMz$)9Xg;P0njzVqSDX8b`A(v_3riC?yQ-3+W!+>7++wuX_3$0n6GL3+dFd1sx1G!8VH&t#P z)Iy4&wz32&p)#n1RzN*hW%~})q1@Gx`s;yr?ZhFd7mq>h-ASlQd%0HCGfz`2X|^tJOs*5EaWo1xUn`f3M$T1J`7c0226r;paN7veU2NU9PfvE@rdnz z2KC&R&<)Q+9jf1;D%6UTssuYjhD>+c?+?k*jDTFmH-)=Oy8!CNa?ABl0c&6cJOFhz z&e;AX+rI@BD2Ru2HbP(=Oo0kK5o&%eCND`YW0l0>M9KDIv&s?<}V5-NaN@p2dkeYXD&)E2!5_5N|F1i!cQ*Ps%)0p;&6sOQ_o zP=96Aoo`KBFc9jq8_rFKXeQK3@}NrTgQ~=8sFiPq`u=xX?t=<^6ly{BP=U@v`TGUR z&rPU>{~?ER z0Xu#Ssv^FV7}~q9p)&jt>V<1|{1#N{??WXJ#wQ}jkx+@oKm|;LTIo=z5@$grng{h> z0Zf2JP=U8VcEM+MVQ5cJKpm1ZP!2CZ1!#n-#BE3prfqDqgPu?o7z`EA1GRwZP=01Z zCGLefw5y=})k1$IU=;DqF${d0^DqwHwhW{5DE)p=rOk#(Z~=^m>!HrhA*h5uhdO-U zLhXGMR3dkv#shds&qYI3BpHSg-=txvq#meBjIqpw`h}Zf=chqA$c1v859MeHRDg1* z6>fvtiapQ;HK(TYm4;H05-&iCZ$_YDGH46YG&B)yM`~VFf_kG-Xb@VATAIqf*>(zH zG0I2V>{uU5K?!QHYU>sMO$_bR4ityxA+;jZ56whN&|@eMl_OQ*Wu&$OJ?*!QSqhh< zXKjCtrM7pzwaYA3S*LmZ#*C*EigJ+-)oL^VwX}^GJ#6Q7r~_GvwxStGjW5}}hAPlo zNKFS;trx06I!}ox7R^Tb|6vxPzGy7!iJnCIBx}(?q^1+AXIt9176T@sH;_JCwHMJd z=y9|F4Mu7@E2I4uzaKCe=@-=WN3&2Dq!x&(&=cy=rZ>Yp4~JS?pWOf3Dh4*7m(VL{ zBvR919fBqxHws1xXs*^Y97AnNGyL~u57{Z$W6*PG@~YXLLxGQyucLlN\n" "Language-Team: LANGUAGE \n" @@ -24,24 +24,71 @@ msgstr "Durée" msgid "Enter a valid duration in HH:MM[:ss] format." msgstr "Entrez une durée valide au format HH:MM[:ss]" -#: models/enum.py:41 models/enum.py:124 +#: models/enum.py:41 models/enum.py:139 msgid "value" msgstr "valeur" -#: models/enum.py:123 +#: models/enum.py:57 models/media.py:79 +msgid "archive format" +msgstr "format d'archivage" + +#: models/enum.py:64 models/media.py:86 +msgid "secondary edition" +msgstr "réédition" + +#: models/enum.py:71 models/media.py:101 +msgid "mode of acquisition" +msgstr "mode d'acquisition" + +#: models/enum.py:78 models/media.py:104 +msgid "record author" +msgstr "rédacteur fiche" + +#: models/enum.py:85 models/media.py:106 +msgid "record writer" +msgstr "saisie fiche" + +#: models/enum.py:92 models/media.py:108 +msgid "legal rights" +msgstr "droit d'utilisation" + +#: models/enum.py:99 models/media.py:113 +msgid "recording context" +msgstr "contexte d'enregistrement" + +#: models/enum.py:106 models/media.py:122 +msgid "A/D conversion" +msgstr "numérisation" + +#: models/enum.py:113 models/media.py:230 +msgid "vernacular style" +msgstr "style vernaculaire" + +#: models/enum.py:120 models/media.py:239 +msgid "generic style" +msgstr "style générique" + +#: models/enum.py:127 models/media.py:310 +msgid "keyword" +msgstr "mot-clé" + +#: models/enum.py:134 models/media.py:93 +msgid "publisher / status" +msgstr "éditeur / statut" + +#: models/enum.py:138 msgid "publisher" msgstr "éditeur" -#: models/enum.py:134 models/enum.py:146 models/instrument.py:41 -#: models/instrument.py:51 models/location.py:50 models/location.py:142 -#: models/media.py:347 -msgid "name" -msgstr "nom" - -#: models/enum.py:138 models/enum.py:145 models/media.py:225 +#: models/enum.py:152 models/enum.py:156 models/media.py:225 msgid "population / social group" msgstr "population / groupe social" +#: models/enum.py:157 models/instrument.py:41 models/instrument.py:51 +#: models/location.py:50 models/location.py:142 models/media.py:347 +msgid "name" +msgstr "nom" + #: models/instrument.py:62 models/instrument.py:75 msgid "instrument" msgstr "instrument" @@ -115,10 +162,6 @@ msgstr "accès public" msgid "reference" msgstr "référence" -#: models/media.py:79 -msgid "archive format" -msgstr "format d'archivage" - #: models/media.py:80 models/media.py:217 msgid "old code" msgstr "ancienne cote" @@ -139,10 +182,6 @@ msgstr "titre original / traduction" msgid "number of components (medium / piece)" msgstr "nb de composants (support / pièce)" -#: models/media.py:86 -msgid "secondary edition" -msgstr "réédition" - #: models/media.py:87 msgid "depositor / contributor" msgstr "déposant / contributeur" @@ -163,10 +202,6 @@ msgstr "enregistré par" msgid "recordist identical to depositor" msgstr "collecteur identique au déposant" -#: models/media.py:93 -msgid "publisher / status" -msgstr "éditeur / statut" - #: models/media.py:94 msgid "published" msgstr "édité" @@ -187,26 +222,10 @@ msgstr "numéro dans la série" msgid "bibliographic references" msgstr "références bibliographiques" -#: models/media.py:101 -msgid "mode of acquisition" -msgstr "mode d'acquisition" - #: models/media.py:102 models/media.py:242 msgid "comment" msgstr "commentaire" -#: models/media.py:104 -msgid "record author" -msgstr "rédacteur fiche" - -#: models/media.py:106 -msgid "record writer" -msgstr "saisie fiche" - -#: models/media.py:108 -msgid "legal rights" -msgstr "droit d'utilisation" - #: models/media.py:109 msgid "copies" msgstr "autres exemplaires" @@ -219,10 +238,6 @@ msgstr "année d'enregistrement (depuis)" msgid "recording year (until)" msgstr "année d'enregistrement (jusqu'à)" -#: models/media.py:113 -msgid "recording context" -msgstr "context d'enregistrement" - #: models/media.py:114 models/media.py:219 msgid "approximative duration" msgstr "durée approximative" @@ -251,10 +266,6 @@ msgstr "fiches faîtes" msgid "a_informer_07_03" msgstr "a_informer_07_03" -#: models/media.py:122 -msgid "A/D conversion" -msgstr "numérisation" - #: models/media.py:160 msgid "states / nations" msgstr "états / nations" @@ -291,10 +302,6 @@ msgstr "précisions lieu" msgid "author" msgstr "auteur" -#: models/media.py:230 -msgid "vernacular name" -msgstr "nom vernaculaire" - #: models/media.py:231 msgid "comments" msgstr "commentaires" @@ -319,10 +326,6 @@ msgstr "collecteur identique à la collection" msgid "cultural area" msgstr "aire culturelle" -#: models/media.py:239 -msgid "generic name" -msgstr "nom générique" - #: models/media.py:240 msgid "recordist selection" msgstr "sélection collecteur" @@ -339,10 +342,6 @@ msgstr "mots-clés" msgid "item" msgstr "item" -#: models/media.py:310 -msgid "keyword" -msgstr "mot-clé" - #: models/media.py:321 msgid "scientific instrument" msgstr "instrument scientifique" @@ -529,6 +528,47 @@ msgstr "dans" msgid "Populations / Social groups" msgstr "Populations / Groupes sociaux" +#: templates/telemeta_default/enumeration_edit.html:4 +#: templates/telemeta_default/enumeration_edit.html:7 +#: templates/telemeta_default/enumeration_edit_value.html:4 +#: templates/telemeta_default/enumeration_edit_value.html:7 +msgid "Enumeration" +msgstr "Enumération" + +#: templates/telemeta_default/enumeration_edit.html:12 +msgid "Add entry" +msgstr "Ajouter une entrée" + +#: templates/telemeta_default/enumeration_edit.html:14 +#: templates/telemeta_default/enumeration_edit.html:26 +#: templates/telemeta_default/enumeration_edit_value.html:14 +msgid "Value" +msgstr "Valeur" + +#: templates/telemeta_default/enumeration_edit.html:18 +msgid "Add" +msgstr "Ajouter" + +#: templates/telemeta_default/enumeration_edit.html:40 +msgid "Remove selected items" +msgstr "Supprimer les éléments sélectionnés" + +#: templates/telemeta_default/enumeration_edit.html:44 +msgid "This enumeration is empty" +msgstr "Cette énumération est vide" + +#: templates/telemeta_default/enumeration_edit_value.html:12 +msgid "Modify an entry" +msgstr "Modification d'une entrée" + +#: templates/telemeta_default/enumeration_edit_value.html:18 +msgid "Save" +msgstr "Enregistrer" + +#: templates/telemeta_default/enumeration_edit_value.html:19 +msgid "Cancel" +msgstr "Annuler" + #: templates/telemeta_default/geo_continents.html:5 #: templates/telemeta_default/geo_continents.html:26 #: templates/telemeta_default/geo_countries.html:5 diff --git a/telemeta/models/enum.py b/telemeta/models/enum.py index 4d33bd10..21cb86d5 100644 --- a/telemeta/models/enum.py +++ b/telemeta/models/enum.py @@ -46,77 +46,92 @@ class Enumeration(ModelCore): class Meta(MetaCore): abstract = True +class MetaEnumeration(MetaCore): + ordering = ['value'] + class PhysicalFormat(Enumeration): "Collection physical format" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'physical_formats' + verbose_name = _("archive format") class PublishingStatus(Enumeration): "Collection publishing status" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'publishing_status' + verbose_name = _("secondary edition") class AcquisitionMode(Enumeration): "Mode of acquisition of the collection" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'acquisition_modes' + verbose_name = _("mode of acquisition") class MetadataAuthor(Enumeration): "Collection metadata author" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'metadata_authors' + verbose_name = _("record author") class MetadataWriter(Enumeration): "Collection metadata writer" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'metadata_writers' + verbose_name = _("record writer") class LegalRight(Enumeration): "Collection legal rights" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'legal_rights' + verbose_name = _("legal rights") class RecordingContext(Enumeration): "Collection recording context" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'recording_contexts' + verbose_name = _("recording context") class AdConversion(Enumeration): "Collection digital to analog conversion status" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'ad_conversions' + verbose_name = _("A/D conversion") class VernacularStyle(Enumeration): "Item vernacular style" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'vernacular_styles' + verbose_name = _("vernacular style") class GenericStyle(Enumeration): "Item generic style" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'generic_styles' + verbose_name = _("generic style") class ContextKeyword(Enumeration): "Keyword" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'context_keywords' + verbose_name = _("keyword") class Publisher(Enumeration): "Collection publisher" - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'publishers' + verbose_name = _("publisher / status") class PublisherCollection(ModelCore): "Collection which belongs to publisher" @@ -129,23 +144,20 @@ class PublisherCollection(ModelCore): class Meta(MetaCore): db_table = 'publisher_collections' -class EthnicGroup(ModelCore): +class EthnicGroup(Enumeration): "Item ethnic group" - name = CharField(_('name'), required=True) - class Meta(MetaCore): + class Meta(MetaEnumeration): db_table = 'ethnic_groups' verbose_name = _('population / social group') - def __unicode__(self): - return self.name - class EthnicGroupAlias(ModelCore): "Item ethnic group other name" ethnic_group = ForeignKey('EthnicGroup', related_name="aliases", verbose_name=_('population / social group')) - name = CharField(_('name'), required=True) + value = CharField(_('name'), required=True) class Meta(MetaCore): db_table = 'ethnic_group_aliases' + unique_together = (('ethnic_group', 'value'),) diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 3796b623..e479fa2e 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -227,7 +227,7 @@ class MediaItem(MediaResource): alt_title = CharField(_('original title / translation')) author = CharField(_('author')) vernacular_style = WeakForeignKey('VernacularStyle', related_name="items", - verbose_name=_('vernacular name')) + verbose_name=_('vernacular style')) context_comment = TextField(_('comments')) external_references = TextField(_('published reference')) moda_execut = CharField(_('moda_execut')) @@ -236,7 +236,7 @@ class MediaItem(MediaResource): collector_from_collection = BooleanField(_('recordist as in collection')) cultural_area = CharField(_('cultural area')) generic_style = WeakForeignKey('GenericStyle', related_name="items", - verbose_name=_('generic name')) + verbose_name=_('generic style')) collector_selection = CharField(_('recordist selection')) creator_reference = CharField(_('reference')) comment = TextField(_('comment')) diff --git a/telemeta/models/query.py b/telemeta/models/query.py index 67d83560..0ee7fedc 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -159,7 +159,7 @@ class MediaItemQuerySet(CoreQuerySet): def ethnic_groups(self): ids = self.filter(ethnic_group__isnull=False).values('ethnic_group'); - return EthnicGroup.objects.filter(pk__in=ids).order_by('name') + return EthnicGroup.objects.filter(pk__in=ids) @staticmethod def by_fuzzy_collector_q(pattern): diff --git a/telemeta/templates/telemeta_default/enumeration_edit.html b/telemeta/templates/telemeta_default/enumeration_edit.html index ae5262a5..ff9c818d 100644 --- a/telemeta/templates/telemeta_default/enumeration_edit.html +++ b/telemeta/templates/telemeta_default/enumeration_edit.html @@ -1,20 +1,21 @@ {% extends "telemeta/admin.html" %} +{% load i18n %} -{% block tabcontents %} -

Manage {{ enumeration_name_plural|capfirst }}

- +{% block head_title %}{% trans "Enumeration" %}: {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %} +{% block tabcontents %} +

{% trans "Enumeration" %}: {{ enumeration_name|capfirst }}

- Add {{ enumeration_name|capfirst }} + {% trans "Add entry" %}
- +
- +
@@ -22,7 +23,7 @@
- + @@ -36,11 +37,11 @@
 Value
 {% trans "Value"%}
- +
{% else %} -

This enumeration is empty.

+

{% trans "This enumeration is empty" %}

{% endif %}
diff --git a/telemeta/templates/telemeta_default/enumeration_edit_value.html b/telemeta/templates/telemeta_default/enumeration_edit_value.html index f1fc8ad1..80cb3fed 100644 --- a/telemeta/templates/telemeta_default/enumeration_edit_value.html +++ b/telemeta/templates/telemeta_default/enumeration_edit_value.html @@ -1,19 +1,22 @@ {% extends "telemeta/admin.html" %} +{% load i18n %} + +{% block head_title %}{% trans "Enumeration" %}: {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %} {% block tabcontents %} -

Manage {{ enumeration_name_plural|capfirst }}

+

{% trans "Enumeration" %}: {{ enumeration_name|capfirst }}

- Modify {{ enumeration_name|capfirst }} + {% trans "Modify an entry" %}
- +
- - + +
diff --git a/telemeta/tests/model_tests.py b/telemeta/tests/model_tests.py index 25068d95..8ee69d24 100644 --- a/telemeta/tests/model_tests.py +++ b/telemeta/tests/model_tests.py @@ -58,10 +58,10 @@ class CollectionItemTestCase(unittest.TestCase): self.france.add_child(self.paris) self.europe.add_child(self.belgique) - self.a = EthnicGroup.objects.create(name="a") - self.b = EthnicGroup.objects.create(name="b") - self.c = EthnicGroup.objects.create(name="c") - self.d = EthnicGroup.objects.create(name="d") + self.a = EthnicGroup.objects.create(value="a") + self.b = EthnicGroup.objects.create(value="b") + self.c = EthnicGroup.objects.create(value="c") + self.d = EthnicGroup.objects.create(value="d") self.persepolis = MediaCollection(id=1, code="CNRSMH_E_1970_001_002", reference="A1", title="persepolis", creator="Abraham LINCOLN", collector="Friedrich HEINZ", year_published=2009, is_published=True, diff --git a/telemeta/web/base.py b/telemeta/web/base.py index c4445b6f..48c6a31a 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -46,7 +46,7 @@ from django.conf import settings import telemeta from telemeta.models import MediaItem, Location, MediaCollection, EthnicGroup -from telemeta.models import dublincore +from telemeta.models import dublincore, Enumeration from telemeta.core import Component, ExtensionPoint from telemeta.export import * from telemeta.visualization import * @@ -58,6 +58,7 @@ from django.core.exceptions import ObjectDoesNotExist from telemeta.util.unaccent import unaccent from telemeta.web import pages import datetime +from telemeta.util.unaccent import unaccent_icmp class WebView(Component): """Provide web UI methods""" @@ -269,9 +270,12 @@ class WebView(Component): enumerations = [] for model in models: - if getattr(model, "is_enumeration", False): - enumerations.append({"name": model._meta.verbose_name_plural, + if issubclass(model, Enumeration): + enumerations.append({"name": model._meta.verbose_name, "id": model._meta.module_name}) + + cmp = lambda obj1, obj2: unaccent_icmp(obj1['name'], obj2['name']) + enumerations.sort(cmp) return enumerations def __get_admin_context_vars(self): @@ -301,7 +305,6 @@ class WebView(Component): vars = self.__get_admin_context_vars() vars["enumeration_id"] = enumeration._meta.module_name vars["enumeration_name"] = enumeration._meta.verbose_name - vars["enumeration_name_plural"] = enumeration._meta.verbose_name_plural vars["enumeration_values"] = enumeration.objects.all() return render_to_response('telemeta/enumeration_edit.html', vars) @@ -336,7 +339,6 @@ class WebView(Component): vars = self.__get_admin_context_vars() vars["enumeration_id"] = enumeration._meta.module_name vars["enumeration_name"] = enumeration._meta.verbose_name - vars["enumeration_name_plural"] = enumeration._meta.verbose_name_plural vars["enumeration_record"] = enumeration.objects.get(id__exact=value_id) return render_to_response('telemeta/enumeration_edit_value.html', vars) -- 2.39.5