PKR9“×2EGG-INFO/dependency_links.txt PKR9wîXì::EGG-INFO/entry_points.txt[trac.plugins] permredirect.filter = permredirect.filter PKR9“×2EGG-INFO/not-zip-safe PKR9bFImWWEGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: TracPermRedirect Version: 1.0.2 Summary: Redirect users to the login screen on PermissionError. Home-page: http://trac-hacks.org/wiki/PermRedirectPlugin Author: Noah Kantrowitz Author-email: noah@coderanger.net License: BSD Description: UNKNOWN Keywords: trac plugin Platform: UNKNOWN Classifier: Framework :: Trac PKR9Œ¸1EGG-INFO/SOURCES.txtsetup.py TracPermRedirect.egg-info/PKG-INFO TracPermRedirect.egg-info/SOURCES.txt TracPermRedirect.egg-info/dependency_links.txt TracPermRedirect.egg-info/entry_points.txt TracPermRedirect.egg-info/top_level.txt permredirect/__init__.py permredirect/filter.py PKR9¢‡ÿ EGG-INFO/top_level.txtpermredirect PK6o8permredirect/__init__.pyPKR9¢¸ÇQ‹‹permredirect/__init__.pyc;ò ·ÓÛGc@sdS(N((((s;build/bdist.darwin-8.11.1-i386/egg/permredirect/__init__.pys?sPKeR9ä_ª„^^permredirect/filter.py# Created by Noah Kantrowitz on 2007-08-27. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. import sys import inspect from trac.core import * from trac.web.api import IRequestFilter, RequestDone from trac.perm import PermissionError class PermRedirectModule(Component): """Redirect users to the login screen on PermissionError.""" implements(IRequestFilter) def __init__(self): old_exc_info = sys.exc_info def new_exc_info(): return list(old_exc_info()) sys.exc_info = new_exc_info # IRequestFilter methods def pre_process_request(self, req, handler): return handler def post_process_request(self, req, template, content_type): if template is None: # Some kind of exception in progress exctype, exc = sys.exc_info()[0:2] if exc is None or exctype is None: return template, content_type if req.authname == 'anonymous' and \ (issubclass(exctype, PermissionError) or \ (issubclass(exctype, TracError) and \ exc.message == 'No admin pages available')): # Do our redirect try: req.redirect(req.href.login()) except RequestDone: pass # Mask the raise from here, we need to do it later for frame in inspect.stack()[1:]: l = frame[0].f_locals co = frame[0].f_code if 'err' in l and co.co_name == 'dispatch': # Hijack err err = l['err'] err[0] = RequestDone err[1] = None err[2] = None break return template, content_type PKR9ýp_ _ permredirect/filter.pyc;ò ;´Hc@sSdkZdkZdkTdklZlZdklZdefd„ƒYZ dS(N(s*(sIRequestFilters RequestDone(sPermissionErrorsPermRedirectModulecBs3tZdZeeƒd„Zd„Zd„ZRS(s6Redirect users to the login screen on PermissionError.cs"ti‰‡d†}|t_dS(NcstˆƒƒSdS(N(slists old_exc_info((s old_exc_info(s9build/bdist.darwin-8.11.1-i386/egg/permredirect/filter.pys new_exc_infos(ssyssexc_infos old_exc_infos new_exc_info(sselfs new_exc_infos old_exc_info((s old_exc_infos9build/bdist.darwin-8.11.1-i386/egg/permredirect/filter.pys__init__s  cCs|SdS(N(shandler(sselfsreqshandler((s9build/bdist.darwin-8.11.1-i386/egg/permredirect/filter.pyspre_process_requestsc CsS|tjo8tiƒdd!\}} | tjp |tjo||fSn|idjo-t |t ƒpt |t ƒo | i djo³y|i |iiƒƒWntj onXx€tiƒdD]j}|di}|di}d|jo |idjo-|d}t|d