Exemplo n.º 1
0
def create_daily_digest_bg():
    """Create daily digest background task."""
    models.background_task.create_task(
        name="send_daily_digest_bg",
        url=flask.url_for("send_daily_digest_bg"),
        queued_callback=send_daily_digest_bg,
    )
    db.session.commit()
    return utils.make_simple_response()
Exemplo n.º 2
0
def create_daily_digest_bg():
  """Create daily digest background task."""
  models.background_task.create_task(
      name="send_daily_digest_bg",
      url=flask.url_for("send_daily_digest_bg"),
      queued_callback=send_daily_digest_bg,
  )
  db.session.commit()
  return utils.make_simple_response()
Exemplo n.º 3
0
def send_daily_digest_bg(task):  # pylint: disable=unused-argument
    """Send emails for today's or overdue notifications."""
    error_msg = None
    try:
        send_daily_digest_notifications()
    except Exception as exp:  # pylint: disable=broad-except
        error_msg = ("Sending of daily digest has failed "
                     "with the following error {}".format(exp.message))
        logger.exception(error_msg)
    return utils.make_simple_response(error_msg)
Exemplo n.º 4
0
def send_daily_digest_bg(task):  # pylint: disable=unused-argument
  """Send emails for today's or overdue notifications."""
  error_msg = None
  try:
    send_daily_digest_notifications()
  except Exception as exp:  # pylint: disable=broad-except
    error_msg = ("Sending of daily digest has failed "
                 "with the following error {}".format(exp.message))
    logger.exception(error_msg)
  return utils.make_simple_response(error_msg)
Exemplo n.º 5
0
def send_calendar_events():
    """Sends calendar events."""
    error_msg = None
    try:
        with benchmark("Send calendar events"):
            builder = calendar_event_builder.CalendarEventBuilder()
            builder.build_cycle_tasks()
            sync = calendar_event_sync.CalendarEventsSync()
            sync.sync_cycle_tasks_events()
    except Exception as exp:  # pylint: disable=broad-except
        logger.error(exp.message)
        error_msg = exp.message
    return utils.make_simple_response(error_msg)
Exemplo n.º 6
0
def send_calendar_events():
  """Sends calendar events."""
  error_msg = None
  try:
    with benchmark("Send calendar events"):
      builder = calendar_event_builder.CalendarEventBuilder()
      builder.build_cycle_tasks()
      sync = calendar_event_sync.CalendarEventsSync()
      sync.sync_cycle_tasks_events()
  except Exception as exp:  # pylint: disable=broad-except
    logger.error(exp.message)
    error_msg = exp.message
  return utils.make_simple_response(error_msg)
Exemplo n.º 7
0
def run_export(task):
    """Run export"""
    user = get_current_user()
    ie_id = task.parameters.get("ie_id")
    objects = task.parameters.get("objects")
    exportable_objects = task.parameters.get("exportable_objects")

    try:
        ie = import_export.get(ie_id)
        check_for_previous_run()

        content, _ = make_export(objects, exportable_objects)
        db.session.refresh(ie)
        if ie.status == "Stopped":
            return utils.make_simple_response()
        ie.status = "Finished"
        ie.end_at = datetime.utcnow()
        ie.content = content
        db.session.commit()

        job_emails.send_email(job_emails.EXPORT_COMPLETED, user.email,
                              ie.title, ie_id)

    except Exception as e:  # pylint: disable=broad-except
        logger.exception("Export failed: %s", e.message)
        ie = import_export.get(ie_id)
        try:
            ie.status = "Failed"
            ie.end_at = datetime.utcnow()
            db.session.commit()
            job_emails.send_email(job_emails.EXPORT_FAILED, user.email)
            return utils.make_simple_response(e.message)
        except Exception as e:  # pylint: disable=broad-except
            logger.exception("%s: %s", app_errors.STATUS_SET_FAILED, e.message)
            return utils.make_simple_response(e.message)

    return utils.make_simple_response()
