clld-glottologfamily-plugin

clld-glottologfamily-plugin


Keywords
web, pyramid, pylons, clld, clld-plugin, glottolog
License
Apache-2.0
Install
pip install clld-glottologfamily-plugin==2.1.0

Documentation

clld-glottologfamily-plugin

clld plugin, adding language families from Glottolog to a clld app to allow for better navigation and visualization.

Build Status codecov.io PyPI

Usage

To equip a Language model with a family relation, the model should inherit from clld_glottologfamily_plugin.models.HasFamilyMixin. This relation can be populated upon database initialization calling clld_glottologfamily_plugin.util.load_families.

The families assigned in this way have an associated icon which can be used as map marker. To make this easier, a custom IMapMarker may inherit from clld_glottologfamily_plugin.util.LanguageByFamilyMapMarker.

Associated DataTable columns suitable for tables listing Language objects can be used as follows:

from clld.web.datatables.language import Languages
from clld_glottologfamily_plugin.datatables import FamilyCol, MacroareaCol
from clld_glottologfamily_plugin.models import Family

from models import CustomLanguage


class LanguagesWithFamily(Languages):
    def base_query(self, query):
        return query.outerjoin(Family)  # note: isolates will have no related family!

    def col_defs(self):
        res = Languages.col_defs(self)
        res.append(MacroareaCol(self, 'macroarea', language_cls=CustomLanguage))
        res.append(FamilyCol(self, 'family', language_cls=CustomLanguage))
        return res

Assigning families

  1. Family information is retrieved from Glottolog, based on the id attribute of a language. This will only work if id is either a glottocode or an ISO 639-3 code.

  2. If no related family is found, None will be assigned - rather than a dummy isolates family or individual one-member families derived from the language.