]> git.parisson.com Git - telemeta.git/commitdiff
add languages table to receive ISO 639-3 data
authoryomguy <yomguy@parisson.com>
Fri, 9 Dec 2011 16:40:58 +0000 (17:40 +0100)
committeryomguy <yomguy@parisson.com>
Fri, 9 Dec 2011 16:40:58 +0000 (17:40 +0100)
telemeta/admin.py
telemeta/forms/__init__.py
telemeta/forms/language.py [new file with mode: 0644]
telemeta/models/__init__.py
telemeta/models/language.py [new file with mode: 0644]
telemeta/models/media.py

index 6eb9e22f11b412a6b4fdbed020e74e1cd591aed0..2835888d939559feee66a96337c8b0db6a538dac 100644 (file)
@@ -1,6 +1,7 @@
 from telemeta.models.media import *
 from telemeta.models.instrument import *
 from telemeta.models.location import *
+from telemeta.models.language import *
 from django.contrib import admin
 
 
@@ -15,7 +16,7 @@ class MediaItemAdmin(admin.ModelAdmin):
 
 class MediaItemRelatedAdmin(admin.ModelAdmin):
     search_fields = ['title', 'description']
-    
+
 class MediaPartAdmin(admin.ModelAdmin):
     search_fields = ['title', 'item__code']
     ordering = ['title']
@@ -23,7 +24,7 @@ class MediaPartAdmin(admin.ModelAdmin):
 class InstrumentAdmin(admin.ModelAdmin):
     search_fields = ['name']
     ordering = ['name']
-    
+
 class InstrumentAliasAdmin(admin.ModelAdmin):
     search_fields = ['name']
     ordering = ['name']
@@ -31,7 +32,7 @@ class InstrumentAliasAdmin(admin.ModelAdmin):
 class InstrumentRelationAdmin(admin.ModelAdmin):
     search_fields = ['instrument__name', 'parent_instrument__name']
     ordering = ['parent_instrument__name']
-     
+
 class InstrumentAliasRelationAdmin(admin.ModelAdmin):
     search_fields = ['alias__name', 'instrument__name']
     ordering = ['alias__name']
@@ -39,15 +40,20 @@ class InstrumentAliasRelationAdmin(admin.ModelAdmin):
 class LocationAdmin(admin.ModelAdmin):
     search_fields = ['name']
     ordering = ['name']
-     
+
 class LocationAliasAdmin(admin.ModelAdmin):
     search_fields = ['location__name', 'alias']
     ordering = ['alias']
-     
+
 class LocationRelationAdmin(admin.ModelAdmin):
     search_fields = ['location__name', 'ancestor_location__name']
     ordering = ['ancestor_location__name']
 
+class LanguageAdmin(admin.ModelAdmin):
+    search_fields = ['name', 'identifier']
+    ordering = ['name']
+
+
 admin.site.register(MediaCollection, MediaCollectionAdmin)
 admin.site.register(MediaItem, MediaItemAdmin)
 admin.site.register(MediaPart, MediaPartAdmin)
@@ -63,3 +69,4 @@ admin.site.register(Location, LocationAdmin)
 admin.site.register(LocationAlias, LocationAliasAdmin)
 admin.site.register(LocationRelation, LocationRelationAdmin)
 
+admin.site.register(Language, LanguageAdmin)
index 5fbd2d9d2a01d468ed9a02e164b1e391f6d54810..ff99136b5b450179eb478af308a6a8b343899204 100644 (file)
@@ -1,2 +1,3 @@
 
 from media import *
+from language import *
diff --git a/telemeta/forms/language.py b/telemeta/forms/language.py
new file mode 100644 (file)
index 0000000..f4d12a5
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011 Parisson SARL
+
+# This software is a computer program whose purpose is to backup, analyse,
+# transcode and stream any audio content with its metadata over a web frontend.
+
+# This software is governed by the CeCILL  license under French law and
+# abiding by the rules of distribution of free software.  You can  use,
+# modify and/ or redistribute the software under the terms of the CeCILL
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# "http://www.cecill.info".
+
+# As a counterpart to the access to the source code and  rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty  and the software's author,  the holder of the
+# economic rights,  and the successive licensors  have only  limited
+# liability.
+
+# In this respect, the user's attention is drawn to the risks associated
+# with loading,  using,  modifying and/or developing or reproducing the
+# software by the user in light of its specific status of free software,
+# that may mean  that it is complicated to manipulate,  and  that  also
+# therefore means  that it is reserved for developers  and  experienced
+# professionals having in-depth computer knowledge. Users are therefore
+# encouraged to load and test the software's suitability as regards their
+# requirements in conditions enabling the security of their systems and/or
+# data to be ensured and,  more generally, to use and operate it in the
+# same conditions as regards security.
+
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL license and that you accept its terms.
+#
+# Authors: Guillaume Pellerin <yomguy@parisson.com>
+
+
+from django.forms import ModelForm
+from telemeta.models import *
+
+class LanguageForm(ModelForm):
+    class Meta:
+        model = Language
index 015f1b878ba03cab464d8405afd0d810d87125b4..7bf7a719c3f4ac87755996638c042be8dd29740e 100644 (file)
@@ -41,5 +41,5 @@ from enum import *
 from system import *
 from query import *
 from dublincore import *
