Package helpers :: Module DeprecateReprocessedStacks
[hide private]

Source Code for Module helpers.DeprecateReprocessedStacks

  1  #! /usr/bin/env python 
  2  #------------------------------------------------------------------------------ 
  3  #$Id: DeprecateReprocessedStacks.py 6450 2009-12-06 17:23:19Z RossCollins $ 
  4  """ 
  5     Deprecates stacks in given directory that CASU have reprocessed for 
  6     Nottingham, but have not yet been ingested into the WSA. 
  7   
  8     @author: N.J.G. Cross 
  9     @org:    WFAU, IfA, University of Edinburgh 
 10   
 11     @newfield contributors: Contributors, Contributors (Alphabetical Order) 
 12     @contributors: R.S. Collins 
 13  """ 
 14  #------------------------------------------------------------------------------ 
 15  import os 
 16   
 17  from   wsatools.CLI                 import CLI 
 18  from   wsatools.DbConnect.DbSession import DbSession 
 19  from   wsatools.Logger              import Logger 
 20  from   wsatools.SystemConstants     import DepCodes 
 21  import wsatools.Utilities               as utils 
 22  #------------------------------------------------------------------------------ 
 23  # Entry point for script. 
 24   
 25  # Allow module to be imported as well as executed from the command line 
 26  if __name__ == '__main__': 
 27      CLI.progArgs.append(CLI.Argument('directory', 
 28          '/djoser/home/njc/test/products/swarpMos/20071110')) 
 29      cli = CLI("Deprecator", "$Revision: 6450 $", __doc__) 
 30      Logger.addMessage(cli.getProgDetails()) 
 31   
 32      db = DbSession(autoCommit=True, cli=cli) 
 33   
 34      tstamp = os.path.basename(cli.getArg('directory')).split('_v')[0] 
 35      filePath = os.path.join(cli.getArg('directory'), 'prov%s.dat' % tstamp) 
 36   
 37      reprocessedFiles = [] 
 38      badExtDict = {} 
 39      for fileName, extInfo, reprocessed \ 
 40       in utils.extractColumns(filePath, (0,9,10)): 
 41          if reprocessed == '1': 
 42              reprocessedFiles.append(fileName) 
 43          if extInfo != '1,2,3,4': 
 44              extList = map(int, extInfo.split(',')) 
 45              badExt = [str(index+1) for index in range(1,5,1) 
 46                                      if index not in extList] 
 47              if badExt: 
 48                  badExtDict[fileName] = badExt 
 49   
 50      Logger.addMessage( 
 51        "Provenance list contains %s multiframes that need to be deprecated" 
 52        % len(reprocessedFiles)) 
 53   
 54      numDeprecated = db.queryNumRows("Multiframe", 
 55        whereStr="deprecated >= %s AND fileName in (%s)" % 
 56        (DepCodes.reprocCASU, ','.join(map(repr, reprocessedFiles)))) 
 57   
 58      Logger.addMessage( 
 59        "%s..Multiframe contains %s multiframes that have already been " 
 60        "deprecated." % (db.database, numDeprecated)) 
 61   
 62      Logger.addMessage( 
 63        "Updating reprocessed multiframes to mark as deprecated.") 
 64   
 65      numUpdated = db.update("Multiframe", 
 66        'deprecated=(deprecated | %s)' % DepCodes.reprocCASU, 
 67        where="fileName in (%s)" % ','.join(map(repr, reprocessedFiles))) 
 68   
 69      Logger.addMessage("Number of Multiframe rows affected: %s" % numUpdated) 
 70   
 71      mfidDict = dict(db.query( 
 72        selectStr="fileName, multiframeID", 
 73          fromStr="Multiframe", 
 74         whereStr="fileName in (%s)" % ",".join(map(repr, badExtDict.keys())))) 
 75   
 76      numExpDep=0 
 77      numDeprecated = 0 
 78      numUpdated = 0 
 79      for fileName in badExtDict: 
 80          numExpDep += len(badExtDict[fileName]) 
 81   
 82          numDeprecated += db.queryNumRows("MultiframeDetector", 
 83            whereStr="deprecated >= %s AND multiframeID = %s AND extNum IN (%s)" 
 84                    % (DepCodes.reprocCASU, mfidDict[fileName], 
 85                       ",".join(badExtDict[fileName]))) 
 86   
 87          numUpdated += db.update("MultiframeDetector", 
 88            'deprecated = (deprecated | %s)' % DepCodes.reprocCASU, 
 89            where="multiframeID=%s and extNum in (%s)" % 
 90                  (mfidDict[fileName], ",".join(badExtDict[fileName]))) 
 91   
 92      Logger.addMessage( 
 93        "Number of MultiframeDetector rows affected: %s" % numUpdated) 
 94      Logger.addMessage( 
 95        "Provenance list contains %s multiframe extensions that need to be " 
 96        "deprecated." % (numExpDep)) 
 97      Logger.addMessage( 
 98        "%s..MultiframeDetector contains %d multiframe extensions that have " 
 99        "already been deprecated." % (db.database, numDeprecated)) 
100   
101      Logger.addMessage("Finished.") 
102   
103  #------------------------------------------------------------------------------ 
104  # Change log: 
105  # 
106  # 22-Nov-2007,  NJC: Original version. 
107  # 14-Feb-2008,  RSC: Updated for new DbSession interface, and tidied. 
108