|
|
res = defaultdict(lambda: defaultdict(int))
data = self.env["se.binding"]._read_group(
[
("index_id", "in", self.ids),
],
["index_id", "state"],
aggregates=["__count"],
)
_all = 0
for index, state, count in data:
res[index][state] = count
_all += count
def get(index, states):
return sum([res[index][state] for state in states])
for record in self:
record.count_done = get(record, ["done"])
record.count_pending = get(
record,
[
"to_recompute",
"recomputing",
"to_export",
"exporting",
"to_delete",
"deleting",
],
)
record.count_error = get(record, ["invalid_data", "recompute_error"])
record.count_all = _all
if record.count_error:
record.color = 1
elif record.count_pending:
record.color = 2
else:
record.color = 10
|
|