Haystack updates
This commit is contained in:
@@ -1,80 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
|
||||
from unidecode import unidecode
|
||||
from haystack import indexes
|
||||
|
||||
from .models import Document
|
||||
|
||||
'''
|
||||
uuid = models.CharField(max_length=48, blank=True, editable=False)
|
||||
document_type = models.ForeignKey(DocumentType, verbose_name=_(u'document type'), null=True, blank=True)
|
||||
description = models.TextField(blank=True, null=True, verbose_name=_(u'description'))
|
||||
date_added = models.DateTimeField(verbose_name=_(u'added'), db_index=True, editable=False)
|
||||
document = models.ForeignKey(Document, verbose_name=_(u'document'), editable=False)
|
||||
major = models.PositiveIntegerField(verbose_name=_(u'mayor'), default=1, editable=False)
|
||||
minor = models.PositiveIntegerField(verbose_name=_(u'minor'), default=0, editable=False)
|
||||
micro = models.PositiveIntegerField(verbose_name=_(u'micro'), default=0, editable=False)
|
||||
release_level = models.PositiveIntegerField(choices=RELEASE_LEVEL_CHOICES, default=RELEASE_LEVEL_FINAL, verbose_name=_(u'release level'), editable=False)
|
||||
serial = models.PositiveIntegerField(verbose_name=_(u'serial'), default=0, editable=False)
|
||||
timestamp = models.DateTimeField(verbose_name=_(u'timestamp'), editable=False)
|
||||
comment = models.TextField(blank=True, verbose_name=_(u'comment'))
|
||||
|
||||
# File related fields
|
||||
file = models.FileField(upload_to=get_filename_from_uuid, storage=STORAGE_BACKEND(), verbose_name=_(u'file'))
|
||||
mimetype = models.CharField(max_length=64, default='', editable=False)
|
||||
encoding = models.CharField(max_length=64, default='', editable=False)
|
||||
filename = models.CharField(max_length=255, default=u'', editable=False, db_index=True)
|
||||
checksum = models.TextField(blank=True, null=True, verbose_name=_(u'checksum'), editable=False)
|
||||
|
||||
class DocumentPage(models.Model):
|
||||
"""
|
||||
Model that describes a document version page including it's content
|
||||
"""
|
||||
document_version = models.ForeignKey(DocumentVersion, verbose_name=_(u'document version'))
|
||||
content = models.TextField(blank=True, null=True, verbose_name=_(u'content'))
|
||||
page_label = models.CharField(max_length=32, blank=True, null=True, verbose_name=_(u'page label'))
|
||||
page_number = models.PositiveIntegerField(default=1, editable=False, verbose_name=_(u'page number'), db_index=True)
|
||||
|
||||
|
||||
register('document', Document, _(u'document'), [
|
||||
{'name': u'document_type__name', 'title': _(u'Document type')},
|
||||
{'name': u'documentversion__mimetype', 'title': _(u'MIME type')},
|
||||
{'name': u'documentversion__filename', 'title': _(u'Filename')},
|
||||
{'name': u'documentmetadata__value', 'title': _(u'Metadata value')},
|
||||
{'name': u'documentversion__documentpage__content', 'title': _(u'Content')},
|
||||
{'name': u'description', 'title': _(u'Description')},
|
||||
{'name': u'tags__name', 'title': _(u'Tags')},
|
||||
{'name': u'comments__comment', 'title': _(u'Comments')},
|
||||
]
|
||||
)
|
||||
'''
|
||||
|
||||
class DocumentIndex(indexes.SearchIndex, indexes.Indexable):
|
||||
# Content
|
||||
text = indexes.CharField(document=True, use_template=True)
|
||||
# filename
|
||||
filename = indexes.CharField(model_attr='filename', boost=1.125)
|
||||
cleaned_filename = indexes.CharField(model_attr='filename', boost=1.125)
|
||||
# description
|
||||
#description = indexes.CharField(null=True, model_attr='description')
|
||||
# tags
|
||||
#tags = indexes.CharField(null=True, model_attr='tags')
|
||||
|
||||
|
||||
#date_added = indexes.DateTimeField(model_attr='date_added')
|
||||
|
||||
def get_model(self):
|
||||
return Document
|
||||
|
||||
def index_queryset(self):
|
||||
"""Used when the entire index for model is updated."""
|
||||
#return self.get_model().objects.filter(date_added__lte=datetime.datetime.now())
|
||||
return self.get_model().objects.filter(pk__lte=300)
|
||||
|
||||
def prepare_cleaned_filename(self, obj):
|
||||
#print 'CLEAN'
|
||||
return unidecode(obj.filename)
|
||||
#print "1,2: %s - %s" % (obj.filename, after)
|
||||
#return after
|
||||
@@ -1,3 +0,0 @@
|
||||
{{ object.filename }}
|
||||
{{ object.description }}
|
||||
{{ object.latest_version.content }}
|
||||
45
apps/dynamic_search/search_indexes.py
Normal file
45
apps/dynamic_search/search_indexes.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
|
||||
from unidecode import unidecode
|
||||
from haystack import indexes
|
||||
|
||||
from documents.models import Document
|
||||
|
||||
'''
|
||||
date_added = models.DateTimeField(verbose_name=_(u'added'), db_index=True, editable=False)
|
||||
document = models.ForeignKey(Document, verbose_name=_(u'document'), editable=False)
|
||||
major = models.PositiveIntegerField(verbose_name=_(u'mayor'), default=1, editable=False)
|
||||
minor = models.PositiveIntegerField(verbose_name=_(u'minor'), default=0, editable=False)
|
||||
micro = models.PositiveIntegerField(verbose_name=_(u'micro'), default=0, editable=False)
|
||||
release_level = models.PositiveIntegerField(choices=RELEASE_LEVEL_CHOICES, default=RELEASE_LEVEL_FINAL, verbose_name=_(u'release level'), editable=False)
|
||||
serial = models.PositiveIntegerField(verbose_name=_(u'serial'), default=0, editable=False)
|
||||
timestamp = models.DateTimeField(verbose_name=_(u'timestamp'), editable=False)
|
||||
comment = models.TextField(blank=True, verbose_name=_(u'comment'))
|
||||
|
||||
checksum = models.TextField(blank=True, null=True, verbose_name=_(u'checksum'), editable=False)
|
||||
|
||||
page_label = models.CharField(max_length=32, blank=True, null=True, verbose_name=_(u'page label'))
|
||||
page_number = models.PositiveIntegerField(default=1, editable=False, verbose_name=_(u'page number'), db_index=True)
|
||||
'''
|
||||
|
||||
class DocumentIndex(indexes.SearchIndex, indexes.Indexable):
|
||||
text = indexes.CharField(document=True, use_template=True)
|
||||
#fractional_filename = indexes.CharField(model_attr='filename')#, boost=1.125)
|
||||
cleaned_filename = indexes.CharField(model_attr='filename')#, boost=1.125)
|
||||
|
||||
def get_model(self):
|
||||
return Document
|
||||
|
||||
#def index_queryset(self):
|
||||
# """Used when the entire index for model is updated."""
|
||||
# #return self.get_model().objects.filter(date_added__lte=datetime.datetime.now())
|
||||
# return self.get_model().objects.filter(pk__lte=3000)
|
||||
|
||||
#def prepare_cleaned_filename(self, obj):
|
||||
# #print 'CLEAN'
|
||||
# return 'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq'
|
||||
# return unidecode(obj.filename)
|
||||
# #print "1,2: %s - %s" % (obj.filename, after)
|
||||
# #return after
|
||||
@@ -0,0 +1,11 @@
|
||||
{{ object.content }}
|
||||
{{ object.metadata_values_string }}
|
||||
{{ object.cleaned_filename }}
|
||||
{{ object.filename }}
|
||||
{{ object.extension_split.1 }}
|
||||
{{ object.document_type }}
|
||||
{{ object.file_mimetype }}
|
||||
{{ object.description|default:' ' }}
|
||||
{{ object.flat_comments }}
|
||||
{{ object.flat_tags }}
|
||||
{{ object.uuid }}
|
||||
Reference in New Issue
Block a user