hgweb: break templater -> templater circular reference

The problem were some functions passed in the "defaults" argument
during the templater creation which use "self.t" directly.  This
creates the cycle:

 hgweb object
  -> templater object
      -> defaults dict
          -> footer function
              -> hgweb object

Instead of completely avoding the cycle, we break it after using
the templater.
This commit is contained in:
Alexis S. L. Carvalho 2007-03-19 19:07:35 -03:00
parent a6c18d39af
commit 8bb9d231ee

View File

@ -806,19 +806,22 @@ class hgweb(object):
"sessionvars": sessionvars
})
if not req.form.has_key('cmd'):
req.form['cmd'] = [self.t.cache['default']]
try:
if not req.form.has_key('cmd'):
req.form['cmd'] = [self.t.cache['default']]
cmd = req.form['cmd'][0]
cmd = req.form['cmd'][0]
method = getattr(self, 'do_' + cmd, None)
if method:
try:
method(req)
except (hg.RepoError, revlog.RevlogError), inst:
req.write(self.t("error", error=str(inst)))
else:
req.write(self.t("error", error='No such method: ' + cmd))
method = getattr(self, 'do_' + cmd, None)
if method:
try:
method(req)
except (hg.RepoError, revlog.RevlogError), inst:
req.write(self.t("error", error=str(inst)))
else:
req.write(self.t("error", error='No such method: ' + cmd))
finally:
self.t = None
def changectx(self, req):
if req.form.has_key('node'):