code: def get_input(self):
          
          user_input = web.input(
              user=[],
              task=[],
              aggregation=[],
              org_tags=[],
              grade_min='',
              grade_max='',
              sort_by="submitted_on",
              order='0',  # "0" for pymongo.DESCENDING, anything else for pymongo.ASCENDING
              limit='',
              filter_tags=[],
              filter_tags_presence=[],
              date_after='',
              date_before='',
              stat='with_stat',
          )
  
          # Sanitise inputs
          for item in itertools.chain(user_input.task, user_input.aggregation):
              if not id_checker(item):
                  raise web.notfound()
  
          if user_input.sort_by not in self._allowed_sort:
              raise web.notfound()
  
          digits = [user_input.grade_min, user_input.grade_max, user_input.order, user_input.limit]
          for d in digits:
              if d != '' and not d.isdigit():
                  raise web.notfound()
  
          return user_input
docs: Loads web input, initialise default values and check/sanitise some inputs from users