blob: 2123f38f1a25da37bdcfbfda32501e04022ced94 [file] [log] [blame]
showarda5288b42009-07-28 20:06:08 +00001"""Django 1.0 admin interface declarations."""
2
3from django.contrib import admin
showard65974e12009-08-20 23:34:38 +00004from django.db import models as dbmodels
showarda5288b42009-07-28 20:06:08 +00005
6from autotest_lib.frontend import settings
7from autotest_lib.frontend.afe import model_logic, models
8
9
showard65974e12009-08-20 23:34:38 +000010class 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
21class AtomicGroupAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000022 list_display = ('name', 'description', 'max_number_of_machines')
23
24 def queryset(self, request):
25 return models.AtomicGroup.valid_objects
26
27admin.site.register(models.AtomicGroup, AtomicGroupAdmin)
28
29
showard65974e12009-08-20 23:34:38 +000030class LabelAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000031 list_display = ('name', 'kernel_config')
32
33 def queryset(self, request):
34 return models.Label.valid_objects
35
36admin.site.register(models.Label, LabelAdmin)
37
38
showard65974e12009-08-20 23:34:38 +000039class UserAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000040 list_display = ('login', 'access_level')
41 search_fields = ('login',)
42
43admin.site.register(models.User, UserAdmin)
44
45
showard65974e12009-08-20 23:34:38 +000046class HostAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000047 # 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
58admin.site.register(models.Host, HostAdmin)
59
60
showard65974e12009-08-20 23:34:38 +000061class TestAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000062 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
70admin.site.register(models.Test, TestAdmin)
71
72
showard65974e12009-08-20 23:34:38 +000073class ProfilerAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000074 list_display = ('name', 'description')
75 search_fields = ('name',)
76
77admin.site.register(models.Profiler, ProfilerAdmin)
78
79
showard65974e12009-08-20 23:34:38 +000080class AclGroupAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000081 list_display = ('name', 'description')
82 search_fields = ('name',)
83 filter_horizontal = ('users', 'hosts')
84
85admin.site.register(models.AclGroup, AclGroupAdmin)
86
87
88if settings.FULL_ADMIN:
showard65974e12009-08-20 23:34:38 +000089 class JobAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000090 list_display = ('id', 'owner', 'name', 'control_type')
91 filter_horizontal = ('dependency_labels',)
92
93 admin.site.register(models.Job, JobAdmin)
94
showard65974e12009-08-20 23:34:38 +000095 class IneligibleHostQueueAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +000096 list_display = ('id', 'job', 'host')
97
98 admin.site.register(models.IneligibleHostQueue, IneligibleHostQueueAdmin)
99
showard65974e12009-08-20 23:34:38 +0000100 class HostQueueEntryAdmin(SiteAdmin):
showarda5288b42009-07-28 20:06:08 +0000101 list_display = ('id', 'job', 'host', 'status',
102 'meta_host')
103
104 admin.site.register(models.HostQueueEntry, HostQueueEntryAdmin)
105
106 admin.site.register(models.AbortedHostQueueEntry)