Skip to content

Commit c7d8bb9

Browse files
author
Richard Jones
committed
nicer template absence error
1 parent b2fdd86 commit c7d8bb9

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

roundup/cgi/client.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: client.py,v 1.19 2002-09-06 07:21:31 richard Exp $
1+
# $Id: client.py,v 1.20 2002-09-06 22:54:51 richard Exp $
22

33
__doc__ = """
44
WWW request handler (also used in the stand-alone server).
@@ -10,7 +10,7 @@
1010
from roundup import roundupdb, date, hyperdb, password
1111
from roundup.i18n import _
1212

13-
from roundup.cgi.templating import getTemplate, HTMLRequest
13+
from roundup.cgi.templating import getTemplate, HTMLRequest, NoTemplate
1414
from roundup.cgi import cgitb
1515

1616
from PageTemplates import PageTemplate
@@ -324,6 +324,8 @@ def renderTemplate(self, name, extension, **kwargs):
324324
except PageTemplate.PTRuntimeError, message:
325325
return '<strong>%s</strong><ol>%s</ol>'%(message,
326326
'<li>'.join(pt._v_errors))
327+
except NoTemplate, message:
328+
return '<strong>%s</strong>'%message
327329
except:
328330
# everything else
329331
return cgitb.pt_html()

roundup/cgi/templating.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@
6060

6161
templates = {}
6262

63+
class NoTemplate(Exception):
64+
pass
65+
6366
def getTemplate(dir, name, extension, classname=None, request=None):
6467
''' Interface to get a template, possibly loading a compiled template.
6568
@@ -83,12 +86,24 @@ def getTemplate(dir, name, extension, classname=None, request=None):
8386
try:
8487
stime = os.stat(src)[os.path.stat.ST_MTIME]
8588
except os.error, error:
86-
if error.errno != errno.ENOENT or not extension:
89+
if error.errno != errno.ENOENT:
8790
raise
91+
if not extension:
92+
raise NoTemplate, 'Template file "%s" doesn\'t exist'%name
93+
8894
# try for a generic template
89-
filename = '_generic.%s'%extension
90-
src = os.path.join(dir, filename)
91-
stime = os.stat(src)[os.path.stat.ST_MTIME]
95+
generic = '_generic.%s'%extension
96+
src = os.path.join(dir, generic)
97+
try:
98+
stime = os.stat(src)[os.path.stat.ST_MTIME]
99+
except os.error, error:
100+
if error.errno != errno.ENOENT:
101+
raise
102+
# nicer error
103+
raise NoTemplate, 'No template file exists for templating '\
104+
'"%s" with template "%s" (neither "%s" nor "%s")'%(name,
105+
extension, filename, generic)
106+
filename = generic
92107

93108
key = (dir, filename)
94109
if templates.has_key(key) and stime < templates[key].mtime:

0 commit comments

Comments
 (0)