Fine, here you go (sorry, don't know how to attach files on google groups):
------------------------- (dp1 S'output' p2 S'' sS'layer' p3 S'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/views\ \default/index.html' p4 sS'code' p5 S'response.write(\'<!doctype html>\\n<html xmlns="http://www.w3.org/ 1999/xhtml" xml:lang="en" lang="en">\\n <head>\\n <meta http- equiv="content-type" content="text/html; charset=utf-8" />\\n\\t<meta http-equiv="P3P" content="CP=\\\\"IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA\\\\"" />\\n <title>\', escape=False) \nresponse.write(response.title or URL())\nresponse.write(\'</title>\ \n \', escape=False)\nresponse.files.append(URL(\'static\', \'css/styles.css\'))\nresponse.write(\'\\n \', escape=False) \nresponse.files.insert(0,URL(\'static\',\'js/jquery.js\')) \nresponse.files.insert(1,URL(\'static\',\'css/calendar.css\')) \nresponse.files.insert(2,URL(\'static\',\'js/calendar.js\'))\nfor _item in response.meta or []:\n response.write(\'\\n <meta name="\', escape=False)\n response.write(_item)\n response.write(\'" content="\', escape=False)\n response.write(response.meta[_item])\n response.write(\'" />\', escape=False)\n pass\nfor _k,_file in enumerate(response.files or []):\n if _file in response.files[:_k]:\n continue\n _file0=_file.lower().split(\'?\')[0]\n if _file0.endswith(\'.css\'): \n response.write(\'\\n <link href="\', escape=False) \n response.write(_file)\n response.write(\'" rel="stylesheet" type="text/css" />\', escape=False)\n elif _file0.endswith(\'.js\'):\n response.write(\'\\n <script src="\', escape=False)\n response.write(_file)\n response.write(\'" type="text/javascript"></script>\', escape=False) \n pass\n pass\nresponse.write(\'\\n \\n<script type="text/ javascript"><!--\\nfunction popup(url) {\\n newwindow=window.open(url, \\\'name\\\',\\\'height=400,width=600\\\');\\n if (window.focus) newwindow.focus();\\n return false;\\n}\\nfunction collapse(id) { jQuery(\\\'#\\\'+id).slideToggle(); }\\nfunction fade(id,value) { if(value>0) jQuery(\\\'#\\\'+id).hide().fadeIn(\\\'slow\\\'); else jQuery(\\\'#\\\'+id).show().fadeOut(\\\'slow\\\'); }\\nfunction ajax(u,s,t) {\\n query = \\\'\\\';\\n if (typeof s == "string") {\\n d = jQuery(s).serialize();\\n if(d){ query = d; }\ \n } else {\\n pcs = [];\\n for(i=0; i<s.length; i++) {\\n q = jQuery("[name="+s[i]+"]").serialize();\ \n if(q){pcs.push(q);}\\n }\\n if (pcs.length>0){query = pcs.join("&");}\\n }\\n jQuery.ajax({type: "POST", url: u, data: query, success: function(msg) { if(t) { if(t==\\\':eval\\\') eval(msg); else jQuery("#" + t).html(msg); } } }); \\n}\\n\\nString.prototype.reverse = function () { return this.split(\\\'\\\').reverse().join(\\\'\\\');};\\nfunction web2py_ajax_init() {\\n jQuery(\\\'.hidden\\\').hide();\\n jQuery(\\ \'.error\\\').hide().slideDown(\\\'slow\\\');\\n jQuery(\\\'.flash\\ \').click(function() { jQuery(this).fadeOut(\\\'slow\\\'); return false; });\\n // jQuery(\\\'input[type=submit]\\\').click(function() {var t=jQuery(this);t.hide();t.after(\\\'<input class="submit_disabled" disabled="disabled" type="submit" name="\\ \'+t.attr("name")+\\\'_dummy" value="\\\'+t.val()+\\\'">\\\')});\\n jQuery(\\\'input.integer\\\').keyup(function() {this.value=this.value.reverse().replace(/[^0-9\\\\-]|\\\\-(?=.)/g,\\ \'\\\').reverse();});\\n jQuery(\\\'input.double,input.decimal\\ \').keyup(function(){this.value=this.value.reverse().replace(/[^0-9\\\ \-\\\\.]|[\\\\-](?=.)|[\\\\.](?=[0-9]*[\\\\.])/g,\\\'\\ \').reverse();});\\n jQuery("input[type=\\\'checkbox\\ \'].delete").each(function(){jQuery(this).click(function() { if(this.checked) if(!confirm("\', escape=False) \nresponse.write(T(\'Sure you want to delete this object?\')) \nresponse.write(\'")) this.checked=false; });});\\n try {jQuery("input.date").focus( function() {Calendar.setup({\\n inputField:this.id, ifFormat:"\', escape=False)\nresponse.write(T(\'%Y- %m-%d\'))\nresponse.write(\'", showsTime:false\\n }); }); } catch(e) {};\\n try { jQuery("input.datetime").focus( function() {Calendar.setup({\\n inputField:this.id, ifFormat:"\', escape=False)\nresponse.write(T(\'%Y-%m-%d %H:%M:%S\')) \nresponse.write(\'", showsTime: true,timeFormat: "24"\\n }); }); } catch(e) {};\\n try { jQuery("input.time").timeEntry(); } catch(e) {}; \\n};\\n\\njQuery(document).ready(function() { \\n var flash = jQuery(\\\'.flash\\\');\\n flash.hide();\\n if(flash.html()) flash.slideDown();\\n web2py_ajax_init();\\n});\\nfunction web2py_trap_form(action,target) {\\n jQuery(\\\'#\\\'+target+\\\' form\\\').each(function(i){\\n var form=jQuery(this);\\n if(! form.hasClass(\\\'no_trap\\\'))\\n form.submit(function(obj){\ \n jQuery(\\\'.flash\\\').hide().html(\\\'\\\');\\n web2py_ajax_page(\\\'post\\\',action,form.serialize(),target);\ \n return false;\\n });\\n });\\n}\\nfunction web2py_ajax_page(method,action,data,target) {\\n jQuery.ajax({\\\'type \\\':method,\\\'url\\\':action,\\\'data\\\':data,\\n \\\'beforeSend\ \\':function(xhr) {\\n xhr.setRequestHeader(\\\'web2py-component- location\\\',document.location);\\n xhr.setRequestHeader(\\ \'web2py-component-element\\\',target);},\\n \\\'complete\\ \':function(xhr,text){\\n var html=xhr.responseText;\\n var content=xhr.getResponseHeader(\\\'web2py-component-content\\\'); \ \n var command=xhr.getResponseHeader(\\\'web2py-component-command\ \\');\\n var flash=xhr.getResponseHeader(\\\'web2py-component- flash\\\');\\n var t = jQuery(\\\'#\\\'+target);\\n if(content==\\\'prepend\\\') t.prepend(html); \\n else if(content==\\\'append\\\') t.append(html);\\n else if(content!=\\ \'hide\\\') t.html(html); \\n web2py_trap_form(action,target);\ \n web2py_ajax_init(); \\n if(command) eval(command);\ \n if(flash) jQuery(\\\'.flash\\\').html(flash).slideDown();\ \n }\\n });\\n}\\nfunction web2py_component(action,target) {\ \n jQuery(document).ready(function(){ web2py_ajax_page(\\\'get\\ \',action,null,target); });\\n}\\n//--></script>\\n\', escape=False) \nresponse.write(\'\\n <script>jQuery.noConflict();</script>\ \n </head>\\n <body class="\', escape=False) \nresponse.write(T(\'direction: ltr\') == \'direction: rtl\' and \'RTLbody\' or \'\')\nresponse.write(\'login\', escape=False) \nresponse.write(\'">\\n <div id="header">\\n <h1 id="start">\\n <a href="\', escape=False) \nresponse.write(URL(\'default\', \'index\'))\nresponse.write(\'" class="button"><span>web2py™ \', escape=False) \nresponse.write(T(\'administrative interface\'))\nresponse.write(\'</ span></a>\\n </h1>\\n \', escape=False)\nif response.menu is not None:\n response.write(\'\\n <ul id="menu">\\n \', escape=False)\n for _name,_active,_link in response.menu:\n response.write(\'\ \n <li>\', escape=False)\n response.write(A(SPAN(_name), _href=_link, _class=_active and \'button select\' or \'button\'))\n response.write(\'</li>\ \n \', escape=False)\n pass\n response.write(\'\ \n </ul>\\n \', escape=False)\n pass \nresponse.write(\'\\n </div>\\n <div id="main">\ \n <div id="main_inner">\\n <div class="flash">\', escape=False)\nresponse.write(response.flash or \'\') \nresponse.write(\'</div>\\n \', escape=False) \nresponse.write(\'\\n<script type="text/javascript">\\n jQuery(function() {\\n jQuery("#password").focus();\\n });\\n</ script>\\n\\n\', escape=False)\nresponse.write(\'\\n\ \n<h2>web2py™ \', escape=False)\nresponse.write(T(\'Enterprise Web Framework\'))\nresponse.write(\'</h2>\\n<h3>\', escape=False) \nresponse.write(T(\'Login to the Administrative Interface\')) \nresponse.write(\'</h3>\\n<p class="help">\', escape=False) \nresponse.write(T(\'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.\'))\nresponse.write(\'</p>\\n<div class="form">\\n <form action="\', escape=False) \nresponse.write(URL(r=request))\nresponse.write(\'" method="post">\ \n <div><input type="hidden" name="send" value="\', escape=False) \nresponse.write(send)\nresponse.write(\'"/></div>\\n <table>\ \n <tr><td>\', escape=False)\nresponse.write(T(\'Administrator Password:\'))\nresponse.write(\'</td><td><input type="password" name="password" id="password"/></td></tr>\\n <tr><td></ td><td><input type="submit" name="login" value="\', escape=False) \nresponse.write(T(\'Login\'))\nresponse.write(\'"/></td></tr>\\n </ table>\\n </form>\\n</div>\\n\', escape=False)\nresponse.write(\'\ \n </div>\\n </div>\\n <div id="footer" class="fixed">\\n \', escape=False) \nresponse.write(T(\'Powered by\'))\nresponse.write(\' \', escape=False)\nresponse.write(A(\'web2py\', _href=\'http:// www.web2py.com\'))\nresponse.write(\'™ \', escape=False) \nresponse.write(T(\'created by\'))\nresponse.write(\' Massimo Di Pierro ©2007-2010 -\\n\\t \', escape=False)\nif hasattr(T, \'get_possible_languages\'):\n response.write(\'\\n\\t <span>\\n\ \t \', escape=False)\n response.write(T(\'Admin language\')) \n response.write(\'\\n\\t <select name="adminlanguage" onchange="var date = new Date();cookieDate=date.setTime(date.getTime() +(100*24*60*60*1000));document.cookie=\\\'adminLanguage=\\ \'+this.options[this.selectedIndex].value+\\\'; expires=\\\'+cookieDate +\\\'; path=/\\\';window.location.reload()">\\n\\t\\t\', escape=False) \n for language in T.get_possible_languages():\n response.write(\'\\n\\t\\t<option \', escape=False)\n response.write(T.accepted_language==language and \'selected\' or \'\') \n response.write(\' >\', escape=False)\n response.write(language)\n response.write(\'</option>\\n\\t\\t \', escape=False)\n pass\n response.write(\'\\n\\t </ select>\\n\\t </span>\\n\\t \', escape=False)\n pass \nresponse.write(\'\\n </div>\\n </body>\\n</html>\\n\', escape=False)' p6 sS'snapshot' p7 (dp8 S'exception' p9 (dp10 S'__getslice__' p11 S"<method-wrapper '__getslice__' of exceptions.IOError object>" p12 sS'__str__' p13 S"<method-wrapper '__str__' of exceptions.IOError object>" p14 sS'__reduce__' p15 S'<built-in method __reduce__ of exceptions.IOError object>' p16 sS'__dict__' p17 S'{}' p18 sS'__sizeof__' p19 S'<built-in method __sizeof__ of exceptions.IOError object>' p20 sS'__init__' p21 S"<method-wrapper '__init__' of exceptions.IOError object>" p22 sS'__setattr__' p23 S"<method-wrapper '__setattr__' of exceptions.IOError object>" p24 sS'__reduce_ex__' p25 S'<built-in method __reduce_ex__ of exceptions.IOError object>' p26 sS'__new__' p27 S'<built-in method __new__ of type object>' p28 sS'errno' p29 S'13' p30 sS'__format__' p31 S'<built-in method __format__ of exceptions.IOError object>' p32 sS'__class__' p33 S"<type 'exceptions.IOError'>" p34 sS'filename' p35 S'None' p36 sS'__doc__' p37 S"'I/O operation failed.'" p38 sS'__getitem__' p39 S"<method-wrapper '__getitem__' of exceptions.IOError object>" p40 sS'__setstate__' p41 S'<built-in method __setstate__ of exceptions.IOError object>' p42 sS'__getattribute__' p43 S"<method-wrapper '__getattribute__' of exceptions.IOError object>" p44 sS'args' p45 S"(13, 'Permission denied')" p46 sS'__subclasshook__' p47 S'<built-in method __subclasshook__ of type object>' p48 sS'__unicode__' p49 S'<built-in method __unicode__ of exceptions.IOError object>' p50 sS'strerror' p51 S"'Permission denied'" p52 sS'__delattr__' p53 S"<method-wrapper '__delattr__' of exceptions.IOError object>" p54 sS'__repr__' p55 S"<method-wrapper '__repr__' of exceptions.IOError object>" p56 sS'__hash__' p57 S"<method-wrapper '__hash__' of exceptions.IOError object>" p58 ssS'evalue' p59 S'[Errno 13] Permission denied' p60 sS'request' p61 (dp62 S'function' p63 S"'index'" p64 sS'body' p65 S'<cStringIO.StringO object>' p66 sS'wsgi' p67 S"<Storage {'start_response': <function <lambda> a...ING': 'gzip,deflate', 'HTTP_KEEP_ALIVE': '115'}}>" p68 sS'extension' p69 S"'html'" p70 sS'vars' p71 S"<Storage {'send': '/admin/default/ticket/welcome.... 08-52-29.cae6ad05-fb3e-4d42-b6f5-998d4d17d0a5'}>" p72 sS'cid' p73 S'None' p74 sS'url' p75 S'<gluon.html.XML object>' p76 sg45 S'[]' p77 sS'controller' p78 S"'default'" p79 sS'cookies' p80 S"<SimpleCookie: session_id_admin='127.0.0.1-217fe856-8b33-4d7e-9030-5e342ceeb8a1'>" p81 sS'application' p82 S"'admin'" p83 sS'ajax' p84 S'False' p85 sS'client' p86 S"'127.0.0.1'" p87 sS'env' p88 S"<Storage {'http_user_agent': 'Mozilla/5.0 (Windo...4d42- b6f5-998d4d17d0a5', 'wsgi_run_once': False}>" p89 sS'raw_args' p90 S'None' p91 sS'get_vars' p92 S"<Storage {'send': '/admin/default/ticket/welcome.... 08-52-29.cae6ad05-fb3e-4d42-b6f5-998d4d17d0a5'}>" p93 sS'folder' p94 S"r'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/'" p95 sS'now' p96 S'datetime.datetime(2010, 11, 26, 8, 52, 37, 840000)' p97 sS'post_vars' p98 S'<Storage {}>' p99 ssS'frames' p100 (lp101 (dp102 S'file' p103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\restricted.py' p104 sS'dump' p105 (dp106 S'environment' p107 S"{'A': <class 'gluon.html.A'>, 'ALLOW_TOGGLE': 'true', 'B': <class 'gluon.html.B'>, 'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>, 'BODY': <class 'gluon.html.BODY'>, 'BR': <class 'gluon.html.BR'>, 'CENTER': <class 'gluon.html.CENTER'>, 'CHECK_VERSION': True, 'CLEANUP': <class 'gluon.validators.CLEANUP'>, 'CODE': <class 'gluon.html.CODE'>, ...}" p108 sS'ccode' p109 S'<code object <module> at 0295B2F0, file "C:\\User...ications\\admin/ views\\default/index.html", line 1>' p110 ssS'lnum' p111 I188 sS'lines' p112 (dp113 I192 S' # XXX Show exception in Wing IDE if running in debugger' p114 sI183 S' if type(code) == types.CodeType:' p115 sI184 S' ccode = code' p116 sI185 S' else:' p117 sI186 S' ccode = compile2(code,layer)' p118 sI187 S'' sI188 S' exec ccode in environment' p119 sI189 S' except HTTP:' p120 sI190 S' raise' p121 sI191 S' except Exception:' p122 ssS'call' p123 S'(code=\'response.write(\\\'<!doctype html>\\\\n<html xmlns="ht... </div>\\\\n </body>\\\\n</html>\\\\n\\\', escape=False)\', environment={\'A\': <class \'gluon.html.A\'>, \'ALLOW_TOGGLE\': \'true \', \'B\': <class \'gluon.html.B\'>, \'BEAUTIFY\': <class \'gluon.html.BEAUTIFY\'>, \'BODY\': <class \'gluon.html.BODY\'>, \'BR \': <class \'gluon.html.BR\'>, \'CENTER\': <class \'gluon.html.CENTER \'>, \'CHECK_VERSION\': True, \'CLEANUP\': <class \'gluon.validators.CLEANUP\'>, \'CODE\': <class \'gluon.html.CODE \'>, ...}, layer=r\'C:\\Users\\Andre\\Documents\\web2py\\applications\ \admin/views\\default/index.html\')' p124 sS'func' p125 S'restricted' p126 sa(dp127 g103 S'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin\\views\ \default\\index.html' p128 sg105 (dp129 sg111 I82 sg112 (dp130 I73 S'response.write(\'\\n </div>\\n </div>\\n <div id="footer" class="fixed">\\n \', escape=False)' p131 sI74 S"response.write(T('Powered by'))" p132 sI75 S"response.write(' ', escape=False)" p133 sI76 S"response.write(A('web2py', _href='http://www.web2py.com'))" p134 sI77 S"response.write('™ ', escape=False)" p135 sI78 S"response.write(T('created by'))" p136 sI79 S"response.write(' Massimo Di Pierro ©2007-2010 -\\n\\t ', escape=False)" p137 sI80 S"if hasattr(T,'get_possible_languages'):" p138 sI81 S" response.write('\\n\\t <span>\\n\\t ', escape=False)" p139 sI82 S" response.write(T('Admin language'))" p140 sI83 S' response.write(\'\\n\\t <select name="adminlanguage" onchange="var date = new Date();cookieDate=date.setTime(date.getTime() +(100*24*60*60*1000));document.cookie=\\\'adminLanguage=\\ \'+this.options[this.selectedIndex].value+\\\'; expires=\\\'+cookieDate +\\\'; path=/\\\';window.location.reload()">\\n\\t\\t\', escape=False)' p141 sI84 S' for language in T.get_possible_languages():' p142 sI85 S" response.write('\\n\\t\\t<option ', escape=False)" p143 sI86 S" response.write(T.accepted_language==language and 'selected' or '')" p144 sI87 S" response.write(' >', escape=False)" p145 sI88 S' response.write(language)' p146 sI89 S" response.write('</option>\\n\\t\\t', escape=False)" p147 sI90 S' pass' p148 sI91 S" response.write('\\n\\t </select>\\n\\t </span>\\n\\t ', escape=False)" p149 sI92 S' pass' p150 ssg123 S'()' p151 sg125 S'<module>' p152 sa(dp153 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\globals.py' p154 sg105 (dp155 S'self.body.write' p156 S'<built-in method write of cStringIO.StringO object>' p157 sS'self.body' p158 S'<cStringIO.StringO object>' p159 sS'self' p160 S"<Storage {'body': <cStringIO.StringO object at 0...a> at 0x0294A5F0>, 'view': 'default/index.html'}>" p161 sS'global xmlescape' p162 S'<function xmlescape>' p163 sS'data' p164 S"<lazyT 'Admin language'>" p165 ssg111 I104 sg112 (dp166 I99 S'' sI100 S' def write(self, data, escape=True):' p167 sI101 S' if not escape:' p168 sI102 S' self.body.write(str(data))' p169 sI103 S' else:' p170 sI104 S' self.body.write(xmlescape(data))' p171 sI105 S'' sI106 S' def render(self, *a, **b):' p172 sI107 S' if len(a) > 2:' p173 sI108 S" raise SyntaxError, 'Response.render can be called with two arguments, at most'" p174 ssg123 S"(self=<Storage {'body': <cStringIO.StringO object at 0...a> at 0x0294A5F0>, 'view': 'default/index.html'}>, data=<lazyT 'Admin language'>, escape=True)" p175 sg125 S'write' p176 sa(dp177 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\html.py' p178 sg105 (dp179 S'data' p180 S"<lazyT 'Admin language'>" p181 sS'data.xml' p182 S"<bound method lazyT.xml of <lazyT 'Admin language'>>" p183 ssg111 I108 sg112 (dp184 I103 S' :param quote: optional (default False)' p185 sI104 S' """' p186 sI105 S'' sI106 S' # first try the xml function' p187 sI107 S' try:' p188 sI108 S' return data.xml()' p189 sI109 S' except AttributeError:' p190 sI110 S' pass' p191 sI111 S' except TypeError:' p192 sI112 S' pass' p193 ssg123 S"(data=<lazyT 'Admin language'>, quote=True)" p194 sg125 S'xmlescape' p195 sa(dp196 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\languages.py' p197 sg105 (dp198 S'cgi.escape' p199 S'<function escape>' p200 sS'builtinstr' p201 S"<type 'str'>" p202 sS'self' p203 S"<lazyT 'Admin language'>" p204 sS'global cgi' p205 S"<module 'cgi' from 'C:\\PROGRA~1\\Python27\\lib\\cgi.pyc'>" p206 ssg111 I167 sg112 (dp207 I162 S'' sI163 S' def __len__(self):' p208 sI164 S' return len(str(self))' p209 sI165 S'' sI166 S' def xml(self):' p210 sI167 S' return cgi.escape(str(self))' p211 sI168 S'' sI169 S' def encode(self, *a, **b):' p212 sI170 S' return str(self).encode(*a, **b)' p213 sI171 S'' ssg123 S"(self=<lazyT 'Admin language'>)" p214 sg125 S'xml' p215 sa(dp216 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\languages.py' p217 sg105 (dp218 S'self.T.translate' p219 S'<bound method translator.translate of <gluon.languages.translator object>>' p220 sS'self.s' p221 g18 sS'self' p222 S"<lazyT 'Admin language'>" p223 sS'self.T' p224 S'<gluon.languages.translator object>' p225 sS'self.m' p226 S"'Admin language'" p227 ssg111 I131 sg112 (dp228 I128 S' return "<lazyT %s>" % (repr(str(self.m)), )' p229 sI129 S'' sI130 S' def __str__(self):' p230 sI131 S' return self.T.translate(self.m, self.s)' p231 sI132 S'' sI133 S' def __eq__(self, other):' p232 sI134 S' return self.T.translate(self.m, self.s) == other' p233 sI135 S'' sI126 S'' sI127 S' def __repr__(self):' p234 ssg123 S"(self=<lazyT 'Admin language'>)" p235 sg125 g13 sa(dp236 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\languages.py' p237 sg105 (dp238 S'self' p239 S'<gluon.languages.translator object>' p240 sS'self.language_file' p241 S"r'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/languages/ fr-fr.py'" p242 sS'global write_dict' p243 S'<function write_dict>' p244 sS'self.t' p245 S'{\'"update" is an optional expression like "field1=...You cannot update or delete the results of a JOIN\': \'"update" est une expression en option tels que "... supprimer les r\\xc3\\xa9sultats d\\ \'une jointure "a JOIN"\', \'%Y-%m-%d\': \'%d-%m-%Y\', \'%Y-%m-%d %H: %M:%S\': \'%d-%m-%Y %H:%M:%S\', \'%s rows deleted\': \'lignes %s supprim\\xc3\\xa9\', \'%s rows updated\': \'lignes %s mis \\xc3\\xa0 jour\', \'(something like "it-it")\': \'(quelque chose comme "it-it") \', \'A new version of web2py is available: %s\': \'Une nouvelle version de web2py est disponible: %s \', \'A new version of web2py is available: Version 1.68.2 (2009-10-21 09:59:29)\\n\': \'Une nouvelle version de web2py est disponible: Version 1.68.2 (2009-10-21 09:59:29)\ \r\\n\', \'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.\': \'ATTENTION: n\\xc3\\xa9cessite une connexion s\\xc3\\xa9curis\\xc3\\xa9e (HTTPS) ou \\xc3\\xaatre en localhost. \', \'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.\': \'ATTENTION: les tests ne sont pas thread-safe DON...PAS EFFECTUER DES TESTS MULTIPLES SIMULTAN\\xc3\\x89MENT. \', ...}' p246 ssg111 I283 sg112 (dp247 I278 S" message = tokens[0] + '##' + tokens[1].strip()" p248 sI279 S' mt = self.t.get(message, None)' p249 sI280 S' if mt == None:' p250 sI281 S' self.t[message] = mt = tokens[0]' p251 sI282 S' if self.language_file and not is_gae:' p252 sI283 S' write_dict(self.language_file, self.t)' p253 sI284 S' if symbols or symbols == 0:' p254 sI285 S' return mt % symbols' p255 sI286 S' return mt' p256 sI287 S'' ssg123 S"(self=<gluon.languages.translator object>, message='Admin language', symbols={})" p257 sg125 S'translate' p258 sa(dp259 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\languages.py' p260 sg105 (dp261 S'fp' p262 S"<open file 'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/ languages/fr-fr.py', mode 'w'>" p263 sS'portalocker.unlock' p264 S'<function unlock>' p265 sS'global portalocker' p266 S"<module 'gluon.portalocker' from 'C:\\Users\\Andre\\Documents\\web2py \\gluon\\portalocker.py'>" p267 ssg111 I103 sg112 (dp268 I98 S' portalocker.lock(fp, portalocker.LOCK_EX)' p269 sI99 S" fp.write('# coding: utf8\\n{\\n')" p270 sI100 S' for key in sorted(contents):' p271 sI101 S" fp.write('%s: %s,\\n' % (utf8_repr(key), utf8_repr(contents[key])))" p272 sI102 S" fp.write('}\\n')" p273 sI103 S' portalocker.unlock(fp)' p274 sI104 S' fp.close()' p275 sI105 S'' sI106 S'' sI107 S'class lazyT(object):' p276 ssg123 S'(filename=r\'C:\\Users\\Andre\\Documents\\web2py\\applications\ \admin/languages/fr-fr.py\', contents={\'"update" is an optional expression like "field1=...You cannot update or delete the results of a JOIN\': \'"update" est une expression en option tels que "... supprimer les r\\xc3\\xa9sultats d\\\'une jointure "a JOIN"\', \'%Y-%m- %d\': \'%d-%m-%Y\', \'%Y-%m-%d %H:%M:%S\': \'%d-%m-%Y %H:%M:%S\', \'%s rows deleted\': \'lignes %s supprim\\xc3\\xa9\', \'%s rows updated\': \'lignes %s mis \\xc3\\xa0 jour\', \'(something like "it-it")\': \'(quelque chose comme "it-it") \', \'A new version of web2py is available: %s\': \'Une nouvelle version de web2py est disponible: %s \', \'A new version of web2py is available: Version 1.68.2 (2009-10-21 09:59:29)\\n\': \'Une nouvelle version de web2py est disponible: Version 1.68.2 (2009-10-21 09:59:29)\\r\\n\', \'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.\': \'ATTENTION: n\\xc3\\xa9cessite une connexion s\\xc3\\xa9curis\\xc3\ \xa9e (HTTPS) ou \\xc3\\xaatre en localhost. \', \'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.\': \'ATTENTION: les tests ne sont pas thread-safe DON...PAS EFFECTUER DES TESTS MULTIPLES SIMULTAN\\xc3\\x89MENT.\', ...})' p277 sg125 S'write_dict' p278 sa(dp279 g103 S'C:\\Users\\Andre\\Documents\\web2py\\gluon\\portalocker.py' p280 sg105 (dp281 S'os.path.getsize' p282 S'<function getsize>' p283 sS'global msvcrt' p284 S"<module 'msvcrt' (built-in)>" p285 sS'file.name' p286 S"r'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/languages/ fr-fr.py'" p287 sS'file.fileno' p288 S'<built-in method fileno of file object>' p289 sS'mode' p290 S'0' sS'file' p291 S"<open file 'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/ languages/fr-fr.py', mode 'w'>" p292 sS'global os' p293 S"<module 'os' from 'C:\\PROGRA~1\\Python27\\lib\\os.pyc'>" p294 sS'msvcrt.locking' p295 S'<built-in function locking>' p296 sS'os.path' p297 S"<module 'ntpath' from 'C:\\PROGRA~1\\Python27\\lib\\ntpath.pyc'>" p298 ssg111 I78 sg112 (dp299 I73 S' msvcrt.locking(file.fileno(), mode, os.path.getsize(file.name))' p300 sI74 S'' sI75 S' def unlock(file):' p301 sI76 S' file.seek(0)' p302 sI77 S' mode = LK_UNLCK' p303 sI78 S' msvcrt.locking(file.fileno(), mode, os.path.getsize(file.name))' p304 sI79 S'' sI80 S"elif os_locking == 'posix':" p305 sI81 S' LOCK_EX = fcntl.LOCK_EX' p306 sI82 S' LOCK_SH = fcntl.LOCK_SH' p307 ssg123 S"(file=<open file 'C:\\Users\\Andre\\Documents\\web2py\\applications\ \admin/languages/fr-fr.py', mode 'w'>)" p308 sg125 S'unlock' p309 sasS'pyver' p310 S'Python 2.7: C:\\PROGRA~1\\Python27\\python.exe' p311 sS'session' p312 (dp313 sS'etype' p314 S"<type 'exceptions.IOError'>" p315 sS'date' p316 S'Fri Nov 26 08:52:38 2010' p317 sS'response' p318 (dp319 g65 S'<cStringIO.StringO object>' p320 sS'_vars' p321 S"{'apps': ['admin', 'Customer_Relation', 'examples', 'file_manager', 'SolQal', 'test_I', 'treeSlide', 'welcome'], 'send': '/admin/default/ ticket/welcome/127.0.0.1.2010-11-26.08-52-29.cae6ad05-fb3e-4d42- b6f5-998d4d17d0a5'}" p322 sg80 S"<SimpleCookie: session_id_admin='127.0.0.1-427d8836-62a7-4a88-85fa- a46e45e2d2c0'>" p323 sS'subtitle' p324 S"'admin'" p325 sS'title' p326 S"'index '" p327 sS'menu' p328 S"[(<lazyT 'login'>, True, ''), (<lazyT 'help'>, False, <gluon.html.XML object>)]" p329 sS'flash' p330 S"''" p331 sS'session_new' p332 S'True' p333 sS'session_id' p334 S"'127.0.0.1-427d8836-62a7-4a88-85fa-a46e45e2d2c0'" p335 sS'headers' p336 S"<Storage {'Expires': 'Fri, 26 Nov 2010 07:52:37 ...he, must- revalidate, post-check=0, pre-check=0'}>" p337 sS'meta' p338 S'<Storage {}>' p339 sS'status' p340 S'200' p341 sS'_custom_rollback' p342 S'None' p343 sS'_view_environment' p344 S"{'A': <class 'gluon.html.A'>, 'ALLOW_TOGGLE': 'true', 'B': <class 'gluon.html.B'>, 'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>, 'BODY': <class 'gluon.html.BODY'>, 'BR': <class 'gluon.html.BR'>, 'CENTER': <class 'gluon.html.CENTER'>, 'CHECK_VERSION': True, 'CLEANUP': <class 'gluon.validators.CLEANUP'>, 'CODE': <class 'gluon.html.CODE'>, ...}" p345 sS'_custom_commit' p346 S'None' p347 sS'session_filename' p348 S"r'C:\\Users\\Andre\\Documents\\web2py\\applications\\adm...ns\ \127.0.0.1-427d8836-62a7-4a88-85fa-a46e45e2d2c0'" p349 sS'session_id_name' p350 S"'session_id_admin'" p351 sS'view' p352 S"'default/index.html'" p353 sS'_caller' p354 S'<function <lambda>>' p355 sS'files' p356 S'[<gluon.html.XML object>, <gluon.html.XML object>, <gluon.html.XML object>, <gluon.html.XML object>]' p357 sS'postprocessing' p358 S'[]' p359 ssS'locals' p360 (dp361 S'mode' p362 S'0' sg103 S"<open file 'C:\\Users\\Andre\\Documents\\web2py\\applications\\admin/ languages/fr-fr.py', mode 'w'>" p363 sssS'traceback' p364 S'Traceback (most recent call last):\n File "C:\\Users\\Andre\ \Documents\\web2py\\gluon\\restricted.py", line 188, in restricted \n exec ccode in environment\n File "C:\\Users\\Andre\\Documents\ \web2py\\applications\\admin/views\\default/index.html", line 82, in <module>\n File "C:\\Users\\Andre\\Documents\\web2py\\gluon\ \globals.py", line 104, in write\n self.body.write(xmlescape(data)) \n File "C:\\Users\\Andre\\Documents\\web2py\\gluon\\html.py", line 108, in xmlescape\n return data.xml()\n File "C:\\Users\\Andre\ \Documents\\web2py\\gluon\\languages.py", line 167, in xml\n return cgi.escape(str(self))\n File "C:\\Users\\Andre\\Documents\\web2py\ \gluon\\languages.py", line 131, in __str__\n return self.T.translate(self.m, self.s)\n File "C:\\Users\\Andre\\Documents\ \web2py\\gluon\\languages.py", line 283, in translate\n write_dict(self.language_file, self.t)\n File "C:\\Users\\Andre\ \Documents\\web2py\\gluon\\languages.py", line 103, in write_dict\n portalocker.unlock(fp)\n File "C:\\Users\\Andre\\Documents\\web2py\ \gluon\\portalocker.py", line 78, in unlock\n msvcrt.locking(file.fileno(), mode, os.path.getsize(file.name)) \nIOError: [Errno 13] Permission denied\n' p365 s. ------------------------- On 26 nov, 09:47, Kenneth Lundström <kenneth.t.lundst...@gmail.com> wrote: > Please send it, it s the only way to find out what the problem is. > > Kenneth > > > Thank you Kenneth! > > > I must admit the file is difficult to analyze manually -- I'm happy to > > send it as an attachement if useful. > > > On 26 nov, 09:21, Kenneth Lundstr m<kenneth.t.lundst...@gmail.com> > > wrote: > >> If you have access to the file system you can find the error ticket in > >> the folder /applications/admin/errors > > >> Kenneth > > >>> I tried the last version in trunk, and the admin application generates > >>> a ticket... and looking at the ticket generates another ticket! (which > >>> is the reason why I cannot provide a traceback). > >>> But the other applications appear to work fine. > >>> On 25 nov, 17:20, mdipierro<mdipie...@cs.depaul.edu> wrote: > >>>> Perfect! Thanks Mr Freeze. > >>>> On Nov 25, 10:18 am, "mr.freeze"<nat...@freezable.com> wrote: > >>>>> It seems to be working. I open one in IE and another in Firefox about > >>>>> 2 seconds later. After the IE page loads, the Firefox page loads about > >>>>> 2 seconds later. Is that what you're looking for? > >>>>> On Nov 25, 10:09 am, mdipierro<mdipie...@cs.depaul.edu> wrote: > >>>>>> At least we know it is being executed. :-) > >>>>>> I think I fixed this one. Please try again. > >>>>>> Massimo > >>>>>> On Nov 25, 9:53 am, "mr.freeze"<nat...@freezable.com> wrote: > >>>>>>> Traceback (most recent call last): > >>>>>>> File "C:\eclipse\plugins > >>>>>>> \org.python.pydev.debug_1.6.3.2010100513\pysrc\pydevd.py", line 1145, > >>>>>>> in<module> > >>>>>>> debugger.run(setup['file'], None, None) > >>>>>>> File "C:\eclipse\plugins > >>>>>>> \org.python.pydev.debug_1.6.3.2010100513\pysrc\pydevd.py", line 916, > >>>>>>> in run > >>>>>>> execfile(file, globals, locals) #execute the script > >>>>>>> File "C:\web2py\web2py.py", line 23, in<module> > >>>>>>> gluon.widget.start(cron=True) > >>>>>>> File "C:\web2py\gluon\widget.py", line 785, in start > >>>>>>> newcron.hardcron(options.folder).start() > >>>>>>> File "C:\web2py\gluon\newcron.py", line 50, in __init__ > >>>>>>> crondance(self.path, 'hard', startup=True) > >>>>>>> File "C:\web2py\gluon\newcron.py", line 234, in crondance > >>>>>>> cronmaster = token.acquire(startup=startup) > >>>>>>> File "C:\web2py\gluon\newcron.py", line 118, in acquire > >>>>>>> portalocker.unlock(self.master) > >>>>>>> File "C:\web2py\gluon\portalocker.py", line 78, in unlock > >>>>>>> msvcrt.locking(file.fileno(), mode, > >>>>>>> os.path.getsize(file.filename)) > >>>>>>> AttributeError: 'file' object has no attribute 'filename' > >>>>>>> On Nov 25, 9:31 am, mdipierro<mdipie...@cs.depaul.edu> wrote: > >>>>>>>> can you please try again. > >>>>>>>> On Nov 24, 11:04 pm, Anthony<abasta...@gmail.com> wrote: > >>>>>>>>> Is the test supposed to be done without the win32 extensions > >>>>>>>>> installed > >>>>>>>>> (I have them installed)? > >>>>>>>>> Anyway, I tried the test. Before updating trunk, it behaves as you > >>>>>>>>> say > >>>>>>>>> -- I opened two windows in quick succession -- the first took 10 > >>>>>>>>> seconds to load, and then the second took an additional 10 seconds > >>>>>>>>> to > >>>>>>>>> load after the first one finished. > >>>>>>>>> I then updated trunk, and now can't start web2py -- getting the > >>>>>>>>> following traceback: > >>>>>>>>> Traceback (most recent call last): > >>>>>>>>> File "web2py.py", line 23, in<module> > >>>>>>>>> gluon.widget.start(cron=True) > >>>>>>>>> File "C:\Users\Anthony\Programming\temp\gluon\widget.py", line > >>>>>>>>> 785, > >>>>>>>>> in start newcron.hardcron(options.folder).start() > >>>>>>>>> File "C:\Users\Anthony\Programming\temp\gluon\newcron.py", line > >>>>>>>>> 50, > >>>>>>>>> in __init__ crondance(self.path, 'hard', startup=True) > >>>>>>>>> File "C:\Users\Anthony\Programming\temp\gluon\newcron.py", line > >>>>>>>>> 234, > >>>>>>>>> in crondance cronmaster = token.acquire(startup=startup) > >>>>>>>>> File "C:\Users\Anthony\Programming\temp\gluon\newcron.py", line > >>>>>>>>> 118, > >>>>>>>>> in acquire portalocker.unlock(self.master) > >>>>>>>>> File "C:\Users\Anthony\Programming\temp\gluon\portalocker.py", > >>>>>>>>> line > >>>>>>>>> 76, in unlock file.fseek(0) > >>>>>>>>> AttributeError: 'file' object has no attribute 'fseek' > >>>>>>>>> Anthony > >>>>>>>>> On Nov 24, 11:26 pm, mdipierro<mdipie...@cs.depaul.edu> wrote: > >>>>>>>>>> I made a change that on windows will provide locking without need > >>>>>>>>>> for > >>>>>>>>>> MH win32 extensions. > >>>>>>>>>> Can you help me test it. > >>>>>>>>>> Make a log action like > >>>>>>>>>> def index(): > >>>>>>>>>> import time > >>>>>>>>>> time.sleep(10) > >>>>>>>>>> return dict() > >>>>>>>>>> call it twice (on windows) from different browser windows. Will the > >>>>>>>>>> second window lock until the former is done? should be locked > >>>>>>>>>> because > >>>>>>>>>> session is locked with file-locking. > >>>>>>>>>> test before upgrade to trunk and after. > >>>>>>>>>> Massimo > >