Exemple #1
0
 def initiateFileUpload(self, filePath):
     self.queue = Queue()
     self.waitDialog = StickyDialog(self.root,
                                    message="Please wait, uploading...")
     fileUploadThread = UploadFile(self.queue, filePath)
     fileUploadThread.start()
     self.master.after(100, self.checkQueueForUploadStatus)
 def downloadFile(self):
     print("Download")
     self.dqueue = Queue()
     self.remove()
     self.waitDialog = StickyDialog(self,
                                    message="Downloading! Please wait...")
     userFileDownloadThread = DownloadFile(queue=self.dqueue,
                                           owner=self.fileDetails[0],
                                           name=self.fileDetails[1])
     userFileDownloadThread.start()
     self.checkDownloadQueue()
 def saveUserInfoInitiator(self):
     self.waitDialog = StickyDialog(self.root,
                                    message="Initializing...\nPlease wait!")
     self.user = User(userId=self.loginResponse.uid,
                      name=self.loginResponse.name,
                      email=self.emailStr)
     self.queue = Queue()
     saveUserInfoThread = SaveUserLoginInfo(
         self.queue,
         user=self.user,
         accJwt=self.loginResponse.accessToken,
         refJwt=self.loginResponse.refreshToken)
     saveUserInfoThread.start()
     self.root.after(100, self.checkQueueForDb)
 def loginInitiator(self):
     self.emailStr = self.email.get()
     self.passwordStr = self.password.get()
     if not validateEmail(self.emailStr):
         GenericDialog(self.root,
                       title="Validation Error",
                       message="Invalid Email Address!")
     elif self.passwordStr == "" or len(self.passwordStr) < 8:
         GenericDialog(self.root,
                       title="Validation Error",
                       message="Password must be 8 characters long!")
     else:
         self.waitDialog = StickyDialog(self.root, message="Please wait!")
         userLoginThread = UserLogin(self.queue,
                                     email=self.emailStr,
                                     password=self.passwordStr)
         userLoginThread.start()
         self.root.after(100, self.checkQueueForLogin)
Exemple #5
0
 def grantAccess(self):
     print("granting")
     toEmail = self.emailEntry.get()
     self.remove()
     if validateEmail(email=toEmail):
         self.waitDialog = StickyDialog(self,
                                        message="Granting! Please wait...")
         updateAclGrantThread = UpdateFileACL(queue=self.queue,
                                              owner=self.fileDetails[0],
                                              name=self.fileDetails[1],
                                              grant=True,
                                              toEmail=toEmail)
         updateAclGrantThread.start()
         self.checkACLUpdateQueue()
     else:
         GenericDialog(self,
                       title="Error!",
                       message="Invalid Email Address!")
    def signUpInitiator(self):
        name = self.username.get()
        email = self.email.get()
        password = self.password.get()
        confPassword = self.confirmPassword.get()

        if name == "" or not validateUsername(name) or len(name) > 32:
            GenericDialog(
                self.root,
                title="Validation Error",
                message=
                "Invalid name!\nContains only alphabets.\nMax length: 32.")
        elif not validateEmail(email):
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Invalid Email Address!")
        elif password != confPassword:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Passwords do not match!")
        elif password == confPassword and len(password) < 8:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Password minimum length: 8")
        elif password == confPassword and len(password) > 64:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Password maximum length: 64")
        else:
            # initiate sign up
            self.waitDialog = StickyDialog(self.root, message="Please wait!")
            userSignUpThread = UserSignUp(queue=self.queue,
                                          username=name,
                                          email=email,
                                          password=password)
            userSignUpThread.start()
            self.root.after(100, self.checkQueue)
