def load_data(self): data = dict(DataManagement.read_candidate_data()) for key, value in data.iteritems(): if data[key].visitset is not None: # skip the search if visitset = None current_visitset = data[key].visitset # set this candidate.visitset for the next step # gather information about the candidate # this candidatekey is not printed on screen but saved with the new Scheduler object candidatekey = data[key].uid candidate_firstname = data[key].firstname candidate_lastname = data[key].lastname candidate_fullname = str(candidate_firstname + ' ' + candidate_lastname) for key, value in current_visitset.iteritems(): if current_visitset[key].status is not None: status = current_visitset[key].status visit_label = current_visitset[key].visitlabel if current_visitset[key].when is None: when = current_visitset[key].whenearliest else: when = current_visitset[key].when if current_visitset[key].where is None: where = '' else: where = current_visitset[key].where try: self.datatable.insert('', 'end', values=[candidate_fullname, visit_label, when, where, status], tags=(status, candidatekey, visit_label)) except Exception as e: print "datatable.VisitList.load_data ", str(e) # TODO add proper error handling pass
def load_data(self): data = dict(DataManagement.read_candidate_data()) try: for key in data: if data[key].status is None: status = '' else: status = data[key].status self.datatable.insert('', 'end', values=[data[key].pscid, data[key].firstname, data[key].lastname, data[key].phone, status], tags=(status, data[key].uid)) except Exception as e: print "datatable.ParticipantsList.load_data ", str(e) # TODO proper exception handling pass
def capture_data(self): """ Grap the information from the window's text field and save the candidate information based on candidate_uid. """ # open the 'database' db = dict(DataManagement.read_candidate_data()) # and find candidate based on uid uid = self.candidate_uid candidate = db[uid] # capture data from fields candidate.pscid = self.text_pscid.get() candidate.status = self.text_status.get() candidate.firstname = self.text_firstname.get() candidate.lastname = self.text_lastname.get() candidate.phone = self.text_phone.get() # save data DataManagement.save_candidate_data(db)
import candidate import visit import datetime import lib.datamanagement as datamanagement #loading data candidatedb = dict(datamanagement.read_candidate_data()) #GUI: selecting a candidate from db #print '\nGUI: SELECTING ONE CANDIDATE,...' happycandidate = candidatedb.get("a045a530-a31f-11e4-9c66-fc4dd4d3c3f3") #Upon setting the first visit with a candidate, we will dump a complete visitset into candidate.visitset #set values of : visitlabel, visitdate, visittime, where, whom #print '\nGUI: ...AND SETTING UP THE FIRST VISIT (date, time...)' #print 'system: collecting information from application' visitlabel = 'V0' #TODO selection from droplist visitdate = '2014-12-22' #TODO add regex controls visittime = '13:15' #TODO add regex controls visitwhere = 'CRIUGM lobby' visitwhom = 'me' #print 'system: create visitset instance if necessary and add collected information to proper visit in Candidate.visitset' thisvisit = happycandidate.set_visit_date(visitlabel, visitdate, visittime, visitwhere, visitwhom) happycandidate.set_next_visit_window(happycandidate, thisvisit) #print'\nGUI: NOW THIS CANDIDATE HAS A DATE FOR HIS/HER FIRST VISIT + A RANGE FOR THE FOLLOWING VISIT' #print '\nGUI: put on screen all active visits (sorted by datetime) => see test3.py' datamanagement.save_candidate_data(candidatedb) #TESTED
def body(self, master, candidate): """Creates the body of 'datawindow'. param candidate is the candidate.uuid""" try: data = dict(DataManagement.read_candidate_data()) # TODO better way to do this candidate = data.get(candidate) except Exception as e: print "datawindow.body ", str(e) # TODO manage exceptions # Candidate section self.candidate_pane = Labelframe(self, text=MultiLanguage.candidate_pane, width=250, height=350, borderwidth=10) self.candidate_pane.pack(side=TOP, expand=YES, fill=BOTH, padx=5, pady=5) # object unique id - does not appear on gui but needed to keep track of this candidate self.candidate_uid = candidate.uid # PSCID self.label_pscid = Label(self.candidate_pane, text=MultiLanguage.candidate_pscid) self.label_pscid.grid(column=0, row=0, padx=10, pady=5, sticky=N+S+E+W) self.text_pscid_var = StringVar() self.text_pscid_var.set(candidate.pscid) self.text_pscid = Entry(self.candidate_pane, textvariable=self.text_pscid_var) self.text_pscid.grid(column=0, row=1, padx=10, pady=5, sticky=N+S+E+W) # status self.label_status = Label(self.candidate_pane, text=MultiLanguage.candidate_status) self.label_status.grid(column=1, row=0, padx=10, pady=5, sticky=N+S+E+W) self.text_status_var = StringVar() self.text_status_var.set(candidate.status) self.text_status = Entry(self.candidate_pane, textvariable=self.text_status_var) self.text_status.grid(column=1, row=1, padx=10, pady=5, sticky=N+S+E+W) # firstname self.label_firstname = Label(self.candidate_pane, text=MultiLanguage.candidate_firstname) self.label_firstname.grid(column=0, row=2, padx=10, pady=5, sticky=N+S+E+W) self.text_firstname_var = StringVar() self.text_firstname_var.set(candidate.firstname) self.text_firstname = Entry(self.candidate_pane, textvariable=self.text_firstname_var) self.text_firstname.grid(column=0, row=3, padx=10, pady=5, sticky=N+S+E+W) # lastname self.label_lastname = Label(self.candidate_pane, text=MultiLanguage.candidate_lastname) self.label_lastname.grid(column=1, row=2, padx=10, pady=5, sticky=N+S+E+W) self.text_lastname_var = StringVar() self.text_lastname_var.set(candidate.lastname) self.text_lastname = Entry(self.candidate_pane, textvariable=self.text_lastname_var) self.text_lastname.grid(column=1, row=3, padx=10, pady=5, sticky=N+S+E+W) # phone number self.label_phone = Label(self.candidate_pane, text=MultiLanguage.candidate_phone) self.label_phone.grid(column=2, row=2, padx=10, pady=5, sticky=N+S+E+W) self.text_phone_var = StringVar() self.text_phone_var.set(candidate.phone) self.text_phone = Entry(self.candidate_pane, textvariable=self.text_phone_var) self.text_phone.grid(column=2, row=3, padx=10, pady=5, sticky=N+S+E+W) # Schedule Section - displayed as a table self.schedule_pane = Labelframe(self, text=MultiLanguage.schedule_pane, width=250, height=350, borderwidth=10) self.schedule_pane.pack(side=TOP, expand=YES, fill=BOTH, padx=5, pady=5) # top row (header) self.label_visit_rank = Label(self.schedule_pane, text=MultiLanguage.schedule_visit_rank) self.label_visit_rank.grid(column=0, row=0, padx=5, pady=5, sticky=N+S+E+W) self.label_visit_label = Label(self.schedule_pane, text=MultiLanguage.col_visitlabel) self.label_visit_label.grid(column=1, row=0, padx=5, pady=5, sticky=N+S+E+W) self.label_visit_when = Label(self.schedule_pane, text=MultiLanguage.col_when) self.label_visit_when.grid(column=2, row=0, padx=5, pady=5, sticky=NSEW) self.label_visit_status = Label(self.schedule_pane, text=MultiLanguage.col_where) self.label_visit_status.grid(column=3, row=0, padx=5, pady=5, sticky=N+S+E+W) self.label_visit_status = Label(self.schedule_pane, text=MultiLanguage.col_withwhom) self.label_visit_status.grid(column=4, row=0, padx=5, pady=5, sticky=N+S+E+W) self.label_visit_status = Label(self.schedule_pane, text=MultiLanguage.col_status) self.label_visit_status.grid(column=5, row=0, padx=5, pady=5, sticky=N+S+E+W) """ PSEUDOCODE 1. Get candidate.visitset 2. Parse into a sorted list (sorted on visit.rank) 3. Print data on screen visit_set = candidate.visitset for key, value in study_setup.iteritems(): visit_list.append(study_setup[key]) visit_list = sorted(visit_list, key=lambda visit: visit.rank) for key, value in visit_list.iteritems(): """ # TODO add logic "foreach" to create a table showing each visit import lib.utilities as Utilities # TODO delete when done # 1- Get candidate visitset and parse into a list visit_list = [] visitset = candidate.visitset if visitset is None: print 'no visit yet' else: for key, value in visitset.iteritems(): visit_list.append(visitset[key]) # 2- Sort list on visit.rank visit_list = sorted(visit_list, key=lambda visit: visit.rank) # 3- 'print' values on ui x = 0 for x in range(len(visit_list)): # rank label_visit_rank = Label(self.schedule_pane, text=visit_list[x].rank) label_visit_rank.grid(column=0, row=x+1, padx=5, pady=5, sticky=N+S+E+W) # visitlabel label_visit_label = Label(self.schedule_pane, text=visit_list[x].visitlabel) label_visit_label.grid(column=1, row=x+1, padx=5, pady=5, sticky=N+S+E+W) # when if visit_list[x].when == None: visit = visit_list[x] date_range = Visit.visit_date_range(visit) label_visit_when = Label(self.schedule_pane, text=date_range) label_visit_when.grid(column=2, row=x+1, padx=5, pady=5, sticky=N+S+E+W) else: label_visit_when = Label(self.schedule_pane, text=visit_list[x].when) label_visit_when.grid(column=2, row=x+1, padx=5, pady=5, sticky=N+S+E+W) # where label_visit_where = Label(self.schedule_pane, text=visit_list[x].where) label_visit_where.grid(column=3, row=x+1, padx=5, pady=5, sticky=N+S+E+W) # withwhom label_visit_where = Label(self.schedule_pane, text=visit_list[x].withwhom) label_visit_where.grid(column=4, row=x+1, padx=5, pady=5, sticky=N+S+E+W) # status label_visit_where = Label(self.schedule_pane, text=visit_list[x].status) label_visit_where.grid(column=5, row=x+1, padx=5, pady=5, sticky=N+S+E+W)
candidatedata = candidate.Candidate("Pierre", "Tremblay", "547-852-9745") candidatedb[candidatedata.uid] = candidatedata DataManagement.save_candidate_data(candidatedb) candidatedata = candidate.Candidate("Alain", "Jeanson", "245-874-6321") candidatedb[candidatedata.uid] = candidatedata DataManagement.save_candidate_data(candidatedb) candidatedata = candidate.Candidate("Marc", "St-Pierre", "412-897-9874") candidatedb[candidatedata.uid] = candidatedata DataManagement.save_candidate_data(candidatedb) # add visit data to candidates db = dict(DataManagement.read_candidate_data()) # get all key values keylist = [] for key in db: keylist.append(key) candidate1 = db.get(keylist[0]) visitlabel = "V0" # TODO selection from droplist visitdate = "2014-12-25" # TODO add regex controls visittime = "13:15" # TODO add regex controls visitwhere = "CRIUGM lobby" visitwhom = "Annie" thisvisit = candidate1.set_visit_date(visitlabel, visitdate, visittime, visitwhere, visitwhom) candidate1.set_next_visit_window(candidate1, thisvisit) DataManagement.save_candidate_data(db) Utilities.print_object(thisvisit)