/[opental]/opental/OpenPT/OpenPTBase.py
ViewVC logotype

Diff of /opental/OpenPT/OpenPTBase.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by lalo, Wed Jan 29 22:40:24 2003 UTC revision 1.5 by lalo, Thu Jan 30 16:32:28 2003 UTC
# Line 50  import Globals Line 50  import Globals
50  from encodings.aliases import aliases as encoding_aliases  from encodings.aliases import aliases as encoding_aliases
51  from DocumentTemplate.DT_Util import TemplateDict, InstanceDict  from DocumentTemplate.DT_Util import TemplateDict, InstanceDict
52  from AccessControl.DTML import RestrictedDTML  from AccessControl.DTML import RestrictedDTML
53    my_home = package_home(globals())
54    
55  class Rtd(RestrictedDTML, TemplateDict):  class Rtd(RestrictedDTML, TemplateDict):
56      this = None      this = None
57    
# Line 158  class EncodingNegotiator(Acquisition.Exp Line 160  class EncodingNegotiator(Acquisition.Exp
160              self.preferred = ('utf_8', 'utf_16')              self.preferred = ('utf_8', 'utf_16')
161          else:          else:
162              self.preferred = self.purify(preferred)              self.preferred = self.purify(preferred)
         self.log('Initializing with %s' % self.preferred)  
163          self.acceptable = sets.Set(self.preferred)          self.acceptable = sets.Set(self.preferred)
164          self.clients = []          self.clients = []
165    
# Line 178  class EncodingNegotiator(Acquisition.Exp Line 179  class EncodingNegotiator(Acquisition.Exp
179          if client_id not in self.clients:          if client_id not in self.clients:
180              self.clients.append(client_id)              self.clients.append(client_id)
181              encodings = self.purify(encodings)              encodings = self.purify(encodings)
             self.log('restricting with %s due to %s' % (encodings, client))  
182              self.acceptable.intersection_update(sets.Set(encodings))              self.acceptable.intersection_update(sets.Set(encodings))
             self.log('now: %s' % self.acceptable)  
         else:  
             self.log('client %s already cached' % client)  
183    
184      security.declarePublic('force')      security.declarePublic('force')
185      def force(self, encoding):      def force(self, encoding):
186          "force one encoding.  If it's called multiple times, bad luck, last one wins."          "force one encoding.  If it's called multiple times, bad luck, last one wins."
         self.log('forcing %s' % encoding)  
187          self.forced = encoding          self.forced = encoding
188    
189      def encode(self, text):      def encode(self, text):
# Line 316  class OpenPageTemplate(Script, Historica Line 312  class OpenPageTemplate(Script, Historica
312              return OpenPageTemplate.inheritedAttribute('_getContext')(self)              return OpenPageTemplate.inheritedAttribute('_getContext')(self)
313          return self          return self
314    
315        def _prop_config(self, dict):
316            "update properties from dict"
317            self.__dict__.update(dict)
318    
319      security = AccessControl.ClassSecurityInfo()      security = AccessControl.ClassSecurityInfo()
320    
321      security.declareObjectProtected('View')      security.declareObjectProtected('View')
# Line 327  class OpenPageTemplate(Script, Historica Line 327  class OpenPageTemplate(Script, Historica
327              self._v_paxtree = pickle.loads(self._paxtree)              self._v_paxtree = pickle.loads(self._paxtree)
328          return self._v_paxtree          return self._v_paxtree
329    
330        security.declareProtected('View management screens', 'uread')
331        def uread(self, *args, **kw):
332            return unicode(self.read(), self.encoding)
333    
334        security.declareProtected('View management screens', 'read')
335      def read(self, *args, **kw):      def read(self, *args, **kw):
336          if not self._errors:          if not self._errors:
337              return self._text              return self._text
# Line 335  class OpenPageTemplate(Script, Historica Line 340  class OpenPageTemplate(Script, Historica
340                                        join(self._errors, '\n '),                                        join(self._errors, '\n '),
341                                        self._text))                                        self._text))
342    
343      def write(self, text):      def write(self, text, do_config=True):
344          self.ZCacheable_invalidate()          self.ZCacheable_invalidate()
345          assert type(text) in (type(''), type(u''))          assert type(text) in (type(''), type(u''))
346    
347            if do_config and text.startswith('<!--pt_encoding'):
348                comment, text = text.split('-->\n', 1)
349                self.encoding = comment[16:].strip()
350    
351          if text.startswith(self._error_start):          if text.startswith(self._error_start):
352              errend = text.find('-->')              errend = text.find('-->')
353              if errend >= 0:              if errend >= 0:
354                  text = text[errend + 4:]                  text = text[errend + 4:]
355    
356          if self._text != text:          if self._text != text:
357              self._text = text              self._text = text
358    
# Line 367  class OpenPageTemplate(Script, Historica Line 378  class OpenPageTemplate(Script, Historica
378              for handler in postcompiler_registry:              for handler in postcompiler_registry:
379                  tree = handler(self, tree, context)                  tree = handler(self, tree, context)
380              self._paxtree = pickle.dumps(tree)              self._paxtree = pickle.dumps(tree)
381                # check for tal:config in the context
382                if do_config and hasattr(context, 'tal_configuration'):
383                    self._prop_config(context.tal_configuration)
384                    # sigh, encoding or source type may have changed
385                    if (context.tal_configuration.has_key('encoding') or
386                        context.tal_configuration.has_key('source_type')):
387                        self.write(text, do_config=False)
388              if hasattr(self, '_v_paxtree'):              if hasattr(self, '_v_paxtree'):
389                  # remove cached (unpickled) tree                  # remove cached (unpickled) tree
390                  del self._v_paxtree                  del self._v_paxtree

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26