| Home | Trees | Indices | Help | 
 | 
|---|
|  | 
Curation session. Provides a class design framework that performs all the actions necessary of any data curation activity for the archive where a log is required to be recorded. Also provides a framework for updating the database correctly. All curation tasks should inherit from this class.
Simplest, basic design (see CuSession class documentation for explanation of individual aspects):
 from wsatools.CLI                 import CLI
 from wsatools.DbConnect.CuSession import CuSession
 from wsatools.Logger              import Logger
 class MyCu33(CuSession):
     ''' The first sentence of this description should describe the
         script's purpose for the command-line interface help screen, and
         thus be written with the mandatory arguments in context.
     '''
     # Override these parameters if defaults not satisfactory
     cuNum = 33
     _autoCommit = True
     _useWorkDir = True
     _cleanUpDir = True
     def _onRun(self):
         ''' Tasks this CU performs.
         '''
         # perform tasks
 # Executing script
 cli = CLI(MyCu33.__name__, "$Revision: 9646 $", MyCu33.__doc__)
 Logger.addMessage(cli.getProgDetails())
 cu = MyCu33(cli=cli)
 cu.run()
      Individual curation tasks that inherit this class should override the _onRun() method to define their behaviour, and then invoke the CuSession.run() method to perform the curation task, which performs the exception handling for _onRun(). Override _onException() to perform tidy-up tasks following an exception. For example, to prevent files on the catalogue load server share directory from being deleted on curation failure then override the _onException() set the shareFileID member variable to None:
 def _onException(self):
     CuSession._onException(self)
     self.shareFileID = None
      If the task has a mandatory arguments then these should be defined by overriding the constructor. Always call the CuSession.__init__() method first, and expand upon its interface.
If curating a single programme then initialise the curation session with that programme's ID. For curating multiple programmes add programmeIDs to the programmeID member variable at the appropriate time somewhere within the _onRun() method, e.g.:
 def _onRun(self):
     self.programmeID.add(101)
      If you don't wish for the ProgrammeCurationHistory to be ever updated on curation failure, even with success=no flags, then override the _onException() method to reset the programmeID member variable:
 def _onException(self):
     CuSession._onException(self)
     self.programmeID = set()
Author: R.S. Collins
Organization: WFAU, IfA, University of Edinburgh
Warning: If a CuError is thrown the ACH is not updated, but the log-file is still written. On the next run this log-file will be overwritten, unless the log-file mode is append (like for parallel CUs) - which could be confusing, might be a good idea to change this behaviour...
To Do: Should the success flag be in ACH, and the PCH not updated at all if rolledback = True, in all cases?
| 
 | |||
| CuSession A curation session. | |||
| 
 | |||
| __package__ =  | |||
| Home | Trees | Indices | Help | 
 | 
|---|
| Generated by Epydoc 3.0.1 on Mon Sep 8 15:46:42 2014 | http://epydoc.sourceforge.net |