コード例 #1
0
ファイル: __init__.py プロジェクト: xuechaos/ggrc-core
 def update(self, event, revisions, _filter=None):
   """Update parent object's snapshots."""
   _, for_update = self.analyze()
   result = self._update(for_update=for_update, event=event,
                         revisions=revisions, _filter=_filter)
   updated = result.response
   if not self.dry_run:
     indexer.reindex_pairs_bg(updated)
     self._copy_snapshot_relationships()
     self._create_audit_relationships()
   return result
コード例 #2
0
ファイル: __init__.py プロジェクト: xuechaos/ggrc-core
 def create(self, event, revisions, _filter=None):
   """Create snapshots of parent object's neighborhood per provided rules
   and split in chuncks if there are too many snapshottable objects."""
   for_create, _ = self.analyze()
   result = self._create(
       for_create=for_create, event=event,
       revisions=revisions, _filter=_filter)
   created = result.response
   if not self.dry_run:
     indexer.reindex_pairs_bg(created)
     self._copy_snapshot_relationships()
     self._create_audit_relationships()
   return result
コード例 #3
0
    def _upsert(self, event, revisions, _filter):
        """Update and (if needed) create snapshots

    Args:
      event: A ggrc.models.Event instance
      revisions: A set of tuples of pairs with revisions to which it should
        either create or update a snapshot of that particular audit
      _filter: Callable that should return True if it should be updated
    Returns:
      OperationResponse
    """
        for_create, for_update = self.analyze()
        create, update = None, None
        created, updated = set(), set()

        if for_update:
            update = self._update(for_update=for_update,
                                  event=event,
                                  revisions=revisions,
                                  _filter=_filter)
            updated = update.response
        if for_create:
            create = self._create(for_create=for_create,
                                  event=event,
                                  revisions=revisions,
                                  _filter=_filter)
            created = create.response

        to_reindex = updated | created
        if not self.dry_run:
            indexer.reindex_pairs_bg(to_reindex)
            self._remove_lost_snapshot_mappings()
            self._copy_snapshot_relationships()
            self._create_audit_relationships()
        return OperationResponse("upsert", True, {
            "create": create,
            "update": update
        }, {"dry-run": self.dry_run})