code: def _save_tfi(self, tfi, asset=False):
          
          jbfile = JB_File(tfi)
          self.create_dir(jbfile)
  
          tf, note = self.create_db_entry(tfi)
  
          try:
              js = JukeboxSignals.get()
              if asset:
                  js.before_save_asset.emit(jbfile, tf)
                  self.save_asset(jbfile, tf)
                  js.after_save_asset.emit(jbfile, tf)
              else:
                  js.before_save_shot.emit(jbfile, tf)
                  self.save_shot(jbfile, tf)
                  js.after_save_shot.emit(jbfile, tf)
          except:
              tf.delete()
              note.delete()
              self.statusbar.showMessage('Saving failed!')
              log.exception("Saving failed!")
              return
          self.browser.update_model(tfi)
docs: Save currently open scene with the information in the given taskfile info
  
          :param tfi: taskfile info
          :type tfi: :class:`TaskFileInfo`
          :returns: None
          :rtype: None
          :raises: None