class SharedWithMeFilesOptionsDialog(tk.Toplevel):
    def __init__(self, master: tk.Frame, masterParent: tk.Tk,
                 fileDetails: tuple):
        super().__init__(master)
        self.root = master
        self.fileDetails = fileDetails
        self.masterParent = masterParent

        self.dqueue = Queue()
        self.downloadResponse = None

        self.title(fileDetails[1])
        self.resizable(False, False)
        self.grab_set()
        self.overrideredirect(True)
        centerWindow(self, 300, 100)

        tk.Label(self, text="Download").pack(expand=True)
        tk.Button(self, text="Download",
                  command=self.downloadFile).pack(expand=True)
        tk.Button(self, text="Cancel", command=self.remove).pack(expand=True)

    def remove(self):
        self.grab_release()
        self.withdraw()

    def signOut(self):
        print("signout called")
        result = RemoveUserLoginInfo().remove()
        if result:
            self.root.destroy()
            loginScreen.LoginScreen(self.masterParent)
        else:
            GenericDialog(
                self.root,
                title="Database Error!",
                message="Unable to remove login info!\nProgram will exit now.")

    def downloadFile(self):
        print("Download")
        self.dqueue = Queue()
        self.remove()
        self.waitDialog = StickyDialog(self,
                                       message="Downloading! Please wait...")
        userFileDownloadThread = DownloadFile(queue=self.dqueue,
                                              owner=self.fileDetails[0],
                                              name=self.fileDetails[1])
        userFileDownloadThread.start()
        self.checkDownloadQueue()

    def checkDownloadQueue(self):
        if not self.dqueue.empty():
            self.downloadResponse = self.dqueue.get()
            self.waitDialog.remove()
            print(self.downloadResponse)
            self.afterDownloadResponse()
        else:
            self.root.after(100, self.checkDownloadQueue)

    def afterDownloadResponse(self):
        if self.downloadResponse == StatusCode.OK:
            GenericDialog(self.root,
                          title="Success!",
                          message="File saved to Desktop")
        elif self.downloadResponse == StatusCode.INTERNAL:
            GenericDialog(self.root,
                          title="Error!",
                          message="Internal server error!")
        else:
            GenericDialog(self.root,
                          title="Error!",
                          message="Some other error occurred!")
class LoginScreen:
    def __init__(self, master: tk.Tk):
        # TODO check if user is already logged-in here
        if CheckDbLoginStatus().check():
            user = GetUser().get()
            if user != None:
                HomeScreen(master=master, user=user)
        else:
            self.root = master
            self.root.title("Login")
            centerWindow(self.root, 800, 600)
            self.root.config(menu=tk.Menu(self.root))

            self.email = tk.StringVar()
            self.password = tk.StringVar()
            self.queue = Queue()

            self.loginResponse = None
            self.dbWriteResponse = None
            self.emailStr = ""
            self.passwordStr = ""

            self.waitDialog = None

            self.initLoginScreen()

    def initLoginScreen(self):
        self.frame = tk.Frame(self.root)
        self.frame.pack(expand=True, anchor=tk.CENTER)

        self.logo = getLogo()
        self.logoLabel = tk.Label(self.frame, image=self.logo)
        self.logoLabel.image = self.logo
        self.logoLabel.pack(expand=True, padx=30, pady=30)

        tk.Label(self.frame,
                 text="Please Login to continue!").pack(expand=True,
                                                        padx=15,
                                                        pady=15)

        self.emailFrame = tk.Frame(self.frame)
        self.emailFrame.pack(side=tk.TOP)
        tk.Label(master=self.emailFrame, text="Email",
                 padx=15).pack(side=tk.LEFT, expand=True)
        tk.Entry(self.emailFrame, textvariable=self.email).pack(side=tk.RIGHT,
                                                                fill=tk.X,
                                                                expand=True)

        self.passwordFrame = tk.Frame(self.frame)
        self.passwordFrame.pack(side=tk.TOP)
        tk.Label(self.passwordFrame, text="Password").pack(side=tk.LEFT)
        tk.Entry(self.passwordFrame, textvariable=self.password,
                 show="*").pack(side=tk.RIGHT, fill=tk.X, expand=True)

        tk.Button(self.frame, text="Login",
                  command=self.loginInitiator).pack(expand=True,
                                                    padx=15,
                                                    pady=15,
                                                    ipadx=15)

        tk.Label(self.frame, text="Don't have an account?").pack(expand=True,
                                                                 side=tk.TOP,
                                                                 padx=20,
                                                                 pady=(35, 10))
        tk.Button(self.frame,
                  text="Create a new account",
                  command=self.launchSignUpScreen).pack(expand=True,
                                                        side=tk.TOP,
                                                        ipadx=15)

    def launchSignUpScreen(self):
        self.frame.destroy()
        SignUpScreen(self.root)

    def loginInitiator(self):
        self.emailStr = self.email.get()
        self.passwordStr = self.password.get()
        if not validateEmail(self.emailStr):
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Invalid Email Address!")
        elif self.passwordStr == "" or len(self.passwordStr) < 8:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Password must be 8 characters long!")
        else:
            self.waitDialog = StickyDialog(self.root, message="Please wait!")
            userLoginThread = UserLogin(self.queue,
                                        email=self.emailStr,
                                        password=self.passwordStr)
            userLoginThread.start()
            self.root.after(100, self.checkQueueForLogin)

    def checkQueueForLogin(self):
        if not self.queue.empty():
            self.loginResponse = self.queue.get()
            self.waitDialog.remove()
            self.afterLoginResponse()
        else:
            self.root.after(100, self.checkQueueForLogin)

    def afterLoginResponse(self):
        if isinstance(self.loginResponse, ussPb.LoginResponse):
            # print(self.loginResponse)
            self.saveUserInfoInitiator()
        elif self.loginResponse == StatusCode.INTERNAL:
            GenericDialog(self.root,
                          title="Server Error",
                          message="Internal server error!")
        elif self.loginResponse == StatusCode.NOT_FOUND:
            GenericDialog(self.root, title="Error", message="User not found!")
        elif self.loginResponse == StatusCode.FAILED_PRECONDITION:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Wrong password!")
        elif self.loginResponse == StatusCode.UNAVAILABLE:
            GenericDialog(self.root,
                          title="Internal Error",
                          message="Server not available!")
        else:
            GenericDialog(self.root,
                          title="Unknown Error",
                          message="Some other error occurred!")

    def saveUserInfoInitiator(self):
        self.waitDialog = StickyDialog(self.root,
                                       message="Initializing...\nPlease wait!")
        self.user = User(userId=self.loginResponse.uid,
                         name=self.loginResponse.name,
                         email=self.emailStr)
        self.queue = Queue()
        saveUserInfoThread = SaveUserLoginInfo(
            self.queue,
            user=self.user,
            accJwt=self.loginResponse.accessToken,
            refJwt=self.loginResponse.refreshToken)
        saveUserInfoThread.start()
        self.root.after(100, self.checkQueueForDb)

    def checkQueueForDb(self):
        if not self.queue.empty():
            self.dbWriteResponse = self.queue.get()
            self.waitDialog.remove()
            self.afterDbResponse()
        else:
            self.root.after(100, self.checkQueueForDb)

    def afterDbResponse(self):
        if self.dbWriteResponse:
            self.frame.destroy()
            HomeScreen(self.root, user=self.user)
        else:
            GenericDialog(
                self.root,
                title="Database Error!",
                message="Unable to save login info!\nProgram will exit now.")
            self.root.quit()
