예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
 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
예제 #5
0
    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)