--- 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):