def class_prepared_callback(self, sender, **kwargs): schema_dict = {} for field_name in self.fields: field = self.model._meta.get_field_by_name(field_name)[0] schema_dict[field.name] = field_mapping[field.__class__] self.schema = Schema(**schema_dict) if self.index is None: self.index = Index(self.storage, schema=self.schema, create=True) self.searcher = self.index.searcher() if self.real_time: post_save.connect(self.post_save_callback, sender=self.model) post_delete.connect(self.post_delete_callback, sender=self.model)
def __init__(self, *args, **kwargs): self.default = kwargs.pop("default", None) self.parser = None self.fields = kwargs.pop('fields', []) + ['id'] self.real_time = kwargs.pop('real_time', True) if not os.path.lexists(STORAGE_DIR): os.makedirs(STORAGE_DIR) self.storage = store.FileStorage(STORAGE_DIR) try: self.index = Index(self.storage) except (IndexError, EmptyIndexError): self.index = None super(WhooshManager, self).__init__(*args, **kwargs)