diff --git a/logtracker/journal/forms.py b/logtracker/journal/forms.py index 37e3fe8..6d7a2a8 100644 --- a/logtracker/journal/forms.py +++ b/logtracker/journal/forms.py @@ -16,3 +16,4 @@ class EntriesForm(forms.Form): super().__init__(*args, **kwargs) self.fields['host'].choices = set([(e, e) for e in Entry.objects.hosts()]) self.fields['_systemd_unit'].choices = [(e, e) for e in Entry.objects.units()] + self.fields['tenant'].choices = [(e, e) for e in Entry.objects.tenants()] diff --git a/logtracker/journal/models.py b/logtracker/journal/models.py index 9791738..116ef99 100644 --- a/logtracker/journal/models.py +++ b/logtracker/journal/models.py @@ -50,6 +50,14 @@ class EntryManager(models.Manager): cache.set('units', value, 600 * random.random()) return value + def tenants(self): + value = cache.get('tenants') + if value is None: + value = sorted([v for v in self.model.objects.all().annotate(unit=KeyTextTransform('TENANT', 'data')).values_list('unit', flat=True).distinct() if v], key=lambda x: x.lower()) + cache.set('tenants', value, 600 * random.random()) + return value + + class Entry(models.Model): timestamp = models.DateTimeField(db_index=True) diff --git a/logtracker/journal/templates/journal/entry_list.html b/logtracker/journal/templates/journal/entry_list.html index 532da13..abe3104 100644 --- a/logtracker/journal/templates/journal/entry_list.html +++ b/logtracker/journal/templates/journal/entry_list.html @@ -23,7 +23,7 @@
{{ form.as_table }} - +