docs: def query(logfile, jobID = None):
      """If jobID is an integer then return False if the job has finished and True if it is still running.
         Otherwise, returns a table of jobs run by the user."""
      
      joblist = logfile.readFromLogfile()
      if jobID and type(jobID) == type(1):
          command = ['qstat', '-j', str(jobID)]
      else:
          command = ['qstat']
  
      processoutput = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
      output = processoutput[0]
      serror = processoutput[1]
      # Form command
      jobs = {}
      if type(jobID) == type(1):
          if serror.find("Following jobs do not exist") != -1:
              return False
          else:
              return True
  
      if not output.strip():
          colorprinter.message("No jobs running at present.")
      output = output.strip().split("\n")
      if len(output) > 2:
          for line in output[2:]:
              # We assume that our script names contain no spaces for the parsing below to work
              tokens = line.split()
              jid = int(tokens[0])
              jobstate = tokens[4]
  
              details = {  "jobid" : jid,
                           "prior" : tokens[1],
                           "name" : tokens[2],
                           "user" : tokens[3],
                           "state" : jobstate,
                           "submit/start at" : "%s %s" % (tokens[5], tokens[6])
                           }
              jataskID = 0
              if jobstate == "r":
                  details["queue"] = tokens[7]
                  details["slots"] = tokens[8]
              elif jobstate == "qw":
                  details["slots"] = tokens[7]
                  if len(tokens) >= 9:
                      jataskID = tokens[8]
                      details["ja-task-ID"] = jataskID
  
              if len(tokens) > 9:
                  jataskID = tokens[9]
                  details["ja-task-ID"] = jataskID
  
              jobs[jid] = jobs.get(jid) or {}
              jobs[jid][jataskID] = details
              if joblist.get(jid):
                  jobdir = joblist[jid]["Directory"]
                  jobtime = joblist[jid]["TimeInSeconds"]
                  colorprinter.message("Job %d submitted %d minutes ago. Status: '%s'. Destination directory: %s." % (jid, jobtime / 60, jobstate, jobdir))
              else:
                  colorprinter.message("Job %d submitted at %s %s. Status: '%s'. Destination directory unknown." % (jid, tokens[5], tokens[6], jobstate))
          return True