Add an argument to project save to avoid indexation
authorymh <ymh.work@gmail.com>
Mon, 21 Jan 2013 17:26:18 +0100
changeset 1072 687dabdd25a7
parent 1068 7271a5549682
child 1073 ac75fe343182
Add an argument to project save to avoid indexation
src/ldt/ldt/ldt_utils/contentindexer.py
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/management/commands/initsitedomain.py
--- a/src/ldt/ldt/ldt_utils/contentindexer.py	Wed Jan 16 05:34:32 2013 +0100
+++ b/src/ldt/ldt/ldt_utils/contentindexer.py	Mon Jan 21 17:26:18 2013 +0100
@@ -1,7 +1,6 @@
-from django.db.models.signals import post_save
 from django.dispatch import receiver
 from ldt import settings
-from ldt.ldt_utils.models import Segment, Content, Project
+from ldt.ldt_utils.models import Segment, Content, post_project_save, Project
 from ldt.ldt_utils.stat import update_stat_project
 from ldt.ldt_utils.utils import reduce_text_node
 from tagging import settings as tagging_settings
@@ -177,14 +176,37 @@
             for ensemble in content.getchildren():
                 self.index_ensemble(ensemble, content_obj, project)
 
-@receiver(post_save, sender=Project)
-def index_project(sender, **kwargs):
-    if settings.AUTO_INDEX_AFTER_SAVE:
+@receiver(post_project_save)
+def index_project(**kwargs):
+    must_reindex = kwargs.get("must_reindex", True)
+    if must_reindex and settings.AUTO_INDEX_AFTER_SAVE:
         instance = kwargs['instance']
-        if instance.state != 2:
+        if instance.state != Project.PUBLISHED:
             Segment.objects.filter(project_obj__ldt_id=instance.ldt_id).delete() #@UndefinedVariable
             update_stat_project(instance)
         else:
             projectIndexer = ProjectIndexer([instance])
             projectIndexer.index_all()
             update_stat_project(instance)
+
+
+
+def add_segment(project, project_id, iri_id, ensemble_id, cutting_id, element_id):
+    
+    #TODO : implement
+    pass
+
+
+def delete_segment(project, project_id, iri_id, ensemble_id, cutting_id, element_id):
+
+    seg_deleted = False         
+    # delete Segment
+    for seg in Segment.objects.filter(project_id=project_id, iri_id=iri_id, ensemble_id=ensemble_id, cutting_id=cutting_id, element_id=element_id):
+        seg_deleted = True
+        seg.delete()
+    # update stats too difficult to do it individually
+    if seg_deleted:
+        update_stat_project(project)
+    
+    
+    
\ No newline at end of file
--- a/src/ldt/ldt/ldt_utils/models.py	Wed Jan 16 05:34:32 2013 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py	Mon Jan 21 17:26:18 2013 +0100
@@ -24,6 +24,9 @@
 import uuid
 from shutil import move
 from django.core.files.storage import default_storage
+import django.dispatch
+from django.db.models.signals import post_save
+from django.db import router
 #from ldt.core.models import Document, Owner
 
 
@@ -569,15 +572,22 @@
     polemics_volume = property(**polemics_volume())
 
 
+post_project_save = django.dispatch.Signal(["instance","must_reindex"])    
     
+class Project(Document, SafeModel):
     
-class Project(Document, SafeModel):  
+    EDITION = 1
+    PUBLISHED = 2
+    MODERATED = 3
+    REJECTED = 4
+    DELETED = 5
+      
     STATE_CHOICES = (
-    (1, 'edition'),
-    (2, 'published'),
-    (3, 'moderated'),
-    (4, 'rejected'),
-    (5, 'deleted')
+    (Project.EDITION, 'edition'),
+    (Project.PUBLISHED, 'published'),
+    (Project.MODERATED, 'moderated'),
+    (Project.REJECTED, 'rejected'),
+    (Project.DELETED, 'deleted')
     )
     ldt_id = models.CharField(max_length=255, unique=True)
     ldt = models.TextField(null=True)
@@ -641,7 +651,15 @@
         return locals()
     
     stream_mode = property(**stream_mode())
-
+    
+    def save(self, *args, **kwargs):
+        
+        must_reindex = kwargs.pop("must_reindex", True)
+        super(Project, self).save(*args, **kwargs)
+        
+        post_project_save.send(instance=self, must_reindex = must_reindex)
+            
+            
     @staticmethod
     def create_project(user, title, contents, description='', groups=[], set_icon=True, cuttings=[]):
 #        owner = Owner.objects.get(user=user) #@UndefinedVariable
--- a/src/ldt/ldt/management/commands/initsitedomain.py	Wed Jan 16 05:34:32 2013 +0100
+++ b/src/ldt/ldt/management/commands/initsitedomain.py	Mon Jan 21 17:26:18 2013 +0100
@@ -1,8 +1,5 @@
 from django.core.management.base import BaseCommand
-from ldt.ldt_utils.models import Content, Project
-from ldt.ldt_utils.contentindexer import ContentIndexer, ProjectIndexer
 from django.conf import settings
-from django.db import models
 from django.contrib.sites.models import Site
 
 class Command(BaseCommand):