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:
+6
-10
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user