From 4d21ebb78e955da8ec960771ce83e9429ecbf875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Fri, 20 Oct 2023 14:43:00 +0200 Subject: [PATCH] fix postgres compatibility --- src/c3nav/mesh/models.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/c3nav/mesh/models.py b/src/c3nav/mesh/models.py index c2ac8749..c8c08c55 100644 --- a/src/c3nav/mesh/models.py +++ b/src/c3nav/mesh/models.py @@ -34,11 +34,11 @@ class MeshNodeQuerySet(models.QuerySet): if self._prefetch_last_messages and not self._prefetch_last_messages_done: nodes = {node.pk: node for node in self._result_cache} try: - for message in NodeMessage.objects.order_by('-datetime', '-pk').filter( + for message in NodeMessage.objects.order_by('message_type', 'src_node', '-datetime', '-pk').filter( message_type__in=self._prefetch_last_messages, src_node__in=nodes.keys(), ).prefetch_related("uplink_node").distinct('message_type', 'src_node'): - nodes[message.node].last_messages[message.message_type] = message + nodes[message.src_node_id].last_messages[message.message_type] = message for node in nodes.values(): node.last_messages["any"] = max(node.last_messages.values(), key=attrgetter("datetime")) except NotSupportedError: @@ -75,6 +75,9 @@ class LastMessagesByTypeLookup(UserDict): return msg def __setitem__(self, key, item): + if key == "any": + self.data["any"] = item + return self.data[self._get_key(key)] = item