import abc

class Directory(abc.ABC):
    '''
    Common interface
    '''

    @abc.abstractmethod
    def open_directory(self):
        pass

class Real_directory(Directory):
    '''
    Real directory contains some files and has a method for opening
    '''

    def __init__(self, directory_name):
        self._directory_name = directory_name

    def open_directory(self):
        print("Viewing files inside {}\n".format(self._directory_name))


class Proxy_directory(Directory):
    '''
    Proxy directory is what the employee actually interacts with
    '''

    def __init__(self, real_directory, username):
        self._real_directory = real_directory
        self._username = username

    def access_check(self):
        return self._username == "administrator"

    def open_directory(self):
        if self.access_check():
            self._real_directory.open_directory()
        else:
            print("{} does not have access to {}".format(self._username, self._real_directory._directory_name))



def main():

    company_secrets = Real_directory("company secrets")

    # administrator is allowed access to directory
    #Proxy_directory(company_secrets, "administrator").open_directory()

    # non-administrator user cannot access directory
    Proxy_directory(company_secrets, "first_day_guy").open_directory()


if __name__ == '__main__':
    main()