Exemple #1
0
 def end(self):
     """Ends a revision."""
     self._assert_active()
     self._depth -= 1
     # Handle end of revision conditions here.
     if self._depth == 0:
         try:
             if self._versions and not self._is_invalid:
                 # Save a new revision.
                 revision = Revision.objects.create(user=self._user,
                                                    comment=self._comment)
                 revision_set = set()
                 # Follow relationships.
                 for version in self._versions:
                     add_to_revision(version, revision_set)
                 # Save version models.
                 for obj in revision_set:
                     fields, follow, format = get_registration_info(obj.__class__)
                     object_id = unicode(obj.pk)
                     content_type = ContentType.objects.get_for_model(obj)
                     serialized_data = serializers.serialize(format, [obj], fields=fields)
                     Version.objects.create(revision=revision,
                                            object_id=object_id,
                                            content_type=content_type,
                                            format=format,
                                            serialized_data=serialized_data,
                                            object_repr=unicode(obj))
                 for meta_cls, meta_kwargs in self._meta:
                     meta_cls._default_manager.create(revision=revision, **meta_kwargs)
         finally:
             self._clear()
     return False
 def revert(self, delete=False):
     """Reverts all objects in this revision."""
     versions = self.version_set.all()
     for version in versions:
         version.revert()
     if delete:
         # Get a set of all objects in this revision.
         old_revision_set = set([version.latest_object_version for version in versions])
         # Calculate the set of all objects that would be in the revision now.
         current_revision_set = set()
         for latest_object_version in old_revision_set:
             add_to_revision(latest_object_version, current_revision_set)
         for current_object in current_revision_set:
             if not current_object in old_revision_set:
                 current_object.delete()
Exemple #3
0
 def revert(self, delete=False):
     """Reverts all objects in this revision."""
     versions = self.version_set.all()
     for version in versions:
         version.revert()
     if delete:
         # Get a set of all objects in this revision.
         old_revision_set = set(
             [version.latest_object_version for version in versions])
         # Calculate the set of all objects that would be in the revision now.
         current_revision_set = set()
         for latest_object_version in old_revision_set:
             add_to_revision(latest_object_version, current_revision_set)
         for current_object in current_revision_set:
             if not current_object in old_revision_set:
                 current_object.delete()