X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/f23e8f623a0670883682399799d40abda730ff16..459d35ff87dbfff1ef831f4abf34d3418d810209:/forum/modules/ui_objects.py diff --git a/forum/modules/ui_objects.py b/forum/modules/ui_objects.py index 70bee93..b88ea50 100644 --- a/forum/modules/ui_objects.py +++ b/forum/modules/ui_objects.py @@ -1,5 +1,6 @@ from django.core.urlresolvers import reverse from django.template.defaultfilters import slugify +from django import template from forum.utils import html class Visibility(object): @@ -82,6 +83,16 @@ class Link(ObjectBase): html.hyperlink(self.url(context), self.text(context), **self.attrs(context)), self.post_code(context)) +class Include(ObjectBase): + def __init__(self, tpl, visibility=None, weight=500): + super(Include, self).__init__(visibility, weight) + self.template = template.loader.get_template(tpl) + + def render(self, context): + if not isinstance(context, template.Context): + context = template.Context(context) + return self.template.render(context) + class LoopContext(LoopBase): def __init__(self, loop_context, visibility=None, weight=500): @@ -108,17 +119,19 @@ class PageTab(LoopBase): class ProfileTab(LoopBase): - def __init__(self, name, title, description, url_getter, private=False, weight=500): + def __init__(self, name, title, description, url_getter, private=False, render_to=None, weight=500): super(ProfileTab, self).__init__(weight=weight) self.name = name self.title = title self.description = description self.url_getter = url_getter self.private = private + self.render_to = render_to def can_render(self, context): - return not self.private or ( - context['view_user'] == context['request'].user or context['request'].user.is_superuser) + return (not self.render_to or (self.render_to(context['view_user']))) and ( + not self.private or ( + context['view_user'] == context['request'].user or context['request'].user.is_superuser)) def update_context(self, context): context.update(dict(