From 44cc478e6270d6dfe706ce03aed756c76d537d76 Mon Sep 17 00:00:00 2001 From: yomguy Date: Fri, 9 Dec 2011 17:40:58 +0100 Subject: [PATCH] add languages table to receive ISO 639-3 data --- telemeta/admin.py | 17 +++++++--- telemeta/forms/__init__.py | 1 + telemeta/forms/language.py | 41 ++++++++++++++++++++++++ telemeta/models/__init__.py | 2 +- telemeta/models/language.py | 62 +++++++++++++++++++++++++++++++++++++ telemeta/models/media.py | 7 +++-- 6 files changed, 122 insertions(+), 8 deletions(-) create mode 100644 telemeta/forms/language.py create mode 100644 telemeta/models/language.py diff --git a/telemeta/admin.py b/telemeta/admin.py index 6eb9e22f..2835888d 100644 --- a/telemeta/admin.py +++ b/telemeta/admin.py @@ -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) diff --git a/telemeta/forms/__init__.py b/telemeta/forms/__init__.py index 5fbd2d9d..ff99136b 100644 --- a/telemeta/forms/__init__.py +++ b/telemeta/forms/__init__.py @@ -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 index 00000000..f4d12a58 --- /dev/null +++ b/telemeta/forms/language.py @@ -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 + + +from django.forms import ModelForm +from telemeta.models import * + +class LanguageForm(ModelForm): + class Meta: + model = Language diff --git a/telemeta/models/__init__.py b/telemeta/models/__init__.py index 015f1b87..7bf7a719 100644 --- a/telemeta/models/__init__.py +++ b/telemeta/models/__init__.py @@ -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 index 00000000..60f6caba --- /dev/null +++ b/telemeta/models/language.py @@ -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 + +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'] diff --git a/telemeta/models/media.py b/telemeta/models/media.py index f641e361..b3d50bc4 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -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')) -- 2.39.5