From: olivier <> Date: Mon, 15 Feb 2010 23:02:27 +0000 (+0000) Subject: allow to edit all simple enumerations in admin X-Git-Tag: 1.1~527 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=28fe20b28e5891af9010e9ba57620bf227fa0577;p=telemeta.git allow to edit all simple enumerations in admin --- 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 fb8c3f24..23567f70 100644 Binary files a/telemeta/locale/fr/LC_MESSAGES/django.mo and b/telemeta/locale/fr/LC_MESSAGES/django.mo differ diff --git a/telemeta/locale/fr/LC_MESSAGES/django.po b/telemeta/locale/fr/LC_MESSAGES/django.po index bfda89ee..812a6295 100644 --- a/telemeta/locale/fr/LC_MESSAGES/django.po +++ b/telemeta/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-15 22:08+0100\n" +"POT-Creation-Date: 2010-02-15 23:57+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Olivier Guilyardi \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)