8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-27 07:02:26 +00:00

Make related history more extensive for users and machines

This commit is contained in:
Jean-Romain Garnier 2020-04-25 11:22:39 +00:00 committed by Gabriel Detraz
parent 60a8fd0ed5
commit 4b33f57935

View file

@ -301,6 +301,9 @@ class RelatedHistory:
self.object_id = version.object_id self.object_id = version.object_id
self.name = version.object_repr self.name = version.object_repr
if self.model_name:
self.name = "{}: {}".format(self.model_name.title(), self.name)
def __eq__(self, other): def __eq__(self, other):
return ( return (
self.model_name == other.model_name self.model_name == other.model_name
@ -643,11 +646,14 @@ class UserHistory(History):
if obj is None: if obj is None:
return None return None
# Add in "related" elements the list of Machine objects # Add in "related" elements the list of objects
# that were once owned by this user # that were once owned by this user
query = Q(serialized_data__contains='"user": {}'.format(user_id))
query &= ~Q(serialized_data__contains='"model": "users.user"')
self.related = ( self.related = (
Version.objects.get_for_model(Machine) Version.objects.all()
.filter(serialized_data__contains='"user": {}'.format(user_id)) .filter(query)
.order_by("content_type__model")
) )
self.related = [RelatedHistory(v) for v in self.related] self.related = [RelatedHistory(v) for v in self.related]
self.related = list(dict.fromkeys(self.related)) self.related = list(dict.fromkeys(self.related))
@ -732,12 +738,13 @@ class MachineHistory(History):
self.event_type = MachineHistoryEvent self.event_type = MachineHistoryEvent
def get(self, machine_id, model): def get(self, machine_id, model):
# Add as "related" histories the list of Interface objects query = Q(serialized_data__contains='"machine": {}'.format(machine_id))
# that were once assigned to this machine query &= ~Q(serialized_data__contains='"model": "machines.machine"')
self.related = list(
self.related = (
Version.objects.get_for_model(Interface) Version.objects.get_for_model(Interface)
.filter(serialized_data__contains='"machine": {}'.format(machine_id)) .filter(query)
.order_by("-revision__date_created") .order_by("content_type__model")
) )
# Create RelatedHistory objects and remove duplicates # Create RelatedHistory objects and remove duplicates