示例#1
0
文件: fields.py 项目: trepca/solango
 def transform(self, model):
     """
     Returns a unique identifier string for the specified object.
     
     This avoids duplicate documents
     """
     self.value = self.make_key(get_model_key(model), model.pk)
     
     return unicode(self)
示例#2
0
文件: fields.py 项目: SeanOC/solango
 def transform(self, model):
     """
     Returns a unique identifier string for the specified object.
     
     This avoids duplicate documents
     """
     self.value =  "%s%s%s" % (get_model_key(model), settings.SEARCH_SEPARATOR, model.pk)
     
     return unicode(self)
示例#3
0
def get_document(instance):
    """
    Helper to get document from instance
    """
    key = get_model_key(instance)
    
    if key not in registry.keys():
        raise NotRegistered('Instance not reqistered with Solango')
    
    return registry[key](instance)
示例#4
0
def post_delete( sender, instance, *args, **kwargs):
    """
    Apply any necessary post-save moderation steps to new
    comments.
    
    """
    key = get_model_key(instance)
    
    if key not in registry.keys():
        return None
    
    document = registry[key](instance)
    connection.delete([document,]) 
示例#5
0
def post_save(sender, instance, created, *args, **kwargs):
    """
    Apply any necessary pre-save moderation steps to new
    comments.
    
    """
    key = get_model_key(instance)
    
    if key not in registry.keys():
        return None
    
    document = registry[key](instance)
    #Note adding and updating a document in solr uses the same command
    connection.add([document])
示例#6
0
def get_document(instance_or_tuple):
    """
    Helper to get document from either model instance,
    or tuple in the form (model_key, instance_id)
    """
    if isinstance(instance_or_tuple, tuple):
        key = instance_or_tuple[0]
    else:
        key = get_model_key(instance_or_tuple)
    
    if key not in registry.keys():
        raise NotRegistered('Instance not reqistered with Solango')
    
    return registry[key](instance_or_tuple)
示例#7
0
def register(model_or_iterable, search_document=None):
    if isinstance(model_or_iterable, ModelBase):
        model_or_iterable = [model_or_iterable]
    for model in model_or_iterable:
        #Register the model
        if model in registry:
            raise AlreadyRegistered('%s has already been registered by search' % model)
        if not search_document:
            #Default Search Document if no document is specified.
            search_document = SearchDocument
        key = get_model_key(model)
        registry[key] = search_document
        #Hook Up The Signals
        signals.post_save.connect(post_save, model)
        signals.post_delete.connect(post_delete, model)
示例#8
0
def post_save(sender, instance, created, *args, **kwargs):
    """
    Apply any necessary pre-save moderation steps to new
    comments.
    
    """
    key = get_model_key(instance)
    
    if key not in registry.keys():
        return None
    
    document = registry[key](instance)

    # Could be a pain, but only way to make sure the index is updated. 
    if document.is_indexable(instance):
        #Note adding and updating a document in solr uses the same command
        connection.add([document])
    else:
        connection.delete([document])
示例#9
0
文件: fields.py 项目: trepca/solango
 def transform(self, value_or_model):
     self.value = get_model_key(value_or_model)
     return unicode(self)
示例#10
0
 def add(self, instance):
     from solango.models import IndexQueue
     
     model_key = get_model_key(instance)
     IndexQueue.objects.create(model_key=model_key, instance_id=instance.pk)
示例#11
0
 def index_instance(self, instance):
     key = get_model_key(instance)
     self.add(instance)