Changeset 2063
- Timestamp:
- 06/25/09 11:19:39 (9 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/0.9/pylucid_project/middlewares/PageMessages.py
r2007 r2063 84 84 # There exist old messages from previous requests -> add a seperator after them. 85 85 self.info(mark_safe("<hr />")) 86 86 87 87 def get_and_delete_messages(self): 88 88 """ delete messages from session and return them """ … … 91 91 # Append messages from django 92 92 self.info(msg) 93 93 94 94 msg = self.request.session[SESSION_KEY] 95 95 # remove "old" page_msg from session 96 96 del(self.request.session[SESSION_KEY]) 97 97 return msg 98 98 99 99 #_________________________________________________________________________ 100 100 … … 121 121 122 122 #_________________________________________________________________________ 123 124 def showwarning(self, message, category, filename, lineno ):123 124 def showwarning(self, message, category, filename, lineno, file=None, line=None): 125 125 """ for redirecting warnings """ 126 msg = "%s: %s" % (category.__name__, message)127 128 126 old_debug_mode = self.debug_mode 129 127 self.debug_mode = False # no fileinfo would be added 130 self.warning( msg)128 self.warning(str(message)) 131 129 self.debug_mode = old_debug_mode 132 130 133 131 # Add fileinfo 134 132 block_data = self.request.session[SESSION_KEY][-1] 135 133 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 138 142 #_________________________________________________________________________ 139 143 140 def append_message(self, msg_type, *msg): 144 def append_message(self, msg_type, *msg): 141 145 """ 142 146 Add a message with type info. … … 158 162 lines.append(item) 159 163 else: 160 lines[pos -1] += " " + item161 164 lines[pos - 1] += " " + item 165 162 166 block_data = { 163 167 "msg_type": msg_type, 164 168 "lines": lines, 165 169 } 166 170 167 171 if self.debug_mode == True: 168 172 block_data["fileinfo"] = self._get_fileinfo() … … 171 175 # exemption: call page_msg directly after logout (session deleted) 172 176 self.request.session[SESSION_KEY] = [] 173 177 174 178 self.request.session[SESSION_KEY].append(block_data) 175 179 self.request.session.modified = True # FIXME: Don't really know why this is needed … … 192 196 break 193 197 194 if len(filename) >=MAX_FILEPATH_LEN:198 if len(filename) >= MAX_FILEPATH_LEN: 195 199 filename = "...%s" % filename[-MAX_FILEPATH_LEN:] 196 200 fileinfo = "%s line %s" % (filename, lineno) … … 205 209 if isinstance(txt, SafeData): 206 210 # pass string witch marked with django.utils.safestring.mark_safe 207 return txt 211 return txt 208 212 elif isinstance(txt, unicode): 209 213 # encode unicode strings … … 215 219 # return the printable representation of an object 216 220 return repr(txt) 217 221 218 222 219 223 #________________________________________________________________ 220 224 221 225 def add_test_lines(self): 222 226 """ Add many test lines """ … … 249 253 def __init__(self): 250 254 self.old_showwarning = warnings.showwarning 251 255 252 256 def process_request(self, request): 253 257 """ add page_msg object to request object """ 254 258 request.page_msg = PageMessages(request) 255 259 256 260 # redirect warnings into page_msg 257 261 warnings.showwarning = request.page_msg.showwarning 258 262 259 263 #request.page_msg.add_test_lines() 260 264 261 265 def process_response(self, request, response): 262 266 """ … … 264 268 """ 265 269 warnings.showwarning = self.old_showwarning 266 270 267 271 if SESSION_KEY not in request.session: 268 272 # There exist no page_msg -> do nothing 269 273 return response 270 274 271 275 if not "html" in response._headers["content-type"][1]: 272 276 # No HTML Page -> do nothing … … 293 297 new_content = content.replace(TAG, message_string) 294 298 response.content = new_content 295 299 296 300 return response