journal: ignore event referencing deleted service in statistics (#50987)
This commit is contained in:
parent
cc02a30b14
commit
8efb3ee192
|
@ -84,11 +84,12 @@ class EventTypeWithHow(EventTypeWithService):
|
|||
for reference_id in stat['reference_ids'] or []:
|
||||
content_type_id, instance_pk = n_2_pairing_rev(reference_id)
|
||||
if content_type_id == service_ct_id:
|
||||
reference_label = reference_labels[instance_pk]
|
||||
reference_label = reference_labels.get(instance_pk)
|
||||
break
|
||||
else:
|
||||
reference_label = _('None')
|
||||
stats.add(x_label=stat[group_by_time], y_label=reference_label, value=stat['count'])
|
||||
if reference_label:
|
||||
stats.add(x_label=stat[group_by_time], y_label=reference_label, value=stat['count'])
|
||||
|
||||
return stats.to_json()
|
||||
|
||||
|
|
|
@ -608,3 +608,29 @@ def test_statistics_fill_date_gaps(db, freezer):
|
|||
'x_labels': ['2020', '2021', '2022', '2023', '2024', '2025'],
|
||||
'series': [{'label': 'password', 'data': [1, None, None, None, None, 1]}],
|
||||
}
|
||||
|
||||
|
||||
def test_statistics_deleted_service(db, freezer):
|
||||
user = User.objects.create(username='john.doe', email='john.doe@example.com')
|
||||
ou = OU.objects.create(name='Second OU')
|
||||
portal = Service.objects.create(name='portal', slug='portal', ou=ou)
|
||||
|
||||
method = {'how': 'password-on-https'}
|
||||
event_type = EventType.objects.get_for_name('user.login')
|
||||
event_type_definition = event_type.definition
|
||||
|
||||
freezer.move_to('2020-02-03 12:00')
|
||||
event = Event.objects.create(type=event_type, references=[user, portal], user=user, data=method)
|
||||
event = Event.objects.create(type=event_type, references=[user], user=user, data=method)
|
||||
|
||||
stats = event_type_definition.get_service_statistics('month')
|
||||
stats['series'].sort(key=lambda x: x['label'])
|
||||
assert stats == {
|
||||
'x_labels': ['2020-02'],
|
||||
'series': [{'label': 'None', 'data': [1]}, {'label': 'portal', 'data': [1]}],
|
||||
}
|
||||
|
||||
portal.delete()
|
||||
stats = event_type_definition.get_service_statistics('month')
|
||||
stats['series'].sort(key=lambda x: x['label'])
|
||||
assert stats == {'x_labels': ['2020-02'], 'series': [{'label': 'None', 'data': [1]}]}
|
||||
|
|
Loading…
Reference in New Issue