src/ldt/ldt/ldt_utils/contentindexer.py
changeset 1296 1a24fb79eb11
parent 1117 3bab1e42acfa
child 1300 7a638196577d
--- a/src/ldt/ldt/ldt_utils/contentindexer.py	Thu Apr 03 15:58:25 2014 +0200
+++ b/src/ldt/ldt/ldt_utils/contentindexer.py	Thu Apr 10 15:55:47 2014 +0200
@@ -7,10 +7,9 @@
 from ldt.ldt_utils.stat import update_stat_project, add_annotation_to_stat
 from ldt.ldt_utils.utils import reduce_text_node
 from ldt.utils.url import request_with_auth
-from tagging import settings as tagging_settings
 import logging
 import lxml.etree #@UnresolvedImport
-import tagging.utils
+from taggit.utils import parse_tags
 
 logger = logging.getLogger(__name__)
 
@@ -92,11 +91,6 @@
                 if tags is None:
                     tags = u""
                 
-                tags_list = [tag[:tagging_settings.MAX_TAG_LENGTH] for tag in tagging.utils.parse_tag_input(tags)]
-                tags = u",".join(tags_list)
-                if u"," not in tags:
-                    tags = u"," + tags
-                
 
                 title = reduce_text_node(elementNode, "title/text()")                
                 abstract = reduce_text_node(elementNode, "abstract/text()")
@@ -122,7 +116,6 @@
                               ensemble_id=ensembleId,
                               cutting_id=decoupId,
                               element_id=elementId,
-                              tags=tags,
                               title=title,
                               abstract=abstract,
                               duration=duration,
@@ -133,14 +126,20 @@
                               project_id=ldt_id,
                               audio_src=audio_src,
                               audio_href=audio_href)
+                # Because of taggit managing (we HAVE to have primary key to ad tags), we save segment and then tags
                 seg.polemics = seg.get_polemic(polemics)
-                if settings.LDT_INDEXATION_INSERT_BATCH_SIZE < 2:
-                    seg.save()
-                else:
-                    self.__segment_cache.append(seg)
-                    if not (len(self.__segment_cache)%settings.LDT_INDEXATION_INSERT_BATCH_SIZE):
-                        object_insert(Segment, self.__segment_cache)
-                        self.__segment_cache = []
+                seg.save()
+                for t in parse_tags(tags):
+                    seg.tags.add(t)
+                seg.save()
+                
+#                 if settings.LDT_INDEXATION_INSERT_BATCH_SIZE < 2:
+#                     seg.save()
+#                 else:
+#                     self.__segment_cache.append(seg)
+#                     if not (len(self.__segment_cache)%settings.LDT_INDEXATION_INSERT_BATCH_SIZE):
+#                         object_insert(Segment, self.__segment_cache)
+#                         self.__segment_cache = []
 
 
 class ContentIndexer(LdtIndexer):
@@ -221,7 +220,6 @@
               ensemble_id=ensemble_id,
               cutting_id=cutting_id,
               element_id=element_id,
-              tags=tags_str,
               title=title,
               abstract=abstract,
               duration=duration,
@@ -234,6 +232,9 @@
               audio_href=audio_href)
     seg.polemics = seg.get_polemic(polemics)
     seg.save()
+    for t in parse_tags(tags_str):
+        seg.tags.add(t)
+    seg.save()
     add_annotation_to_stat(seg.content, seg.start_ts, seg.start_ts+seg.duration)