Пример #1
0
    def commit_object(self):
        """Commit the row.

    This method also calls pre-and post-commit signals and handles failures.
    """
        if self.block_converter.converter.dry_run or self.ignore:
            return
        try:
            modified_objects = get_modified_objects(db.session)
            import_event = log_event(db.session, None)
            cache_utils.update_memcache_before_commit(
                self.block_converter,
                modified_objects,
                self.block_converter.CACHE_EXPIRY_IMPORT,
            )
            try:
                self.send_before_commit_signals(import_event)
            except StatusValidationError as exp:
                status_alias = self.headers.get("status",
                                                {}).get("display_name")
                self.add_error(errors.VALIDATION_ERROR,
                               column_name=status_alias,
                               message=exp.message)
            db.session.commit()
            self.block_converter._store_revision_ids(import_event)
            cache_utils.update_memcache_after_commit(self.block_converter)
            update_snapshot_index(db.session, modified_objects)
        except exc.SQLAlchemyError as err:
            db.session.rollback()
            logger.exception("Import failed with: %s", err.message)
            self.block_converter.add_errors(errors.UNKNOWN_ERROR,
                                            line=self.offset + 2)
        else:
            self.send_post_commit_signals(event=import_event)
Пример #2
0
 def save_import(self):
     """Commit all changes in the session and update memcache."""
     try:
         modified_objects = get_modified_objects(db.session)
         import_event = log_event(db.session, None)
         cache_utils.update_memcache_before_commit(self, modified_objects,
                                                   CACHE_EXPIRY_IMPORT)
         for row_converter in self.row_converters:
             try:
                 row_converter.send_before_commit_signals(import_event)
             except StatusValidationError as exp:
                 status_alias = row_converter.headers.get(
                     "status", {}).get("display_name")
                 row_converter.add_error(errors.VALIDATION_ERROR,
                                         column_name=status_alias,
                                         message=exp.message)
         db.session.commit()
         self._store_revision_ids(import_event)
         cache_utils.update_memcache_after_commit(self)
         update_snapshot_index(db.session, modified_objects)
         return import_event
     except exc.SQLAlchemyError as err:
         db.session.rollback()
         logger.exception("Import failed with: %s", err.message)
         self.add_errors(errors.UNKNOWN_ERROR, line=self.offset + 2)
Пример #3
0
  def commit_object(self):
    """Commit the row.

    This method also calls pre-and post-commit signals and handles failures.
    """
    if self.block_converter.converter.dry_run or self.ignore:
      return
    try:
      modified_objects = get_modified_objects(db.session)
      import_event = log_event(db.session, None)
      cache_utils.update_memcache_before_commit(
          self.block_converter,
          modified_objects,
          self.block_converter.CACHE_EXPIRY_IMPORT,
      )
      try:
        self.send_before_commit_signals(import_event)
      except StatusValidationError as exp:
        status_alias = self.headers.get("status", {}).get("display_name")
        self.add_error(errors.VALIDATION_ERROR,
                       column_name=status_alias,
                       message=exp.message)
      db.session.commit()
      self.block_converter._store_revision_ids(import_event)
      cache_utils.update_memcache_after_commit(self.block_converter)
      update_snapshot_index(db.session, modified_objects)
    except exc.SQLAlchemyError as err:
      db.session.rollback()
      logger.exception("Import failed with: %s", err.message)
      self.block_converter.add_errors(errors.UNKNOWN_ERROR,
                                      line=self.offset + 2)
    else:
      self.send_post_commit_signals(event=import_event)
Пример #4
0
 def save_import(self):
   """Commit all changes in the session and update memcache."""
   try:
     modified_objects = get_modified_objects(db.session)
     import_event = log_event(db.session, None)
     update_memcache_before_commit(
         self, modified_objects, CACHE_EXPIRY_IMPORT)
     db.session.commit()
     update_memcache_after_commit(self)
     update_snapshot_index(db.session, modified_objects)
     return import_event
   except exc.SQLAlchemyError as err:
     db.session.rollback()
     logger.exception("Import failed with: %s", err.message)
     self.add_errors(errors.UNKNOWN_ERROR, line=self.offset + 2)
Пример #5
0
  def delete_relationship(self, relationship):
    """Send post deletion signals."""
    db.session.delete(relationship)

    signals.Restful.model_deleted.send(
        models.Relationship, obj=relationship, service=self)
    modified_objects = services_common.get_modified_objects(db.session)
    event = log_event.log_event(db.session, relationship)
    cache_utils.update_memcache_before_commit(
        self.request, modified_objects,
        services_common.CACHE_EXPIRY_COLLECTION)

    db.session.flush()

    services_common.update_snapshot_index(modified_objects)
    cache_utils.update_memcache_after_commit(flask.request)
    signals.Restful.model_deleted_after_commit.send(
        models.Relationship, obj=relationship, service=self, event=event)
    services_common.send_event_job(event)
Пример #6
0
  def delete_relationship(self, relationship):
    """Send post deletion signals."""
    db.session.delete(relationship)

    signals.Restful.model_deleted.send(
        models.Relationship, obj=relationship, service=self)
    modified_objects = services_common.get_modified_objects(db.session)
    event = log_event.log_event(db.session, relationship)
    cache_utils.update_memcache_before_commit(
        self.request, modified_objects,
        services_common.CACHE_EXPIRY_COLLECTION)

    db.session.flush()

    services_common.update_snapshot_index(modified_objects)
    cache_utils.update_memcache_after_commit(flask.request)
    signals.Restful.model_deleted_after_commit.send(
        models.Relationship, obj=relationship, service=self, event=event)
    services_common.send_event_job(event)