docs: def push(self):
          """Push tutorials to Transifex."""
  
          tx = Tx(self.tx_project_slug)
  
          if self.options.resources:
              articles = [
                  self.desk.articles().by_id(r.strip())
                  for r in self.options.resources.split(',')
              ]
          else:
              articles = self.desk.articles()
  
          for a in articles:
  
              self.log.debug(
                  'Inspecting Desk resource %s', a.api_href
              )
  
              for translation in a.translations.items().values():
                  our_locale = self.desk_to_our_locale(translation.locale)
  
                  self.log.debug('Checking locale %s', translation.locale)
  
                  if not self._process_locale(translation.locale):
                      self.log.debug('Skipping locale.')
                      continue
  
                  # make sure the project exists in Tx
                  tx.get_project(our_locale)
  
                  a_id = a.api_href.rsplit('/', 1)[1]
                  if (self.options.force or
                      not tx.resource_exists(a_id, our_locale) or
                      translation.outdated
                  ):
                      self.log.info('Resource %(id)s out of date in %(locale)s; updating.' %
                               {'id': a_id,
                                'locale': our_locale,
                                },
                      )
  
                      tx.create_or_update_resource(
                          a_id,
                          our_locale,
                          self.make_resource_title(a),
                          self.make_resource_document(a.subject, a.body),
                      )