ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/MCP/Trunk/MCP_CopyUp_Request_UI.py
Revision: 232
Committed: Wed Dec 19 20:55:55 2012 UTC (13 years, 3 months ago) by nino.borges
Content type: text/x-python
Original Path: Python/NinoCode/Active_prgs/MCP/MCP_CopyUp_Request_UI.py
File size: 18927 byte(s)
Log Message:
changed expire date on chai v8 and 10. Added GatherSize to MCP lib.

File Contents

# User Rev Content
1 ninoborges 8 """
2    
3     MCP_CopyUp_Request_UI
4    
5     Created by
6     Emanuel Borges
7     10.25.2010
8    
9     This is the GUI to the MCP_CopyUp_Request program.
10    
11     """
12    
13     import wx, MCP_Lib, MCP_CopyUp_Request,os
14     import wx.lib.filebrowsebutton as filebrowse
15    
16     class MyFrame(wx.Frame):
17     def __init__(self, parent, ID, title, pos=wx.DefaultPosition):
18 nino.borges 203 wx.Frame.__init__(self, parent, ID, title, pos, size =(585,450))
19 ninoborges 8 self.panel = wx.Panel(self,-1)
20     #self.panel.SetBackgroundColour("yellow green")
21     casesListStaticText = wx.StaticText(self.panel, -1, "Select Case: ",wx.DefaultPosition)
22 nino.borges 189 #casesList,casesDir = MCP_Lib.GetCaseList()
23 nino.borges 232 print "connecting to matter tracking access db..."
24     self.accessDB = MCP_Lib.AccessDBConnection(r"\\chiads01\app\DS_CaseTrack\TPM_CaseTracking.mdb")
25     print "connected to DB."
26     self.myCases, self.officeCases, self.allCases, casesDir = MCP_Lib.GetCaseList('',self.accessDB)
27 nino.borges 189 self.casesListChoice = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=self.myCases)
28 ninoborges 8 platformStaticText = wx.StaticText(self.panel, -1, "Select Platform:",wx.DefaultPosition)
29     platformChoices = ["Concordance DIS","Concordance LN","Relativity"]
30     self.platformListChoice = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=platformChoices)
31 nino.borges 203 #workDirStaticText = wx.StaticText(self.panel, -1, "Select Work Dir:",wx.DefaultPosition)
32     #self.workDirControl = wx.TextCtrl(self.panel,-1,os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"), size=(296,-1))
33     #workDirBrowseButton = wx.Button(self.panel, -1, "Browse", (10, 10))
34 ninoborges 8
35    
36     self.radio1 = wx.RadioButton(self.panel, -1, 'Individual File',style=wx.RB_GROUP)
37     self.fileBowserControl = wx.TextCtrl(self.panel, -1,size=(296,-1))
38     self.fileBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
39    
40     self.requestAssistanceCheckBox = wx.CheckBox(self.panel,-1,": Request Data Analyst Assistance")
41     self.requestAssistanceCheckBox.Enable(False) ## Change me when you go live with this service.
42    
43     self.radio2 = wx.RadioButton(self.panel, -1, 'Entire folder of Files')
44     self.dirBowserControl = wx.TextCtrl(self.panel, -1, size=(296,-1))
45     self.dirBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
46     self.dirBowserControl.Enable(False)
47     self.dirBowserButton.Enable(False)
48    
49 nino.borges 203 self.radio3 = wx.RadioButton(self.panel, -1, 'From Vendor Folder')
50     self.vendorBowserControl = wx.TextCtrl(self.panel, -1, size=(296,-1))
51     self.vendorBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
52     self.vendorBowserControl.Enable(False)
53     self.vendorBowserButton.Enable(False)
54 ninoborges 8
55 nino.borges 203
56 ninoborges 8 self.CreateBoxesSection()
57     copyUpTypeStaticBox = wx.StaticBox(self.panel, -1, 'Copy Up:')
58     copyUpTypeStaticBoxSizer = wx.StaticBoxSizer(copyUpTypeStaticBox, wx.VERTICAL)
59    
60     radio1Sizer = wx.FlexGridSizer(1,3,10,10)
61     radio1Sizer.Add(self.radio1, 0, 0)
62     radio1Sizer.Add(self.fileBowserControl, 0)
63     radio1Sizer.Add(self.fileBowserButton, 0)
64     copyUpTypeStaticBoxSizer.Add(radio1Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
65 nino.borges 203
66 ninoborges 8 radio2Sizer = wx.FlexGridSizer(1,3,10,10)
67     radio2Sizer.Add(self.radio2, 0)
68     radio2Sizer.Add(self.dirBowserControl, 0)
69     radio2Sizer.Add(self.dirBowserButton, 0)
70 nino.borges 203
71 ninoborges 8 copyUpTypeStaticBoxSizer.Add(radio2Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
72 nino.borges 203 radio3Sizer = wx.FlexGridSizer(1,3,10,10)
73     radio3Sizer.Add(self.radio3, 0)
74     radio3Sizer.Add(self.vendorBowserControl, 0)
75     radio3Sizer.Add(self.vendorBowserButton, 0)
76     copyUpTypeStaticBoxSizer.Add(radio3Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
77 ninoborges 8
78     casesSizer = wx.FlexGridSizer(2,2,15,5)
79     casesSizer.Add(casesListStaticText)
80     casesSizer.Add(self.casesListChoice)
81     casesSizer.Add(platformStaticText)
82     casesSizer.Add(self.platformListChoice)
83     #casesSizer = wx.BoxSizer(wx.HORIZONTAL)
84     #casesSizer.Add(casesListStaticText,0,wx.ALL,5)
85     #casesSizer.Add(self.casesListChoice,0,wx.ALL,5)
86     #casesSizer.Add(platformStaticText,0,wx.ALL,5)
87     #casesSizer.Add(self.platformListChoice,0,wx.ALL,5)
88 nino.borges 203 #workDirSizer = wx.BoxSizer(wx.HORIZONTAL)
89     #workDirSizer.Add(workDirStaticText,0,wx.ALL,5)
90     #workDirSizer.Add(self.workDirControl,0,wx.ALL,5)
91     #workDirSizer.Add(workDirBrowseButton,0,wx.ALL,5)
92 ninoborges 8 mainSizer = wx.BoxSizer(wx.VERTICAL)
93     mainSizer.Add(casesSizer,0,wx.ALL, 20)
94 nino.borges 203 #mainSizer.Add(workDirSizer,0,wx.ALL, 10)
95 ninoborges 8 mainSizer.Add(copyUpTypeStaticBoxSizer, 0, wx.ALL, 10)
96     mainSizer.Add(self.requestAssistanceCheckBox,0,wx.ALL|wx.ALIGN_CENTER,5)
97 nino.borges 203
98    
99 ninoborges 8 mainSizer.Add(self.buttonSizer,0, wx.ALL|wx.ALIGN_BOTTOM|wx.ALIGN_CENTER, 10)
100    
101     self.panel.SetSizer(mainSizer)
102 nino.borges 189 self.CreateMenuBar()
103 ninoborges 8 self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio1)
104     self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio2)
105 nino.borges 203 self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio3)
106     #self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, workDirBrowseButton)
107 ninoborges 8 self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.fileBowserButton)
108     self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.dirBowserButton)
109 nino.borges 203 self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.vendorBowserButton)
110 ninoborges 8 self.Bind(wx.EVT_BUTTON, self.OnProcess, self.oKButton)
111     self.Bind(wx.EVT_BUTTON, self.CloseWindow, self.cancelButton)
112    
113     def OnRadio(self,event):
114     radioObj = event.GetEventObject()
115     selection = radioObj.GetLabel()
116     if selection == "Individual File":
117     self.fileBowserControl.Enable(True)
118     self.fileBowserButton.Enable(True)
119    
120     self.dirBowserControl.Enable(False)
121     self.dirBowserButton.Enable(False)
122 nino.borges 203 self.vendorBowserControl.Enable(False)
123     self.vendorBowserButton.Enable(False)
124    
125 ninoborges 8 self.dirBowserControl.SetValue("")
126 nino.borges 203 self.vendorBowserControl.SetValue("")
127    
128     elif selection == "Entire folder of Files":
129     self.dirBowserControl.Enable(True)
130     self.dirBowserButton.Enable(True)
131    
132     self.fileBowserControl.Enable(False)
133     self.fileBowserButton.Enable(False)
134     self.vendorBowserControl.Enable(False)
135     self.vendorBowserButton.Enable(False)
136    
137     self.fileBowserControl.SetValue("")
138     self.vendorBowserControl.SetValue("")
139    
140 ninoborges 8 else:
141 nino.borges 203 self.vendorBowserControl.Enable(True)
142     self.vendorBowserButton.Enable(True)
143    
144 ninoborges 8 self.fileBowserControl.Enable(False)
145     self.fileBowserButton.Enable(False)
146 nino.borges 203 self.dirBowserControl.Enable(False)
147     self.dirBowserButton.Enable(False)
148    
149 ninoborges 8 self.fileBowserControl.SetValue("")
150 nino.borges 203 self.dirBowserControl.SetValue("")
151 ninoborges 8
152     #if self.selectedText:
153     # self.selectedText.Enable(False)
154     #radioSelected = event.GetEventObject()
155     #text = self.texts[radioSelected.GetLabel()]
156     #text.Enable(True)
157     #self.selectedText = text
158    
159     def OnBrowseClick(self,event):
160     eventCode = event.GetId()
161     #print eventCode
162 nino.borges 203 #if eventCode == -209:
163     # dlg = wx.DirDialog(self, message = "Working Directory Path: ", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
164     # if dlg.ShowModal() == wx.ID_OK:
165     # dirPath = dlg.GetPath()
166     # dlg.Destroy()
167     # self.workDirControl.SetValue(dirPath)
168 ninoborges 8 if eventCode == -209:
169     dlg = wx.FileDialog(self, message="Select file to copy up:",defaultDir=os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"), defaultFile="",wildcard= "*.*",style=wx.OPEN | wx.CHANGE_DIR)
170     #dlg = wx.FileDialog(self, message = "Select directory to copy up: ", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
171     if dlg.ShowModal() == wx.ID_OK:
172     filePath = dlg.GetPath()
173     dlg.Destroy()
174     self.fileBowserControl.SetValue(filePath)
175 nino.borges 203 elif eventCode == -213:
176 ninoborges 8 dlg = wx.DirDialog(self, message = "Select directory to copy up:", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
177     if dlg.ShowModal() == wx.ID_OK:
178     dirPath = dlg.GetPath()
179     dlg.Destroy()
180     self.dirBowserControl.SetValue(dirPath)
181 nino.borges 203 elif eventCode == -216:
182 nino.borges 232 platform = self.platformListChoice.GetStringSelection()
183     if platform == 'Concordance LN':
184     platform = 'Concordance'
185     elif platform == 'Concordance DIS':
186     platform = None
187     if platform:
188     expdtObj = MCP_Lib.ExpeDatConnection(platform)
189     caseName = self.casesListChoice.GetStringSelection()
190     clientMatter = caseName.split("_(")[1]
191     clientMatter = clientMatter[:-1]
192     clientMatter = clientMatter.replace('-','.')
193     vendorFolder = self.accessDB.GetVendorFolderPath(clientMatter)
194     if vendorFolder:
195     folderMatrix = expdtObj.GatherFullDirListMatrix('Uploads/%s'%vendorFolder)
196     dlg = VendorBrowserDialog(self,vendorFolder,folderMatrix)
197     if dlg.ShowModal() == wx.ID_OK:
198     vendorPath = dlg.GetValues()
199     dlg.Destroy()
200     self.vendorBowserControl.SetValue(vendorPath)
201     else:
202     diag = wx.MessageDialog(self,"MCP: No vendor folder is currently linked to this case.","Does not exist",wx.OK | wx.ICON_INFORMATION)
203     diag.ShowModal()
204     diag.Destroy()
205     else:
206     diag = wx.MessageDialog(self,"MCP: Copying from LN to DIS is not yet supported.","ERROR",wx.OK | wx.ICON_INFORMATION)
207     diag.ShowModal()
208     diag.Destroy()
209 ninoborges 8
210     def CreateBoxesSection(self):
211     self.oKButton = wx.Button(self.panel, wx.ID_OK)
212     self.oKButton.SetDefault()
213     self.oKButton.SetSize(self.oKButton.GetBestSize())
214     self.cancelButton = wx.Button(self.panel, wx.ID_CANCEL)
215     self.cancelButton.SetSize(self.cancelButton.GetBestSize())
216     self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
217     self.buttonSizer.Add(self.oKButton,0,wx.ALL,10)
218     self.buttonSizer.Add(self.cancelButton,0,wx.ALL,10)
219    
220 nino.borges 189 def MenuData(self):
221     return(("View",
222     ("My Cases", "Chooses from your assigned cases.",self.OnChangeCaseView,"RADIO"),
223     ("My Office Cases", "Chooses from cases assigned to everyone in your office.",self.OnChangeCaseView,"RADIO"),
224     ("All Cases", "Chooses from all cases.",self.OnChangeCaseView,"RADIO")),
225 nino.borges 203 ("&Settings",
226     ("&Working Directory", "Allows you to change the local Buffer directory.", self.OnChangeWorkDir,"")),
227 nino.borges 189 ("&Help",
228     ("&About", "Displays the About Window.", self.OnAbout,"")))
229    
230     def CreateMenuBar(self):
231     menuBar = wx.MenuBar()
232     count = 1
233     for eachMenuData in self.MenuData():
234     menuLabel = eachMenuData[0]
235     menuItems = eachMenuData[1:]
236     menuBar.Append(self.CreateMenu(menuItems), menuLabel)
237     count = count + 1
238     self.SetMenuBar(menuBar)
239    
240    
241     def CreateMenu(self, menuData):
242     menu = wx.Menu()
243     for eachLabel, eachStatus, eachHandler, eachType in menuData:
244     if not eachLabel:
245     menu.AppendSeparator()
246     continue
247     if eachType == "RADIO":
248     menuItem = menu.AppendRadioItem(-1,eachLabel,eachStatus)
249     else:
250     menuItem = menu.Append(-1, eachLabel, eachStatus)
251     self.Bind(wx.EVT_MENU, eachHandler, menuItem)
252     return menu
253    
254 ninoborges 8 def CloseWindow(self, event):
255     self.Close(True)
256 nino.borges 189
257     def OnChangeCaseView(self,event):
258     self.casesListChoice.Clear()
259     eventID = event.GetId()
260     if eventID == 100:
261     #change it to my cases
262     self.casesListChoice.SetItems(self.myCases)
263    
264    
265     if eventID == 101:
266     #change it to office cases
267     self.casesListChoice.SetItems(self.officeCases)
268    
269    
270     if eventID == 102:
271     #change it to all cases
272     self.casesListChoice.SetItems(self.allCases)
273    
274    
275 nino.borges 203 def OnChangeWorkDir(self,event):
276     pass
277 ninoborges 8
278     def OnProcess(self, event):
279     caseName = self.casesListChoice.GetStringSelection()
280     platform = self.platformListChoice.GetStringSelection()
281     workDir = self.workDirControl.GetValue()
282     #workDir = r"E:"
283     if self.radio1.GetValue():
284     startSelection = self.fileBowserControl.GetValue()
285     else:
286     startSelection = self.dirBowserControl.GetValue()
287     #startSelection = r"C:\Documents and Settings\eborges\Desktop\Working\Misc_Documents.zip"
288     self.Show(False)
289     #print "workdir is %s"%workDir
290     MCP_CopyUp_Request.Process(caseName, workDir, startSelection, platform)
291    
292     #diag = wx.MessageDialog(self,"All Items processed and copied!!", "Complete",wx.OK | wx.ICON_INFORMATION)
293     #diag.ShowModal()
294     #diag.Destroy()
295     self.Destroy()
296    
297 nino.borges 189 def OnAbout(self, event):
298     """
299     OnAbout(self,event) Displays an about dialog with developer and bug reporting info
300     """
301     dlg = wx.MessageDialog(self, "MCP is a case organization program.\n"
302     "\n\n"
303     "For questions or comments about this program\n"
304     "or to report a bug, please email the program\n"
305     "creator at Nino.Borges@gmail.com\n\n"
306     "MCP is\n"
307     "Copyright (c) 2011 Emanuel Borges.\n"
308     "All rights reserved.\n"
309     "(Nino.Borges@gmail.com)\n",
310     "About MCP", wx.OK | wx.ICON_INFORMATION)
311     dlg.ShowModal()
312     dlg.Destroy()
313 ninoborges 8
314    
315 nino.borges 203 class VendorBrowserDialog(wx.Dialog):
316     def __init__(self, parent, vendorFolder, treeMatrix):
317     wx.Dialog.__init__(self, parent, -1, "Vendor Folder Browser", style = wx.DEFAULT_DIALOG_STYLE, size = (300,400))
318     #wx.Dialog.__init__(self, parent,title= "Vendor Folder Browser", size = (300,400))
319     self.vendorFolder = vendorFolder
320    
321     il = wx.ImageList(16,16)
322     self.fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,wx.ART_OTHER, (16,16)))
323     self.fldropenidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,wx.ART_OTHER, (16,16)))
324     self.fileidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE,wx.ART_OTHER, (16,16)))
325    
326     self.vendorTree = wx.TreeCtrl(self, size=(200,310))
327     self.vendorTree.AssignImageList(il)
328    
329     rootVendorFolderId = self.vendorTree.AddRoot(vendorFolder)
330    
331     self.AddTreeNodes(rootVendorFolderId, treeMatrix)
332     #childVendorFolderId2 = self.vendorTree.AppendItem(rootVendorFolderId,"test2")
333     #childVendorFolderId = self.vendorTree.AppendItem(childVendorFolderId2,"test")
334     self.vendorTree.Expand(rootVendorFolderId)
335    
336    
337     self.vendorTree.SetItemImage(rootVendorFolderId, self.fldridx, wx.TreeItemIcon_Normal)
338     self.vendorTree.SetItemImage(rootVendorFolderId, self.fldropenidx, wx.TreeItemIcon_Expanded)
339     ## this will need a if its a file do this else do the previous
340     #self.vendorTree.SetItemImage(childVendorFolderId, self.fileidx, wx.TreeItemIcon_Normal)
341    
342     mainSizer = wx.BoxSizer(wx.VERTICAL)
343     mainSizer.Add(self.vendorTree, 0, wx.EXPAND|wx.ALL, 5)
344    
345     oKButton = wx.Button(self, wx.ID_OK)
346     oKButton.SetDefault()
347     cancelButton = wx.Button(self, wx.ID_CANCEL)
348     buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
349     buttonSizer.Add(oKButton,0,wx.ALL,5)
350     buttonSizer.Add(cancelButton,0,wx.ALL,5)
351     mainSizer.Add(buttonSizer, 0, wx.ALIGN_CENTER|wx.ALL, 15)
352     self.SetSizer(mainSizer)
353     self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.vendorTree)
354 ninoborges 8
355 nino.borges 203 def AddTreeNodes(self, parentItem, items):
356     """
357     Recursively traverses the data structure, adding tree nodes to
358     match it.
359     """
360     for item in items:
361     if type(item) == str:
362     newItem = self.vendorTree.AppendItem(parentItem, item)
363     #self.tree.SetItemText(newItem, "A description of %s" % item, 1)
364     self.vendorTree.SetItemImage(newItem, self.fileidx,
365     wx.TreeItemIcon_Normal)
366     else:
367     newItem = self.vendorTree.AppendItem(parentItem, item[0])
368     #self.tree.SetItemText(newItem, "A description of %s" % item[0], 1)
369     self.vendorTree.SetItemImage(newItem, self.fldridx,
370     wx.TreeItemIcon_Normal)
371     self.vendorTree.SetItemImage(newItem, self.fldropenidx,
372     wx.TreeItemIcon_Expanded)
373    
374     self.AddTreeNodes(newItem, item[1])
375    
376     def OnSelChanged(self, event):
377     self.item = event.GetItem()
378     if self.item:
379     self.vendorFileSelected = self.vendorTree.GetItemText(self.item)
380     event.Skip()
381    
382     def GetValues(self):
383     vendorPath = self.vendorFileSelected
384     upItem = self.vendorTree.GetItemParent(self.item)
385     while upItem:
386     vendorPath = os.path.join(self.vendorTree.GetItemText(upItem),vendorPath)
387     upItem = self.vendorTree.GetItemParent(upItem)
388     return vendorPath
389    
390    
391 ninoborges 8 class MyApp(wx.App):
392     def OnInit(self):
393     prgVersion = MCP_Lib.GetMCPVersion()
394     self.frame = MyFrame(None, -1, "MCP Copy Up Request %s"%prgVersion)
395     self.frame.Show(True)
396     self.SetTopWindow(self.frame)
397     return True
398    
399    
400     if __name__ == '__main__':
401     app = MyApp(0)
402     app.MainLoop()