-
+from language import *
 
diff --git a/telemeta/models/language.py b/telemeta/models/language.py
new file mode 100644 (file)
index 0000000..60f6cab
--- /dev/null
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011-2012 Parisson SARL
+
+# This software is a computer program whose purpose is to backup, analyse,
+# transcode and stream any audio content with its metadata over a web frontend.
+
+# This software is governed by the CeCILL  license under French law and
+# abiding by the rules of distribution of free software.  You can  use,
+# modify and/ or redistribute the software under the terms of the CeCILL
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# "http://www.cecill.info".
+
+# As a counterpart to the access to the source code and  rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty  and the software's author,  the holder of the
+# economic rights,  and the successive licensors  have only  limited
+# liability.
+
+# In this respect, the user's attention is drawn to the risks associated
+# with loading,  using,  modifying and/or developing or reproducing the
+# software by the user in light of its specific status of free software,
+# that may mean  that it is complicated to manipulate,  and  that  also
+# therefore means  that it is reserved for developers  and  experienced
+# professionals having in-depth computer knowledge. Users are therefore
+# encouraged to load and test the software's suitability as regards their
+# requirements in conditions enabling the security of their systems and/or
+# data to be ensured and,  more generally, to use and operate it in the
+# same conditions as regards security.
+
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL license and that you accept its terms.
+#
+# Authors:
+#          Guillaume Pellerin <yomguy@parisson.com>
+
+from django.utils.translation import ugettext_lazy as _
+from django.core.exceptions import ValidationError
+from telemeta.models.core import *
+
+SCOPE_CHOICES = (('I', 'Individual'), ('M', 'Macrolanguage'), ('S', 'Special'))
+
+TYPE_CHOICES = (('A', 'Ancient'), ('C', 'Constructed'), ('E', 'Extinct'),
+                ('H', 'Historical'), ('L', 'Living'), ('S', 'Special'))
+
+class Language(ModelCore):
+    "ISO 639-3 normalized languages"
+
+    identifier      = CharField(_('identifier'), max_length=3)
+    part2B          = CharField(_('equivalent 639-2 identifier (bibliographic)'), max_length=3)
+    part2T          = CharField(_('equivalent 639-2 identifier (terminologic)'), max_length=3)
+    part1           = CharField(_('equivalent 639-1 identifier'), max_length=1)
+    scope           = CharField(_('scope'), choices=SCOPE_CHOICES, max_length=1)
+    type            = CharField(_('scope'), choices=TYPE_CHOICES, max_length=1)
+    name            = CharField(_('name'))
+    comment         = TextField(_('comment'))
+
+    def __str__(self):
+        return self.name
+
+    class Meta(MetaCore):
+        db_table = 'languages'
+        ordering = ['name']
index f641e361dd3425bc2d9ece46bf85a3fba386cc03..b3d50bc44986ace37208cc597ddd5de85f6ef99e 100644 (file)
@@ -48,8 +48,8 @@ from telemeta.models.system import Revision
 from telemeta.models.query import *
 from telemeta.models.instrument import *
 from telemeta.models.enum import *
-from django.db.models.fields import URLField
-
+from telemeta.models.language import *
+from django.db import models
 
 collection_published_code_regex   = '[A-Za-z0-9._-]*'
 collection_unpublished_code_regex = '[A-Za-z0-9._-]*'
@@ -335,6 +335,9 @@ class MediaItem(MediaResource):
     ethnic_group          = WeakForeignKey('EthnicGroup', related_name="items",
                                            verbose_name=_('population / social group'))
     language              = CharField(_('language'))
+    language_iso          = ForeignKey('Language', related_name="items",
+                                       verbose_name=_('ISO language'), blank=True,
+                                        null=True, on_delete=models.SET_NULL)
     context_comment       = TextField(_('comments / ethnographic context'))
     moda_execut           = CharField(_('moda_execut'))