Exemplo n.º 8
0
def run_export(task):
  """Run export"""
  user = login.get_current_user()
  ie_id = task.parameters.get("ie_id")
  objects = task.parameters.get("objects")
  exportable_objects = task.parameters.get("exportable_objects")

  try:
    ie_job = import_export.get(ie_id)
    content, _ = make_export(objects, exportable_objects, ie_job)
    db.session.refresh(ie_job)
    if ie_job.status == "Stopped":
      return utils.make_simple_response()
    ie_job.status = "Finished"
    ie_job.end_at = datetime.utcnow()
    ie_job.content = content
    db.session.commit()

    job_emails.send_email(job_emails.EXPORT_COMPLETED, user.email,
                          ie_job.title, ie_id)
  except models_exceptions.ExportStoppedException:
    logger.info("Export was stopped by user.")
  except Exception as e:  # pylint: disable=broad-except
    logger.exception("Export failed: %s", e.message)
    ie_job = import_export.get(ie_id)
    try:
      ie_job.status = "Failed"
      ie_job.end_at = datetime.utcnow()
      db.session.commit()
      job_emails.send_email(job_emails.EXPORT_CRASHED, user.email)
      return utils.make_simple_response(e.message)
    except Exception as e:  # pylint: disable=broad-except
      logger.exception("%s: %s", app_errors.STATUS_SET_FAILED, e.message)
      return utils.make_simple_response(e.message)

  return utils.make_simple_response()
Exemplo n.º 9
0
def send_mentions_bg(task):
    """Run sending email mentions for specified comments list in bg."""
    from ggrc.notifications import people_mentions

    error_msg = None
    try:
        with utils.benchmark("Send people mentions"):
            people_mentions.send_mentions(
                comments_data=task.parameters.get("comments_data"),
                object_name=task.parameters.get("object_name"),
                href=task.parameters.get("href"),
            )
    except Exception as exp:  # pylint: disable=broad-except
        error_msg = ("Sending of people mentions has failed "
                     "with the following error {}".format(exp.message))
        logger.exception(error_msg)
    return utils.make_simple_response(error_msg)
Exemplo n.º 10
0
def send_mentions_bg(task):
  """Run sending email mentions for specified comments list in bg."""
  from ggrc.notifications import people_mentions

  error_msg = None
  try:
    with utils.benchmark("Send people mentions"):
      people_mentions.send_mentions(
          comments_data=task.parameters.get("comments_data"),
          object_name=task.parameters.get("object_name"),
          href=task.parameters.get("href"),
      )
  except Exception as exp:  # pylint: disable=broad-except
    error_msg = ("Sending of people mentions has failed "
                 "with the following error {}".format(exp.message))
    logger.exception(error_msg)
  return utils.make_simple_response(error_msg)
Exemplo n.º 11
0
def run_import_phases(task):
  """Execute import phases"""
  ie_id = task.parameters.get("ie_id")
  user = login.get_current_user()
  try:
    ie_job = import_export.get(ie_id)

    csv_data = import_helper.read_csv_file(
        StringIO(ie_job.content.encode("utf-8"))
    )

    if ie_job.status == "Analysis":
      info = make_import(csv_data, True, ie_job)
      db.session.rollback()
      db.session.refresh(ie_job)
      if ie_job.status == "Stopped":
        return utils.make_simple_response()
      ie_job.results = json.dumps(info)
      for block_info in info:
        if block_info["block_errors"] or block_info["row_errors"]:
          ie_job.status = "Analysis Failed"
          ie_job.end_at = datetime.utcnow()
          db.session.commit()
          job_emails.send_email(job_emails.IMPORT_FAILED, user.email,
                                ie_job.title)
          return utils.make_simple_response()
      for block_info in info:
        if block_info["block_warnings"] or block_info["row_warnings"]:
          ie_job.status = "Blocked"
          db.session.commit()
          job_emails.send_email(job_emails.IMPORT_BLOCKED, user.email,
                                ie_job.title)
          return utils.make_simple_response()
      ie_job.status = "In Progress"
      db.session.commit()

    if ie_job.status == "In Progress":
      info = make_import(csv_data, False, ie_job)
      ie_job.results = json.dumps(info)
      for block_info in info:
        if block_info["block_errors"] or block_info["row_errors"]:
          ie_job.status = "Analysis Failed"
          ie_job.end_at = datetime.utcnow()
          job_emails.send_email(job_emails.IMPORT_FAILED, user.email,
                                ie_job.title)
          db.session.commit()
          return utils.make_simple_response()
      ie_job.status = "Finished"
      ie_job.end_at = datetime.utcnow()
      db.session.commit()
      job_emails.send_email(job_emails.IMPORT_COMPLETED, user.email,
                            ie_job.title)
  except Exception as e:  # pylint: disable=broad-except
    logger.exception(e.message)
    ie_job = import_export.get(ie_id)
    try:
      ie_job.status = "Failed"
      ie_job.end_at = datetime.utcnow()
      db.session.commit()
      job_emails.send_email(job_emails.IMPORT_FAILED, user.email,
                            ie_job.title)
      return utils.make_simple_response(e.message)
    except Exception as e:  # pylint: disable=broad-except
      logger.exception("%s: %s", app_errors.STATUS_SET_FAILED, e.message)
      return utils.make_simple_response(e.message)

  return utils.make_simple_response()