class SignUpScreen:
    def __init__(self, master: tk.Tk):
        self.root = master
        self.root.title("Sign Up")
        centerWindow(self.root, 800, 600)
        self.root.config(menu=tk.Menu(self.root))

        self.username = tk.StringVar()
        self.email = tk.StringVar()
        self.password = tk.StringVar()
        self.confirmPassword = tk.StringVar()

        self.queue = Queue()
        self.signUpResponse = None
        self.waitDialog = None

        self.initSignUpScreen()

    def initSignUpScreen(self):
        self.frame = tk.Frame(self.root)
        self.frame.pack(expand=True, anchor=tk.CENTER)

        self.logo = getLogo()
        self.logoLabel = tk.Label(self.frame, image=self.logo)
        self.logoLabel.image = self.logo
        self.logoLabel.pack(expand=True, padx=30, pady=30)

        tk.Label(self.frame, text="Create a new account!").pack(expand=True,
                                                                padx=5,
                                                                pady=5)

        self.nameFrame = tk.Frame(self.frame)
        self.nameFrame.pack(side=tk.TOP)
        tk.Label(self.nameFrame, text="Name", padx=38).pack(side=tk.LEFT,
                                                            expand=True)
        tk.Entry(self.nameFrame,
                 textvariable=self.username).pack(side=tk.RIGHT,
                                                  fill=tk.X,
                                                  expand=True)

        self.emailFrame = tk.Frame(self.frame)
        self.emailFrame.pack(side=tk.TOP)
        tk.Label(self.emailFrame, text="Email", padx=40).pack(side=tk.LEFT,
                                                              expand=True)
        tk.Entry(self.emailFrame, textvariable=self.email).pack(side=tk.RIGHT,
                                                                fill=tk.X,
                                                                expand=True)

        self.passwordFrame = tk.Frame(self.frame)
        self.passwordFrame.pack(side=tk.TOP)
        tk.Label(self.passwordFrame, text="Password",
                 padx=26).pack(side=tk.LEFT, expand=True)
        tk.Entry(self.passwordFrame, textvariable=self.password,
                 show="*").pack(side=tk.RIGHT, fill=tk.X, expand=True)

        self.confirmPasswordFrame = tk.Frame(self.frame)
        self.confirmPasswordFrame.pack(side=tk.TOP)
        tk.Label(self.confirmPasswordFrame,
                 text="Confirm Password").pack(side=tk.LEFT, expand=True)
        tk.Entry(self.confirmPasswordFrame,
                 textvariable=self.confirmPassword,
                 show="*").pack(side=tk.RIGHT, fill=tk.X, expand=True)

        tk.Button(self.frame, text="Sign Up",
                  command=self.signUpInitiator).pack(expand=True,
                                                     padx=15,
                                                     pady=15,
                                                     ipadx=15)

        tk.Label(self.frame,
                 text="Already have an account?").pack(expand=True,
                                                       side=tk.TOP,
                                                       padx=20,
                                                       pady=(35, 10))
        tk.Button(self.frame, text="Login Now",
                  command=self.launchLoginScreen).pack(expand=True,
                                                       side=tk.TOP,
                                                       ipadx=15)

    def launchLoginScreen(self):
        self.frame.destroy()
        loginscreen.LoginScreen(self.root)

    def signUpInitiator(self):
        name = self.username.get()
        email = self.email.get()
        password = self.password.get()
        confPassword = self.confirmPassword.get()

        if name == "" or not validateUsername(name) or len(name) > 32:
            GenericDialog(
                self.root,
                title="Validation Error",
                message=
                "Invalid name!\nContains only alphabets.\nMax length: 32.")
        elif not validateEmail(email):
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Invalid Email Address!")
        elif password != confPassword:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Passwords do not match!")
        elif password == confPassword and len(password) < 8:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Password minimum length: 8")
        elif password == confPassword and len(password) > 64:
            GenericDialog(self.root,
                          title="Validation Error",
                          message="Password maximum length: 64")
        else:
            # initiate sign up
            self.waitDialog = StickyDialog(self.root, message="Please wait!")
            userSignUpThread = UserSignUp(queue=self.queue,
                                          username=name,
                                          email=email,
                                          password=password)
            userSignUpThread.start()
            self.root.after(100, self.checkQueue)

    def checkQueue(self):
        if not self.queue.empty():
            self.signUpResponse = self.queue.get()
            self.waitDialog.remove()
            self.afterSignUpResponse()
        else:
            self.root.after(100, self.checkQueue)

    def afterSignUpResponse(self):
        if self.signUpResponse == StatusCode.OK:
            GenericDialog(self.root,
                          title="Success",
                          message="User account created.\nYou can now login!")
        elif self.signUpResponse == StatusCode.ALREADY_EXISTS:
            GenericDialog(
                self.root,
                title="Account Error",
                message="User account already exists.\nPlease login!")
        elif self.signUpResponse == StatusCode.INTERNAL:
            GenericDialog(self.root,
                          title="Error",
                          message="Internal Server Error!")
        elif self.signUpResponse == StatusCode.UNAVAILABLE:
            GenericDialog(self.root,
                          title="Error",
                          message="Could not connect to server!")
        else:
            GenericDialog(self.root,
                          title="Unknown Error",
                          message="Error Code: " + self.signUpResponse + "!")
Exemple #10
0
class MyFilesOptionsDialog(tk.Toplevel):
    def __init__(self, master: tk.Frame, masterParent: tk.Tk,
                 fileDetails: tuple):
        super().__init__(master)
        self.root = master
        self.fileDetails = fileDetails
        self.masterParent = masterParent

        self.queue = Queue()
        self.aclUpdateResponse = None

        self.emailEntry = tk.StringVar()

        self.title(fileDetails[1])
        self.resizable(False, False)
        self.grab_set()
        self.overrideredirect(True)
        centerWindow(self, 300, 300)

        tk.Label(self, text="Download").pack(expand=True)
        tk.Button(self, text="Download",
                  command=self.downloadFile).pack(expand=True)

        tk.Label(self, text="Sharing").pack(expand=True)
        entry = tk.Entry(self, textvariable=self.emailEntry)
        entry.pack(expand=True)
        tk.Button(self, text="Cancel", command=self.remove).pack(expand=True,
                                                                 side=tk.LEFT)
        tk.Button(self, text="Revoke",
                  command=self.revokeAccess).pack(expand=True, side=tk.LEFT)
        tk.Button(self, text="Grant",
                  command=self.grantAccess).pack(expand=True, side=tk.LEFT)

    def remove(self):
        self.grab_release()
        self.withdraw()

    def signOut(self):
        print("signout called")
        result = RemoveUserLoginInfo().remove()
        if result:
            self.root.destroy()
            loginScreen.LoginScreen(self.masterParent)
        else:
            GenericDialog(
                self.root,
                title="Database Error!",
                message="Unable to remove login info!\nProgram will exit now.")

    def downloadFile(self):
        print("Download")
        self.dqueue = Queue()
        self.remove()
        self.waitDialog = StickyDialog(self,
                                       message="Downloading! Please wait...")
        userFileDownloadThread = DownloadFile(queue=self.dqueue,
                                              owner=self.fileDetails[0],
                                              name=self.fileDetails[1])
        userFileDownloadThread.start()
        self.checkDownloadQueue()

    def checkDownloadQueue(self):
        if not self.dqueue.empty():
            self.downloadResponse = self.dqueue.get()
            self.waitDialog.remove()
            print(self.downloadResponse)
            self.afterDownloadResponse()
        else:
            self.root.after(100, self.checkDownloadQueue)

    def afterDownloadResponse(self):
        if self.downloadResponse == StatusCode.OK:
            GenericDialog(self.root,
                          title="Success!",
                          message="File saved to Desktop")
        elif self.downloadResponse == StatusCode.INTERNAL:
            GenericDialog(self.root,
                          title="Error!",
                          message="Internal server error!")
        elif self.downloadResponse == StatusCode.UNAUTHENTICATED:
            GenericDialog(self.root,
                          title="Error!",
                          message="Internal server error!")
        else:
            GenericDialog(self.root,
                          title="Error!",
                          message="Some other error occurred!")

    def revokeAccess(self):
        print("revoking")
        toEmail = self.emailEntry.get()
        self.remove()
        if validateEmail(email=toEmail):
            self.waitDialog = StickyDialog(self,
                                           message="Revoking! Please wait...")
            updateAclGrantThread = UpdateFileACL(queue=self.queue,
                                                 owner=self.fileDetails[0],
                                                 name=self.fileDetails[1],
                                                 grant=False,
                                                 toEmail=toEmail)
            updateAclGrantThread.start()
            self.checkACLUpdateQueue()
        else:
            GenericDialog(self,
                          title="Error!",
                          message="Invalid Email Address!")

    def grantAccess(self):
        print("granting")
        toEmail = self.emailEntry.get()
        self.remove()
        if validateEmail(email=toEmail):
            self.waitDialog = StickyDialog(self,
                                           message="Granting! Please wait...")
            updateAclGrantThread = UpdateFileACL(queue=self.queue,
                                                 owner=self.fileDetails[0],
                                                 name=self.fileDetails[1],
                                                 grant=True,
                                                 toEmail=toEmail)
            updateAclGrantThread.start()
            self.checkACLUpdateQueue()
        else:
            GenericDialog(self,
                          title="Error!",
                          message="Invalid Email Address!")

    def checkACLUpdateQueue(self):
        if not self.queue.empty():
            self.aclUpdateResponse = self.queue.get()
            self.waitDialog.remove()
            print(self.aclUpdateResponse)
            self.afterACLUpdateResponse()
        else:
            self.root.after(100, self.checkACLUpdateQueue)

    def afterACLUpdateResponse(self):
        if self.aclUpdateResponse == StatusCode.OK:
            GenericDialog(self.root, title="Success!", message="ACL Updated")
        elif self.aclUpdateResponse == StatusCode.FAILED_PRECONDITION:
            GenericDialog(self.root,
                          title="Error!",
                          message="No such user email found!")
        elif self.aclUpdateResponse == StatusCode.NOT_FOUND:
            GenericDialog(self.root,
                          title="Error!",
                          message="File not found.\nRefresh and try again!")
        elif self.aclUpdateResponse == StatusCode.INTERNAL:
            GenericDialog(self.root,
                          title="Error!",
                          message="Internal server error!")
        else:
            GenericDialog(self.root,
                          title="Error!",
                          message="Some other error occurred!")
