]> git.parisson.com Git - telemeta.git/commitdiff
allow to edit all simple enumerations in admin
authorolivier <>
Mon, 15 Feb 2010 23:02:27 +0000 (23:02 +0000)
committerolivier <>
Mon, 15 Feb 2010 23:02:27 +0000 (23:02 +0000)
telemeta/htdocs/css/telemeta.css
telemeta/locale/fr/LC_MESSAGES/django.mo
telemeta/locale/fr/LC_MESSAGES/django.po
telemeta/models/enum.py
telemeta/models/media.py
telemeta/models/query.py
telemeta/templates/telemeta_default/enumeration_edit.html
telemeta/templates/telemeta_default/enumeration_edit_value.html
telemeta/tests/model_tests.py
telemeta/web/base.py

index 67a1b22f84484d6c87e0c95d6527113f768105ed..2a88cbd4817acccd752db359ac2f588c1f9ff440 100644 (file)
@@ -46,6 +46,7 @@ a img { border: none; }
 #content {\r
     position: relative;\r
 }\r
+\r
 #content ul, #content ul ul, #content ol {\r
     list-style: square;\r
     padding: .7em;\r
index fb8c3f24279a03a990e922ad246fa6fe246d625c..23567f701b8e785e7ab215d522832bba21e242fd 100644 (file)
Binary files a/telemeta/locale/fr/LC_MESSAGES/django.mo and b/telemeta/locale/fr/LC_MESSAGES/django.mo differ
index bfda89eeb27b6763280b9226433f1d12ffe093fa..812a6295716db9c14e9dc0b665cfa9c60975c6dd 100644 (file)
@@ -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 <olivier samalyse com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\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
index 4d33bd100002acf4b6aa941c18daeb1c1f8810c8..21cb86d5c897a081fe27bf26de1b32c91d5488f1 100644 (file)
@@ -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'),)
 
 
index 3796b62331e11677e08e0b0631206a2773ed9486..e479fa2e6b7a907240e8e01d4b8cde68c299b67c 100644 (file)
@@ -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'))
index 67d835601d82ebd66b22249624034c437d0f4f63..0ee7fedc5c9a31f3aa1aa4472e26ef4a2c6b5c01 100644 (file)
@@ -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):
index ae5262a52287856f72b19bf7803ff4913953d198..ff9c818d111d3e3ce001a4f9048340a625b74721 100644 (file)
@@ -1,20 +1,21 @@
 {% extends "telemeta/admin.html" %}
+{% load i18n %}
 
-{% block tabcontents %}
-    <h4>Manage {{ enumeration_name_plural|capfirst }}</h4>
-
+{% block head_title %}{% trans "Enumeration" %}: {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %}
 
+{% block tabcontents %}
+ <h4>{% trans "Enumeration" %}: {{ enumeration_name|capfirst }}</h4>
 
  <form class="addnew" id="addenum" method="post"
         action="{% url telemeta-enumeration-add enumeration_id %}">
   <fieldset>
-   <legend>Add {{ enumeration_name|capfirst }}</legend>
+   <legend>{% trans "Add entry" %}</legend>
    <div class="field">
-    <label>Value: <input type="text" name="value"></label>
+    <label>{% trans "Value" %}: <input type="text" name="value"></label>
 
    </div>
    <div class="buttons">
-    <input type="submit" name="add" value="Add">
+    <input type="submit" name="add" value="{% trans 'Add' %}">
    </div>
   </fieldset>
  </form>
@@ -22,7 +23,7 @@
  <form method="POST" action="{% url telemeta-enumeration-update enumeration_id %}">
   <table class="listing">
    <thead>
-    <tr><th class="sel">&nbsp;</th><th>Value</th>
+    <tr><th class="sel">&nbsp;</th><th>{% trans "Value"%}</th>
 
     </tr>
    </thead><tbody>
     </tbody>
   </table>
   <div class="buttons">
-   <input type="submit" name="remove" value="Remove selected items" />
+   <input type="submit" name="remove" value="{% trans 'Remove selected items' %}" />
   </div>
  </form>
  {% else %}
-    <p class="help">This enumeration is empty.</p>
+    <p class="help">{% trans "This enumeration is empty" %}</p>
  {% endif %}
 
   <br style="clear: right"/>
index f1fc8ad1cad8261eec5446d8c99ecba8835ab23c..80cb3fedecf4f0585380ac8489c2ca3a4d39f75b 100644 (file)
@@ -1,19 +1,22 @@
 {% extends "telemeta/admin.html" %}
+{% load i18n %}
+
+{% block head_title %}{% trans "Enumeration" %}: {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %}
 
 {% block tabcontents %}
   <h4>Manage {{ enumeration_name_plural|capfirst }}</h4>
<h4>{% trans "Enumeration" %}: {{ enumeration_name|capfirst }}</h4>
 
  <form class="mod" id="addenum" method="post"
     action="{% url telemeta-enumeration-record-update enumeration_id,enumeration_record.id %}">
   <fieldset>
-   <legend>Modify {{ enumeration_name|capfirst }}</legend>
+   <legend>{% trans "Modify an entry" %}</legend>
    <div class="field">
-    <label>Value: <input type="text" name="value" value="{{enumeration_record.value}}" /></label>
+    <label>{% trans "Value" %}: <input type="text" name="value" value="{{enumeration_record.value}}" /></label>
 
    </div>
    <div class="buttons">
-    <input type="submit" name="save" value="Save">
-    <input type="submit" name="cancel" value="Cancel">
+    <input type="submit" name="save" value="{% trans 'Save' %}">
+    <input type="submit" name="cancel" value="{% trans 'Cancel' %}">
    </div>
   </fieldset>
  </form>
index 25068d9564c960f479078e4518fd4e50d9dfa950..8ee69d24616b7ba4cb683a4623f9bc82ee80b74c 100644 (file)
@@ -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,
index c4445b6f12a79fb2c7e16de10a8a2a095a99b379..48c6a31a0406619429c31af6d89fef06642ae5b1 100644 (file)
@@ -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)