Exemplo n.º 1
0
    def submit(
        self,
        first_name_entry,
        last_name_entry,
        email_label,
        email_entry,
        phone_label,
        phone_entry,
        street_address_entry,
        town_address_entry,
        area_of_work_answer,
        pin_1_label,
        pin_1_entry,
        pin_2_entry,
    ):

        if not pin_1_entry.get() == pin_2_entry.get():
            pin_1_label.config(text="Pin Numbers do not match!")
        if "@" not in email_entry.get():
            email_label.config(text="Invalid Email")
        if not phone_entry.get().isnumeric():
            phone_label.config(text="Invalid Phone number")
        else:
            dm.save_volunteer(
                volunteer.volunteer_from_params(
                    first_name_entry.get(),
                    last_name_entry.get(),
                    email_entry.get(),
                    sm.hash_string(pin_1_entry.get()),
                    phone_entry.get(),
                    street_address_entry.get() + town_address_entry.get(),
                    area_of_work_answer.get(),
                ), sm.get_key_from_password())
            self.top_window.destroy()
    def submit(self, first_name, last_name, email_label, email_entry,
               phone_label, phone_entry, address_entry, area_of_work_answer,
               old_pin_label, old_pin_entry, new_pin_label, new_pin_entry,
               re_new_pin_entry, volunteer, display_volunteer_fn):

        old_pin_hash = sm.hash_string(old_pin_entry.get())

        if not old_pin_hash == volunteer.pin_hash:
            old_pin_label.config(text="incorrect pin")
            return
        if not new_pin_entry.get() == re_new_pin_entry.get():
            new_pin_label.config(text="new pins do not match!")
            return
        if "@" not in email_entry.get():
            email_label.config(text="Invalid Email")
            return
        if not phone_entry.get().isnumeric():
            phone_label.config(text="Invalid Phone number")
            return
        else:
            new_pin_entry = new_pin_entry.get()
            pin = (old_pin_hash if new_pin_entry == "" else new_pin_entry)

            dm.edit_volunteer(first_name.cget("text"), last_name.cget("text"),
                              email_entry.get(), phone_entry.get(),
                              area_of_work_answer.get(), address_entry.get(),
                              sm.hash_string(pin), sm.get_key_from_password())
            display_volunteer_fn()
            self.top_window.destroy()
    def check_signin(self, pin_entry, lower_label, volunteer, refreshfn):
        pin_entered = pin_entry.get()
        pin_entry.delete(0, len(pin_entered))
        hashed_pin = sm.hash_string(pin_entered)
        if volunteer.pin_hash == hashed_pin:
            lower_label.config(text="correct pin")
            dm.sign_in_volunteer(volunteer)
            refreshfn()
            self.signin_root.destroy()

        else:
            lower_label.config(text="Incorrect pin")
    def submit(self, old_password_label, old_password_entry,
               new_password_label, new_password_entry, re_new_password_entry,
               notification_label):

        old_password_hash = sm.hash_string(old_password_entry.get())

        if not old_password_hash == dm.password_hash():
            old_password_label.config(text="incorrect password")
            return
        if not new_password_entry.get() == re_new_password_entry.get():
            new_password_label.config(text="new passwords do not match!")
            return
        else:
            dm.change_password(sm.hash_string(new_password_entry.get()))
            # need to re-encrypt the volunteer data, using the new key

            notification_label.config(text="Password Changed Successfully")
            self.top_window.destroy()
Exemplo n.º 5
0
 def check_login(login_root, root, password_entry, lower_label,
                 settings_menu):
     password_entered = password_entry.get()
     password_entry.delete(0, len(password_entered))
     hashed_password = sm.hash_string(password_entered)
     if dm.password_hash() == hashed_password:
         settings_menu.entryconfig("New Volunteer", state=NORMAL)
         login_root.destroy()
         AdminWindow(root)
     else:
         lower_label.config(text="Incorrect Password")
