Merge pull request #17153 from ankush/disable_first_version
perf: disable creating version for new docs
This commit is contained in:
commit
66deca1530
4 changed files with 33 additions and 8 deletions
|
|
@ -32,6 +32,19 @@ class TestVersion(unittest.TestCase):
|
|||
self.assertEqual(get_old_values(diff)[1], "01-01-2014 00:00:00")
|
||||
self.assertEqual(get_new_values(diff)[1], "07-20-2017 00:00:00")
|
||||
|
||||
def test_no_version_on_new_doc(self):
|
||||
from frappe.desk.form.load import get_versions
|
||||
|
||||
t = frappe.get_doc(doctype="ToDo", description="something")
|
||||
t.save(ignore_version=False)
|
||||
|
||||
self.assertFalse(get_versions(t))
|
||||
|
||||
t = frappe.get_doc(t.doctype, t.name)
|
||||
t.description = "changed"
|
||||
t.save(ignore_version=False)
|
||||
self.assertTrue(get_versions(t))
|
||||
|
||||
|
||||
def get_fieldnames(change_array):
|
||||
return [d[0] for d in change_array]
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
# License: MIT. See LICENSE
|
||||
|
||||
import json
|
||||
from typing import Optional
|
||||
|
||||
import frappe
|
||||
from frappe.model import no_value_fields, table_fields
|
||||
|
|
@ -9,7 +10,15 @@ from frappe.model.document import Document
|
|||
|
||||
|
||||
class Version(Document):
|
||||
def set_diff(self, old, new):
|
||||
def update_version_info(self, old: Optional[Document], new: Document) -> bool:
|
||||
"""Update changed info and return true if change contains useful data."""
|
||||
if not old:
|
||||
# Check if doc has some information about creation source like data import
|
||||
return self.for_insert(new)
|
||||
else:
|
||||
return self.set_diff(old, new)
|
||||
|
||||
def set_diff(self, old: Document, new: Document) -> bool:
|
||||
"""Set the data property with the diff of the docs if present"""
|
||||
diff = get_diff(old, new)
|
||||
if diff:
|
||||
|
|
@ -20,8 +29,11 @@ class Version(Document):
|
|||
else:
|
||||
return False
|
||||
|
||||
def for_insert(self, doc):
|
||||
def for_insert(self, doc: Document) -> bool:
|
||||
updater_reference = doc.flags.updater_reference
|
||||
if not updater_reference:
|
||||
return False
|
||||
|
||||
data = {
|
||||
"creation": doc.creation,
|
||||
"updater_reference": updater_reference,
|
||||
|
|
@ -29,7 +41,8 @@ class Version(Document):
|
|||
}
|
||||
self.ref_doctype = doc.doctype
|
||||
self.docname = doc.name
|
||||
self.data = frappe.as_json(data)
|
||||
self.data = frappe.as_json(data, indent=None, separators=(",", ":"))
|
||||
return True
|
||||
|
||||
def get_data(self):
|
||||
return json.loads(self.data)
|
||||
|
|
|
|||
|
|
@ -1198,11 +1198,10 @@ class Document(BaseDocument):
|
|||
return
|
||||
|
||||
version = frappe.new_doc("Version")
|
||||
if not self._doc_before_save:
|
||||
version.for_insert(self)
|
||||
version.insert(ignore_permissions=True)
|
||||
elif version.set_diff(self._doc_before_save, self):
|
||||
|
||||
if is_useful_diff := version.update_version_info(self._doc_before_save, self):
|
||||
version.insert(ignore_permissions=True)
|
||||
|
||||
if not frappe.flags.in_migrate:
|
||||
# follow since you made a change?
|
||||
if frappe.get_cached_value("User", frappe.session.user, "follow_created_documents"):
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ class TestFormLoad(unittest.TestCase):
|
|||
self.assertEqual(len(docinfo.comments), 1)
|
||||
self.assertIn("test", docinfo.comments[0].content)
|
||||
|
||||
self.assertGreaterEqual(len(docinfo.versions), 2)
|
||||
self.assertGreaterEqual(len(docinfo.versions), 1)
|
||||
|
||||
self.assertEqual(set(docinfo.tags.split(",")), {"more_tag", "test_tag"})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue