diff --git a/frappe/model/document.py b/frappe/model/document.py index 664684b529..8578bed27f 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -4,7 +4,6 @@ import hashlib import json import time from collections.abc import Generator, Iterable -from datetime import date, datetime, timedelta from typing import TYPE_CHECKING, Any, Optional from werkzeug.exceptions import NotFound @@ -456,6 +455,8 @@ class Document(BaseDocument): def has_value_changed(self, fieldname): """Return True if value has changed before and after saving.""" + from datetime import date, datetime, timedelta + previous = self.get_doc_before_save() if not previous: diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index 0b993570e4..dd76970903 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -101,8 +101,13 @@ class TestDocument(FrappeTestCase): def test_value_changed(self): d = self.test_insert() d.subject = "subject changed again" - d.save() + d.load_doc_before_save() + d.update_modified() + self.assertTrue(d.has_value_changed("subject")) + self.assertTrue(d.has_value_changed("modified")) + + self.assertFalse(d.has_value_changed("creation")) self.assertFalse(d.has_value_changed("event_type")) def test_mandatory(self):