| 1 |
"""
|
| 2 |
|
| 3 |
MCP_Case_Scan.py
|
| 4 |
|
| 5 |
Created by
|
| 6 |
Emanuel Borges
|
| 7 |
04.08.2009
|
| 8 |
|
| 9 |
This program will run in batch mode and automatically add the SendToIpro menu item to any databases
|
| 10 |
that it finds, which do not have the menu item. This might be changed to add other things to the
|
| 11 |
menu too, in the future.
|
| 12 |
|
| 13 |
NOTE: This needs to be changed so that it actually checks the line. There have been instances where
|
| 14 |
the line is there but it's not complete.
|
| 15 |
|
| 16 |
|
| 17 |
UPDATE: on 7-31-2010 changed name from Concordance_MenuItem_Adder.py to MCP_Case_Scan.py
|
| 18 |
to reflect the fact that it's now a part of th MCP and to add functions.
|
| 19 |
"""
|
| 20 |
|
| 21 |
import ConfigParser,os,ConcordanceHelperTools,MCP_Lib
|
| 22 |
|
| 23 |
|
| 24 |
|
| 25 |
def ProcessCasesMain(caseToProcess = 'ALL'):
|
| 26 |
responsibleCases,casesDir = MCP_Lib.GetCaseList()
|
| 27 |
responsibleCasesMatrix = {}
|
| 28 |
if caseToProcess == 'ALL':
|
| 29 |
pass
|
| 30 |
else:
|
| 31 |
responsibleCases = [caseToProcess]
|
| 32 |
for i in responsibleCases:
|
| 33 |
caseName,clientMatterNumber = i.split("_(")
|
| 34 |
clientMatterNumber = clientMatterNumber[:-1]
|
| 35 |
responsibleCasesMatrix[clientMatterNumber] = caseName
|
| 36 |
responsibleCLMList = responsibleCasesMatrix.keys()
|
| 37 |
|
| 38 |
## if the case is Davita, turn the davita flag on.
|
| 39 |
if '39323308' in responsibleCLMList:
|
| 40 |
davitaFlag = True
|
| 41 |
|
| 42 |
for cliMatt in responsibleCLMList:
|
| 43 |
fullDatabaseList = []
|
| 44 |
print "-"*32
|
| 45 |
print
|
| 46 |
print "Now processing %s"% responsibleCasesMatrix[cliMatt]
|
| 47 |
#os.path.walk(ConcordanceHelperTools.ParseClientMatter(cliMatt), CheckForMenuItem, args)
|
| 48 |
for root, dirs, files in os.walk(ConcordanceHelperTools.ParseClientMatter(cliMatt)):
|
| 49 |
if os.path.split(root)[1] == "Match":
|
| 50 |
pass
|
| 51 |
else:
|
| 52 |
CheckForMenuItem(root, files)
|
| 53 |
databaseList = ConcordanceHelperTools.EnumerateConcordanceDatabases(root, files)
|
| 54 |
fullDatabaseList.extend(databaseList)
|
| 55 |
## If this is davita, grab db names with folder path, grab contents of the cats and contents of global tag dbs.
|
| 56 |
for dbi in databaseList:
|
| 57 |
fullDatabaseMatrix[dbi] = root
|
| 58 |
|
| 59 |
currentDatabaseList = []
|
| 60 |
databaseListFile = os.path.join(casesDir,responsibleCasesMatrix[cliMatt]+"_("+cliMatt+")","DatabaseList.txt")
|
| 61 |
databaseWithPathListFile = os.path.join(casesDir,responsibleCasesMatrix[cliMatt]+"_("+cliMatt+")","DatabaseListWithPaths.txt")
|
| 62 |
print "Checking the database list file..."
|
| 63 |
if os.path.isfile(databaseListFile):
|
| 64 |
currentDatabaseList = open(databaseListFile).readlines()
|
| 65 |
missingFiles = False
|
| 66 |
for db in fullDatabaseList:
|
| 67 |
if db+"\n" in currentDatabaseList:
|
| 68 |
pass
|
| 69 |
else:
|
| 70 |
missingFiles = True
|
| 71 |
if missingFiles:
|
| 72 |
print "Incomplete database list file found. Updating..."
|
| 73 |
outputFile = open(databaseListFile,'w')
|
| 74 |
outputFile2 = open(databaseWithPathListFile,'w')
|
| 75 |
for i in fullDatabaseList:
|
| 76 |
outputFile.write(i+"\n")
|
| 77 |
outputFile2.write(fullDatabaseMatrix[i]+"|"+i+"\n")
|
| 78 |
outputFile.close()
|
| 79 |
outputFile2.close()
|
| 80 |
print "Updating complete."
|
| 81 |
else:
|
| 82 |
print "All databases in list file accounted for."
|
| 83 |
else:
|
| 84 |
print "No database list file found, making a new one.."
|
| 85 |
outputFile = open(databaseListFile,'w')
|
| 86 |
for i in fullDatabaseList:
|
| 87 |
outputFile.write(i+"\n")
|
| 88 |
outputFile.close()
|
| 89 |
print "File created."
|
| 90 |
|
| 91 |
def UpdateDatabaseList(dirName, filesInDir):
|
| 92 |
databaseList = ConcordanceHelperTools.EnumerateConcordanceDatabases(dirName, filesInDir)
|
| 93 |
|
| 94 |
def CheckForMenuItem(dirName, filesInDir):
|
| 95 |
for file in filesInDir:
|
| 96 |
if os.path.isfile(os.path.join(dirName, file)):
|
| 97 |
if os.path.splitext(file)[1].upper() == '.DCB':
|
| 98 |
if os.path.splitext(file)[0][-6:].upper() == '-NOTES':
|
| 99 |
pass
|
| 100 |
elif os.path.splitext(file)[0][-9:].upper() == '-REDLINES':
|
| 101 |
pass
|
| 102 |
elif os.path.exists(os.path.join(dirName,os.path.splitext(file)[0] +'.ini')) == False:
|
| 103 |
print "There is no ini file for %s!!"%file
|
| 104 |
else:
|
| 105 |
iniFile = os.path.splitext(file)[0] +'.ini'
|
| 106 |
## Check to see if it's already there
|
| 107 |
cp = ConfigParser.ConfigParser()
|
| 108 |
cp.read(os.path.join(dirName, iniFile))
|
| 109 |
## I'm only checking for the entire section here, so this needs to
|
| 110 |
## change, if you use it for more than this.
|
| 111 |
if cp.has_section('AddedMenuItems'):
|
| 112 |
if cp.get('AddedMenuItems','default') == "":
|
| 113 |
menuBool = True
|
| 114 |
else:
|
| 115 |
menuBool = False
|
| 116 |
if 'Find Attachments' in cp.get('AddedMenuItems','default'):
|
| 117 |
menuBool = False
|
| 118 |
else:
|
| 119 |
menuBool = True
|
| 120 |
else:
|
| 121 |
menuBool = True
|
| 122 |
if cp.has_section('Settings'):
|
| 123 |
settingsBool = False
|
| 124 |
else:
|
| 125 |
settingsBool = True
|
| 126 |
if menuBool or settingsBool:
|
| 127 |
print
|
| 128 |
print "Missing Menu item from %s. Adding..."%file
|
| 129 |
AddMenuItem(os.path.join(dirName, iniFile), menuBool, settingsBool)
|
| 130 |
|
| 131 |
else:
|
| 132 |
print
|
| 133 |
print "Skipping %s"% file
|
| 134 |
|
| 135 |
|
| 136 |
def AddMenuItem(iniFile,menuBool, settingsBool):
|
| 137 |
#value = """default=Search(Send Query to IPRO,H:\cpl\DDEIQRY.CPL,-1)"""
|
| 138 |
cp = ConfigParser.ConfigParser()
|
| 139 |
cp.read(iniFile)
|
| 140 |
if menuBool:
|
| 141 |
if cp.has_section('AddedMenuItems'):
|
| 142 |
pass
|
| 143 |
else:
|
| 144 |
cp.add_section("AddedMenuItems")
|
| 145 |
cp.set('AddedMenuItems', "default", r"Search(Send Query to IPRO,H:\cpl\DDEIQRY.CPL,-1),Search(Find Attachments, H:\cpl\findattachments.cpl, -1)")
|
| 146 |
if settingsBool:
|
| 147 |
cp.add_section("Settings")
|
| 148 |
cp.set('Settings', "Viewer", r"L:\app\IPRO\i2kprem.exe")
|
| 149 |
cp.set('Settings', "ViewerCPL", r"H:\cpl\DDEIVIEW.CPL")
|
| 150 |
## Back up the ini
|
| 151 |
try:
|
| 152 |
os.rename(iniFile,os.path.splitext(iniFile)[0] + "ini.BAK")
|
| 153 |
except:
|
| 154 |
os.remove(os.path.splitext(iniFile)[0] + "ini.BAK")
|
| 155 |
os.rename(iniFile,os.path.splitext(iniFile)[0] + "ini.BAK")
|
| 156 |
|
| 157 |
|
| 158 |
## Add to the ini
|
| 159 |
outputFile = open(iniFile,'w')
|
| 160 |
cp.write(outputFile)
|
| 161 |
outputFile.close()
|
| 162 |
print
|
| 163 |
print "Added line to %s"% iniFile
|
| 164 |
|
| 165 |
if __name__ == '__main__':
|
| 166 |
ProcessCasesMain('ALL')
|
| 167 |
#responsibleCases,casesDir = MCP_Lib.GetCaseList()
|
| 168 |
#responsibleCasesMatrix = {}
|
| 169 |
#for i in responsibleCases:
|
| 170 |
# caseName,clientMatterNumber = i.split("_(")
|
| 171 |
# clientMatterNumber = clientMatterNumber[:-1]
|
| 172 |
# responsibleCasesMatrix[clientMatterNumber] = caseName
|
| 173 |
#responsibleCLMList = responsibleCasesMatrix.keys()
|
| 174 |
#
|
| 175 |
#
|
| 176 |
#
|
| 177 |
#for cliMatt in responsibleCLMList:
|
| 178 |
# fullDatabaseList = []
|
| 179 |
# print "-"*32
|
| 180 |
# print
|
| 181 |
# print "Now processing %s"% responsibleCasesMatrix[cliMatt]
|
| 182 |
# #os.path.walk(ConcordanceHelperTools.ParseClientMatter(cliMatt), CheckForMenuItem, args)
|
| 183 |
# for root, dirs, files in os.walk(ConcordanceHelperTools.ParseClientMatter(cliMatt)):
|
| 184 |
# if os.path.split(root)[1] == "Match":
|
| 185 |
# pass
|
| 186 |
# else:
|
| 187 |
# CheckForMenuItem(root, files)
|
| 188 |
# databaseList = ConcordanceHelperTools.EnumerateConcordanceDatabases(root, files)
|
| 189 |
# fullDatabaseList.extend(databaseList)
|
| 190 |
# currentDatabaseList = []
|
| 191 |
# databaseListFile = os.path.join(casesDir,responsibleCasesMatrix[cliMatt]+"_("+cliMatt+")","DatabaseList.txt")
|
| 192 |
# print "Checking the database list file..."
|
| 193 |
# if os.path.isfile(databaseListFile):
|
| 194 |
# currentDatabaseList = open(databaseListFile).readlines()
|
| 195 |
# missingFiles = False
|
| 196 |
# for db in fullDatabaseList:
|
| 197 |
# if db+"\n" in currentDatabaseList:
|
| 198 |
# pass
|
| 199 |
# else:
|
| 200 |
# missingFiles = True
|
| 201 |
# if missingFiles:
|
| 202 |
# print "Incomplete database list file found. Updating..."
|
| 203 |
# outputFile = open(databaseListFile,'w')
|
| 204 |
# for i in fullDatabaseList:
|
| 205 |
# outputFile.write(i+"\n")
|
| 206 |
# outputFile.close()
|
| 207 |
# print "Updating complete."
|
| 208 |
# else:
|
| 209 |
# print "All databases in list file accounted for."
|
| 210 |
# else:
|
| 211 |
# print "No database list file found, making a new one.."
|
| 212 |
# outputFile = open(databaseListFile,'w')
|
| 213 |
# for i in fullDatabaseList:
|
| 214 |
# outputFile.write(i+"\n")
|
| 215 |
# outputFile.close()
|
| 216 |
# print "File created."
|
| 217 |
# |