From e939d084fe10833a01dc9d5b26fc4e9804a0bdfa Mon Sep 17 00:00:00 2001 From: ilvalle Date: Mon, 9 Feb 2015 19:38:23 +0100 Subject: [PATCH] Fix appadmin code inspection for db hooks --- applications/admin/controllers/appadmin.py | 24 +++++++++++-------- applications/examples/controllers/appadmin.py | 24 +++++++++++-------- applications/welcome/controllers/appadmin.py | 24 +++++++++++-------- 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/applications/admin/controllers/appadmin.py b/applications/admin/controllers/appadmin.py index c2d5836c..8af1047c 100644 --- a/applications/admin/controllers/appadmin.py +++ b/applications/admin/controllers/appadmin.py @@ -672,16 +672,20 @@ def hooks(): functions = [] for f in getattr(db[t], op): if hasattr(f, '__call__'): - if isinstance(f, (functools.partial)): - f = f.func - filename = inspect.getsourcefile(f) - details = {'funcname':f.__name__, - 'filename':filename[len(request.folder):] if request.folder in filename else None, - 'lineno': inspect.getsourcelines(f)[1]} - if details['filename']: # Built in functions as delete_uploaded_files are not editable - details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']}) - if details['filename'] or with_build_it: - functions.append(details) + try: + if isinstance(f, (functools.partial)): + f = f.func + filename = inspect.getsourcefile(f) + details = {'funcname':f.__name__, + 'filename':filename[len(request.folder):] if request.folder in filename else None, + 'lineno': inspect.getsourcelines(f)[1]} + if details['filename']: # Built in functions as delete_uploaded_files are not editable + details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']}) + if details['filename'] or with_build_it: + functions.append(details) + # compiled app and windows build don't support code inspection + except: + pass if len(functions): method_hooks.append({'name':op, 'functions':functions}) if len(method_hooks): diff --git a/applications/examples/controllers/appadmin.py b/applications/examples/controllers/appadmin.py index c2d5836c..8af1047c 100644 --- a/applications/examples/controllers/appadmin.py +++ b/applications/examples/controllers/appadmin.py @@ -672,16 +672,20 @@ def hooks(): functions = [] for f in getattr(db[t], op): if hasattr(f, '__call__'): - if isinstance(f, (functools.partial)): - f = f.func - filename = inspect.getsourcefile(f) - details = {'funcname':f.__name__, - 'filename':filename[len(request.folder):] if request.folder in filename else None, - 'lineno': inspect.getsourcelines(f)[1]} - if details['filename']: # Built in functions as delete_uploaded_files are not editable - details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']}) - if details['filename'] or with_build_it: - functions.append(details) + try: + if isinstance(f, (functools.partial)): + f = f.func + filename = inspect.getsourcefile(f) + details = {'funcname':f.__name__, + 'filename':filename[len(request.folder):] if request.folder in filename else None, + 'lineno': inspect.getsourcelines(f)[1]} + if details['filename']: # Built in functions as delete_uploaded_files are not editable + details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']}) + if details['filename'] or with_build_it: + functions.append(details) + # compiled app and windows build don't support code inspection + except: + pass if len(functions): method_hooks.append({'name':op, 'functions':functions}) if len(method_hooks): diff --git a/applications/welcome/controllers/appadmin.py b/applications/welcome/controllers/appadmin.py index c2d5836c..8af1047c 100644 --- a/applications/welcome/controllers/appadmin.py +++ b/applications/welcome/controllers/appadmin.py @@ -672,16 +672,20 @@ def hooks(): functions = [] for f in getattr(db[t], op): if hasattr(f, '__call__'): - if isinstance(f, (functools.partial)): - f = f.func - filename = inspect.getsourcefile(f) - details = {'funcname':f.__name__, - 'filename':filename[len(request.folder):] if request.folder in filename else None, - 'lineno': inspect.getsourcelines(f)[1]} - if details['filename']: # Built in functions as delete_uploaded_files are not editable - details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']}) - if details['filename'] or with_build_it: - functions.append(details) + try: + if isinstance(f, (functools.partial)): + f = f.func + filename = inspect.getsourcefile(f) + details = {'funcname':f.__name__, + 'filename':filename[len(request.folder):] if request.folder in filename else None, + 'lineno': inspect.getsourcelines(f)[1]} + if details['filename']: # Built in functions as delete_uploaded_files are not editable + details['url'] = URL(a='admin',c='default',f='edit', args=[request['application'], details['filename']],vars={'lineno':details['lineno']}) + if details['filename'] or with_build_it: + functions.append(details) + # compiled app and windows build don't support code inspection + except: + pass if len(functions): method_hooks.append({'name':op, 'functions':functions}) if len(method_hooks):