Exemple #11
0
class UssMenu(tk.Menu):
    def __init__(self, master: tk.Tk, masterFrame: tk.Frame):
        super().__init__(master)
        self.uploadStatusResponse = None
        self.root = master
        self.masterFrame = masterFrame
        # this is the first menu option of menubar
        # Name = File
        fileMenu = tk.Menu(self)
        fileMenu.add_command(label="Upload File",
                             command=self.openNewUploadFile)
        fileMenu.add_command(label="Refresh", command=self.refreshMasterFrame)
        fileMenu.add_separator()
        fileMenu.add_command(label="Quit", command=self.quitApp)

        # this is the second menu option of menubar
        # Name = Account
        accountMenu = tk.Menu(self)
        accountMenu.add_command(label="Sign Out", command=self.signOut)

        # this is the third menu option of menubar
        # Name = More
        moreMenu = tk.Menu(self)
        moreMenu.add_command(label="About", command=self.showAbout)

        # adding menu options to the menubar
        self.add_cascade(label="File", menu=fileMenu)
        self.add_cascade(label="Account", menu=accountMenu)
        self.add_cascade(label="More", menu=moreMenu)

    def signOut(self):
        result = RemoveUserLoginInfo().remove()
        if result:
            self.masterFrame.grab_release()
            self.masterFrame.destroy()
            loginScreen.LoginScreen(self.root)
        else:
            GenericDialog(
                self.root,
                title="Database Error!",
                message="Unable to remove login info!\nProgram will exit now.")

    def quitApp(self):
        self.root.quit()

    def showAbout(self):
        aboutDialog.AboutDialog(self.root)

    def disableMenuBar(self):
        self.entryconfig("File", state="disabled")
        self.entryconfig("Account", state="disabled")
        self.entryconfig("More", state="disabled")

    def enableMenuBar(self):
        self.entryconfig("File", state="normal")
        self.entryconfig("Account", state="normal")
        self.entryconfig("More", state="normal")

    def openNewUploadFile(self):
        fileTypes = [("Text Documents", "*.txt")]
        dialog = filedialog.Open(master=self.root, filetypes=fileTypes)
        self.disableMenuBar()
        self.filePath = dialog.show()

        # check if file size is greater than 5 MB
        if self.filePath != "":
            self.fileStats = os.stat(self.filePath)
            print("size in bytes = ", self.fileStats.st_size)
            if self.fileStats.st_size > 5242880:
                GenericDialog(master=self.root,
                              title="Size Error!",
                              message="Max file size allowed: 5MB")
                self.enableMenuBar()
            else:
                # start uploading file
                self.initiateFileUpload(self.filePath)
                print("valid file size")
        else:
            self.enableMenuBar()

    def initiateFileUpload(self, filePath):
        self.queue = Queue()
        self.waitDialog = StickyDialog(self.root,
                                       message="Please wait, uploading...")
        fileUploadThread = UploadFile(self.queue, filePath)
        fileUploadThread.start()
        self.master.after(100, self.checkQueueForUploadStatus)

    def checkQueueForUploadStatus(self):
        if not self.queue.empty():
            self.uploadStatusResponse = self.queue.get()
            self.waitDialog.destroy()
            self.master.config(menu=self)
            self.afterFileUploadResponse()
        else:
            self.master.after(100, self.checkQueueForUploadStatus)

    def afterFileUploadResponse(self):
        if self.uploadStatusResponse == StatusCode.INTERNAL:
            GenericDialog(self.root,
                          title="Error!",
                          message="Internal server error!")
        elif self.uploadStatusResponse == StatusCode.UNAVAILABLE:
            GenericDialog(self.root,
                          title="Error!",
                          message="Server not available!")
        elif self.uploadStatusResponse == StatusCode.UNAUTHENTICATED:
            self.signOut()
        elif self.uploadStatusResponse == StatusCode.OK:
            GenericDialog(
                self.root,
                title="Success!",
                message="File Uploaded Successfully!\nPlease refresh!")
        else:
            GenericDialog(self.root,
                          title="Error!",
                          message="Some other error occurred!")
        self.enableMenuBar()

    def refreshMasterFrame(self):
        self.masterFrame.destroy()
        loginScreen.LoginScreen(self.root)