Exemplo n.º 6
0
    def sum_hours(self,
                s_day_entry,
                s_month_entry,
                s_year_entry,
                e_day_entry,
                e_month_entry,
                e_year_entry,
                result_label):
        s_day = s_day_entry.get()
        s_month = s_month_entry.get()
        s_year = s_year_entry.get()
        e_day = e_day_entry.get()
        e_month = e_month_entry.get()
        e_year = e_year_entry.get()

        # do some checking stuff here
        start_date = datetime.strptime((s_day + " " + s_month + " " + s_year), "%d %m %Y")
        end_date = datetime.strptime((e_day + " " + e_month + " " + e_year), "%d %m %Y")
        result = dm.sum_hours_worked(start_date, end_date)
        result_label.config(text=(result + " hours worked."))
Exemplo n.º 7
0
 def delete_finish(self, volunteer, display_volunteer_fn):
     dm.delete_volunteer(volunteer, sm.get_key_from_password())
     display_volunteer_fn()
     self.delete_root.destroy()
Exemplo n.º 8
0
    def __init__(self):

        #First, load the encryption config files
        dm.load_config()

        #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        # REMOVE THIS AFTER TESTING
        #dm.open_and_decrypt_volunteer_info(sm.get_key_from_password())
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        dm.load_volunteer_sessions_file()

        # set up the project and the frames
        #######################################
        self.root = Tk()
        self.root.title(self.title)
        self.root.geometry('500x500+200+200')
        #######################################

        # set up the toolbar
        #######################################
        # set up the task menu. The one at the top.
        menu_bar = Menu(self.root)
        # ? sets the menu at the top to be the menu_bar
        self.root.config(menu=menu_bar)
        # creates a sub menu of the menu bar
        settings_menu = Menu(menu_bar)
        settings_menu.add_command(
            label="New Volunteer", command=self.new_volunteer,
            state=DISABLED)  #!!!!!!!!!! was state=NORMAL/DISABLED for testing
        settings_menu.add_command(
            label="Admin Login",
            command=lambda: self.admin_login(settings_menu))

        # turns the settings menu into a cascade, and thus it can be rendered
        menu_bar.add_cascade(label="Settings", menu=settings_menu)
        menu_bar.add_command(label="Refresh", command=self.refresh)
        #######################################

        # add the frames
        #######################################

        self.mainFrame = LabelFrame(self.root, text="Volunteer Sign-in")
        self.mainFrame.pack(fill=BOTH)

        #left hand side
        self.left_side = LabelFrame(self.mainFrame, text="Signed Out")
        self.left_side.pack(side=LEFT, fill=X, expand=True)

        self.left_scroll = Scrollbar(self.left_side)
        self.left_scroll.pack(side=RIGHT, fill=Y)

        self.left_canvas = Canvas(self.left_side,
                                  yscrollcommand=self.left_scroll.set)
        self.left_canvas.pack(fill=X, expand=True)

        self.left_scroll.config(command=self.left_canvas.yview)

        # right hand side
        self.right_side = LabelFrame(self.mainFrame, text="Signed In")
        self.right_side.pack(side=RIGHT, fill=X, expand=True)

        self.right_scroll = Scrollbar(self.right_side)
        self.right_scroll.pack(side=RIGHT, fill=Y)

        self.right_canvas = Canvas(self.right_side,
                                   yscrollcommand=self.right_scroll.set)
        self.right_canvas.pack(fill=X, expand=True)

        #######################################

        #load the files
        #######################################
        self.refresh()
        #######################################

        self.root = mainloop()
Exemplo n.º 9
0
 def update_sign_in_status(self):
     dm.update_sign_in_status()
Exemplo n.º 10
0
 def load_volunteers(self, notification_label):
     dm.open_and_decrypt_volunteer_info(sm.get_key_from_password())
     notification_label.config(text="Volunteers successfully loaded!")
Exemplo n.º 11
0
 def sign_out_finish(self, volunteer, refreshfn):
     dm.sign_out_volunteer(volunteer)
     refreshfn()
     self.signout_root.destroy()