# HG changeset patch # User ymh # Date 1358785578 -3600 # Node ID 687dabdd25a745bb4e594266baa042ef9b92838d # Parent 7271a554968295d592a74fda51e9a3f36498d9a2 Add an argument to project save to avoid indexation diff -r 7271a5549682 -r 687dabdd25a7 src/ldt/ldt/ldt_utils/contentindexer.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 diff -r 7271a5549682 -r 687dabdd25a7 src/ldt/ldt/ldt_utils/models.py --- 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 diff -r 7271a5549682 -r 687dabdd25a7 src/ldt/ldt/management/commands/initsitedomain.py --- 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):