Repository navigation
Expand file tree
/
Copy pathadmin.py
More file actions
111 lines (81 loc) · 3.7 KB
/
Copy pathadmin.py
File metadata and controls
111 lines (81 loc) · 3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from django import forms
from django.contrib import admin
from codespeed.models import (Project, Revision, Executable, Benchmark, Branch,
Result, Environment, Report)
class ProjectForm(forms.ModelForm):
default_branch = forms.CharField(max_length=32, required=False)
def clean(self):
if not self.cleaned_data.get('default_branch'):
repo_type = self.cleaned_data['repo_type']
if repo_type in [Project.GIT, Project.GITHUB]:
self.cleaned_data['default_branch'] = "master"
elif repo_type == Project.MERCURIAL:
self.cleaned_data['default_branch'] = "default"
elif repo_type == Project.SUBVERSION:
self.cleaned_data['default_branch'] = "trunk"
else:
self.add_error('default_branch', 'This field is required.')
class Meta:
model = Project
fields = '__all__'
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
list_display = ('name', 'repo_type', 'repo_path', 'track')
form = ProjectForm
@admin.register(Branch)
class BranchAdmin(admin.ModelAdmin):
list_display = ('name', 'project', 'display_on_comparison_page')
list_filter = ('project',)
actions = ['enable_comparison_page', 'disable_comparison_page']
@admin.action(description='Display selected branches on comparison page')
def enable_comparison_page(self, request, queryset):
queryset.update(display_on_comparison_page=True)
@admin.action(description='Hide selected branches from comparison page')
def disable_comparison_page(self, request, queryset):
queryset.update(display_on_comparison_page=False)
@admin.register(Revision)
class RevisionAdmin(admin.ModelAdmin):
list_display = ('commitid', 'branch', 'tag', 'date')
list_filter = ('branch__project', 'branch', 'tag', 'date')
search_fields = ('commitid', 'tag')
raw_id_fields = ('branch',)
@admin.register(Executable)
class ExecutableAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'id', 'project')
list_filter = ('project',)
ordering = ['name']
search_fields = ('name', 'description', 'project__name')
@admin.register(Benchmark)
class BenchmarkAdmin(admin.ModelAdmin):
list_display = ('name', 'source', 'data_type', 'description',
'units_title', 'units', 'lessisbetter',
'default_on_comparison')
list_filter = ('data_type', 'lessisbetter')
ordering = ['name']
search_fields = ('name', 'description')
@admin.register(Environment)
class EnvironmentAdmin(admin.ModelAdmin):
list_display = ('name', 'cpu', 'memory', 'os', 'kernel')
ordering = ['name']
search_fields = ('name', 'cpu', 'memory', 'os', 'kernel')
@admin.register(Result)
class ResultAdmin(admin.ModelAdmin):
list_display = ('revision', 'benchmark', 'source', 'executable',
'environment', 'value', 'date')
list_filter = ('environment', 'executable', 'date', 'benchmark__source',
'benchmark')
list_select_related = ('revision', 'benchmark', 'executable', 'environment')
raw_id_fields = ('revision', 'benchmark', 'executable', 'environment')
@admin.display(ordering='benchmark__source', description='Source')
def source(self, obj):
return obj.benchmark.source
def recalculate_report(modeladmin, request, queryset):
for report in queryset:
report.save()
recalculate_report.short_description = "Recalculate reports"
@admin.register(Report)
class ReportAdmin(admin.ModelAdmin):
list_display = ('revision', 'summary', 'colorcode')
list_filter = ('environment', 'executable')
ordering = ['-revision']
actions = [recalculate_report]