Merge branch 'master' into multi

Conflicts:
	docs/TODO
This commit is contained in:
Roberto Rosario
2011-03-16 04:59:31 -04:00
8 changed files with 30 additions and 19 deletions

View File

@@ -12,5 +12,9 @@ def object_property(value, arg):
return return_attrib(value, arg)
@register.filter
def get_model_list_columns(value):
return model_list_columns.get(type(value), [])
def get_model_list_columns(obj):
for key, value in model_list_columns.items():
if isinstance(obj, key):
return value
return []

View File

@@ -48,12 +48,12 @@ class Document(models.Model):
file_mimetype = models.CharField(max_length=64, default='', editable=False)
file_mime_encoding = models.CharField(max_length=64, default='', editable=False)
#FAT filename can be up to 255 using LFN
file_filename = models.CharField(max_length=255, default='', editable=False)
file_extension = models.CharField(max_length=16, default='', editable=False)
date_added = models.DateTimeField(verbose_name=_(u'added'), auto_now_add=True)
file_filename = models.CharField(max_length=255, default='', editable=False, db_index=True)
file_extension = models.CharField(max_length=16, default='', editable=False, db_index=True)
date_added = models.DateTimeField(verbose_name=_(u'added'), auto_now_add=True, db_index=True)
date_updated = models.DateTimeField(verbose_name=_(u'updated'), auto_now=True)
checksum = models.TextField(blank=True, null=True, verbose_name=_(u'checksum'), editable=False)
description = models.TextField(blank=True, null=True, verbose_name=_(u'description'))
description = models.TextField(blank=True, null=True, verbose_name=_(u'description'), db_index=True)
class Meta:
verbose_name = _(u'document')
@@ -264,7 +264,7 @@ class MetadataIndex(models.Model):
class DocumentMetadata(models.Model):
document = models.ForeignKey(Document, verbose_name=_(u'document'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'metadata type'))
value = models.TextField(blank=True, null=True, verbose_name=_(u'metadata value'))
value = models.TextField(blank=True, null=True, verbose_name=_(u'metadata value'), db_index=True)
def __unicode__(self):
return unicode(self.metadata_type)
@@ -276,7 +276,7 @@ class DocumentMetadata(models.Model):
class DocumentTypeFilename(models.Model):
document_type = models.ForeignKey(DocumentType, verbose_name=_(u'document type'))
filename = models.CharField(max_length=128, verbose_name=_(u'filename'))
filename = models.CharField(max_length=128, verbose_name=_(u'filename'), db_index=True)
enabled = models.BooleanField(default=True, verbose_name=_(u'enabled'))
def __unicode__(self):
@@ -290,7 +290,7 @@ class DocumentTypeFilename(models.Model):
class DocumentPage(models.Model):
document = models.ForeignKey(Document, verbose_name=_(u'document'))
content = models.TextField(blank=True, null=True, verbose_name=_(u'content'))
content = models.TextField(blank=True, null=True, verbose_name=_(u'content'), db_index=True)
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'))
@@ -366,7 +366,7 @@ available_transformations = ([(name, data['label']) for name, data in AVAILABLE_
class DocumentPageTransformation(models.Model):
document_page = models.ForeignKey(DocumentPage, verbose_name=_(u'document page'))
order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'))
order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'), db_index=True)
transformation = models.CharField(choices=available_transformations, max_length=128, verbose_name=_(u'transformation'))
arguments = models.TextField(blank=True, null=True, verbose_name=_(u'arguments'), help_text=_(u'Use dictionaries to indentify arguments, example: {\'degrees\':90}'))

View File

@@ -70,7 +70,7 @@ def document_list(request):
return object_list(
request,
queryset=Document.objects.all(),
queryset=Document.objects.only('file_filename', 'file_filename', 'file_extension').all(),
template_name='generic_list.html',
extra_context={
'title':_(u'documents'),

View File

@@ -84,7 +84,7 @@ def perform_search(query_string):
model_result_ids &= single_result_ids
result_count += len(model_result_ids)
results = model.objects.filter(pk__in=model_result_ids)[:LIMIT]
results = model.objects.filter(pk__in=list(model_result_ids)[:LIMIT])[:LIMIT]
shown_result_count += results.count()
if results:
model_list[data['text']] = results

View File

@@ -44,7 +44,7 @@ class DocumentQueue(models.Model):
class QueueDocument(models.Model):
document_queue = models.ForeignKey(DocumentQueue, verbose_name=_(u'document queue'))
document = models.ForeignKey(Document, verbose_name=_(u'document'))
datetime_submitted = models.DateTimeField(verbose_name=_(u'date time submitted'), auto_now_add=True)
datetime_submitted = models.DateTimeField(verbose_name=_(u'date time submitted'), auto_now_add=True, db_index=True)
state = models.CharField(max_length=4,
choices=QUEUEDOCUMENT_STATE_CHOICES,
default=QUEUEDOCUMENT_STATE_PENDING,

View File

@@ -50,3 +50,9 @@
- Filesystem metadata indexing will not work with this storage backend as
file are inside a MongoDB database and can't be linked (at least for now)
* Site search is slow
- Add indexes to the following fields:
documents_document - description, recomended size: 160
documents_documentmetadata - value, recomended size: 80
documents_documentpage - content, recomended size: 3000

View File

@@ -47,6 +47,11 @@ TODO, WISHLIST
* Show current page in generic list template - DONE
* Enable/disable ocr queue view & links - DONE
* Receive documents via email
* Mobile version
* Exif to metadata convertion
* Extract nagivation code into new navigation app
* External portal using sites contrib app
Main
====
@@ -112,10 +117,6 @@ Documents
* Unify document form classes
* Use document preview code for staging file also - DONE
* Delete physical file on delete method - DEFFERED (Not needed until Django 1.3)
* Receive documents via email
* Mobile version
* Exif to metadata convertion
Filesystem serving
==================

View File

@@ -297,7 +297,7 @@ if DEVELOPMENT:
try:
import debug_toolbar
#INSTALLED_APPS.append('debug_toolbar')
#INSTALLED_APPS +=('debug_toolbar',)
except ImportError:
#print 'debug_toolbar is not installed'
pass
@@ -306,7 +306,7 @@ if DEVELOPMENT:
WSGI_AUTO_RELOAD = True
if 'debug_toolbar' in INSTALLED_APPS:
MIDDLEWARE_CLASSES.append('debug_toolbar.middleware.DebugToolbarMiddleware')
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
DEBUG_TOOLBAR_CONFIG={
'INTERCEPT_REDIRECTS' : False,
}