I'm developing a regionalization extension based on PostGIS and GeoDjango for a web-based LCA software. Because PostGIS (or PostgreSQL) is not available everywhere, we needed a way to fully disable the geographic extensions.
Because of that, I set out to create a template block tag which only gets evaluated when GIS support is active and totally ignored (treated as a comment) otherwise.
I had some problems getting my BoringNode to work (which should just pass the content through), so I've just used the AutoEscapeControlNode (why? Because it was the first usable class that jumped into my eye.) for this purpose.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
from django.conf import settings from django.template import Node, Library from django.template.defaulttags import CommentNode, AutoEscapeControlNode register = Library() def BoringNode(Node): def __init__(self, nodelist): self.nodelist = nodelist def render(self, context): return self.nodelist.render(context) @register.tag def gisblock(parser, token): if not settings.BRIGHTWAY_GIS_SUPPORT: parser.skip_past('endgisblock') return CommentNode() nodelist = parser.parse(('endgisblock',)) parser.delete_first_token() # HACK!!! why doesn't BoringNode work? I always get strange # errors ('NoneType' has no attribute 'source') return AutoEscapeControlNode(True, nodelist) #return BoringNode(nodelist)
More like this
- Image compression before saving the new model / work with JPG, PNG by Schleidens 6 days, 5 hours ago
- Help text hyperlinks by sa2812 1 month ago
- Stuff by NixonDash 3 months, 1 week ago
- Add custom fields to the built-in Group model by jmoppel 5 months, 1 week ago
- Month / Year SelectDateWidget based on django SelectDateWidget by pierreben 8 months, 3 weeks ago
Please login first before commenting.