/usr/share/pyshared/classytags/test/context_managers.py is in python-django-classy-tags 0.3.4.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | # -*- coding: utf-8 -*-
from django import template
from django.conf import settings
class NULL:
pass
class SettingsOverride(object): # pragma: no cover
"""
Overrides Django settings within a context and resets them to their inital
values on exit.
Example:
with SettingsOverride(DEBUG=True):
# do something
"""
def __init__(self, **overrides):
self.overrides = overrides
def __enter__(self):
self.old = {}
for key, value in self.overrides.items():
self.old[key] = getattr(settings, key, NULL)
setattr(settings, key, value)
def __exit__(self, type, value, traceback):
for key, value in self.old.items():
if value is not NULL:
setattr(settings, key, value)
else:
delattr(settings, key) # do not pollute the context!
class TemplateTags(object): # pragma: no cover
def __init__(self, *tags):
self.lib = template.Library()
for tag in tags:
self.lib.tag(tag)
def __enter__(self):
self.old = list(template.builtins)
template.builtins.insert(0, self.lib)
def __exit__(self, type, value, traceback):
template.builtins[:] = self.old
|