@@ -72,15 +72,17 @@ self.vars = Storage() self.folder = None self.application = None self.function = None self.args = List() - self.extension = None + self.extension = 'html' self.now = datetime.datetime.now() + self.utcnow = datetime.datetime.utcnow() self.is_restful = False self.is_https = False self.is_local = False + self.global_settings = settings.global_settings def compute_uuid(self): self.uuid = '%s/%s.%s.%s' % ( self.application, self.client.replace(':', '_'), @@ -100,10 +102,12 @@ def f(_action=action,_self=self,*a,**b): self.is_restful = True method = _self.env.request_method if len(_self.args) and '.' in _self.args[-1]: _self.args[-1],_self.extension = _self.args[-1].rsplit('.',1) + current.response.headers['Content-Type'] = \ + contenttype(_self.extension.lower()) if not method in ['GET','POST','DELETE','PUT']: raise HTTP(400,"invalid method") rest_action = _action().get(method,None) if not rest_action: raise HTTP(400,"method not supported") @@ -180,10 +184,27 @@ else: run_view_in(self._view_environment) page = self.body.getvalue() return page + def include_meta(self): + s = '' + for key,value in (self.meta or {}).items(): + s += '' % (key,xmlescape(value)) + self.write(s,escape=False) + + def include_files(self): + s = '' + for k,f in enumerate(self.files or []): + if not f in self.files[:k]: + filename = f.lower().split('?')[0] + if filename.endswith('.css'): + s += '' % f + elif filename.endswith('.js'): + s += '' % f + self.write(s,escape=False) + def stream( self, stream, chunk_size = DEFAULT_CHUNK_SIZE, request=None,