Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Sat May 4 15:47:19 2019
- @author: Llama
- """
- class Folder:
- def __init__(self, name, container, access):
- self.name = name
- self.container = container
- self.access = access
- self.size = 0
- for elem in container:
- self.size += elem.size
- self.count = len(container)
- class File:
- def __init__(self, name, data, access):
- self.name = name + ".txt"
- self.data = data
- self.access = access
- self.size = len(data.split("\n"))
- root = Folder("rootDir", [], "Owner")
- currDir = root
- path = []
- dictAcs = {"Owner": 2, "Admin": 1, "User": 0}
- usrAcs = "NONE"
- def erase():
- __import__("os").system("cls" if __import__("os").name == "nt" else "clear")
- def logIn():
- while 1:
- user = input("Input user access: ")
- password = input("Input password: ")
- global usrAcs
- if user == "Owner" and password == "Cosmic47#0699":
- usrAcs = "Owner"
- break
- elif user == "Admin" and password == "admin":
- usrAcs = "Admin"
- break
- elif user == "User":
- usrAcs = "User"
- break
- erase()
- print("Incorrect data. Please try again\n")
- erase()
- print("Succesfully logged on as " + usrAcs + "\n")
- commFunc()
- return
- def multiinput():
- num = int(input("How much lines you want to type? "))
- st = ""
- while num != 0:
- for it in range(num):
- st += input() + "\n"
- num = int(input("Oops! Lines are ended! Wanna add lines?(0 for no): "))
- erase()
- return st
- def commFunc():
- error = ""
- global currDir
- global usrAcs
- global prevDir
- global root
- global path
- global Folder
- while 1:
- try:
- print("Current folder: " + currDir.name)
- print("Name\t\t\t\tSize\t\t\t\tAccess\t\t\t\tType")
- for elem in currDir.container:
- print(elem.name + "\t\t\t\t" + str(elem.size) + "\t\t\t\t" + elem.access + "\t\t\t\t" + ("File" if type(elem) is File else "Folder"))
- except Exception as e:
- __import__("logging").error(e)
- print("Current dir has been deleted")
- print("Moving back to root")
- try:
- currDir = root
- except Exception as e_:
- __import__("logging").fatal(e_)
- print("Root directory has not found")
- print("Launching PROTOCOL 96...")
- root = Folder("rootDir", [], "Owner")
- print()
- print(error)
- error = ""
- comm = input("Input command: ")
- func = comm.split(" ")[0]
- args = comm.split(" ")[1:]
- if func == "mkdir":
- if dictAcs[usrAcs] >= dictAcs[args[1]]:
- for fold in currDir.container:
- if fold.name == args[0] and type(fold) is Folder:
- error = "Folder with this name already exists"
- else:
- error = "Access is denied"
- if error == "":
- currDir.container.append(Folder(args[0], [], args[1]))
- elif func == "exit":
- break
- elif func == "rmdir":
- foldReq = ""
- for fold in currDir.container:
- if fold.name == args[0] and type(fold) is Folder:
- foldReq = fold
- if dictAcs[fold.access] > dictAcs[usrAcs]:
- error = "Access is denied"
- if foldReq == "":
- error = "Folder not found"
- if error == "" and foldReq != "":
- currDir.container.remove(foldReq)
- elif func == "logoff":
- erase()
- logIn()
- return
- elif func == "moveto":
- reqFold = ""
- for num, elem in enumerate(currDir.container):
- if elem.name == args[0] and type(elem) is Folder:
- reqFold = "Found"
- if dictAcs[elem.access] <= dictAcs[usrAcs]:
- currDir = elem
- path.append(num)
- else:
- error = "Access is denied"
- if reqFold == "":
- error = "Folder not found"
- elif func == "mvbck":
- currDir = root
- for pth in path[:len(path) - 1]:
- currDir = currDir.container[pth]
- path = path[:len(path) - 1]
- elif func == "PROTOCOL_47":
- del Folder
- if func == "mkfile":
- if dictAcs[usrAcs] >= dictAcs[args[1]]:
- for file in currDir.container:
- if file.name == args[0] and type(file) is File:
- error = "File with this name already exists"
- else:
- error = "Access is denied"
- if error == "":
- erase()
- print(args[1] + ".txt")
- num = int(input("How much lines you want to type? "))
- st = ""
- while num != 0:
- for it in range(num):
- st += input() + "\n"
- num = int(input("Oops! Lines are ended! Wanna add lines?(0 for no): "))
- erase()
- print(args[1] + ".txt")
- currDir.container.append(File(args[0], st, args[1]))
- elif func == "rmfile":
- fileReq = ""
- for file in currDir.container:
- if file.name == args[0] and type(file) is Folder:
- fileReq = file
- if dictAcs[file.access] > dictAcs[usrAcs]:
- error = "Access is denied"
- if fileReq == "":
- error = "File not found"
- if error == "" and fileReq != "":
- currDir.container.remove(fileReq)
- erase()
- logIn()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement