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&trade; \', 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&trade; \', 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(\'&trade; \', escape=False)
\nresponse.write(T(\'created by\'))\nresponse.write(\' Massimo Di
Pierro &copy;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('&trade; ', escape=False)"
p135
sI78
S"response.write(T('created by'))"
p136
sI79
S"response.write(' Massimo Di Pierro &copy;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
>
>

Reply via email to