Add an action to duplicate a Branch object, along with all of the LayerBranches (and LayerMaintainers and LayerDependencies) underneath it.
Signed-off-by: Paul Eggleton <paul.eggle...@linux.intel.com> --- layerindex/admin.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/layerindex/admin.py b/layerindex/admin.py index 7339ce1..f50aae4 100644 --- a/layerindex/admin.py +++ b/layerindex/admin.py @@ -17,6 +17,32 @@ class LayerDependencyInline(admin.StackedInline): 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 LayerItemAdmin(CompareVersionAdmin): list_filter = ['status', 'layer_type'] -- 2.5.5 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto