def languages(req): """ :param req: :return: list of (language, med) pairs with matching endangerment and doctype. """ langs = [] macroarea = req.params.get('macroarea') family = _get_families(req) year = req.params.get('year') label = 'Languages' try: ed = ENDANGERMENTS[int(req.matchdict['ed'])] label = HTML.em(ed.name) + ' languages' except IndexError: ed = None if family: label = label + ' of the %s families' % ', '.join(f.name for f in family) if macroarea: label = label + ' from ' + macroarea try: sdt = SIMPLIFIED_DOCTYPES[int(req.matchdict['sdt'])] except IndexError: sdt = None if sdt: label = label + ' whose most extensive description' if year: year = int(year) label = label + ' in %s' % year label = label + ' is a ' + sdt.name stats = ldstatus() for lang in language_query(req): if ed: _ed = lang.status.value if ed.name != _ed: continue med_, sources, _ = stats.get(lang.id, (None, [], None)) med = None if year: for s in sources: s = src2dict(s) if s['year'] <= year: med = s break else: med = med_ if sdt: _sdt = SIMPLIFIED_DOCTYPE_MAP[med['doctype'] if med else None] if _sdt.ord != sdt.ord: continue langs.append((lang, med)) return {'languages': sorted(langs, key=lambda l: l[0].name), 'label': label}
def languages(req): """ Called when cells in the tally table are clicked to load the corresponding languages. :param req: :return: list of (language, med) pairs with matching endangerment and doctype. """ macroarea = req.params.get('macroarea') family = _get_families(req) year = req.params.get('year') demap = defaultdict(dict) for pid in ['aes', 'med']: for de in get_parameter(pid).domain: demap[pid][de.number] = de aes, aeslpks, med, medlpks = None, [], None, [] label = 'Languages' if int(req.matchdict['ed']) in demap['aes']: aes = demap['aes'][int(req.matchdict['ed'])] label = HTML.em(aes.name) + ' languages' aeslpks = { v.valueset.language_pk for v in DBSession.query(common.Value)\ .filter(common.Value.domainelement_pk == aes.pk)\ .options(joinedload(common.Value.valueset))} if family: label = label + ' of the %s families' % ', '.join(f.name for f in family) if macroarea: label = label + ' from ' + macroarea if int(req.matchdict['sdt']) in demap['med']: med = demap['med'][int(req.matchdict['sdt'])] medlpks = { v.valueset.language_pk for v in DBSession.query(common.Value) \ .filter(common.Value.domainelement_pk == med.pk) \ .options(joinedload(common.Value.valueset))} label = label + ' whose most extensive description' if year: year = int(year) label = label + ' in %s' % year label = label + ' is a ' + med.name stats = ldstatus(get_parameter('aes').pk) langs = [] for lang in language_query(req): if aes and lang.pk not in aeslpks: continue if not year and (med and lang.pk not in medlpks): continue aespk, med_, sources, _ = stats.get(lang.id, (None, None, [], None)) gmed = None if year: drop = True for s in sources: s = src2dict( s, {v.id.split('-')[1]: v for v in demap['med'].values()}) if s['year'] <= int(year): gmed = s if med and gmed['med_type'] == med.id.split('-')[1]: drop = False break if drop and med: continue else: gmed = med_ langs.append((lang, gmed)) return { 'languages': sorted(langs, key=lambda l: l[0].name), 'label': label }
def languages(req): """ :param req: :return: list of (language, med) pairs with matching endangerment and doctype. """ langs = [] macroarea = req.params.get('macroarea') family = _get_families(req) year = req.params.get('year') label = 'Languages' try: ed = ENDANGERMENTS[int(req.matchdict['ed'])] label = HTML.em(ed.name) + ' languages' except IndexError: ed = None if family: label = label + ' of the %s families' % ', '.join(f.name for f in family) if macroarea: label = label + ' from ' + macroarea try: sdt = SIMPLIFIED_DOCTYPES[int(req.matchdict['sdt'])] except IndexError: sdt = None if sdt: label = label + ' whose most extensive description' if year: year = int(year) label = label + ' in %s' % year label = label + ' is a ' + sdt.name stats = ldstatus() for lang in language_query(req): if ed: _ed = lang.status.description if ed.name != _ed: continue med_, sources, _ = stats.get(lang.id, (None, [], None)) med = None if year: for s in sources: s = src2dict(s) if s['year'] <= int(year): med = s break else: med = med_ if sdt: _sdt = SIMPLIFIED_DOCTYPE_MAP[med['doctype'] if med else None] if _sdt.ord != sdt.ord: continue langs.append((lang, med)) return {'languages': sorted(langs, key=lambda l: l[0].name), 'label': label}