Consider as loaded the fields marked as modified

As the load method skips setting modified fields, so they are not and will
never be marked as loaded.
This commit is contained in:
Cédric Krier
2024-10-02 12:07:48 +02:00
parent 6f372e2b92
commit 68d093189a
3 changed files with 22 additions and 13 deletions
+6 -10
View File
@@ -1355,17 +1355,13 @@
}
},
get_loaded: function(fields) {
if (!jQuery.isEmptyObject(fields)) {
var result = true;
for (const field of fields) {
if (!(field in this._loaded) && !(field in this.modified_fields)) {
result = false;
}
}
return result;
if (!fields) {
fields = Object.keys(this.model.fields);
}
return Sao.common.compare(Object.keys(this.model.fields).sort(),
Object.keys(this._loaded).sort());
fields = new Set(fields);
var loaded = new Set(Object.keys(this._loaded));
loaded = loaded.union(new Set(Object.keys(this.modified_fields)));
return fields.isSubsetOf(loaded);
},
get root_parent() {
var parent = this;
+13
View File
@@ -136,6 +136,19 @@ var Sao = {
}
}
if (!Set.prototype.union) {
Set.prototype.union = function(other) {
if (this === null) {
throw new TypeError();
}
const result = new Set(this);
for (const key of other.keys()) {
result.add(key);
}
return result
}
}
Sao.setdefault = function(object, key, value) {
if (!Object.prototype.hasOwnProperty.call(object, key)) {
object[key] = value;
@@ -303,9 +303,9 @@ class Record:
self.reload(fields)
def get_loaded(self, fields=None):
if fields:
return set(fields) <= (self._loaded | set(self.modified_fields))
return set(self.group.fields.keys()) == self._loaded
if fields is None:
fields = self.group.fields.keys()
return set(fields) <= (self._loaded | set(self.modified_fields))
loaded = property(get_loaded)