Changeset 5494

Show
Ignore:
Timestamp:
09/27/08 23:13:56 (3 months ago)
Author:
carndt
Message:

Toolbox console handles failure to load model gracefully and displays error message, when first opened

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.1/turbogears/toolbox/console.kid

    r2470 r5494  
    1717    <center> 
    1818        <div id="main_content"> 
     19            <div py:if="defined('errors')" py:strip="True"> 
     20              <p py:for="error in errors" py:content="error" class="error" /> 
     21            </div> 
    1922            <form id="interpreter_form" action=""> 
    2023                <div id="interpreter_area"> 
     
    2528                <br/> 
    2629                <h3>Multiline (code-block) Input:</h3> 
    27                 <textarea name="interpreter_block_text"  
    28                     id="interpreter_block_text" style="width:610px;height:170px"  
     30                <textarea name="interpreter_block_text" 
     31                    id="interpreter_block_text" style="width:610px;height:170px" 
    2932                    class="textbox"></textarea> 
    3033                <br /> 
  • branches/1.1/turbogears/toolbox/shell.py

    r5215 r5494  
    1 import turbogears 
    2 from turbogears import controllers, expose 
     1import logging 
    32import sys 
    43import StringIO 
     4 
     5import turbogears 
     6import pkg_resources 
     7from turbogears import controllers, expose 
    58from code import InteractiveConsole 
     9 
     10 
     11log = logging.getLogger('turbogears.toolbox') 
    612 
    713 
     
    7278 
    7379    def new_console(self): 
     80        data = dict() 
    7481        locs = dict(__name__='tg-admin', __doc__=None, 
    7582            reload_console=self.new_console) 
    76         mod = turbogears.util.get_model() 
    77         if mod: 
    78             locs.update(mod.__dict__) 
     83        try: 
     84            mod = turbogears.util.get_model() 
     85            if mod: 
     86                locs.update(mod.__dict__) 
     87        except (pkg_resources.DistributionNotFound, ImportError): 
     88            import traceback 
     89            error = "Error: could not load data model.\n" 
     90            data['errors'] = [error] 
     91            error += traceback.format_exc() 
     92            log.warn(error) 
    7993        self.console = InteractiveConsole(locals=locs) 
     94        return data 
    8095 
    8196    @expose(template="kid:turbogears.toolbox.console") 
    8297    def index(self): 
     98        data = dict() 
    8399        if not self.console: 
    84             self.new_console(
    85         return dict() 
     100            data.update(self.new_console()
     101        return data