Advertisement
Guest User

Untitled

a guest
May 7th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.95 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat May  4 15:47:19 2019
  4.  
  5. @author: Llama
  6. """
  7.  
  8.  
  9. class Folder:
  10.     def __init__(self, name, container, access):
  11.         self.name = name
  12.         self.container = container
  13.         self.access = access
  14.         self.size = 0
  15.         for elem in container:
  16.             self.size += elem.size
  17.         self.count = len(container)
  18.  
  19. class File:
  20.     def __init__(self, name, data, access):
  21.         self.name = name + ".txt"
  22.         self.data = data
  23.         self.access = access
  24.         self.size = len(data.split("\n"))
  25.  
  26.  
  27.  
  28. root = Folder("rootDir", [], "Owner")
  29. currDir = root
  30. path = []
  31. dictAcs = {"Owner": 2, "Admin": 1, "User": 0}
  32. usrAcs = "NONE"
  33.  
  34.  
  35. def erase():
  36.     __import__("os").system("cls" if __import__("os").name == "nt" else "clear")
  37.  
  38.  
  39. def logIn():
  40.     while 1:
  41.         user = input("Input user access: ")
  42.         password = input("Input password: ")
  43.         global usrAcs
  44.         if user == "Owner" and password == "Cosmic47#0699":
  45.             usrAcs = "Owner"
  46.             break
  47.         elif user == "Admin" and password == "admin":
  48.             usrAcs = "Admin"
  49.             break
  50.         elif user == "User":
  51.             usrAcs = "User"
  52.             break
  53.         erase()
  54.         print("Incorrect data. Please try again\n")
  55.     erase()
  56.     print("Succesfully logged on as " + usrAcs + "\n")
  57.     commFunc()
  58.     return
  59.  
  60.  
  61. def multiinput():
  62.     num = int(input("How much lines you want to type? "))
  63.     st = ""
  64.     while num != 0:
  65.         for it in range(num):
  66.             st += input() + "\n"
  67.         num = int(input("Oops! Lines are ended! Wanna add lines?(0 for no): "))
  68.     erase()
  69.     return st
  70.  
  71.  
  72. def commFunc():
  73.     error = ""
  74.     global currDir
  75.     global usrAcs
  76.     global prevDir
  77.     global root
  78.     global path
  79.     global Folder
  80.     while 1:
  81.         try:
  82.             print("Current folder: " + currDir.name)
  83.             print("Name\t\t\t\tSize\t\t\t\tAccess\t\t\t\tType")
  84.             for elem in currDir.container:
  85.                 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"))
  86.         except Exception as e:
  87.             __import__("logging").error(e)
  88.             print("Current dir has been deleted")
  89.             print("Moving back to root")
  90.             try:
  91.                 currDir = root
  92.             except Exception as e_:
  93.                 __import__("logging").fatal(e_)
  94.                 print("Root directory has not found")
  95.                 print("Launching PROTOCOL 96...")
  96.                 root = Folder("rootDir", [], "Owner")
  97.         print()
  98.         print(error)
  99.         error = ""
  100.         comm = input("Input command: ")
  101.         func = comm.split(" ")[0]
  102.         args = comm.split(" ")[1:]
  103.         if func == "mkdir":
  104.             if dictAcs[usrAcs] >= dictAcs[args[1]]:
  105.                 for fold in currDir.container:
  106.                     if fold.name == args[0] and type(fold) is Folder:
  107.                         error = "Folder with this name already exists"
  108.             else:
  109.                 error = "Access is denied"
  110.             if error == "":
  111.                 currDir.container.append(Folder(args[0], [], args[1]))
  112.         elif func == "exit":
  113.             break
  114.         elif func == "rmdir":
  115.             foldReq = ""
  116.             for fold in currDir.container:
  117.                 if fold.name == args[0] and type(fold) is Folder:
  118.                     foldReq = fold
  119.                     if dictAcs[fold.access] > dictAcs[usrAcs]:
  120.                         error = "Access is denied"
  121.             if foldReq == "":
  122.                 error = "Folder not found"
  123.             if error == "" and foldReq != "":
  124.                 currDir.container.remove(foldReq)
  125.         elif func == "logoff":
  126.             erase()
  127.             logIn()
  128.             return
  129.         elif func == "moveto":
  130.             reqFold = ""
  131.             for num, elem in enumerate(currDir.container):
  132.                 if elem.name == args[0] and type(elem) is Folder:
  133.                     reqFold = "Found"
  134.                     if dictAcs[elem.access] <= dictAcs[usrAcs]:
  135.                         currDir = elem
  136.                         path.append(num)
  137.                     else:
  138.                         error = "Access is denied"
  139.             if reqFold == "":
  140.                 error = "Folder not found"
  141.         elif func == "mvbck":
  142.             currDir = root
  143.             for pth in path[:len(path) - 1]:
  144.                 currDir = currDir.container[pth]
  145.             path = path[:len(path) - 1]
  146.         elif func == "PROTOCOL_47":
  147.             del Folder
  148.         if func == "mkfile":
  149.             if dictAcs[usrAcs] >= dictAcs[args[1]]:
  150.                 for file in currDir.container:
  151.                     if file.name == args[0] and type(file) is File:
  152.                         error = "File with this name already exists"
  153.             else:
  154.                 error = "Access is denied"
  155.             if error == "":
  156.                 erase()
  157.                 print(args[1] + ".txt")
  158.                 num = int(input("How much lines you want to type? "))
  159.                 st = ""
  160.                 while num != 0:
  161.                     for it in range(num):
  162.                         st += input() + "\n"
  163.                         num = int(input("Oops! Lines are ended! Wanna add lines?(0 for no): "))
  164.                     erase()
  165.                     print(args[1] + ".txt")
  166.                 currDir.container.append(File(args[0], st, args[1]))
  167.         elif func == "rmfile":
  168.             fileReq = ""
  169.             for file in currDir.container:
  170.                 if file.name == args[0] and type(file) is Folder:
  171.                     fileReq = file
  172.                     if dictAcs[file.access] > dictAcs[usrAcs]:
  173.                         error = "Access is denied"
  174.             if fileReq == "":
  175.                 error = "File not found"
  176.             if error == "" and fileReq != "":
  177.                 currDir.container.remove(fileReq)
  178.         erase()
  179.  
  180.  
  181. logIn()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement