import os
from App import Common
import DocumentTemplate, MethodObject
import Globals

class CSSFile(DocumentTemplate.HTMLFile,MethodObject.Method,):
    "Persistent CSS Document Templates read from files"

#    class func_code: pass
#    func_code=func_code()
#    func_code.co_varnames='trueself', 'self', 'REQUEST'
#    func_code.co_argcount=3
    _need__name__=1
    _v_last_read=0

    def __init__(self,name,_prefix=None, **kw):
        if _prefix is None: _prefix=SOFTWARE_HOME
        elif type(_prefix) is not type(''):
            _prefix=Common.package_home(_prefix)
        args=(self, os.path.join(_prefix, name))
        if not kw.has_key('__name__'):
            kw['__name__']=os.path.split(name)[-1]
        apply(CSSFile.inheritedAttribute('__init__'),args,kw)

    def _cook_check(self):
        if Globals.DevelopmentMode:
            __traceback_info__=self.raw
            try:    mtime=os.stat(self.raw)[8]
            except: mtime=0
            if mtime != self._v_last_read:
                self.cook()
                self._v_last_read=mtime
        elif not hasattr(self,'_v_cooked'):
            try: changed=self.__changed__()
            except: changed=1
            self.cook()
            if not changed: self.__changed__(0)

    def __call__(self, *args, **kw):
        self._cook_check()
        if kw.has_key('RESPONSE'):
            kw['RESPONSE'].setHeader('Content-Type', 'text/css')
        return apply(CSSFile.inheritedAttribute('__call__'),
                     (self,)+args[1:],kw)

