diff --git a/grambank/__init__.py b/grambank/__init__.py index 940f527..e3ec79c 100644 --- a/grambank/__init__.py +++ b/grambank/__init__.py @@ -1,6 +1,7 @@ import functools from pyramid.config import Configurator +from pyramid import httpexceptions from sqlalchemy.orm import joinedload from clld.interfaces import ( @@ -57,6 +58,17 @@ def link_attrs(req, obj, **kw): return kw +def combine_feature_with_family(ctx, req): + if 'feature' in req.params and 'family' in req.params: + feature_id = req.params.get('feature') + family_id = req.params.get('family') + query = {'feature': feature_id} + raise httpexceptions.HTTPFound( + req.route_url('family', id=family_id, _query=query)) + else: + raise httpexceptions.HTTPNotFound() + + def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ @@ -66,6 +78,10 @@ def main(global_config, **settings): config.include('clld_phylogeny_plugin') config.register_datatable('familys', datatables.Families) config.add_route_and_view('faq', '/faq', lambda *args, **kw: {}, renderer='faq.mako') + config.add_route_and_view( + 'combine_feature_with_family', + '/_combine_feature_with_family', + combine_feature_with_family) config.registry.registerUtility(GrambankCtxFactoryQuery(), ICtxFactoryQuery) config.registry.registerUtility(GrambankMapMarker(), IMapMarker) diff --git a/grambank/templates/family/detail_html.mako b/grambank/templates/family/detail_html.mako index 41ab160..0349d88 100644 --- a/grambank/templates/family/detail_html.mako +++ b/grambank/templates/family/detail_html.mako @@ -11,6 +11,7 @@ <%block name="title">Family ${ctx.name}%block> <%! from sqlalchemy.orm import joinedload %> +<%! import sqlalchemy %>