src/p4l/search/signals.py
author ymh <ymh.work@gmail.com>
Thu, 26 Sep 2013 15:24:41 +0200
changeset 119 ece69ca3ac24
parent 114 93b45b4f423c
child 126 a345f1a67bf1
permissions -rw-r--r--
- correct import pour indexation - improve new record management
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
114
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
'''
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
Created on Feb 22, 2013
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
@author: ymh
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
'''
119
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
     7
from django.conf import settings
114
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
from django.db import models
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
from haystack import signals
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
119
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    11
import p4l.models.signals
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    12
114
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
class P4lSignalProcessor(signals.BaseSignalProcessor):
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    
119
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    16
    def handle_delete(self, sender, instance, **kwargs):
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    17
        if getattr(settings, "REALTIME_INDEXING", True):
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    18
            signals.BaseSignalProcessor.handle_delete(self, sender, instance, **kwargs)
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    19
    
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    20
    def handle_save(self, sender, instance, **kwargs):
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    21
        if getattr(settings, "REALTIME_INDEXING", True):
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    22
            signals.BaseSignalProcessor.handle_save(self, sender, instance, **kwargs)
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    23
    
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    24
    def __connect_signals(self, klass):        
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    25
        p4l.models.signals.record_saved.connect(self.handle_save, sender=klass)
114
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
        models.signals.post_delete.connect(self.handle_delete, sender=klass)        
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    def __disconnect_signals(self, klass):
119
ece69ca3ac24 - correct import pour indexation
ymh <ymh.work@gmail.com>
parents: 114
diff changeset
    29
        p4l.models.signals.record_saved.disconnect(self.handle_save, sender=klass)
114
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        models.signals.post_delete.disconnect(self.handle_delete, sender=klass)
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    def setup(self):
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
        #put import here to avoid circular         
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
        from p4l.models.data import Record
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
        self.__connect_signals(Record)
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    def teardown(self):
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        from p4l.models.data import Record
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        self.__disconnect_signals(Record)
93b45b4f423c add corporate authors and small adjustments
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44