1
2
3
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
24
25
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
105
106
107
108