layerindex-web/layerindex/admin.py
Paul Eggleton 6d31e6ebf7 admin: fix regression in ClassicRecipe admin
Since we added the "packageconfig" to Recipe we need to exclude it from
the admin or we see an error when we try to open ClassicRecipe in the
admin site.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2017-12-20 15:25:18 +13:00

189 lines
7.0 KiB
Python

# layerindex-web - admin interface definitions
#
# Copyright (C) 2013 Intel Corporation
#
# Licensed under the MIT license, see COPYING.MIT for details
from layerindex.models import *
from django.contrib import admin
from reversion_compare.admin import CompareVersionAdmin
from django.forms import TextInput
class LayerMaintainerInline(admin.StackedInline):
model = LayerMaintainer
class LayerDependencyInline(admin.StackedInline):
model = LayerDependency
class BranchAdmin(CompareVersionAdmin):
model = Branch
actions = ['duplicate']
def duplicate(self, request, queryset):
for branch in queryset:
layerbranches = branch.layerbranch_set.all()
branch.pk = None
branch.name += '-copy'
branch.save()
for layerbranch in layerbranches:
layerbranch_maintainers = layerbranch.layermaintainer_set.all()
layerbranch_dependencies = layerbranch.dependencies_set.all()
layerbranch.pk = None
layerbranch.branch = branch
layerbranch.vcs_last_fetch = None
layerbranch.vcs_last_rev = ''
layerbranch.vcs_last_commit = None
layerbranch.save()
for layermaintainer in layerbranch_maintainers:
layermaintainer.pk = None
layermaintainer.layerbranch = layerbranch
layermaintainer.save()
for layerdependency in layerbranch_dependencies:
layerdependency.pk = None
layerdependency.layerbranch = layerbranch
layerdependency.save()
duplicate.short_description = "Duplicate selected Branches"
class YPCompatibleVersionAdmin(CompareVersionAdmin):
pass
class LayerItemAdmin(CompareVersionAdmin):
list_filter = ['status', 'layer_type']
save_as = True
search_fields = ['name', 'summary']
formfield_overrides = {
models.URLField: {'widget': TextInput(attrs={'size':'100'})},
models.CharField: {'widget': TextInput(attrs={'size':'100'})},
}
class LayerBranchAdmin(CompareVersionAdmin):
list_filter = ['layer__name']
readonly_fields = ('vcs_last_fetch', 'vcs_last_rev', 'vcs_last_commit')
inlines = [
LayerDependencyInline,
LayerMaintainerInline,
]
def get_readonly_fields(self, request, obj=None):
readonly_fields = self.readonly_fields
if obj:
readonly_fields += ('layer', 'branch')
if not request.user.has_perm('layerindex.set_yp_compatibility'):
readonly_fields += ('yp_compatible_version',)
return readonly_fields
class LayerMaintainerAdmin(CompareVersionAdmin):
list_filter = ['status', 'layerbranch__layer__name']
class LayerDependencyAdmin(CompareVersionAdmin):
list_filter = ['layerbranch__layer__name']
class LayerNoteAdmin(CompareVersionAdmin):
list_filter = ['layer__name']
class UpdateAdmin(admin.ModelAdmin):
pass
class LayerUpdateAdmin(admin.ModelAdmin):
list_filter = ['update__started', 'layerbranch__layer__name', 'layerbranch__branch__name']
class RecipeAdmin(admin.ModelAdmin):
search_fields = ['filename', 'pn']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
readonly_fields = [fieldname for fieldname in Recipe._meta.get_all_field_names() if fieldname not in ['recipefiledependency', 'classicrecipe', 'packageconfig']]
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class PackageConfigAdmin(admin.ModelAdmin):
search_fields = ['feature']
list_display = ('feature',)
ordering = ('feature',)
class StaticBuildDepAdmin(admin.ModelAdmin):
search_fields = ['name']
list_display = ('name',)
filter_horizontal = ('recipes',)
class DynamicBuildDepAdmin(admin.ModelAdmin):
search_fields = ['name']
list_display = ('name',)
filter_horizontal = ('package_configs',)
class ClassicRecipeAdmin(admin.ModelAdmin):
search_fields = ['filename', 'pn']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
readonly_fields = [fieldname for fieldname in Recipe._meta.get_all_field_names() if fieldname not in ['recipefiledependency', 'packageconfig']]
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class MachineAdmin(admin.ModelAdmin):
search_fields = ['name']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
readonly_fields = Machine._meta.get_all_field_names()
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class DistroAdmin(admin.ModelAdmin):
search_fields = ['name']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
readonly_fields = Distro._meta.get_all_field_names()
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class BBAppendAdmin(admin.ModelAdmin):
search_fields = ['filename']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
readonly_fields = BBAppend._meta.get_all_field_names()
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class BBClassAdmin(admin.ModelAdmin):
search_fields = ['name']
list_filter = ['layerbranch__layer__name', 'layerbranch__branch__name']
readonly_fields = BBClass._meta.get_all_field_names()
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
class RecipeChangeInline(admin.StackedInline):
model = RecipeChange
class RecipeChangesetAdmin(admin.ModelAdmin):
model = RecipeChangeset
inlines = [
RecipeChangeInline
]
admin.site.register(Branch, BranchAdmin)
admin.site.register(YPCompatibleVersion, YPCompatibleVersionAdmin)
admin.site.register(LayerItem, LayerItemAdmin)
admin.site.register(LayerBranch, LayerBranchAdmin)
admin.site.register(LayerMaintainer, LayerMaintainerAdmin)
admin.site.register(LayerDependency, LayerDependencyAdmin)
admin.site.register(LayerNote, LayerNoteAdmin)
admin.site.register(Update, UpdateAdmin)
admin.site.register(LayerUpdate, LayerUpdateAdmin)
admin.site.register(PackageConfig, PackageConfigAdmin)
admin.site.register(StaticBuildDep, StaticBuildDepAdmin)
admin.site.register(DynamicBuildDep, DynamicBuildDepAdmin)
admin.site.register(Recipe, RecipeAdmin)
admin.site.register(RecipeFileDependency)
admin.site.register(Machine, MachineAdmin)
admin.site.register(Distro, DistroAdmin)
admin.site.register(BBAppend, BBAppendAdmin)
admin.site.register(BBClass, BBClassAdmin)
admin.site.register(RecipeChangeset, RecipeChangesetAdmin)
admin.site.register(ClassicRecipe, ClassicRecipeAdmin)
admin.site.register(PythonEnvironment)