From f724ec9c30438a1a12c5011173d6d8fb370407a5 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Tue, 15 Nov 2022 13:09:06 -0700 Subject: [PATCH] Add models' str and admin page columns --- apiserver/apiserver/api/admin.py | 9 +++++- apiserver/apiserver/api/models.py | 52 +++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/apiserver/apiserver/api/admin.py b/apiserver/apiserver/api/admin.py index 59882f6..0b3adab 100644 --- a/apiserver/apiserver/api/admin.py +++ b/apiserver/apiserver/api/admin.py @@ -8,7 +8,14 @@ for model in app_models: if model._meta.model_name.startswith('historical'): continue + class MyAdmin(SimpleHistoryAdmin): + pass + try: - admin.site.register(model, SimpleHistoryAdmin) + if hasattr(model, 'MY_FIELDS'): + MyAdmin.list_display = model.MY_FIELDS + MyAdmin.search_fields = model.MY_FIELDS + + admin.site.register(model, MyAdmin) except AlreadyRegistered: pass diff --git a/apiserver/apiserver/api/models.py b/apiserver/apiserver/api/models.py index c6b1025..11c6d4b 100644 --- a/apiserver/apiserver/api/models.py +++ b/apiserver/apiserver/api/models.py @@ -61,6 +61,10 @@ class Member(models.Model): history = HistoricalRecords(excluded_fields=['member_forms']) + MY_FIELDS = ['user', 'preferred_name', 'last_name', 'status'] + def __str__(self): + return self.user.username + class Transaction(models.Model): user = models.ForeignKey(User, related_name='transactions', blank=True, null=True, on_delete=models.SET_NULL) recorder = models.ForeignKey(User, related_name=IGNORE, blank=True, null=True, on_delete=models.SET_NULL) @@ -85,6 +89,10 @@ class Transaction(models.Model): history = HistoricalRecords() + MY_FIELDS = ['date', 'user', 'amount', 'protocoin', 'account_type', 'category'] + def __str__(self): + return '%s tx %s' % (user.username, date) + class PayPalHint(models.Model): user = models.ForeignKey(User, related_name='paypal_hints', blank=True, null=True, on_delete=models.SET_NULL) @@ -93,6 +101,10 @@ class PayPalHint(models.Model): history = HistoricalRecords() + MY_FIELDS = ['account', 'user'] + def __str__(self): + return self.account + class IPN(models.Model): datetime = models.DateTimeField(auto_now_add=True) data = models.TextField() @@ -100,6 +112,10 @@ class IPN(models.Model): history = HistoricalRecords() + MY_FIELDS = ['datetime', 'status'] + def __str__(self): + return self.datetime + class Card(models.Model): user = models.ForeignKey(User, related_name='cards', blank=True, null=True, on_delete=models.SET_NULL) @@ -112,6 +128,10 @@ class Card(models.Model): history = HistoricalRecords(excluded_fields=['last_seen_at', 'last_seen']) + MY_FIELDS = ['card_number', 'user', 'last_seen'] + def __str__(self): + return self.card_number + class Course(models.Model): name = models.TextField(blank=True, null=True) description = models.TextField(blank=True, null=True) @@ -120,6 +140,10 @@ class Course(models.Model): history = HistoricalRecords() + MY_FIELDS = ['name', 'id'] + def __str__(self): + return self.name + class Session(models.Model): instructor = models.ForeignKey(User, related_name='teaching', blank=True, null=True, on_delete=models.SET_NULL) course = models.ForeignKey(Course, related_name='sessions', blank=True, null=True, on_delete=models.SET_NULL) @@ -132,6 +156,10 @@ class Session(models.Model): history = HistoricalRecords() + MY_FIELDS = ['datetime', 'course', 'instructor'] + def __str__(self): + return '%s @ %s' % (self.course.name, self.datetime) + class Training(models.Model): user = models.ForeignKey(User, related_name='training', blank=True, null=True, on_delete=models.SET_NULL) session = models.ForeignKey(Session, related_name='students', blank=True, null=True, on_delete=models.SET_NULL) @@ -143,12 +171,20 @@ class Training(models.Model): history = HistoricalRecords() + MY_FIELDS = ['session', 'user'] + def __str__(self): + return '%s taking %s @ %s' % (self.user, self.session.course.name, self.session.datetime) + class Interest(models.Model): user = models.ForeignKey(User, related_name='interests', null=True, on_delete=models.SET_NULL) course = models.ForeignKey(Course, related_name='interests', null=True, on_delete=models.SET_NULL) satisfied_by = models.ForeignKey(Session, related_name='satisfies', null=True, on_delete=models.SET_NULL) + MY_FIELDS = ['user', 'course', 'satisfied_by'] + def __str__(self): + return '%s interested in %s' % (self.user, self.course) + class MetaInfo(models.Model): backup_id = models.TextField() @@ -188,6 +224,10 @@ class Usage(models.Model): history = HistoricalRecords(excluded_fields=['num_reports']) + MY_FIELDS = ['started_at', 'finished_at', 'user', 'num_seconds', 'should_bill'] + def __str__(self): + return self.started_at + class PinballScore(models.Model): user = models.ForeignKey(User, related_name='scores', blank=True, null=True, on_delete=models.SET_NULL) @@ -200,6 +240,10 @@ class PinballScore(models.Model): # no history + MY_FIELDS = ['started_at', 'game_id', 'player', 'score'] + def __str__(self): + return self.started_at + class HistoryIndex(models.Model): content_type = models.ForeignKey(ContentType, null=True, on_delete=models.SET_NULL) object_id = models.PositiveIntegerField() @@ -216,9 +260,17 @@ class HistoryIndex(models.Model): is_system = models.BooleanField() is_admin = models.BooleanField() + MY_FIELDS = ['history_date', 'history_user', 'history_type', 'owner_name', 'object_name'] + def __str__(self): + return '%s changed %s\'s %s' % (self.history_user, self.owner_name, self.object_name) + class HistoryChange(models.Model): index = models.ForeignKey(HistoryIndex, related_name='changes', null=True, on_delete=models.SET_NULL) field = models.TextField() old = models.TextField() new = models.TextField() + + MY_FIELDS = ['field', 'old', 'new', 'index'] + def __str__(self): + return self.field