1
2
3
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
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
38
39
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
46 db = DbSession(cli=cli)
47 oldJpgFiles = readdeprjpgs(db)
48
49
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
56 timestamp = utils.makeTimeStamp().replace(' ','_')
57 logFileName = "deprecate_jpegs_"+timestamp+".log"
58 log = Logger(logFileName, path=os.curdir)
59
60 counter = 0
61
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
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
103
104
105
106
107