code: def temp_dir(sub_dir='work'):
      
      user = getpass.getuser().replace(' ', '_')
      current_date = date.today()
      date_string = current_date.isoformat()
      if 'INASAFE_WORK_DIR' in os.environ:
          new_directory = os.environ['INASAFE_WORK_DIR']
      else:
          # Following 4 lines are a workaround for tempfile.tempdir()
          # unreliabilty
          handle, filename = mkstemp()
          os.close(handle)
          new_directory = os.path.dirname(filename)
          os.remove(filename)
  
      path = os.path.join(new_directory, 'inasafe', date_string, user, sub_dir)
  
      if not os.path.exists(path):
          # Ensure that the dir is world writable
          # Umask sets the new mask and returns the old
          old_mask = os.umask(0000)
          os.makedirs(path, 0o777)
          # Reinstate the old mask for tmp
          os.umask(old_mask)
      return path
docs: Obtain the temporary working directory for the operating system.
  
      An inasafe subdirectory will automatically be created under this and
      if specified, a user subdirectory under that.
  
      .. note:: You can use this together with unique_filename to create
         a file in a temporary directory under the inasafe workspace. e.g.
  
         tmpdir = temp_dir('testing')
         tmpfile = unique_filename(dir=tmpdir)
         print tmpfile
         /tmp/inasafe/23-08-2012/timlinux/testing/tmpMRpF_C
  
      If you specify INASAFE_WORK_DIR as an environment var, it will be
      used in preference to the system temp directory.
  
      :param sub_dir: Optional argument which will cause an additional
          subdirectory to be created e.g. /tmp/inasafe/foo/
      :type sub_dir: str
  
      :return: Path to the temp dir that is created.
      :rtype: str
  
      :raises: Any errors from the underlying system calls.