mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-05 13:14:46 +02:00

* Ensure the Release and Milestone names are separated by a space when listing Milesones * Include the maintenance plan name in the name shown for each Release/Milestone * Allow filtering Releases/Milestones by maintenance plan Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
136 lines
5.0 KiB
Python
136 lines
5.0 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,
|
|
]
|
|
def save_model(self, request, obj, form, change):
|
|
# For new maintenance plans, copy releases from the first plan
|
|
if obj.pk is None:
|
|
copyfrom_mp = MaintenancePlan.objects.all().first()
|
|
else:
|
|
copyfrom_mp = None
|
|
super().save_model(request, obj, form, change)
|
|
if copyfrom_mp:
|
|
for release in copyfrom_mp.release_set.all():
|
|
release.pk = None
|
|
release.plan = obj
|
|
release.save()
|
|
milestone = Milestone(release=release)
|
|
milestone.name='Default'
|
|
milestone.start_date = release.start_date
|
|
milestone.end_date = release.end_date
|
|
milestone.save()
|
|
|
|
class ReleaseAdmin(admin.ModelAdmin):
|
|
search_fields = ['name']
|
|
list_filter = ['plan']
|
|
model = Release
|
|
|
|
class MilestoneAdmin(admin.ModelAdmin):
|
|
search_fields = ['name']
|
|
list_filter = ['release__plan', '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)
|