Changeset 2063

Show
Ignore:
Timestamp:
06/25/09 11:19:39 (9 months ago)
Author:
JensDiemer
Message:

better handling of warnings + codecleanup

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/0.9/pylucid_project/middlewares/PageMessages.py

    r2007 r2063  
    8484            # There exist old messages from previous requests -> add a seperator after them.  
    8585            self.info(mark_safe("<hr />")) 
    86      
     86 
    8787    def get_and_delete_messages(self): 
    8888        """ delete messages from session and return them """ 
     
    9191            # Append messages from django 
    9292            self.info(msg) 
    93              
     93 
    9494        msg = self.request.session[SESSION_KEY] 
    9595        # remove "old" page_msg from session 
    9696        del(self.request.session[SESSION_KEY]) 
    9797        return msg 
    98          
     98 
    9999    #_________________________________________________________________________ 
    100100 
     
    121121 
    122122    #_________________________________________________________________________ 
    123      
    124     def showwarning(self, message, category, filename, lineno): 
     123 
     124    def showwarning(self, message, category, filename, lineno, file=None, line=None): 
    125125        """ for redirecting warnings """ 
    126         msg = "%s: %s" % (category.__name__, message) 
    127          
    128126        old_debug_mode = self.debug_mode 
    129127        self.debug_mode = False # no fileinfo would be added 
    130         self.warning(msg) 
     128        self.warning(str(message)) 
    131129        self.debug_mode = old_debug_mode 
    132          
     130 
    133131        # Add fileinfo 
    134132        block_data = self.request.session[SESSION_KEY][-1] 
    135133        filename = u"..." + filename[-30:] 
    136         block_data["fileinfo"] = "(%s - line %s)" % (filename, lineno) 
    137      
     134        block_data["fileinfo"] = "(%s from %s - line %s)" % (category.__name__, filename, lineno) 
     135 
     136        if file is not None: 
     137            try: 
     138                file.write(warnings.formatwarning(message, category, filename, lineno, line)) 
     139            except IOError: 
     140                pass 
     141 
    138142    #_________________________________________________________________________ 
    139143 
    140     def append_message(self, msg_type, *msg):        
     144    def append_message(self, msg_type, *msg): 
    141145        """ 
    142146        Add a message with type info. 
     
    158162                    lines.append(item) 
    159163                else: 
    160                     lines[pos-1] += " " + item 
    161          
     164                    lines[pos - 1] += " " + item 
     165 
    162166        block_data = { 
    163167            "msg_type": msg_type, 
    164168            "lines": lines, 
    165169        } 
    166          
     170 
    167171        if self.debug_mode == True: 
    168172            block_data["fileinfo"] = self._get_fileinfo() 
     
    171175            # exemption: call page_msg directly after logout (session deleted) 
    172176            self.request.session[SESSION_KEY] = [] 
    173              
     177 
    174178        self.request.session[SESSION_KEY].append(block_data) 
    175179        self.request.session.modified = True # FIXME: Don't really know why this is needed 
     
    192196                    break 
    193197 
    194             if len(filename)>=MAX_FILEPATH_LEN: 
     198            if len(filename) >= MAX_FILEPATH_LEN: 
    195199                filename = "...%s" % filename[-MAX_FILEPATH_LEN:] 
    196200            fileinfo = "%s line %s" % (filename, lineno) 
     
    205209        if isinstance(txt, SafeData): 
    206210            # pass string witch marked with django.utils.safestring.mark_safe 
    207             return txt             
     211            return txt 
    208212        elif isinstance(txt, unicode): 
    209213            # encode unicode strings 
     
    215219            # return the printable representation of an object 
    216220            return repr(txt) 
    217          
     221 
    218222 
    219223    #________________________________________________________________ 
    220      
     224 
    221225    def add_test_lines(self): 
    222226        """ Add many test lines """ 
     
    249253    def __init__(self): 
    250254        self.old_showwarning = warnings.showwarning 
    251      
     255 
    252256    def process_request(self, request): 
    253257        """ add page_msg object to request object """ 
    254258        request.page_msg = PageMessages(request) 
    255          
     259 
    256260        # redirect warnings into page_msg 
    257261        warnings.showwarning = request.page_msg.showwarning 
    258          
     262 
    259263        #request.page_msg.add_test_lines() 
    260          
     264 
    261265    def process_response(self, request, response): 
    262266        """ 
     
    264268        """ 
    265269        warnings.showwarning = self.old_showwarning 
    266          
     270 
    267271        if SESSION_KEY not in request.session: 
    268272            # There exist no page_msg -> do nothing 
    269273            return response 
    270          
     274 
    271275        if not "html" in response._headers["content-type"][1]: 
    272276            # No HTML Page -> do nothing 
     
    293297        new_content = content.replace(TAG, message_string) 
    294298        response.content = new_content 
    295          
     299 
    296300        return response