[yocto] [layerindex-web][PATCH 1/4] admin: add an action to duplicate a branch

Paul Eggleton paul.eggleton at linux.intel.com
Tue Nov 15 19:18:31 PST 2016


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.eggleton at 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




More information about the yocto mailing list