From 334892d3481829b234e21e4e23f9fe3b8f0328b1 Mon Sep 17 00:00:00 2001 From: Johannes Englisch Date: Mon, 15 Jan 2024 10:23:26 +0100 Subject: [PATCH] Link feature to families (#49) * parameter details: let user choose language family * family page: make code more analogous to feature page * only show features--family combinations that actually exist * typo * unused import * this should probably raise an object, not a class --- grambank/__init__.py | 16 ++++++++++ grambank/templates/family/detail_html.mako | 24 ++++++++++---- grambank/templates/parameter/detail_html.mako | 31 +++++++++++++++++++ 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/grambank/__init__.py b/grambank/__init__.py index edcc9d9..957d9b8 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 IMapMarker, ILinkAttrs, IContribution, ICtxFactoryQuery @@ -46,6 +47,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. """ @@ -55,6 +67,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 dea7a5c..10dc958 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} <%! from sqlalchemy.orm import joinedload %> +<%! import sqlalchemy %>