text: """
  This file defines actions, i.e. functions the URLs are mapped into
  The @action(path) decorator exposed the function at URL:
  
      http://127.0.0.1:8000/{app_name}/{path}
  
  If app_name == '_default' then simply
  
      http://127.0.0.1:8000/{path}
  
  If path == 'index' it can be omitted:
  
      http://127.0.0.1:8000/
  
  The path follows the bottlepy syntax.
  
  @action.uses('generic.html')  indicates that the action uses the generic.html template
  @action.uses(session)         indicates that the action uses the session
  @action.uses(db)              indicates that the action uses the db
  @action.uses(T)               indicates that the action uses the i18n & pluralization
  @action.uses(auth.user)       indicates that the action requires a logged in user
  @action.uses(auth)            indicates that the action requires the auth object
  
  session, db, T, auth, and tempates are examples of Fixtures.
  Warning: Fixtures MUST be declared with @action.uses({fixtures}) else your app will result in undefined behavior
  """
  
  from py4web import action, request, abort, redirect, URL
  from yatl.helpers import A
  from .common import (
      db,
      session,
      T,
      cache,
      auth,
      logger,
      authenticated,
      unauthenticated,
      flash,
  )
  
  
  @unauthenticated("index", "index.html")
  def index():
      # This app uses Quasar as a front end
      redirect(URL('static', 'spa', 'index.html'))
  
  
  @action("version")
  def version():
      from py4web import __version__
      import sys
  
      version_info = {'py4web': __version__, 'python': sys.version}
      return version_info
  