Exemple #1
0
class FILEINFO(Script): 
  def __init__(self):
      Script.__init__(self, "fileinfo")
      self.vtreeprinter = VariantTreePrinter()


  def start(self, args):
    buff = ""
    node = args["file"].value()
    if args.has_key("max-items"):
      self.vtreeprinter.setMaxItemListToExpand(args["max-items"].value())
    else:
      self.vtreeprinter.setMaxItemListToExpand(-1)
    if args.has_key("max-depth"):
      self.vtreeprinter.setMaxDepth(args["max-depth"].value())
    else:
      self.vtreeprinter.setMaxDepth(-1)
    buff += self.fillBase(node)
    buff += self.fillAttributes(node)
    vbuff = Variant(buff)
    vbuff.thisown = False
    self.res["result"] = vbuff


  def fillBase(self, node):
    buff = ""
    fsobj = node.fsobj()
    fsobjname = ""
    if fsobj != None:
      fsobjname = fsobj.name
    buff += "name :\t\t" + str(node.name()) + "\n"
    buff += "node type :\t\t" 
    if node.isFile():
      buff += "file"
      if node.hasChildren():
        buff += " " + "with module(s) applied on it"
    if node.isDir():
      buff += "folder"
      if not node.hasChildren():
        buff += " " + "empty"
    if node.isDeleted():
      buff += " " + "deleted"
    buff += "\n"

    buff += self.fillCompatModule(node)
    if node.hasChildren():
      buff += self.fillChildren(node)

    buff += "generated by:\t\t"
    buff += fsobjname + "\n"
    
    buff += "size:\t\t\t"
    buff += str(node.size())
    buff += "\n"
    return buff


  def fillCompatModule(self, node):
    buff = ""
    l = node.compatibleModules()
    if len(l) > 0:
      buff += "relevant module(s) :\t"
      for i in l:
        buff += str(i) + " " 
    buff += "\n"
    return buff


  def fillChildren(self, node): 
    buff = "children\t\t"
    children = node.children()
    filessize = 0
    filecount = 0
    dircount = 0
    for child in children:
      if child.size():
        filessize += child.size()
        filecount += 1
      elif child.isDir() or child.hasChildren():
        dircount += 1
    if filecount > 0:
      buff += "file(s)"
      buff += str(filecount) + " totalizing " + str(filessize) + " bytes\n"
    if dircount > 0:
      buff += "folder(s) "
      buff += str(dircount) + "\n"
    return buff


  def fillAttributes(self, node):
    buff = ""
    vmap = node.attributes()
    if len(vmap) > 0:
      buff = self.vtreeprinter.fillMap(1, vmap, "attributes:\n")
    return buff