Cleanups
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
{% for field in form.visible_fields %}
|
||||
<div class="group">
|
||||
{% if field.errors %}<div class="fieldWithErrors">{% endif %}
|
||||
<label class="label">{{ field.label_tag }}{% if field.field.required and not read_only %} ({% trans 'required' %}){% endif %}</label>
|
||||
<label class="label">{{ field.label_tag }}{% if field.field.required and not read_only %} ({% trans "required" %}){% endif %}</label>
|
||||
{% if field.errors %}<span class="error">{% for error in field.errors %}{{ error }}{% if not forloop.last %} | {% endif %}{% endfor %}</span></div>{% endif %}
|
||||
{{ field }}
|
||||
{% if field.help_text %}<span class="description">{{ field.help_text }}</span>{% endif %}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<input type="hidden" name="{{ step_field }}" value="{{ step0 }}" />
|
||||
{% endif %}
|
||||
|
||||
{% if submit_method != 'GET' and submit_method != 'get' %}
|
||||
{% if submit_method != "GET" and submit_method != "get" %}
|
||||
{% csrf_token %}
|
||||
{% endif %}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<tr>
|
||||
{% for field in formset.forms.0.visible_fields %}
|
||||
<th>
|
||||
{{ field.label_tag }}{% if field.field.required and not read_only %} ({% trans 'required' %}){% endif %}
|
||||
{{ field.label_tag }}{% if field.field.required and not read_only %} ({% trans "required" %}){% endif %}
|
||||
</th>
|
||||
{#{% if field.help_text %}<span class="description">{{ field.help_text }}</span>{% endif %}#}
|
||||
{% endfor %}
|
||||
@@ -67,7 +67,7 @@
|
||||
{% if not read_only %}
|
||||
<div class="group navform wat-cf">
|
||||
<button class="button" type="submit" name="{{ form.prefix }}-submit">
|
||||
<img src="{{ MEDIA_URL }}web_theme_media/images/icons/tick.png" alt="{% if object %}{% trans 'Save' %}{% else %}{% trans 'Submit' %}{% endif %}" /> {% if object %}{% trans 'Save' %}{% else %}{% trans 'Submit' %}{% endif %}
|
||||
<img src="{{ MEDIA_URL }}web_theme_media/images/icons/tick.png" alt="{% if object %}{% trans 'Save' %}{% else %}{% trans 'Submit' %}{% endif %}" /> {% if object %}{% trans "Save" %}{% else %}{% trans "Submit" %}{% endif %}
|
||||
</button>
|
||||
{% comment %}
|
||||
<a href="#header" class="button">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{#{% block secondary_links %}{{ secondary_links|safe }}{% endblock %}#}
|
||||
|
||||
{% block content %}
|
||||
{% include 'generic_list_subtemplate.html' %}
|
||||
{% include "generic_list_subtemplate.html" %}
|
||||
|
||||
{% for subtemplate in subtemplates_dict %}
|
||||
{% with subtemplate.title as title %}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
{% if not hide_header %}
|
||||
<tr>
|
||||
{% if not hide_object %}
|
||||
<th>{% trans 'Identifier' %}</th>
|
||||
<th>{% trans "Identifier" %}</th>
|
||||
{% endif %}
|
||||
{% for column in object_list.0|get_model_list_columns %}
|
||||
<th>{{ column.name|capfirst }}</th>
|
||||
@@ -62,7 +62,7 @@
|
||||
<td>{{ object|object_property:column.attribute|safe }}</td>
|
||||
{% endfor %}
|
||||
{% if not hide_links %}
|
||||
<td class='last'>
|
||||
<td class="last">
|
||||
{% object_navigation_template %}
|
||||
</td>
|
||||
{% endif %}
|
||||
|
||||
@@ -51,7 +51,7 @@ def return_attrib(obj, attrib, arguments={}):
|
||||
elif isinstance(obj, types.DictType) or isinstance(obj, types.DictionaryType):
|
||||
return obj[attrib]
|
||||
else:
|
||||
result = reduce(getattr, attrib.split("."), obj)
|
||||
result = reduce(getattr, attrib.split('.'), obj)
|
||||
if isinstance(result, types.MethodType):
|
||||
if arguments:
|
||||
return result(**arguments)
|
||||
@@ -61,7 +61,7 @@ def return_attrib(obj, attrib, arguments={}):
|
||||
return result
|
||||
except Exception, err:
|
||||
if settings.DEBUG:
|
||||
return "Attribute error: %s; %s" % (attrib, err)
|
||||
return 'Attribute error: %s; %s' % (attrib, err)
|
||||
else:
|
||||
pass
|
||||
|
||||
@@ -69,7 +69,7 @@ def return_attrib(obj, attrib, arguments={}):
|
||||
#http://snippets.dzone.com/posts/show/5434
|
||||
#http://snippets.dzone.com/user/jakob
|
||||
def pretty_size(size):
|
||||
suffixes = [("B",2**10), ("K",2**20), ("M",2**30), ("G",2**40), ("T",2**50)]
|
||||
suffixes = [('B',2**10), ('K',2**20), ('M',2**30), ('G',2**40), ('T',2**50)]
|
||||
for suf, lim in suffixes:
|
||||
if size > lim:
|
||||
continue
|
||||
|
||||
@@ -18,27 +18,33 @@ default_available_models = {
|
||||
# Definition
|
||||
AVAILABLE_FUNCTIONS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', default_available_functions)
|
||||
AVAILABLE_MODELS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_MODELS', default_available_models)
|
||||
|
||||
# Upload
|
||||
USE_STAGING_DIRECTORY = getattr(settings, 'DOCUMENTS_USE_STAGING_DIRECTORY', False)
|
||||
STAGING_DIRECTORY = getattr(settings, 'DOCUMENTS_STAGING_DIRECTORY', u'/tmp/mayan/staging')
|
||||
DELETE_STAGING_FILE_AFTER_UPLOAD = getattr(settings, 'DOCUMENTS_DELETE_STAGING_FILE_AFTER_UPLOAD', False)
|
||||
STAGING_FILES_PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_STAGING_FILES_PREVIEW_SIZE', '640x480')
|
||||
DELETE_LOCAL_ORIGINAL = getattr(settings, 'DOCUMENTS_DELETE_LOCAL_ORIGINAL', False)
|
||||
|
||||
# Saving
|
||||
CHECKSUM_FUNCTION = getattr(settings, 'DOCUMENTS_CHECKSUM_FUNCTION', lambda x: hashlib.sha256(x).hexdigest())
|
||||
UUID_FUNCTION = getattr(settings, 'DOCUMENTS_UUID_FUNCTION', lambda:unicode(uuid.uuid4()))
|
||||
|
||||
# Storage
|
||||
STORAGE_BACKEND = getattr(settings, 'DOCUMENTS_STORAGE_BACKEND', DocumentStorage)
|
||||
STORAGE_DIRECTORY_NAME = getattr(settings, 'DOCUMENTS_STORAGE_DIRECTORY_NAME', 'documents')
|
||||
|
||||
# Usage
|
||||
PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_PREVIEW_SIZE', '640x480')
|
||||
THUMBNAIL_SIZE = getattr(settings, 'DOCUMENTS_THUMBNAIL_SIZE', '50x50')
|
||||
DISPLAY_SIZE = getattr(settings, 'DOCUMENTS_DISPLAY_SIZE', '1024x768')
|
||||
|
||||
# Serving
|
||||
FILESYSTEM_FILESERVING_ENABLE = getattr(settings, 'DOCUMENTS_FILESYSTEM_FILESERVING_ENABLE', True)
|
||||
FILESYSTEM_FILESERVING_PATH = getattr(settings, 'DOCUMENTS_FILESYSTEM_FILESERVING_PATH', u'/tmp/mayan/documents')
|
||||
FILESYSTEM_SLUGIFY_PATHS = getattr(settings, 'DOCUMENTS_SLUGIFY_PATHS', False)
|
||||
FILESYSTEM_MAX_RENAME_COUNT = getattr(settings, 'DOCUMENTS_FILESYSTEM_MAX_RENAME_COUNT', 200)
|
||||
|
||||
#misc
|
||||
TEMPORARY_DIRECTORY = getattr(settings, 'DOCUMENTS_TEMPORARY_DIRECTORY', u'/tmp')
|
||||
|
||||
|
||||
@@ -21,22 +21,9 @@ from documents.conf.settings import AVAILABLE_MODELS
|
||||
class ImageWidget(forms.widgets.Widget):
|
||||
def render(self, name, value, attrs=None):
|
||||
output = []
|
||||
#img = lambda x: '<a class="fancybox" href="%s"><img src="%s" /></a>' % (reverse('document_preview', args=[x.id]),
|
||||
# reverse('document_thumbnail', args=[x.id]))
|
||||
output.append('<a class="fancybox-noscaling" href="%s"><img width="300" src="%s" /></a>' % (reverse('document_display', args=[value.id]),
|
||||
reverse('document_preview', args=[value.id])))
|
||||
output.append('<br /><span class="famfam active famfam-magnifier"></span>%s' % ugettext(u'Click on the image for full size view'))
|
||||
#file_name = str(value)
|
||||
#if file_name:
|
||||
# file_path = '%s%s' % (settings.MEDIA_URL, file_name)
|
||||
# try: # is image
|
||||
# Image.open(os.path.join(settings.MEDIA_ROOT, file_name))
|
||||
# output.append('<a target="_blank" href="%s">%s</a><br />%s <a target="_blank" href="%s">%s</a><br />%s ' % \
|
||||
# (file_path, thumbnail(file_name), _('Currently:'), file_path, file_name, _('Change:')))
|
||||
# except IOError: # not image
|
||||
# output.append('%s <a target="_blank" href="%s">%s</a> <br />%s ' % \
|
||||
# (_('Currently:'), file_path, file_name, _('Change:')))
|
||||
#
|
||||
#output.append(super(ImageWidget, self).render(name, value, attrs))
|
||||
return mark_safe(u''.join(output))
|
||||
|
||||
@@ -61,15 +48,14 @@ class DocumentForm(forms.ModelForm):
|
||||
model = Document
|
||||
exclude = ('description',)
|
||||
|
||||
|
||||
class DocumentPreviewForm(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.document = kwargs.pop('document', None)
|
||||
super(DocumentPreviewForm, self).__init__(*args, **kwargs)
|
||||
self.fields['preview'].initial = self.document#reverse('document_preview', args=[self.document.id])
|
||||
|
||||
self.fields['preview'].initial = self.document
|
||||
|
||||
preview = forms.CharField(widget=ImageWidget)
|
||||
#ImageWidget
|
||||
|
||||
|
||||
class DocumentForm_view(DetailForm):
|
||||
@@ -118,7 +104,6 @@ class MetadataForm(forms.Form):
|
||||
if 'initial' in kwargs:
|
||||
self.metadata_type = kwargs['initial'].pop('metadata_type', None)
|
||||
self.document_type = kwargs['initial'].pop('document_type', None)
|
||||
#self.metadata_options = kwargs['initial'].pop('metadata_options', None)
|
||||
|
||||
required=self.document_type.documenttypemetadatatype_set.get(metadata_type=self.metadata_type).required
|
||||
required_string = u''
|
||||
@@ -178,7 +163,6 @@ class DocumentCreateWizard(BoundFormWizard):
|
||||
initial.append({
|
||||
'metadata_type':item.metadata_type,
|
||||
'document_type':self.document_type,
|
||||
#'metadata_options':item,
|
||||
})
|
||||
self.initial = {1:initial}
|
||||
if step == 1:
|
||||
|
||||
@@ -4,7 +4,8 @@ import hashlib
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile, SimpleUploadedFile
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile, \
|
||||
SimpleUploadedFile
|
||||
from django.utils.translation import ugettext
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,4 @@ urlpatterns = patterns('documents.views',
|
||||
url(r'^document/(?P<document_id>\d+)/create/siblings/$', 'document_create_sibling', {'multiple':True}, 'document_create_sibling'),
|
||||
|
||||
url(r'^staging_file/(?P<staging_file_id>\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'),
|
||||
|
||||
|
||||
)
|
||||
|
||||
@@ -93,7 +93,6 @@ def _save_metadata_list(metadata_list, document):
|
||||
|
||||
def _save_metadata(metadata_dict, document):
|
||||
#Use matched metadata now to create document metadata
|
||||
#for key, value in zip(metadata_dict['id'].values(), metadata_dict['value'].values()):
|
||||
document_metadata, created = DocumentMetadata.objects.get_or_create(
|
||||
document=document,
|
||||
metadata_type=get_object_or_404(MetadataType, pk=metadata_dict['id']),
|
||||
@@ -348,8 +347,6 @@ def document_edit_metadata(request, document_id):
|
||||
formset = MetadataFormSet(request.POST)
|
||||
if formset.is_valid():
|
||||
_save_metadata_list(formset.cleaned_data, document)
|
||||
#for item in formset.cleaned_data:
|
||||
# _save_metadata(item, document)
|
||||
try:
|
||||
document.delete_fs_links()
|
||||
except Exception, e:
|
||||
@@ -395,16 +392,6 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE):
|
||||
return serve_file(request, File(file=open('%simages/picture_error.png' % settings.MEDIA_ROOT, 'r')))
|
||||
else:
|
||||
return serve_file(request, File(file=open('%simages/1297211435_error.png' % settings.MEDIA_ROOT, 'r')))
|
||||
#messages.error(request, e)
|
||||
#return HttpResponse(e)
|
||||
|
||||
|
||||
#def document_thumbnail(request, document_id):
|
||||
# return get_document_image(request, document_id, THUMBNAIL_SIZE)
|
||||
|
||||
|
||||
#def document_preview(request, document_id):
|
||||
# return get_document_image(request, document_id, PREVIEW_SIZE)
|
||||
|
||||
|
||||
def document_download(request, document_id):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{% extends "base.html" %}
|
||||
{% load i18n %}
|
||||
{% load project_tags %}
|
||||
{% block title %} :: {% trans 'About this program' %}{% endblock %}
|
||||
{% block title %} :: {% trans "About this program" %}{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<div class="content">
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
'easingIn' : 'easeOutBack',
|
||||
'easingOut' : 'easeInBack',
|
||||
'type' : 'image',
|
||||
'autoScale' : true,
|
||||
'autoScale' : true
|
||||
});
|
||||
$("a.fancybox-noscaling").fancybox({
|
||||
'titleShow' : false,
|
||||
@@ -44,7 +44,7 @@
|
||||
'easingIn' : 'easeOutBack',
|
||||
'easingOut' : 'easeInBack',
|
||||
'type' : 'image',
|
||||
'autoScale' : false,
|
||||
'autoScale' : false
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -29,15 +29,18 @@ def check_settings(request):
|
||||
{'name':'DOCUMENTS_STORAGE_DIRECTORY_NAME', 'value':documents_settings.STORAGE_DIRECTORY_NAME},
|
||||
{'name':'DOCUMENTS_PREVIEW_SIZE', 'value':documents_settings.PREVIEW_SIZE},
|
||||
{'name':'DOCUMENTS_THUMBNAIL_SIZE', 'value':documents_settings.THUMBNAIL_SIZE},
|
||||
{'name':'DOCUMENTS_DISPLAY_SIZE', 'value':documents_settings.DISPLAY_SIZE},
|
||||
{'name':'DOCUMENTS_FILESYSTEM_FILESERVING_ENABLE', 'value':documents_settings.FILESYSTEM_FILESERVING_ENABLE},
|
||||
{'name':'DOCUMENTS_FILESYSTEM_FILESERVING_PATH', 'value':documents_settings.FILESYSTEM_FILESERVING_PATH, 'exists':True},
|
||||
{'name':'DOCUMENTS_SLUGIFY_PATHS', 'value':documents_settings.FILESYSTEM_SLUGIFY_PATHS},
|
||||
{'name':'DOCUMENTS_FILESYSTEM_MAX_RENAME_COUNT', 'value':documents_settings.FILESYSTEM_MAX_RENAME_COUNT},
|
||||
{'name':'DOCUMENTS_TEMPORARY_DIRECTORY', 'value':documents_settings.TEMPORARY_DIRECTORY, 'exists':True},
|
||||
|
||||
#Converter
|
||||
{'name':'CONVERTER_CONVERT_PATH', 'value':converter_settings.CONVERT_PATH, 'exists':True},
|
||||
{'name':'CONVERTER_OCR_OPTIONS', 'value':converter_settings.OCR_OPTIONS},
|
||||
|
||||
#ocr
|
||||
{'name':'OCR_TESSERACT_PATH', 'value':ocr_settings.TESSERACT_PATH, 'exists':True},
|
||||
]
|
||||
|
||||
|
||||
16
settings.py
16
settings.py
@@ -2,7 +2,7 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "./"))
|
||||
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), './'))
|
||||
|
||||
sys.path.append(os.path.join(PROJECT_ROOT, 'modules'))
|
||||
sys.path.append(os.path.join(PROJECT_ROOT, 'customization_apps'))
|
||||
@@ -26,7 +26,7 @@ MANAGERS = ADMINS
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
|
||||
'NAME': os.path.join(PROJECT_ROOT, "%s.sqlite" % PROJECT_NAME), # Or path to database file if using sqlite3.
|
||||
'NAME': os.path.join(PROJECT_ROOT, '%s.sqlite' % PROJECT_NAME), # Or path to database file if using sqlite3.
|
||||
'USER': '', # Not used with sqlite3.
|
||||
'PASSWORD': '', # Not used with sqlite3.
|
||||
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
|
||||
@@ -170,6 +170,7 @@ LOGIN_EXEMPT_URLS = (
|
||||
# Definition
|
||||
#DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS = {}
|
||||
#DOCUMENTS_METADATA_AVAILABLE_MODELS = {}
|
||||
|
||||
# Upload
|
||||
#DOCUMENTS_DELETE_LOCAL_ORIGINAL = False
|
||||
#DOCUMENTS_USE_STAGING_DIRECTORY = False
|
||||
@@ -180,24 +181,27 @@ LOGIN_EXEMPT_URLS = (
|
||||
# Saving
|
||||
#DOCUMENTS_CHECKSUM_FUNCTION = lambda x: hashlib.sha256(x).hexdigest())
|
||||
#DOCUMENTS_UUID_FUNCTION = lambda:unicode(uuid.uuid4())
|
||||
|
||||
# Storage
|
||||
#DOCUMENTS_STORAGE_DIRECTORY_NAME = 'documents'
|
||||
#DOCUMENTS_STORAGE_BACKEND = DocumentStorage
|
||||
|
||||
# Usage
|
||||
#DOCUMENTS_PREVIEW_SIZE = '640x480'
|
||||
#DOCUMENTS_THUMBNAIL_SIZE = '50x50'
|
||||
#DOCUMENTS_DISPLAY_SIZE = '1024x768'
|
||||
|
||||
# Serving
|
||||
#DOCUMENTS_FILESYSTEM_FILESERVING_ENABLE = True
|
||||
#DOCUMENTS_FILESYSTEM_FILESERVING_PATH = u'/tmp/mayan/documents'
|
||||
#DOCUMENTS_FILESYSTEM_SLUGIFY_PATHS = False
|
||||
#DOCUMENTS_FILESYSTEM_MAX_RENAME_COUNT = 200
|
||||
|
||||
# Misc
|
||||
#DOCUMENTS_TEMPORARY_DIRECTORY = u'/tmp'
|
||||
#CONVERTER_CONVERT_PATH = u'/usr/bin/convert'
|
||||
#CONVERTER_OCR_OPTIONS = u'-colorspace Gray -depth 8 -resample 200x200'
|
||||
#OCR_TESSERACT_PATH = u'/usr/bin/tesseract'
|
||||
|
||||
#======== End of configuration options =======
|
||||
|
||||
try:
|
||||
@@ -217,19 +221,19 @@ if DEVELOPMENT:
|
||||
import rosetta
|
||||
INSTALLED_APPS += ('rosetta',)
|
||||
except ImportError:
|
||||
print "rosetta is not installed"
|
||||
print 'rosetta is not installed'
|
||||
|
||||
try:
|
||||
import django_extensions
|
||||
INSTALLED_APPS +=('django_extensions',)
|
||||
except ImportError:
|
||||
print "django_extensions is not installed"
|
||||
print 'django_extensions is not installed'
|
||||
|
||||
try:
|
||||
import debug_toolbar
|
||||
#INSTALLED_APPS.append('debug_toolbar')
|
||||
except ImportError:
|
||||
print "debug_toolbar is not installed"
|
||||
print 'debug_toolbar is not installed'
|
||||
|
||||
TEMPLATE_CONTEXT_PROCESSORS += ('django.core.context_processors.debug',)
|
||||
|
||||
|
||||
2
urls.py
2
urls.py
@@ -23,5 +23,5 @@ if settings.DEVELOPMENT:
|
||||
|
||||
if 'rosetta' in settings.INSTALLED_APPS:
|
||||
urlpatterns += patterns('',
|
||||
url(r'^rosetta/', include('rosetta.urls'), name = "rosetta"),
|
||||
url(r'^rosetta/', include('rosetta.urls'), name='rosetta'),
|
||||
)
|
||||
|
||||
@@ -4,13 +4,13 @@ import site
|
||||
|
||||
sys.stdout = sys.stderr
|
||||
|
||||
ve_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "lib/python2.6/site-packages"))
|
||||
ve_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'lib/python2.6/site-packages'))
|
||||
# Add the virtual Python environment site-packages directory to the path
|
||||
site.addsitedir(ve_path)
|
||||
|
||||
# put the Django project on sys.path
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')))
|
||||
sys.path.insert(0, ve_path)
|
||||
|
||||
# Avoid ``[Errno 13] Permission denied: '/var/www/.python-eggs'`` messages
|
||||
|
||||
Reference in New Issue
Block a user