diff --git a/oshipka/webapp/views.py b/oshipka/webapp/views.py index 9fd423b..f393013 100644 --- a/oshipka/webapp/views.py +++ b/oshipka/webapp/views.py @@ -6,15 +6,16 @@ from flask import flash, render_template, redirect, request, url_for from oshipka.persistance import db -def list_view(model_view, template): +def list_view(model_view, template, template_ctx_func=None): def inner(): instances = model_view.model.query.all() - return render_template(template, instances=instances) + template_ctx = template_ctx_func(instances) if template_ctx_func else {} + return render_template(template, instances=instances, **template_ctx) return inner -def get_view(model_view, template, template_ctx_func): +def get_view(model_view, template, template_ctx_func=None): def inner(uuid): model = model_view.model instance = model.query.filter_by(uuid=uuid).first() @@ -113,18 +114,18 @@ class ModelView(object): endpoint='create_{}'.format(self.model_name), view_func=create_view(self, list_template, **kwargs)) - def register_list(self, list_template): + def register_list(self, list_template, **kwargs): url = '/{}'.format(self.model_name_pl) self.app.add_url_rule(url, 'list_{}'.format(self.model_name), - list_view(self, list_template)) + list_view(self, list_template, **kwargs)) - def register_get(self, retrieve_template, template_ctx_func=None): + def register_get(self, retrieve_template, **kwargs): url = '/{}/'.format(self.model_name_pl) self.app.add_url_rule(url, 'get_{}'.format(self.model_name), - get_view(self, retrieve_template, template_ctx_func)) + get_view(self, retrieve_template, **kwargs)) def register_update(self, update_template): url = '/{}//edit'.format(self.model_name_pl)