예제 #1
0
 def save(self, *args, **kwargs):
     if not self.diff:
         old = self.old.data if self.old else {}
         new = self.new.data if self.new else {}
         self.diff = make_diff(old, new)
     super().save(*args, **kwargs)
     Redirect.from_diff(self)
예제 #2
0
파일: versioning.py 프로젝트: odorie/ban
 def save(self, *args, **kwargs):
     if not self.diff:
         old = self.old.as_resource if self.old else {}
         new = self.new.as_resource if self.new else {}
         self.diff = make_diff(old, new)
     super().save(*args, **kwargs)
     IdentifierRedirect.from_diff(self)
예제 #3
0
 def save(self, *args, **kwargs):
     if not self.diff:
         old = self.old.data if self.old else {}
         new = self.new.data if self.new else {}
         self.diff = make_diff(old, new)
     super().save(*args, **kwargs)
     Redirect.from_diff(self)
예제 #4
0
파일: validators.py 프로젝트: gschittek/ban
 def patch(self):
     # Let's try to be smart and patch object if claimed version does not
     # match with expected but not conflict is detected.
     claimed_version = max(1, self.data.get('version', 1))
     current_version = self.instance.version if self.instance else 0
     if self.instance and claimed_version <= current_version > 1:
         base = self.instance.load_version(claimed_version - 1)
         current = self.instance.load_version(current_version)
         diff = make_diff(base.data, current.data)
         # Those are keys changed between that last know version of the
         # client and the current version we have.
         protected = diff.keys()
         diff = make_diff(base.data, self.data, update=self.update)
         conflict = any(k in protected for k in diff.keys())
         if not conflict:
             for key in diff.keys():
                 setattr(self.instance, key, self.data.get(key))
             self.instance.increment_version()
             return
     super().patch()
예제 #5
0
 def patch(self):
     # Let's try to be smart and patch object if claimed version does not
     # match with expected but not conflict is detected.
     claimed_version = max(1, self.data.get('version', 1))
     current_version = self.instance.version if self.instance else 0
     if self.instance and claimed_version <= current_version > 1:
         base = self.instance.load_version(claimed_version - 1)
         current = self.instance.load_version(current_version)
         diff = make_diff(base.data, current.data)
         # Those are keys changed between that last know version of the
         # client and the current version we have.
         protected = diff.keys()
         diff = make_diff(base.data, self.data,
                          update=self.update)
         conflict = any(k in protected for k in diff.keys())
         if not conflict:
             for key in diff.keys():
                 setattr(self.instance, key, self.data.get(key))
             self.instance.increment_version()
             return
     super().patch()