6060
6161templates = {}
6262
63+ class NoTemplate (Exception ):
64+ pass
65+
6366def 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