In case it might help, here is my trace back file and the controller (I am
doing a manual insert, maybe I should not ?) :
## CONTROLLER STARTS HERE
form = SQLFORM(db.fichiers, fields=['nom_fichier',
'fichier', 'project', 'description', 'users', 'deleted'])
if form.validate():
form.vars.create_date =
str(datetime.datetime.today().date())
form.vars.create_time =
str(datetime.datetime.today().time())
form.vars.id = db.fichiers.insert(**dict(form.vars))
## CONTROLLER ENDS HERE
## START TRACEBACK
(dp1
S'output'
p2
S"<type 'exceptions.MemoryError'> "
p3
sS'layer'
p4
S'/var/opt/app/applications/init/views/default/fichiers.html'
p5
sS'code'
p6
S'left_sidebar_enabled,right_sidebar_enabled=False,True\nresponse.write(\'\\n\',
escape=False)\nresponse.write(\'<!DOCTYPE html>\\n<!--
paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/-->\\n<!--[if
lt IE 7]><html class="ie ie6 ie-lte9 ie-lte8 ie-lte7 no-js"
lang="\', escape=False)\nresponse.write(T.accepted_language or
\'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if IE 7]><html class="ie
ie7 ie-lte9 ie-lte8 ie-lte7 no-js" lang="\',
escape=False)\nresponse.write(T.accepted_language or
\'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if IE 8]><html class="ie
ie8 ie-lte9 ie-lte8 no-js" lang="\',
escape=False)\nresponse.write(T.accepted_language or
\'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if IE 9]><html class="ie9
ie-lte9 no-js" lang="\', escape=False)\nresponse.write(T.accepted_language
or \'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if (gt IE
9)|!(IE)]><!--> <html class="no-js" lang="\',
escape=False)\nresponse.write(T.accepted_language or
\'en\')\nresponse.write(\'"> <!--<![endif]-->\\n<head>\\n <meta
charset="utf-8" />\\n <!--
www.phpied.com/conditional-comments-block-downloads/ -->\\n <!-- Always
force latest IE rendering engine\\n\\t (even in intranet) & Chrome
Frame\\n\\t Remove this if you use the .htaccess -->\\n <!--[if IE]>\\n
<meta http-equiv="X-UA-Compatible" content="IE=edge\',
escape=False)\nresponse.write(not request.is_local and \',chrome=1\' or
\'\')\nresponse.write(\'">\\n <![endif]-->\\n \\n <title>\',
escape=False)\nresponse.write(response.title or
request.application)\nresponse.write(\'</title>\\n \\n <!--
http://dev.w3.org/html5/markup/meta.name.html -->\\n <meta
name="application-name" content="\',
escape=False)\nresponse.write(request.application)\nresponse.write(\'"
/>\\n \\n <!-- Speaking of Google, don\\\'t forget to set your site
up:\\n\\t http://google.com/webmasters -->\\n <meta
name="google-site-verification" content="" />\\n\\n <!-- Mobile Viewport
Fix\\n\\t j.mp/mobileviewport &
davidbcalhoun.com/2010/viewport-metatag\\n\\t device-width: Occupy full
width of the screen in its current orientation\\n\\t initial-scale = 1.0
retains dimensions instead of zooming out if page height > device
height\\n\\t user-scalable = yes allows the user to zoom in -->\\n <meta
name="viewport" content="width=device-width, initial-scale=1.0,
user-scalable=yes">\\n \\n <!-- Place favicon.ico and
apple-touch-icon.png in the root of your domain and delete these references
-->\\n <link rel="shortcut icon" href="\',
escape=False)\nresponse.write(URL(\'static\',\'favicon.ico\'))\nresponse.write(\'"
type="image/x-icon">\\n <link rel="apple-touch-icon" href="\',
escape=False)\nresponse.write(URL(\'static\',\'favicon.png\'))\nresponse.write(\'">\\n\\n
<!-- All JavaScript at the bottom, except for Modernizr which enables
\\n\\t HTML5 elements & feature detects -->\\n <script src="\',
escape=False)\nresponse.write(URL(\'static\',\'js/modernizr.custom.js\'))\nresponse.write(\'"></script>
\\n\\n <!-- include stylesheets -->\\n \',
escape=False)\nresponse.files.append(URL(\'static\',\'css/skeleton.css\'))\nresponse.files.append(URL(\'static\',\'css/web2py.css\'))\nresponse.files.append(URL(\'static\',\'css/archimanager.css\'))\nif
response.menu:\n
response.files.append(URL(\'static\',\'css/superfish.css\'))\n
response.files.append(URL(\'static\',\'js/superfish.js\'))\n
pass\nresponse.write(\'\\n\\n \', escape=False)\nresponse.write(\'<script
type="text/javascript"><!--\\n // These variables are used by the
web2py_ajax_init function in web2py_ajax.js (which is loaded below).\\n
var w2p_ajax_confirm_message = "\', escape=False)\nresponse.write(T(\'Are
you sure you want to delete this object?\'))\nresponse.write(\'";\\n var
w2p_ajax_date_format = "\',
escape=False)\nresponse.write(T(\'%Y-%m-%d\'))\nresponse.write(\'";\\n
var w2p_ajax_datetime_format = "\',
escape=False)\nresponse.write(T(\'%Y-%m-%d
%H:%M:%S\'))\nresponse.write(\'";\\n //--></script>\\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\'))\nresponse.files.insert(3,URL(\'static\',\'js/web2py.js\'))\nresponse.include_meta()\nresponse.include_files()\nresponse.write(\'\\n\',
escape=False)\nresponse.write(\'\\n\\n \', escape=False)\nif
response.menu:\n response.write(\'\\n <script
type="text/javascript">\\n jQuery(function(){
jQuery(\\\'ul.sf-menu\\\').supersubs({minWidth:12,maxWidth:30,extraWidth:3}).superfish();
});\\n </script>\\n \', escape=False)\n pass\nresponse.write(\'\\n\\n
\', escape=False)\n# using sidebars need to know what sidebar you want to
use\nleft_sidebar_enabled =
globals().get(\'left_sidebar_enabled\',False)\nright_sidebar_enabled =
globals().get(\'right_sidebar_enabled\',False)\nmiddle_columns =
{0:\'sixteen\',1:\'twelve\',2:\'eight\'}[\n(left_sidebar_enabled and 1 or
0)+(right_sidebar_enabled and 1 or 0)]\nresponse.write(\'\\n\\n <!--
uncomment here to load jquery-ui\\n <link rel="stylesheet" href="
http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css"
type="text/css" media="all" />\\n <script src="
http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"
type="text/javascript"></script>\\n uncomment to load jquery-ui
//-->\\n</head>\\n<body>\\n <div class="wrapper"><!-- for sticky footer
-->\\n \\n <div class="topbar">\\n <div class="container"> \\n
<div class="sixteen columns">\\n <div id="navbar">\',
escape=False)\nresponse.write(\'auth\' in globals() and
auth.navbar(separators=(\' \',\' | \',\'\')))\nresponse.write(\'</div>\\n
\',
escape=False)\nis_mobile=request.user_agent().is_mobile\nresponse.write(\'\\n\\t
\', escape=False)\nif response.menu:\n response.write(\'\\n
<div id="menu">\\n \', escape=False)\n
response.write(MENU(response.menu, _class=\'mobile-menu\' if is_mobile
else \'sf-menu\',mobile=is_mobile))\n response.write(\'\\n
</div>\\n \', escape=False)\n pass\nresponse.write(\'\\n
</div>\\n </div>\\n </div><!-- topbar -->\\n \\n <div
class="header">\\n <div class="container"> \\n <div
class="sixteen columns">\\n <h1 class="remove-bottom"
style="margin-top: .5em;">\\n Archimanager\\n </h1>\\n
<h5>\', escape=False)\nresponse.write(response.subtitle or
\'\')\nresponse.write(\'</h5>\\n </div>\\n <div
class="sixteen columns">\\n <div class="statusbar clearfix">\\n
\', escape=False)\nresponse.write(\'\\n <div
class="breadcrumbs">\',
escape=False)\nresponse.write(request.function.replace(\'_\', \'
\').title())\nresponse.write(\'</div>\\n \',
escape=False)\nresponse.write(\'\\n </div>\\n </div>\\n
</div>\\n </div>\\n\\n <div class="main">\\n <div
class="container"> \\n \\n <div
class="sixteen columns center">\\n \',
escape=False)\nresponse.write(\'\\n \',
escape=False)\nresponse.write(\'\\n\\n\', escape=False)\nif msg !=
\'start\':\n response.write(\'\\n\\t\', escape=False)\n
response.write(msg)\n response.write(\'\\n\', escape=False)\n
pass\nresponse.write(\'\\n\\n\',
escape=False)\nresponse.write(SQLTABLE(rex,\nlinkto=URL(r=request,
f=\'fichiers\'),\nheaders={ \'fichiers.id\':\'ID\',
\'fichiers.nom_fichier\':\'Fichier\', \'fichiers.fichier\':\'download\',
\'projects.project\':\'Projet\', \'fichiers.create_date\':\'Date
Creation\', \'fichiers.create_time\':\'Heure Creation\',
\'fichiers.description\':\'Description\', \'fichiers.users\':\'List
Utilisateurs\'},\nupload=URL(\'download\')\n))\nresponse.write(\'\\n\\n<br><hr>\\n<a
href=\', escape=False)\nresponse.write(URL(r=request,
f=\'fichiers\'))\nresponse.write(\'>Ajouter Nouveau</a>\\n<br>\\n\\n\',
escape=False)\nresponse.write(form)\nresponse.write(\'\\n\\n\\n\',
escape=False)\nresponse.write(\'\\n\\n\',
escape=False)\nresponse.write("\\n\\n<script>\\n$(function() {\\n
$(\'#fichiers_project\').on(\'change\', function() {\\n //alert(
$(this).attr(\'value\') ) ;\\n var proj = $(this).attr(\'value\')
;\\n $(\'#fichiers_users option\').each( function() {\\n
if ( $(this).attr(\'value\') ) {\\n //alert( $(this).val()
);\\n var userProject = $(this).text().split(\':\')[1]\\n
if ( userProject == proj ) {\\n //alert(
\'userproject is :\' + userProject ) ;\\n
$(this).css(\'visibility\',\'visible\') ;\\n }\\n
else {\\n //alert( \'lets hide it\' );\\n
$(this).css(\'visibility\',\'hidden\') ;\\n }\\n
}\\n } ) ;\\n } );\\n} );\\n</script>\\n\\n",
escape=False)\nresponse.write(\'\\n \',
escape=False)\nresponse.write(\'\\n </div>\\n \\n
</div><!-- container -->\\n </div><!-- main -->\\n \\n <div
class="push"></div>\\n </div><!-- wrapper -->\\n\\n <div
class="footer">\\n <div class="container"> \\n <div
class="sixteen columns">\\n \', escape=False)\nresponse.write(\'
<!-- this is default footer -->\\n <div class="footer-content
clearfix">\\n <div class="copyright">\',
escape=False)\nresponse.write(T(\'Copyright\'))\nresponse.write(\' ©
2012</div>\\n <div style="float: right;">\\n\\t\\t\\tcabinet
Mimoun Mokhtar\\n </div>\\n </div>\\n \',
escape=False)\nresponse.write(\'\\t\\n </div>\\n </div><!--
container -->\\n </div><!-- footer -->\\n \\n <!--[if lt IE 7
]>\\n\\t<script src="\',
escape=False)\nresponse.write(URL(\'static\',\'js/dd_belatedpng.js\'))\nresponse.write(\'"></script>\\n\\t<script>
DD_belatedPNG.fix(\\\'img, .png_bg\\\'); //fix any <img> or .png_bg
background-images </script>\\n\\t<![endif]-->\\n \', escape=False)\nif
response.google_analytics_id:\n response.write(\'<script
type="text/javascript"> var _gaq = _gaq || [];
_gaq.push([\\\'_setAccount\\\', \\\'\', escape=False)\n
response.write(response.google_analytics_id)\n response.write("\']);
_gaq.push([\'_trackPageview\']); (function() { var ga =
document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async
= true; ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\'
: \'http://www\') + \'.google-analytics.com/ga.js\'; var s =
document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga,
s); })(); </script> ", escape=False)\n
pass\nresponse.write(\'\\n</body>\\n</html>\\n\', escape=False)'
p7
sS'snapshot'
p8
(dp9
sS'traceback'
p10
S'Traceback (most recent call last):\n File
"/var/opt/app/gluon/restricted.py", line 205, in restricted\n exec ccode
in environment\n File
"/var/opt/app/applications/init/views/default/fichiers.html", line 59, in
<module>\n File "/var/opt/app/gluon/tools.py", line 1189, in navbar\n
next =
\'?_next=\'+urllib.quote(URL(args=request.args,vars=request.vars))\n File
"/var/opt/app/gluon/html.py", line 328, in URL\n other += \'?%s\' %
urllib.urlencode(list_vars)\n File "/usr/lib/python2.7/urllib.py", line
1311, in urlencode\n v = quote_plus(str(v))\n File
"/usr/lib/python2.7/urllib.py", line 1272, in quote_plus\n s = quote(s,
safe + \' \')\n File "/usr/lib/python2.7/urllib.py", line 1267, in quote\n
return \'\'.join(map(quoter, s))\nMemoryError\n'
p11
# END TRACEBACK