Changeset 4625 for MILK


Ignore:
Timestamp:
15/12/08 09:22:56 (11 years ago)
Author:
cbyrom
Message:

Improve error handling in the atom controllers + refactor ndgInterface
to remove code from constructor to allow dependency injection - to
improve flexibility and testability. Also, change ambiguous naming
references in classes to minimise codeword overaps/confusion.

Location:
MILK/trunk/milk_server/milk_server
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • MILK/trunk/milk_server/milk_server/config/milkMiddleware.py

    r4599 r4625  
    6868        # set up the validator for atoms - to allow re-use across the app 
    6969        self.globals.validator = AtomValidator(None, self.globals.pwFile, \ 
    70                                        raiseException = True, newLineChar="<br/>", 
     70                                       newLineChar="<br/>", 
    7171                                       isDebug = self.globals.debugAtomEditor) 
    7272 
  • MILK/trunk/milk_server/milk_server/controllers/atom_editor/editatom.py

    r4594 r4625  
    1414from milk_server.models.form import * 
    1515from milk_server.lib import mailer 
    16 from milk_server.lib.ndgInterface import interface  
     16from milk_server.lib.ndgInterface import ndgInterface  
    1717import milk_server.lib.htmlUtilities as utils 
    1818from milk_server.lib.atomutilities import savePageAndRender 
     
    273273        # quite a lot during editing; ensure you've always got  
    274274        # the latest updates loaded 
     275        interface = ndgInterface() 
    275276        status,x = interface.GetXML(uri, useCache=False) 
    276277 
     
    305306            c.errors = {} 
    306307 
    307         try: 
    308             # NB, can get here directly from saveAtom - if there have been errors 
    309             # - in this case keep original data 
    310             if not c.atom: 
    311                 self.prepareDataModel(uri) 
    312         except SystemError, e: 
    313             return self.__handleError(e) 
     308        # NB, can get here directly from saveAtom - if there have been errors 
     309        # - in this case keep original data 
     310        if not c.atom: 
     311            self.prepareDataModel(uri) 
    314312             
    315313        c.title='Editing [%s]' %c.atom.ndgURI 
     
    367365        ''' 
    368366        logging.info("Setting up atom edit template") 
    369         self.prepareEditForm(uri) 
    370  
    371367        try: 
     368            self.prepareEditForm(uri) 
    372369            return savePageAndRender(self.pathInfo, "atom_editor/atom_editor") 
    373370         
     
    376373            c.doc=str(x) 
    377374            logging.error("Error retrieving [%s] - XML content: %s" % (uri, e)) 
    378  
     375        except SystemError, e: 
     376            return self.__handleError(e) 
    379377        except Exception, e: 
    380378            errorMessage = traceback.format_exc() 
  • MILK/trunk/milk_server/milk_server/controllers/atom_editor/listatom.py

    r4596 r4625  
    1515from ndgUtils.vocabtermdata import VocabTermData as VTD, VocabTermItem as VTI 
    1616from milk_server.lib.base import * 
    17 from milk_server.lib.ndgInterface import interface  
    1817import milk_server.lib.htmlUtilities as utils 
    1918from milk_server.lib.atomutilities import savePageAndRender 
  • MILK/trunk/milk_server/milk_server/controllers/browse/retrieve.py

    r4535 r4625  
    55from ndgUtils.models import stubB, DIF 
    66from milk_server.lib import mailer 
    7 from milk_server.lib.ndgInterface import interface  
     7from milk_server.lib.ndgInterface import ndgInterface  
    88from ndgUtils.models.DIF import DIF 
    99from xml.parsers.expat import ExpatError 
     
    5353            return render('error') 
    5454         
     55        interface = ndgInterface() 
    5556        status,x=interface.GetXML(uri,outputSchema=self.outputSchema) 
    5657        if status: 
     
    8687                c.atom = atom 
    8788            else: 
     89                interface = ndgInterface() 
    8890                status,x=interface.GetXML(uri,outputSchema=self.outputSchema, useCache=False) 
    8991                c.xmlh=x 
     
    152154            useCache = False 
    153155             
     156        interface = ndgInterface() 
    154157        status,x=interface.GetXML(uri,outputSchema=self.outputSchema, useCache=useCache) 
    155158        c.title='Viewing [%s]'%self.uri 
  • MILK/trunk/milk_server/milk_server/lib/ndgInterface.py

    r4535 r4625  
    2424     
    2525    def __init__(self): 
    26         ''' Instantiate with three level cache: 
     26        ''' 
     27        Constructor to set up object 
     28        ''' 
     29        self.CSMLDataCache = None 
     30        self.CSMLDocCache = None 
     31        self.XMLHCache = None 
     32 
     33         
     34    def SetupCaches(self, csmlDataCache = None, csmlDocCache = None, \ 
     35                    xmlHCache = None): 
     36        '''  
     37        Set up the required three level cache: 
    2738                - a file cache 
    2839                - a xmlhandler object cache, and 
    29                 - a parsed CSML object cache.''' 
    30  
    31         self.CSMLDataCache=CSMLExtractCache( 
     40                - a parsed CSML object cache. 
     41        @keyword csmlDataCache: an alternative csmlDataCache to use 
     42        @keyword csmlDocCache: an alternative csmlDocCache to use 
     43        @keyword xmlHCache: an alternative xmlHCache to use  
     44        ''' 
     45        logging.info("Setting up ndgInterface caches") 
     46        if csmlDataCache: 
     47            self.CSMLDataCache = csmlDataCache 
     48        else: 
     49            self.CSMLDataCache=CSMLExtractCache( 
    3250                request.environ['paste.config']['app_conf']['tmp_dir'],max_size=10) 
    33         self.CSMLDocCache=Cache(max_size=10) 
    34         self.XMLHCache=Cache(max_size=10) 
     51         
     52        if csmlDocCache: 
     53            self.CSMLDocCache = csmlDocCache 
     54        else: 
     55            self.CSMLDocCache=Cache(max_size=10) 
     56         
     57        if xmlHCache: 
     58            self.XMLHCache = xmlHCache 
     59        else: 
     60            self.XMLHCache=Cache(max_size=10) 
     61        logging.info("Finished setting up caches") 
    3562         
    3663 
     
    74101        else: 
    75102            try: 
     103                if not self.XMLHCache: 
     104                    self.SetupCaches() 
     105                     
    76106                xmlh=self.XMLHCache[uri] 
    77107                status=1 
     
    147177        r=f.read() 
    148178        return 1,r      
    149         
    150  
    151  
    152 interface=ndgInterface() 
Note: See TracChangeset for help on using the changeset viewer.