Package helpers :: Module DeprecateJpegs
[hide private]

Source Code for Module helpers.DeprecateJpegs

  1  #! /usr/bin/env python 
  2  #------------------------------------------------------------------------------ 
  3  #$Id: DeprecateJpegs.py 8690 2011-09-26 15:18:11Z EckhardSutorius $ 
  4  """ 
  5     Move jpegs of FITS files in deprecated FITS dirs to the deprecated_jpegs 
  6     dir and update the DB accordingly. 
  7   
  8     @author: E. Sutorius 
  9     @org:    WFAU, IfA, University of Edinburgh 
 10  """ 
 11  #------------------------------------------------------------------------------ 
 12  from   __future__ import division, print_function 
 13  import os 
 14  import shutil 
 15   
 16  from   wsatools.CLI                 import CLI 
 17  from   wsatools.DbConnect.DbSession import DbSession 
 18  from   wsatools.File                import File 
 19  from   wsatools.Logger              import Logger 
 20  from   wsatools.SystemConstants     import SystemConstants 
 21  import wsatools.Utilities               as utils 
 22  #------------------------------------------------------------------------------ 
 23   
24 -def readdeprjpgs(db):
25 """ Read compFile from the given database. 26 """ 27 deprjpgs = db.query("MFD.multiframeID, MFD.extNum, compFile", 28 fromStr="MultiframeDetector AS MFD, Multiframe AS M", 29 whereStr="MFD.multiframeID=M.multiframeID" 30 " AND fileName like '%deprecated%'" 31 " AND compFile not like '%deprecated%'") 32 33 print("%s deprecated jpegs found." % len(deprjpgs)) 34 return deprjpgs
35 36 #------------------------------------------------------------------------------ 37 # Entry point for script. 38 39 # Allow module to be imported as well as executed from the command line 40 if __name__ == "__main__": 41 cli = CLI("DeprecateJpegs", "$Revision: 8690 $", __doc__) 42 isTestRun = cli.getOpt("test") 43 sysc = SystemConstants(cli.getArg("database").split('.')[-1]) 44 45 # get deprecated JPEGs from the DB 46 db = DbSession(cli=cli) 47 oldJpgFiles = readdeprjpgs(db) 48 49 # path to deprecated jpgs 50 deprTime = utils.makeTimeStamp().split()[0].replace('-','') 51 spacePerDisk = utils.getDiskSpace(sysc.deprecatedDataStorage) 52 deprJpgDir = os.path.join(utils.getNextDisk(sysc, spacePerDisk), 53 '%s_%s' % (sysc.deprecatedComprImDir, deprTime)) 54 55 #create logfile 56 timestamp = utils.makeTimeStamp().replace(' ','_') 57 logFileName = "deprecate_jpegs_"+timestamp+".log" 58 log = Logger(logFileName, path=os.curdir) 59 60 counter = 0 61 # rename deprecated image an copy default image over 62 for mfID, extNum, jpgFileName in oldJpgFiles: 63 jpgFile = File(jpgFileName.replace(sysc.pixelServerHostName, '')) 64 if os.path.exists(jpgFile.name): 65 dateStr = File(jpgFile.name).subdir 66 deprJpgPath = os.path.join(deprJpgDir, dateStr) 67 utils.ensureDirExist(deprJpgPath) 68 deprJpgName = os.path.join(deprJpgPath, jpgFile.base) 69 if jpgFile.name != deprJpgName: 70 Logger.addMessage("renaming: %s => %s" % (jpgFile.name, 71 deprJpgName)) 72 73 if os.path.exists(deprJpgName): 74 # don't rename if destfile exists 75 Logger.addMessage("WARNING: %s exists!" % deprJpgName) 76 else: 77 if not isTestRun: 78 shutil.copy2(jpgFile.name, deprJpgName) 79 os.remove(jpgFile.name) 80 else: 81 print("Test, nothing copied.") 82 else: 83 Logger.addMessage( 84 "Deprecated file %s exists already!" % deprJpgName) 85 86 compEntry = "'%s%s'" % (sysc.pixelServerHostName, deprJpgName) 87 if not isTestRun: 88 counter += db.update( 89 "MultiframeDetector", 90 [('compFile', compEntry)], 91 "multiframeID=%s AND extNum=%s" % (mfID, extNum)) 92 else: 93 Logger.addMessage("UPDATE MultiframeDetector compFile=%s" 94 " WHERE multiframeID=%s AND extNum=%s" %( 95 compEntry, mfID, extNum)) 96 else: 97 Logger.addMessage("WARNING: " + jpgFile.name + " doesn't exist!") 98 99 Logger.addMessage("Log written to %s"%os.path.join(os.curdir, logFileName)) 100 101 #------------------------------------------------------------------------------ 102 # Change log: 103 # 104 # 8-Feb-2006, ETWS: First Version 105 # 22-Feb-2007, RSC: Updated to reflect move of loadServerHost() constant from 106 # DbConstants to SystemConstants 107