def __init__(self, dt, name, **kw): self.subtype = kw.pop('subtype', name) kw['sDescription'] = { 'mp4': external_link('https://en.wikipedia.org/wiki/MPEG-4'), 'quicktime': external_link('https://en.wikipedia.org/wiki/QuickTime'), 'x-msvideo': external_link('https://en.wikipedia.org/wiki/Audio_Video_Interleave'), }[self.subtype] kw['sTitle'] = name.upper() Col.__init__(self, dt, name, **kw)
def link(req, id=None, obj_type='ConceptSet', label=None): akw = dict( title='Concepticon' if id is None else 'View {0} at Concepticon'.format(obj_type), href=url(id=id, obj_type=obj_type)) if label: return external_link(None, label=label, **akw) return HTML.a(logo(req), **akw)
def wals_detail_html(context=None, request=None, **kw): wals_data = Path(apics.__file__).parent.joinpath( 'static', 'wals', '%sA.json' % context.parameter.wals_id) if not wals_data.exists(): raise HTTPNotFound() wals_data = jsonlib.load(wals_data) value_map = {} for layer in wals_data['layers']: for feature in layer['features']: feature['properties']['icon'] = request.registry.getUtility( IIcon, name=feature['properties']['icon']).url(request) feature['properties']['popup'] = external_link( 'http://wals.info/languoid/lect/wals_code_' + feature['properties']['language']['id'], label=feature['properties']['language']['name']) value_map[layer['properties']['number']] = { 'icon': layer['features'][0]['properties']['icon'], 'name': layer['properties']['name'], 'number': layer['properties']['number'], } return { 'wals_data': wals_data, 'wals_map': WalsMap( context.parameter, request, data=wals_data, value_map=value_map), 'apics_map': ApicsWalsMap( context.parameter, request, data=wals_data, value_map=value_map)}
def format(self, concept): if concept.concepticon_class: href = 'http://concepticon.clld.org/parameters/{}'.format( concept.concepticon_class) return external_link(href, concept.concepticon_class) else: return ''
def wals(req): ctx = DBSession.query(Parameter).filter(Parameter.id == req.matchdict['id']).one() with open( path(apics.__file__).dirname().joinpath( 'static', 'wals', '%sA.json' % ctx.wals_id), 'r' ) as fp: data = json.load(fp) value_map = {} for layer in data['layers']: for feature in layer['features']: feature['properties']['icon'] = req.registry.getUtility( IIcon, name=feature['properties']['icon']).url(req) feature['properties']['popup'] = external_link( 'http://wals.info/languoid/lect/wals_code_' + feature['properties']['language']['id'], label=feature['properties']['language']['name']) value_map[layer['properties']['number']] = { 'icon': layer['features'][0]['properties']['icon'], 'name': layer['properties']['name'], 'number': layer['properties']['number'], } return { 'ctx': ctx, 'wals_data': data, 'wals_map': WalsMap(ctx, req, data=data, value_map=value_map), 'apics_map': ApicsWalsMap(ctx, req, data=data, value_map=value_map)}
def format(self, item): if item.glottocode: return external_link(url=url(item.glottocode), label=item.glottocode, title="View languoid {0} at Glottolog".format( item.glottocode), target="_new") else: return ""
def render_metadata(ctx): rows = [] for provider, md in groupby(ctx.meta, lambda m: m.metaprovider): rows.append(HTML.tr( HTML.th(external_link(provider.url, label=provider.name), colspan='2'))) for meta in md: key, value = render_kv(meta) rows.append(HTML.tr(HTML.td(key), HTML.td(value))) return HTML.table(HTML.tbody(*rows), class_='table table-condensed')
def name_link(self): if self.url == "na": return self.name else: return external_link(self.url, label=self.name) #@implementer(ILinkingAudio) #class LinkingAudio(Base, IdNameDescriptionMixin): # pass
def git_link(self): if self.git_repo: match = re.search(r'github\.com/([^/]*)/([^/]*)', self.git_repo) if match: label = 'Github: %s/%s' % match.groups() else: label = 'Git: {}'.format(self.git_repo) return external_link(self.git_repo, label=label) else: return ''
def col_defs(self): res = Languages.col_defs(self) return res[1:2] + [ Col(self, 'glottocode', model_col=Languoid.glottocode, format=lambda i: '' if not i.glottocode else external_link( glottolog_url(i.glottocode), i.glottocode)), LineageCol(self, 'lineage'), EditorsCol(self, 'editors'), ] + res[2:]
def render_metadata(ctx): rows = [] for provider, md in groupby(ctx.meta, lambda m: m.metaprovider): rows.append( HTML.tr( HTML.th(external_link(provider.url, label=provider.name), colspan='2'))) for meta in md: key, value = render_kv(meta) rows.append(HTML.tr(HTML.td(key), HTML.td(value))) return HTML.table(HTML.tbody(*rows), class_='table table-condensed')
def col_defs(self): res = Languages.col_defs(self) return res[1:2] + [ Col(self, 'glottocode', model_col=Languoid.glottocode, format=lambda i: '' if not i.glottocode else external_link(glottolog_url(i.glottocode), i.glottocode)), LineageCol(self, 'lineage'), EditorsCol(self, 'editors'), ] + res[2:]
def col_defs(self): return [ IdCol(self, 'id', sTitle='Code'), LinkCol(self, 'name'), BiomeCol(self, 'category'), Col(self, 'status', sDescription=Ecoregion.gbl_stat.doc, model_col=Ecoregion.gbl_stat, choices=get_distinct_values(Ecoregion.gbl_stat)), LinkToMapCol(self, 'm', sTitle=''), Col(self, 'w', sTitle='', format=lambda i: external_link(i.wwf_url(), 'WWF')) ]
def format(self, item): lis = [] if item.source: s = item.source if s.startswith('http://'): label = s for t in 'wikimedia wikipedia plantzafrica'.split(): if t in s: label = t break lis.append(external_link(s, label)) lis.append(linked_references(self.dt.req, item)) return HTML.ul(*lis, class_='unstyled')
def markup_feature_desc(req, desc): for pattern, repl in [ ('WALS feature number:\s*(?P<id>[0-9]+)\s*\[http://wals\.info\]', lambda match: external_link( 'http://wals.info/feature/%sA' % match.group('id'), label='WALS feature number %sA' % match.group('id'))), ('Constenla feature number:\s*(?P<id>[a-z0-9]+)\s*\[[^\]]+\]', lambda match: link( req, Source.get('hvtypconstenlaintermedia'), label='Constenla feature number: ' + match.group('id')))]: desc = re.sub(pattern, repl, desc) return desc
def markup_feature_desc(req, desc): for pattern, repl in [ ('WALS feature number:\s*(?P<id>[0-9]+)\s*\[http://wals\.info\]', lambda match: external_link( 'http://wals.info/feature/%sA' % match.group('id'), label='WALS feature number %sA' % match.group('id'))), ('Constenla feature number:\s*(?P<id>[a-z0-9]+)\s*\[[^\]]+\]', lambda match: link(req, Source.get('hvtypconstenlaintermedia'), label='Constenla feature number: ' + match.group('id'))) ]: desc = re.sub(pattern, repl, desc) return desc
def file_link(file): url = file.jsondata.get('url', 'http://hdl.handle.net/' + file.id.replace('__', '/')) suffix = pathlib.Path(url.split('/')[-1]).suffix content = [ HTML.a( icon('file'), '{} ({})'.format( suffix[1:].upper() if suffix else 'PDF', format_size(file.jsondata['size'])), href=url, )] license = file.jsondata['license'] if license: content.append(' licensed under ') content.append(external_link( license['url'], label=license['id'].upper(), title=license['name'])) return HTML.span(*content)
def wals_detail_html(context=None, request=None, **kw): wals_data = Path(apics.__file__).parent.joinpath( 'static', 'wals', '%sA.json' % context.parameter.wals_id) if not wals_data.exists(): raise HTTPNotFound() wals_data = jsonlib.load(wals_data) value_map = {} for layer in wals_data['layers']: for feature in layer['features']: feature['properties']['icon'] = request.registry.getUtility( IIcon, name=feature['properties']['icon']).url(request) feature['properties']['popup'] = external_link( 'http://wals.info/languoid/lect/wals_code_' + feature['properties']['language']['id'], label=feature['properties']['language']['name']) value_map[layer['properties']['number']] = { 'icon': layer['features'][0]['properties']['icon'], 'name': layer['properties']['name'], 'number': layer['properties']['number'], } return { 'wals_data': wals_data, 'wals_map': WalsMap(context.parameter, request, data=wals_data, value_map=value_map), 'apics_map': ApicsWalsMap(context.parameter, request, data=wals_data, value_map=value_map) }
def _get_cc(cc, arc="", arc_l=""): """Support function ('doreLanguage.lic_link()') to get a nice CC.""" url = "https://creativecommons.org/licenses/" ch = cc.lower() if not ch.startswith("cc"): if ch == "na": return cc elif arc == "na": return "No audio archive" return external_link(arc_l, label="Audio at " + arc) ch = ch[3:] known = { 'zero': 'Public Domain', 'by': 'Creative Commons Attribution License', 'by-nc': 'Creative Commons Attribution-NonCommercial License', 'by-nc-nd': 'Creative Commons Attribution-NonCommercial-NoDerivatives' ' License', 'by-nc-sa': 'Creative Commons Attribution-NonCommercial-ShareAlike' ' License', 'by-nd': 'Creative Commons Attribution-NoDerivatives License', 'by-sa': 'Creative Commons Attribution-ShareAlike License' } img_attrs = dict( alt=known[ch], # replace concat by doreco on final and add s to http src="http://concat.huma-num.fr/static/cc/" + ch + '.png') img_attrs.update(height=15, width=80) if not ch == 'zero': license_url = url + ch + "/4.0/" else: license_url = url + ch + "/" return HTML.a(HTML.img(**img_attrs), href=license_url, rel='license', target="_blank")
def glo_link(self): gl = "https://glottolog.org/resource/languoid/id/" return external_link(os.path.join(gl, self.id), label=self.id)
def format(self, item): if not item.genus: return '' if not item.genus.active: return item.genus.name return external_link(item.wals_genus_url, label=item.genus.name)
def format(self, item): if item.concepticon_url: return external_link(item.concepticon_url) else: return ''
def format(self, doculect): href = 'http://glottolog.org/resource/languoid/id/{}'.format( doculect.glotto_code) return external_link(href, doculect.glotto_code)
def doi_link(self): if self.doi: return external_link( 'https://doi.org/{0.doi}'.format(self), label='DOI: {0.doi}'.format(self)) return ''
def test_external_link(self): from clld.web.util.helpers import external_link self.assertTrue("http://wals.info" in external_link("http://wals.info"))
def test_external_link(env): from clld.web.util.helpers import external_link assert 'http://wals.info' in external_link('http://wals.info')
def format(self, item): return external_link(item.description, label=item.id)
def format(self, item): return external_link( 'http://glottolog.org/resource/languoid/id/' + item.id, label=item.id, title='Language information at Glottolog')
def format(self, item): url = getattr(self.get_obj(item), 'url', None) return external_link(url, **self.get_attrs(item)) if url else ''
def doi_link(self): if self.doi: return external_link('https://doi.org/{0.doi}'.format(self), label='DOI: {0.doi}'.format(self)) return ''
def format(self, item): if item.url: return external_link(item.url, label=URL(item.url).host())
def test_external_link(self): from clld.web.util.helpers import external_link self.assertTrue( 'http://wals.info' in external_link('http://wals.info'))
def format(self, concept): if concept.eol: href = 'https://eol.org/pages/{}'.format(concept.eol) return external_link(href, concept.eol) else: return ''
def render_kv(meta): value = meta.value if meta.valueUrl: value = external_link(meta.valueUrl, label=meta.value) return meta.key.replace('_', ' '), value
def format(self, item): return external_link(item.concepticon_url)
def format(self, item): label = Col.format(self, item) href = item.href(self.link_type) if href: return external_link(href, label=label) return label
def format(self, item): return external_link(item.url, 'homepage') if item.url else ''
def format(self, item): return external_link( 'http://wals.info/feature/%sA' % item.wals_id, label='%sA' % item.wals_id)
def fam_link(self): if not self.fam_glottocode == "na": gl = "https://glottolog.org/resource/languoid/id/" return external_link(os.path.join(gl, self.fam_glottocode), label=self.family) return self.family
def arc_link(self): if not self.arclink == "na": return external_link(self.arclink, label=self.archive) return self.archive
def NAK_link(self): return external_link(self.NAK, label=self.sound)