docs: def construct_datapipeline(env='',
                             generated=None,
                             previous_env=None,
                             region='us-east-1',
                             settings=None,
                             pipeline_data=None):
      """Create the Pipeline JSON from template.
  
      This handles the common repeatable patterns in a pipeline, such as
      judgement, infrastructure, tagger and qe.
  
      Args:
          env (str): Deploy environment name, e.g. dev, stage, prod.
          generated (gogoutils.Generator): Gogo Application name generator.
          previous_env (str): The previous deploy environment to use as
              Trigger.
          region (str): AWS Region to deploy to.
          settings (dict): Environment settings from configurations.
  
      Returns:
          dict: Pipeline JSON template rendered with configurations.
      """
      LOG.info('%s block for [%s].', env, region)
  
      if env.startswith('prod'):
          template_name = 'pipeline/pipeline_{}_datapipeline.json.j2'.format(env)
      else:
          template_name = 'pipeline/pipeline_stages_datapipeline.json.j2'
  
      LOG.debug('%s info:\n%s', env, pformat(settings))
  
      gen_app_name = generated.app_name()
  
      data = copy.deepcopy(settings)
  
      data['app'].update({
          'appname': gen_app_name,
          'repo_name': generated.repo,
          'group_name': generated.project,
          'environment': env,
          'region': region,
          'previous_env': previous_env,
          'promote_restrict': pipeline_data['promote_restrict'],
          'owner_email': pipeline_data['owner_email']
      })
  
      LOG.debug('Block data:\n%s', pformat(data))
  
      pipeline_json = get_template(template_file=template_name, data=data, formats=generated)
      return pipeline_json