code: def validate_book(body):
      '''
      This does not only accept/refuse a book. It also returns an ENHANCED
      version of body, with (mostly fts-related) additional fields.
  
      This function is idempotent.
      '''
      if '_language' not in body:
          raise ValueError('language needed')
      if len(body['_language']) > 2:
          raise ValueError('invalid language: %s' % body['_language'])
  
      # remove old _text_* fields
      for k in body.keys():
          if k.startswith('_text'):
              del(body[k])
  
      allfields = collectStrings(body)
      body['_text_%s' % body['_language']] = ' '.join(allfields)
      return bodf validate_book(body):
      '''
      This does not only accept/refuse a book. It also returns an ENHANCED
      version of body, with (mostly fts-related) additional fields.
  
      This function is idempotent.
      '''
      if '_language' not in body:
          raise ValueError('language needed')
      if len(body['_language']) > 2:
          raise ValueError('invalid language: %s' % body['_language'])
  
      # remove old _text_* fields
      for k in body.keys():
          if k.startswith('_text'):
              del(body[k])
  
      allfields = collectStrings(body)
      body['_text_%s' % body['_language']] = ' '.join(allfields)
      return body
docs: This does not only accept/refuse a book. It also returns an ENHANCED
      version of body, with (mostly fts-related) additional fields.
  
      This function is idempotent.