Show
Ignore:
Timestamp:
05/23/08 16:33:49 (22 months ago)
Author:
JensDiemer
Message:

new page_msg system. Use a middleware to make page_msg lazy: ticket:193

  • update settings_example.py (insert new middleware)
  • change """contextpage_msg?""" to """request.page_msg"""
  • add a simple page_msg unittest (Need more tests!)
  • update _install data (Templates and index page)
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/pylucid/PyLucid/system/page_msg.py

    r1544 r1585  
    3333import os, sys, pprint, inspect 
    3434 
    35 from django.utils.safestring import mark_safe 
     35from django.utils.safestring import mark_safe, SafeData 
     36from django.utils.encoding import force_unicode 
     37 
    3638from django.conf import settings 
    37  
    3839 
    3940from PyLucid.tools.utils import escape 
     
    4647    """ 
    4748    def __init__(self, context): 
     49        request = context["request"] 
     50 
    4851        try: 
    49             self.messages = context["messages"] 
    50         except KeyError: 
    51             # No django messages inserted by RequestContext 
    52             # In the _install section we use no RequestContext ;) 
     52            self.messages = request.user.get_and_delete_messages() 
     53        except AttributeError: 
     54            # In the _install section we have no user 
    5355            self.messages = [] 
    5456 
    55         request = context["request"] 
    5657        self.debug_mode = getattr(request, "debug", False) 
    5758 
     
    8586            color, self.prepare(*msg) 
    8687        ) 
    87  
    8888        #~ self.request.user.message_set.create(message=msg) 
    8989        msg = mark_safe(msg) # turn djngo auto-escaping off 
     
    9393        """ 
    9494        Append the fileinfo: Where from the announcement comes? 
    95         Only, if debug_mode is on. 
    9695        """ 
    97         if self.debug_mode != True: 
    98             return "" 
    99  
    10096        try: 
    10197            self_basename = os.path.basename(__file__) 
     
    126122        -for dict, list use pprint ;) 
    127123        """ 
    128         result = [self._get_fileinfo()] 
     124        if self.debug_mode == True: 
     125            result = [self._get_fileinfo()] 
     126        else: 
     127            result = [] 
    129128 
    130129        for item in msg: 
     
    141140 
    142141        result = "".join(result) 
    143         return escape(result) 
     142        return result 
    144143 
    145144    def encode_and_prepare(self, txt): 
    146145        """ 
    147         returns the given txt as a string object. 
     146        Pass "safe" strings, all other would be escaped. 
    148147        """ 
    149         if isinstance(txt, unicode): 
    150             return txt.encode(self._charset) 
     148        if isinstance(txt, SafeData): 
     149            return txt 
    151150 
    152         # FIXME: Is that needed??? 
    153         try: 
    154             return str(txt) 
    155         except: 
    156             return repr(txt) 
     151        if not isinstance(txt, unicode): 
     152            txt = force_unicode(txt) 
     153 
     154        return escape(txt) 
     155 
     156 
     157    #________________________________________________________________ 
     158 
     159    def __repr__(self): 
     160        return "page messages: %s" % repr(self.messages) 
     161 
     162    def __str__(self): 
     163        return "pages messages: %s" % ", ".join(self.messages) 
     164 
     165    def __unicode__(self): 
     166        return u"page messages: %s" % u", ".join(self.messages) 
    157167 
    158168    #________________________________________________________________