showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 1 | """Django 1.0 admin interface declarations.""" |
| 2 | |
| 3 | from django.contrib import admin |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 4 | from django.db import models as dbmodels |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 5 | |
| 6 | from autotest_lib.frontend import settings |
| 7 | from autotest_lib.frontend.afe import model_logic, models |
| 8 | |
| 9 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 10 | class SiteAdmin(admin.ModelAdmin): |
| 11 | def formfield_for_dbfield(self, db_field, **kwargs): |
| 12 | field = super(SiteAdmin, self).formfield_for_dbfield(db_field, **kwargs) |
| 13 | if (db_field.rel and |
| 14 | issubclass(db_field.rel.to, model_logic.ModelWithInvalid)): |
| 15 | model = db_field.rel.to |
| 16 | field.choices = model.valid_objects.all().values_list( |
| 17 | 'id', model.name_field) |
| 18 | return field |
| 19 | |
| 20 | |
| 21 | class AtomicGroupAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 22 | list_display = ('name', 'description', 'max_number_of_machines') |
| 23 | |
| 24 | def queryset(self, request): |
| 25 | return models.AtomicGroup.valid_objects |
| 26 | |
| 27 | admin.site.register(models.AtomicGroup, AtomicGroupAdmin) |
| 28 | |
| 29 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 30 | class LabelAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 31 | list_display = ('name', 'kernel_config') |
| 32 | |
| 33 | def queryset(self, request): |
| 34 | return models.Label.valid_objects |
| 35 | |
| 36 | admin.site.register(models.Label, LabelAdmin) |
| 37 | |
| 38 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 39 | class UserAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 40 | list_display = ('login', 'access_level') |
| 41 | search_fields = ('login',) |
| 42 | |
| 43 | admin.site.register(models.User, UserAdmin) |
| 44 | |
| 45 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 46 | class HostAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 47 | # TODO(showard) - showing platform requires a SQL query for |
| 48 | # each row (since labels are many-to-many) - should we remove |
| 49 | # it? |
| 50 | list_display = ('hostname', 'platform', 'locked', 'status') |
| 51 | list_filter = ('labels', 'locked', 'protection') |
| 52 | search_fields = ('hostname', 'status') |
| 53 | filter_horizontal = ('labels',) |
| 54 | |
| 55 | def queryset(self, request): |
| 56 | return models.Host.valid_objects |
| 57 | |
| 58 | admin.site.register(models.Host, HostAdmin) |
| 59 | |
| 60 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 61 | class TestAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 62 | fields = ('name', 'author', 'test_category', 'test_class', |
| 63 | 'test_time', 'sync_count', 'test_type', 'path', |
| 64 | 'dependencies', 'experimental', 'run_verify', |
| 65 | 'description') |
| 66 | list_display = ('name', 'test_type', 'description', 'sync_count') |
| 67 | search_fields = ('name',) |
| 68 | filter_horizontal = ('dependency_labels',) |
| 69 | |
| 70 | admin.site.register(models.Test, TestAdmin) |
| 71 | |
| 72 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 73 | class ProfilerAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 74 | list_display = ('name', 'description') |
| 75 | search_fields = ('name',) |
| 76 | |
| 77 | admin.site.register(models.Profiler, ProfilerAdmin) |
| 78 | |
| 79 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 80 | class AclGroupAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 81 | list_display = ('name', 'description') |
| 82 | search_fields = ('name',) |
| 83 | filter_horizontal = ('users', 'hosts') |
| 84 | |
| 85 | admin.site.register(models.AclGroup, AclGroupAdmin) |
| 86 | |
| 87 | |
| 88 | if settings.FULL_ADMIN: |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 89 | class JobAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 90 | list_display = ('id', 'owner', 'name', 'control_type') |
| 91 | filter_horizontal = ('dependency_labels',) |
| 92 | |
| 93 | admin.site.register(models.Job, JobAdmin) |
| 94 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 95 | class IneligibleHostQueueAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 96 | list_display = ('id', 'job', 'host') |
| 97 | |
| 98 | admin.site.register(models.IneligibleHostQueue, IneligibleHostQueueAdmin) |
| 99 | |
showard | 65974e1 | 2009-08-20 23:34:38 +0000 | [diff] [blame^] | 100 | class HostQueueEntryAdmin(SiteAdmin): |
showard | a5288b4 | 2009-07-28 20:06:08 +0000 | [diff] [blame] | 101 | list_display = ('id', 'job', 'host', 'status', |
| 102 | 'meta_host') |
| 103 | |
| 104 | admin.site.register(models.HostQueueEntry, HostQueueEntryAdmin) |
| 105 | |
| 106 | admin.site.register(models.AbortedHostQueueEntry) |