layerindex-web/rrs/admin.py
Paul Eggleton 34466bac1d rrs: default python2/3 environments for new maintenance plan layer branches
It's a bit of a pain to have to set the two python environment fields on
every record in order to have things set correctly, and it can easily
get forgotten, so try to set them automatically by default (assuming
reasonable naming).

Note that this does introduce an annoying behaviour whereby if you click
"Add another Maintenance plan layer branch" and then decide you don't
want it, the admin form will insist you fill in the fields unless you
clear out the python2/3 environment fields. I'm not sure how to fix
that, so I'm leaving it as-is for now.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04 23:57:53 +12:00

118 lines
4.3 KiB
Python

# rrs-web - admin interface definitions
#
# Copyright (C) 2014 Intel Corporation
#
# Licensed under the MIT license, see COPYING.MIT for details
from django.utils.functional import curry
from django.contrib import admin
from django.contrib.admin import DateFieldListFilter
from django.forms.models import BaseInlineFormSet
from rrs.models import Release, Milestone, Maintainer, RecipeMaintainerHistory, \
RecipeMaintainer, RecipeDistro, RecipeUpgrade, RecipeUpstream, \
RecipeUpstreamHistory, MaintenancePlan, MaintenancePlanLayerBranch, \
RecipeMaintenanceLink
class MaintenancePlanLayerBranchFormSet(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
from layerindex.models import PythonEnvironment
initialfields = {}
py2env = PythonEnvironment.get_default_python2_environment()
if py2env:
initialfields['python2_environment'] = py2env.id
py3env = PythonEnvironment.get_default_python3_environment()
if py3env:
initialfields['python3_environment'] = py3env.id
if initialfields:
kwargs['initial'] = [initialfields]
super(MaintenancePlanLayerBranchFormSet, self).__init__(*args, **kwargs)
@property
def empty_form(self):
from layerindex.models import PythonEnvironment
form = super(MaintenancePlanLayerBranchFormSet, self).empty_form
py2env = PythonEnvironment.get_default_python2_environment()
if py2env:
form.fields['python2_environment'].initial = py2env
py3env = PythonEnvironment.get_default_python3_environment()
if py3env:
form.fields['python3_environment'].initial = py3env
return form
class MaintenancePlanLayerBranchInline(admin.StackedInline):
model = MaintenancePlanLayerBranch
formset = MaintenancePlanLayerBranchFormSet
readonly_fields = ['upgrade_date', 'upgrade_rev']
min_num = 1
extra = 0
class MaintenancePlanAdmin(admin.ModelAdmin):
model = MaintenancePlan
inlines = [
MaintenancePlanLayerBranchInline,
]
class ReleaseAdmin(admin.ModelAdmin):
search_fields = ['name']
model = Release
class MilestoneAdmin(admin.ModelAdmin):
search_fields = ['name']
list_filter = ['release__name']
model = Milestone
class MaintainerAdmin(admin.ModelAdmin):
search_fields = ['name']
model = Maintainer
class RecipeMaintainerHistoryAdmin(admin.ModelAdmin):
search_fields = ['title', 'author__name', 'sha1']
list_filter = ['author__name', ('date', DateFieldListFilter)]
model = RecipeMaintainerHistory
class RecipeMaintainerAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name', 'history', 'maintainer__name']
model = RecipeMaintainer
class RecipeDistroAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name', 'distro']
model = RecipeDistro
class RecipeUpgradeAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name',
('commit_date', DateFieldListFilter), 'maintainer__name']
model = RecipeUpgrade
class RecipeUpstreamHistoryAdmin(admin.ModelAdmin):
list_filter = [
('start_date', DateFieldListFilter),
('end_date', DateFieldListFilter)
]
model = RecipeUpstreamHistory
class RecipeUpstreamAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name', 'status',
'type', ('date', DateFieldListFilter), 'history']
model = RecipeUpstream
class RecipeMaintenanceLinkAdmin(admin.ModelAdmin):
model = RecipeMaintenanceLink
admin.site.register(MaintenancePlan, MaintenancePlanAdmin)
admin.site.register(Release, ReleaseAdmin)
admin.site.register(Milestone, MilestoneAdmin)
admin.site.register(Maintainer, MaintainerAdmin)
admin.site.register(RecipeMaintainerHistory, RecipeMaintainerHistoryAdmin)
admin.site.register(RecipeMaintainer, RecipeMaintainerAdmin)
admin.site.register(RecipeDistro, RecipeDistroAdmin)
admin.site.register(RecipeUpgrade, RecipeUpgradeAdmin)
admin.site.register(RecipeUpstreamHistory, RecipeUpstreamHistoryAdmin)
admin.site.register(RecipeUpstream, RecipeUpstreamAdmin)
admin.site.register(RecipeMaintenanceLink, RecipeMaintenanceLinkAdmin)