1 parent
947a63c456
commit
2219eb0915
2 files changed
+13
-4
No files matched your search
+5
-2
@@ -513,11 +513,14 @@
|
||||
} else {
|
||||
cmp = function(a, b) { return a < b; };
|
||||
}
|
||||
let max_id = Math.max(0, ...this.map((r) => r.id));
|
||||
for (const record of this) {
|
||||
if (record.get_loaded([field]) || changed || record.id < 0) {
|
||||
let prev_id = null;
|
||||
if (prev) {
|
||||
prev.load(field, false);
|
||||
index = prev.field_get(field);
|
||||
prev_id = prev.id >= 0 ? prev.id : max_id++;
|
||||
} else {
|
||||
index = null;
|
||||
}
|
||||
@@ -528,7 +531,7 @@
|
||||
update = true;
|
||||
} else if (prev) {
|
||||
if (record.id >= 0) {
|
||||
update = cmp(record.id, prev.id);
|
||||
update = cmp(record.id, prev_id);
|
||||
} else if (position === 0) {
|
||||
update = true;
|
||||
}
|
||||
@@ -536,7 +539,7 @@
|
||||
} else if (value === index) {
|
||||
if (prev) {
|
||||
if (record.id >= 0) {
|
||||
update = cmp(record.id, prev.id);
|
||||
update = cmp(record.id, prev_id);
|
||||
} else if (position === 0) {
|
||||
update = true;
|
||||
}
|
||||
|
||||
@@ -345,12 +345,18 @@ class Group(list):
|
||||
cmp = operator.gt
|
||||
else:
|
||||
cmp = operator.lt
|
||||
max_id = max(0, *(r.id for r in self))
|
||||
for record in self:
|
||||
# Assume not loaded records are correctly ordered
|
||||
# as far as we do not change any previous records.
|
||||
if record.get_loaded([field]) or changed or record.id < 0:
|
||||
if prev:
|
||||
index = prev[field].get(prev)
|
||||
if prev.id >= 0:
|
||||
prev_id = prev.id
|
||||
else:
|
||||
max_id += 1
|
||||
prev_id = max_id
|
||||
else:
|
||||
index = None
|
||||
update = False
|
||||
@@ -360,13 +366,13 @@ class Group(list):
|
||||
update = True
|
||||
elif prev:
|
||||
if record.id >= 0:
|
||||
update = cmp(record.id, prev.id)
|
||||
update = cmp(record.id, prev_id)
|
||||
elif position == 0:
|
||||
update = True
|
||||
elif value == index:
|
||||
if prev:
|
||||
if record.id >= 0:
|
||||
update = cmp(record.id, prev.id)
|
||||
update = cmp(record.id, prev_id)
|
||||
elif position == 0:
|
||||
update = True
|
||||
elif value <= (index or 0):
|
||||
|
||||
Reference in new issue
Block a user