diff --git a/VERSION b/VERSION
index fa2f20a3..7b48a4bd 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Version 2.00.1 (2012-08-28 21:11:21) rc4
+Version 2.00.1 (2012-08-28 22:14:54) rc4
diff --git a/applications/admin/languages/default.py b/applications/admin/languages/default.py
index 93cec3e5..a9bd0be9 100644
--- a/applications/admin/languages/default.py
+++ b/applications/admin/languages/default.py
@@ -107,6 +107,7 @@
'These files are not served, they are only available from within your app': 'These files are not served, they are only available from within your app',
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
'Ticket ID': 'Ticket ID',
+'Ticket Missing': 'Ticket Missing',
'To create a plugin, name a file/folder plugin_[name]': 'To create a plugin, name a file/folder plugin_[name]',
'Traceback': 'Traceback',
'Translation strings for the application': 'Translation strings for the application',
diff --git a/applications/admin/views/default/ticket.html b/applications/admin/views/default/ticket.html
index 026b00bd..233305e6 100644
--- a/applications/admin/views/default/ticket.html
+++ b/applications/admin/views/default/ticket.html
@@ -13,12 +13,16 @@
web2py™ |
{{=myversion}} |
+ {{if snapshot:}}
| Python |
{{=snapshot.get('pyver','')}} |
+ {{pass}}
+
+{{if traceback or code or layer:}}
{{=T('Traceback')}}
{{=traceback}}
@@ -130,4 +134,6 @@
In file: {{=layer}}
{{=CODE(code.replace('\r',''),language='python',link='/examples/global/vars/')}}
-
+{{else:}}
+{{=T('Ticket Missing')}}
+{{pass}}
diff --git a/gluon/main.py b/gluon/main.py
index be0edaf1..85f57fca 100644
--- a/gluon/main.py
+++ b/gluon/main.py
@@ -90,7 +90,7 @@ from dal import BaseAdapter
from settings import global_settings
from validators import CRYPT
from cache import Cache
-from html import URL as Url, xmlescape
+from html import URL, xmlescape
from utils import is_valid_ip_address
from rewrite import load, url_in, thread as rwthread, try_rewrite_on_error
import newcron
@@ -442,10 +442,10 @@ def wsgibase(environ, responder):
if not exists(request.folder):
if app == rwthread.routes.default_application \
and app != 'welcome':
- redirect(Url(app,'default','index'))
+ redirect(URL('welcome','default','index'))
elif rwthread.routes.error_handler:
_handler = rwthread.routes.error_handler
- redirect(Url(_handler['application'],
+ redirect(URL(_handler['application'],
_handler['controller'],
_handler['function'],
args=app))
@@ -456,7 +456,7 @@ def wsgibase(environ, responder):
elif not request.is_local and \
exists(pjoin(request.folder,'DISABLED')):
raise HTTP(503, "Temporarily down for maintenance
")
- request.url = Url(r=request,
+ request.url = URL(r=request,
args=request.args,
extension=request.raw_extension)
diff --git a/gluon/restricted.py b/gluon/restricted.py
index 74f3b34c..bb5ba670 100644
--- a/gluon/restricted.py
+++ b/gluon/restricted.py
@@ -88,16 +88,19 @@ class TicketStorage(Storage):
ticket_id,
):
if not self.db:
- ef = self._error_file(request, ticket_id, 'rb', app)
+ try:
+ ef = self._error_file(request, ticket_id, 'rb', app)
+ except IOError:
+ return {}
try:
return cPickle.load(ef)
finally:
ef.close()
- table = self._get_table(self.db, self.tablename, app)
- rows = self.db(table.ticket_id == ticket_id).select()
- if rows:
- return cPickle.loads(rows[0].ticket_data)
- return None
+ else:
+ table = self._get_table(self.db, self.tablename, app)
+ rows = self.db(table.ticket_id == ticket_id).select()
+ return cPickle.loads(rows[0].ticket_data) if rows else {}
+
class RestrictedError(Exception):
@@ -164,10 +167,10 @@ class RestrictedError(Exception):
ticket_storage = TicketStorage(db=request.tickets_db)
d = ticket_storage.load(request, app, ticket_id)
- self.layer = d['layer']
- self.code = d['code']
- self.output = d['output']
- self.traceback = d['traceback']
+ self.layer = d.get('layer')
+ self.code = d.get('code')
+ self.output = d.get('output')
+ self.traceback = d.get('traceback')
self.snapshot = d.get('snapshot')
def __str__(self):