Browse Source

[search] Deep copy of collection

Romain Rigaux 12 years ago
parent
commit
6698fe6
2 changed files with 27 additions and 9 deletions
  1. 26 7
      apps/search/src/search/search_controller.py
  2. 1 2
      apps/search/src/search/views.py

+ 26 - 7
apps/search/src/search/search_controller.py

@@ -88,15 +88,34 @@ class SearchController(object):
 
     return id
 
-  def copy_collection(self, collection_id, collection_type):
+  def copy_collection(self, collection_id):
     id = -1
-    try:
-      collection = Collection.objects.get(id=collection_id)
-      collection.label = collection.label + _(' (Copy)')
-      collection.id = None
-      collection.save()
-      id = collection.id
 
+    try:
+      copy = Collection.objects.get(id=collection_id)
+      copy.label += _(' (Copy)')
+      copy.id = copy.pk = None      
+      copy.save()
+
+      facets = copy.facets
+      facets.id = None
+      facets.save()
+      copy.facets = facets
+
+      result = copy.result
+      result.id = None
+      result.save()
+      copy.result = result
+
+
+      sorting = copy.sorting
+      sorting.id = None
+      sorting.save()
+      copy.sorting = sorting
+      
+      copy.save() 
+                
+      id = copy.id
     except Exception, e:
       LOG.warn('Error copying collection: %s' % e)
 

+ 1 - 2
apps/search/src/search/views.py

@@ -185,10 +185,9 @@ def admin_collection_copy(request):
     raise PopupException(_('POST request required.'))
 
   id = request.POST.get('id')
-  type = request.POST.get('type')
   searcher = SearchController()
   response = {
-    'id': searcher.copy_collection(id, type)
+    'id': searcher.copy_collection(id)
   }
 
   return HttpResponse(json.dumps(response), mimetype="application/json")