PEP8 Cleanups, simple sintax errors fixes
This commit is contained in:
@@ -5,8 +5,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from acls.api import class_permissions
|
||||
from documents.models import Document
|
||||
from history.api import register_history_type
|
||||
from navigation.api import (register_links, register_top_menu,
|
||||
register_multi_item_links, register_sidebar_template)
|
||||
from navigation.api import register_links, register_top_menu
|
||||
from scheduler.api import register_interval_job
|
||||
|
||||
from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN,
|
||||
|
||||
@@ -9,9 +9,11 @@ from project_tools.api import register_tool
|
||||
from .utils import load_backend
|
||||
from .conf.settings import GRAPHICS_BACKEND
|
||||
|
||||
|
||||
def is_superuser(context):
|
||||
return context['request'].user.is_staff or context['request'].user.is_superuser
|
||||
|
||||
|
||||
formats_list = {'text': _('file formats'), 'view': 'formats_list', 'famfam': 'pictures', 'icon': 'pictures.png', 'condition': is_superuser, 'children_view_regex': [r'formats_list']}
|
||||
|
||||
register_sidebar_template(['formats_list'], 'converter_file_formats_help.html')
|
||||
|
||||
@@ -2,7 +2,6 @@ from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from acls.permissions import ACLS_VIEW_ACL, ACLS_EDIT_ACL
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from acls.permissions import ACLS_VIEW_ACL
|
||||
|
||||
acl_list = {'text': _(u'ACLs'), 'view': 'document_acl_list', 'args': 'object.pk', 'famfam': 'lock', 'permissions': [ACLS_VIEW_ACL]}
|
||||
|
||||
@@ -25,7 +25,7 @@ def register_history_type(history_type_dict):
|
||||
except DatabaseError:
|
||||
# Special case for syncdb
|
||||
transaction.rollback()
|
||||
|
||||
|
||||
# Runtime
|
||||
history_types_dict.setdefault(namespace, {})
|
||||
history_types_dict[namespace][name] = {
|
||||
|
||||
@@ -16,7 +16,7 @@ from acls.models import AccessEntry
|
||||
from .models import History, HistoryType
|
||||
from .forms import HistoryDetailForm
|
||||
from .permissions import PERMISSION_HISTORY_VIEW
|
||||
from .widgets import history_entry_object_link, history_entry_summary
|
||||
from .widgets import history_entry_object_link
|
||||
|
||||
|
||||
def history_list(request, object_list=None, title=None, extra_context=None):
|
||||
@@ -76,11 +76,11 @@ def history_for_object(request, app_label, module_name, object_id):
|
||||
|
||||
def history_view(request, object_id):
|
||||
history = get_object_or_404(History, pk=object_id)
|
||||
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_HISTORY_VIEW])
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_HISTORY_VIEW, request.user, history.content_object)
|
||||
AccessEntry.objects.check_access(PERMISSION_HISTORY_VIEW, request.user, history.content_object)
|
||||
|
||||
form = HistoryDetailForm(instance=history, extra_fields=[
|
||||
{'label': _(u'Date'), 'field': lambda x: x.datetime.date()},
|
||||
@@ -93,13 +93,12 @@ def history_view(request, object_id):
|
||||
return render_to_response('generic_detail.html', {
|
||||
'title': _(u'details for: %s') % history.get_processed_summary(),
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def history_type_list(request, history_type_pk):
|
||||
history_type = get_object_or_404(HistoryType, pk=history_type_pk)
|
||||
|
||||
|
||||
return history_list(
|
||||
request,
|
||||
object_list=History.objects.filter(history_type=history_type),
|
||||
|
||||
@@ -3,22 +3,20 @@ from django.utils.safestring import mark_safe
|
||||
|
||||
def history_entry_object_link(entry):
|
||||
return mark_safe(u'<a href="%(url)s">%(label)s</a>' % {
|
||||
'url': entry.content_object.get_absolute_url() if entry.content_object else u'#',
|
||||
'label': unicode(entry.content_object) if entry.content_object else u''
|
||||
}
|
||||
'url': entry.content_object.get_absolute_url() if entry.content_object else u'#',
|
||||
'label': unicode(entry.content_object) if entry.content_object else u''}
|
||||
)
|
||||
|
||||
|
||||
def history_entry_summary(entry):
|
||||
return mark_safe(u'<a href="%(url)s">%(label)s</a>' % {
|
||||
'url': entry.get_absolute_url(),
|
||||
'label': unicode(entry.get_processed_summary())
|
||||
})
|
||||
'label': unicode(entry.get_processed_summary())}
|
||||
)
|
||||
|
||||
|
||||
def history_entry_type_link(entry):
|
||||
return mark_safe(u'<a href="%(url)s">%(label)s</a>' % {
|
||||
'url': entry.history_type.get_absolute_url(),
|
||||
'label': unicode(entry.history_type)
|
||||
}
|
||||
'url': entry.history_type.get_absolute_url(),
|
||||
'label': unicode(entry.history_type)}
|
||||
)
|
||||
|
||||
@@ -15,7 +15,7 @@ from project_tools.api import register_tool
|
||||
from .classes import Property, PropertyNamespace
|
||||
from .links import link_menu_link, link_namespace_details, link_namespace_list
|
||||
from .models import Installation
|
||||
|
||||
|
||||
|
||||
@receiver(post_migrate, dispatch_uid='trigger_first_time')
|
||||
def trigger_first_time(sender, **kwargs):
|
||||
@@ -31,7 +31,7 @@ def check_first_run():
|
||||
details = Installation.objects.get()
|
||||
except DatabaseError:
|
||||
# Avoid database errors when the app tables haven't been created yet
|
||||
transaction.rollback()
|
||||
transaction.rollback()
|
||||
else:
|
||||
if details.is_first_run:
|
||||
details.submit()
|
||||
@@ -45,7 +45,7 @@ register_model_list_columns(PropertyNamespace, [
|
||||
{
|
||||
'name': _(u'items'),
|
||||
'attribute': encapsulate(lambda entry: len(entry.get_properties()))
|
||||
}
|
||||
}
|
||||
])
|
||||
|
||||
register_model_list_columns(Property, [
|
||||
@@ -56,7 +56,7 @@ register_model_list_columns(Property, [
|
||||
{
|
||||
'name': _(u'value'),
|
||||
'attribute': 'value'
|
||||
}
|
||||
}
|
||||
])
|
||||
|
||||
register_links(PropertyNamespace, [link_namespace_details])
|
||||
|
||||
@@ -2,7 +2,6 @@ from __future__ import absolute_import
|
||||
|
||||
from collections import namedtuple
|
||||
import os
|
||||
import sys
|
||||
|
||||
import pbs
|
||||
|
||||
@@ -116,7 +115,6 @@ class VirtualEnv(object):
|
||||
else:
|
||||
return Dependency(package, version, standard=True)
|
||||
|
||||
|
||||
def get_packages_info(self, requirements_file=None):
|
||||
if requirements_file:
|
||||
with open(requirements_file) as file_in:
|
||||
@@ -126,7 +124,6 @@ class VirtualEnv(object):
|
||||
for item in pip('freeze').splitlines():
|
||||
yield self.extract_dependency(item)
|
||||
|
||||
|
||||
def __init__(self):
|
||||
self.requirements_file_path = os.path.join(settings.BASE_DIR, 'requirements', 'production.txt')
|
||||
if not PIP:
|
||||
|
||||
@@ -3,11 +3,10 @@ from __future__ import absolute_import
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.core.exceptions import PermissionDenied
|
||||
|
||||
from permissions.models import Permission
|
||||
|
||||
from .classes import Property, PropertyNamespace
|
||||
from .classes import PropertyNamespace
|
||||
from .permissions import PERMISSION_INSTALLATION_DETAILS
|
||||
from .models import Installation
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from documents.models import Document
|
||||
from navigation.api import register_links, register_sidebar_template
|
||||
from project_setup.api import register_setup
|
||||
|
||||
from .links import (smart_link_instance_view_link, smart_link_instances_for_document,
|
||||
from .links import (smart_link_instances_for_document,
|
||||
smart_link_setup, smart_link_list, smart_link_create, smart_link_edit,
|
||||
smart_link_delete, smart_link_condition_list, smart_link_condition_create,
|
||||
smart_link_condition_edit, smart_link_condition_delete, smart_link_acl_list)
|
||||
|
||||
@@ -20,10 +20,10 @@ from documents.views import document_list
|
||||
from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
||||
from permissions.models import Permission
|
||||
|
||||
from . import smart_link_instance_view_link
|
||||
from .conf.settings import SHOW_EMPTY_SMART_LINKS
|
||||
from .forms import (SmartLinkInstanceForm, SmartLinkForm,
|
||||
SmartLinkConditionForm)
|
||||
from .links import smart_link_instance_view_link
|
||||
from .models import SmartLink, SmartLinkCondition
|
||||
from .permissions import (PERMISSION_SMART_LINK_VIEW,
|
||||
PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_DELETE,
|
||||
|
||||
@@ -20,16 +20,14 @@ from . import models as ocr_models
|
||||
from .conf.settings import (AUTOMATIC_OCR, QUEUE_PROCESSING_INTERVAL)
|
||||
from .exceptions import AlreadyQueued
|
||||
from .links import (submit_document, submit_document_multiple,
|
||||
re_queue_document, re_queue_multiple_document, queue_document_delete,
|
||||
queue_document_multiple_delete, document_queue_disable,
|
||||
document_queue_enable, all_document_ocr_cleanup, queue_document_list,
|
||||
re_queue_multiple_document, queue_document_multiple_delete,
|
||||
document_queue_disable, document_queue_enable,
|
||||
all_document_ocr_cleanup, queue_document_list,
|
||||
ocr_tool_link, setup_queue_transformation_list,
|
||||
setup_queue_transformation_create, setup_queue_transformation_edit,
|
||||
setup_queue_transformation_delete)
|
||||
from .models import DocumentQueue, QueueTransformation
|
||||
from .permissions import (PERMISSION_OCR_DOCUMENT,
|
||||
PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE,
|
||||
PERMISSION_OCR_CLEAN_ALL_PAGES)
|
||||
from .permissions import PERMISSION_OCR_DOCUMENT
|
||||
from .tasks import task_process_document_queues
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -72,14 +70,6 @@ def document_post_save(sender, instance, **kwargs):
|
||||
except AlreadyQueued:
|
||||
pass
|
||||
|
||||
# Disabled because it appears Django execute signals using the same
|
||||
# process of the signal emiter effectively blocking the view until
|
||||
# the OCR process completes which could take several minutes :/
|
||||
#@receiver(post_save, dispatch_uid='call_queue', sender=QueueDocument)
|
||||
#def call_queue(sender, **kwargs):
|
||||
# if kwargs.get('created', False):
|
||||
# logger.debug('got call_queue signal: %s' % kwargs)
|
||||
# task_process_document_queues()
|
||||
|
||||
@receiver(post_syncdb, dispatch_uid='create_default_queue', sender=ocr_models)
|
||||
def create_default_queue_signal_handler(sender, **kwargs):
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import codecs
|
||||
import os
|
||||
import subprocess
|
||||
import tempfile
|
||||
import sys
|
||||
|
||||
from django.utils.importlib import import_module
|
||||
@@ -15,7 +13,7 @@ from documents.models import DocumentPage
|
||||
|
||||
from .backends import ocr_backend
|
||||
from .conf.settings import UNPAPER_PATH, LANGUAGE
|
||||
from .exceptions import OCRError, UnpaperError
|
||||
from .exceptions import UnpaperError
|
||||
from .literals import (DEFAULT_OCR_FILE_FORMAT, UNPAPER_FILE_FORMAT,
|
||||
DEFAULT_OCR_FILE_EXTENSION)
|
||||
from .parsers import parse_document_page
|
||||
@@ -69,13 +67,13 @@ def do_document_ocr(queue_document):
|
||||
unpaper_input = convert(document_filepath, file_format=UNPAPER_FILE_FORMAT, transformations=ocr_transformations)
|
||||
execute_unpaper(input_filepath=unpaper_input, output_filepath=unpaper_output_filepath)
|
||||
|
||||
#from PIL import Image, ImageOps
|
||||
#im = Image.open(document_filepath)
|
||||
##if im.mode=='RGBA':
|
||||
## im=im.convert('RGB')
|
||||
##im = im.convert('L')
|
||||
#im = ImageOps.grayscale(im)
|
||||
#im.save(unpaper_output_filepath)
|
||||
# from PIL import Image, ImageOps
|
||||
# im = Image.open(document_filepath)
|
||||
# #if im.mode=='RGBA':
|
||||
# # im=im.convert('RGB')
|
||||
# #im = im.convert('L')
|
||||
# im = ImageOps.grayscale(im)
|
||||
# im.save(unpaper_output_filepath)
|
||||
|
||||
# Convert to TIFF
|
||||
pre_ocr_filepath = convert(input_filepath=unpaper_output_filepath, file_format=DEFAULT_OCR_FILE_FORMAT)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import sys
|
||||
|
||||
from django.utils.importlib import import_module
|
||||
|
||||
from ..conf.settings import BACKEND
|
||||
|
||||
@@ -4,14 +4,14 @@ import codecs
|
||||
import os
|
||||
import subprocess
|
||||
import tempfile
|
||||
import sys
|
||||
|
||||
from . import BackendBase
|
||||
from ..conf.settings import TESSERACT_PATH
|
||||
from ..exceptions import OCRError
|
||||
|
||||
|
||||
def Tesseract(BackendBase):
|
||||
def execute(input_filename, language=None):
|
||||
class Tesseract(BackendBase):
|
||||
def execute(self, input_filename, language=None):
|
||||
"""
|
||||
Execute the command line binary of tesseract
|
||||
"""
|
||||
@@ -20,7 +20,7 @@ def Tesseract(BackendBase):
|
||||
ocr_output = os.extsep.join([filepath, u'txt'])
|
||||
command = [unicode(TESSERACT_PATH), unicode(input_filename), unicode(filepath)]
|
||||
|
||||
if lang is not None:
|
||||
if language is not None:
|
||||
command.extend([u'-l', language])
|
||||
|
||||
proc = subprocess.Popen(command, close_fds=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||
@@ -29,12 +29,12 @@ def Tesseract(BackendBase):
|
||||
error_text = proc.stderr.read()
|
||||
cleanup(filepath)
|
||||
cleanup(ocr_output)
|
||||
if lang:
|
||||
if language:
|
||||
# If tesseract gives an error with a language parameter
|
||||
# re-run it with no parameter again
|
||||
return run_tesseract(input_filename, language=None)
|
||||
return self.execute(input_filename, language=None)
|
||||
else:
|
||||
raise TesseractError(error_text)
|
||||
raise OCRError(error_text)
|
||||
|
||||
fd = codecs.open(ocr_output, 'r', 'utf-8')
|
||||
text = fd.read().strip()
|
||||
@@ -43,3 +43,14 @@ def Tesseract(BackendBase):
|
||||
os.unlink(filepath)
|
||||
|
||||
return text
|
||||
|
||||
|
||||
# TODO: Reduntant, also in api.py
|
||||
def cleanup(filename):
|
||||
"""
|
||||
Try to remove the given filename, ignoring non-existent files
|
||||
"""
|
||||
try:
|
||||
os.remove(filename)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
@@ -10,28 +10,28 @@ def check_word(word):
|
||||
ALL_ALPHA = re.compile('^[a-z]+$', re.I)
|
||||
SINGLE_LETTER_WORDS = re.compile('^[ai]$', re.I)
|
||||
|
||||
#(L) If a string is longer than 20 characters, it is garbage
|
||||
# (L) If a string is longer than 20 characters, it is garbage
|
||||
if len(word) > 20:
|
||||
return None
|
||||
|
||||
#(A) If a string's ratio of alphanumeric characters to total
|
||||
#characters is less than 50%, the string is garbage
|
||||
# (A) If a string's ratio of alphanumeric characters to total
|
||||
# characters is less than 50%, the string is garbage
|
||||
if len(ALL_ALPHANUM.findall(word)) < len(word) / 2:
|
||||
return None
|
||||
|
||||
#Remove word if all the letters in the word are non alphanumeric
|
||||
# Remove word if all the letters in the word are non alphanumeric
|
||||
if len(NON_ALPHANUM.findall(word)) == len(word):
|
||||
return None
|
||||
|
||||
#Removed words with too many consecutie vowels
|
||||
# Removed words with too many consecutie vowels
|
||||
if TOO_MANY_VOWELS.findall(word):
|
||||
return None
|
||||
|
||||
#Removed words with too many consecutie consonants
|
||||
# Removed words with too many consecutie consonants
|
||||
if TOO_MANY_CONSONANTS.findall(word):
|
||||
return None
|
||||
|
||||
#Only allow specific single letter words
|
||||
# Only allow specific single letter words
|
||||
if len(word) == 1 and not SINGLE_LETTER_WORDS.findall(word):
|
||||
return None
|
||||
|
||||
|
||||
@@ -11,28 +11,28 @@ def check_word(word):
|
||||
ALL_ALPHA = re.compile('^[ёйцукенгшщзхъфывапролджэячсмитьбю]+$', re.I)
|
||||
SINGLE_LETTER_WORDS = re.compile('^[уквояси]$', re.I)
|
||||
|
||||
#(L) If a string is longer than 25 characters, it is garbage
|
||||
# (L) If a string is longer than 25 characters, it is garbage
|
||||
if len(word) > 25:
|
||||
return None
|
||||
|
||||
#(A) If a string's ratio of alphanumeric characters to total
|
||||
#characters is less than 50%, the string is garbage
|
||||
# (A) If a string's ratio of alphanumeric characters to total
|
||||
# characters is less than 50%, the string is garbage
|
||||
if len(ALL_ALPHANUM.findall(word)) < len(word) / 2:
|
||||
return None
|
||||
|
||||
#Remove word if all the letters in the word are non alphanumeric
|
||||
# Remove word if all the letters in the word are non alphanumeric
|
||||
if len(NON_ALPHANUM.findall(word)) == len(word):
|
||||
return None
|
||||
|
||||
#Removed words with too many consecutie vowels
|
||||
# Removed words with too many consecutie vowels
|
||||
if TOO_MANY_VOWELS.findall(word):
|
||||
return None
|
||||
|
||||
#Removed words with too many consecutie consonants
|
||||
# Removed words with too many consecutie consonants
|
||||
if TOO_MANY_CONSONANTS.findall(word):
|
||||
return None
|
||||
|
||||
#Only allow specific single letter words
|
||||
# Only allow specific single letter words
|
||||
if len(word) == 1 and not SINGLE_LETTER_WORDS.findall(word):
|
||||
return None
|
||||
|
||||
|
||||
@@ -11,28 +11,28 @@ def check_word(word):
|
||||
ALL_ALPHA = re.compile('^[a-z]+$', re.I)
|
||||
SINGLE_LETTER_WORDS = re.compile('^[aeoóuy]$', re.I)
|
||||
|
||||
#(L) If a string is longer than 20 characters, it is garbage
|
||||
# (L) If a string is longer than 20 characters, it is garbage
|
||||
if len(word) > 20:
|
||||
return None
|
||||
|
||||
#(A) If a string’s ratio of alphanumeric characters to total
|
||||
#characters is less than 50%, the string is garbage
|
||||
# (A) If a string’s ratio of alphanumeric characters to total
|
||||
# characters is less than 50%, the string is garbage
|
||||
if len(ALL_ALPHANUM.findall(word)) < len(word) / 2:
|
||||
return None
|
||||
|
||||
#Remove word if all the letters in the word are non alphanumeric
|
||||
# Remove word if all the letters in the word are non alphanumeric
|
||||
if len(NON_ALPHANUM.findall(word)) == len(word):
|
||||
return None
|
||||
|
||||
#Removed words with too many consecutie vowels
|
||||
# Removed words with too many consecutie vowels
|
||||
if TOO_MANY_VOWELS.findall(word):
|
||||
return None
|
||||
|
||||
#Removed words with too many consecutie consonants
|
||||
# Removed words with too many consecutie consonants
|
||||
if TOO_MANY_CONSONANTS.findall(word):
|
||||
return None
|
||||
|
||||
#Only allow specific single letter words
|
||||
# Only allow specific single letter words
|
||||
if len(word) == 1 and not SINGLE_LETTER_WORDS.findall(word):
|
||||
return None
|
||||
|
||||
|
||||
@@ -15,10 +15,9 @@ from converter.api import get_available_transformations_choices
|
||||
from sources.managers import SourceTransformationManager
|
||||
|
||||
from .exceptions import ReQueueError
|
||||
from .literals import (DOCUMENTQUEUE_STATE_STOPPED,
|
||||
DOCUMENTQUEUE_STATE_CHOICES, QUEUEDOCUMENT_STATE_PENDING,
|
||||
QUEUEDOCUMENT_STATE_CHOICES, QUEUEDOCUMENT_STATE_PROCESSING,
|
||||
DOCUMENTQUEUE_STATE_ACTIVE)
|
||||
from .literals import (DOCUMENTQUEUE_STATE_CHOICES,
|
||||
QUEUEDOCUMENT_STATE_PENDING, QUEUEDOCUMENT_STATE_CHOICES,
|
||||
QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_ACTIVE)
|
||||
from .managers import DocumentQueueManager
|
||||
|
||||
|
||||
|
||||
@@ -10,8 +10,7 @@ from job_processor.api import process_job
|
||||
from lock_manager import Lock, LockError
|
||||
|
||||
from .api import do_document_ocr
|
||||
from .conf.settings import (NODE_CONCURRENT_EXECUTION, REPLICATION_DELAY,
|
||||
QUEUE_PROCESSING_INTERVAL)
|
||||
from .conf.settings import NODE_CONCURRENT_EXECUTION, REPLICATION_DELAY
|
||||
from .literals import (QUEUEDOCUMENT_STATE_PENDING,
|
||||
QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_ACTIVE,
|
||||
QUEUEDOCUMENT_STATE_ERROR)
|
||||
|
||||
@@ -18,9 +18,8 @@ from permissions.models import Permission
|
||||
from .api import clean_pages
|
||||
from .exceptions import AlreadyQueued, ReQueueError
|
||||
from .forms import QueueTransformationForm, QueueTransformationForm_create
|
||||
from .literals import (QUEUEDOCUMENT_STATE_PENDING,
|
||||
QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_STOPPED,
|
||||
DOCUMENTQUEUE_STATE_ACTIVE)
|
||||
from .literals import (QUEUEDOCUMENT_STATE_PROCESSING,
|
||||
DOCUMENTQUEUE_STATE_STOPPED, DOCUMENTQUEUE_STATE_ACTIVE)
|
||||
from .models import DocumentQueue, QueueDocument, QueueTransformation
|
||||
from .permissions import (PERMISSION_OCR_DOCUMENT,
|
||||
PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE,
|
||||
@@ -144,10 +143,12 @@ def submit_document_to_queue(request, document, post_submit_redirect=None):
|
||||
try:
|
||||
document_queue = DocumentQueue.objects.queue_document(document)
|
||||
messages.success(request, _(u'Document: %(document)s was added to the OCR queue: %(queue)s.') % {
|
||||
'document': document, 'queue': document_queue.label})
|
||||
'document': document, 'queue': document_queue.label}
|
||||
)
|
||||
except AlreadyQueued:
|
||||
messages.warning(request, _(u'Document: %(document)s is already queued.') % {
|
||||
'document': document})
|
||||
'document': document}
|
||||
)
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
@@ -317,7 +318,7 @@ def setup_queue_transformation_list(request, document_queue_id):
|
||||
{'name': _(u'order'), 'attribute': 'order'},
|
||||
{'name': _(u'transformation'), 'attribute': encapsulate(lambda x: x.get_transformation_display())},
|
||||
{'name': _(u'arguments'), 'attribute': 'arguments'}
|
||||
],
|
||||
],
|
||||
'hide_link': True,
|
||||
'hide_object': True,
|
||||
}
|
||||
@@ -355,8 +356,7 @@ def setup_queue_transformation_edit(request, transformation_id):
|
||||
{'object': 'transformation', 'name': _(u'transformation')}
|
||||
],
|
||||
'next': next,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_queue_transformation_delete(request, transformation_id):
|
||||
@@ -389,8 +389,7 @@ def setup_queue_transformation_delete(request, transformation_id):
|
||||
},
|
||||
'previous': previous,
|
||||
'form_icon': u'shape_square_delete.png',
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_queue_transformation_create(request, document_queue_id):
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_save
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.db.models.signals import post_save
|
||||
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from project_setup.api import register_setup
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from .models import Role, PermissionHolder
|
||||
from .models import Role
|
||||
|
||||
|
||||
def cleanup():
|
||||
|
||||
@@ -2,15 +2,9 @@ import logging
|
||||
|
||||
from django.db import models
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import transaction
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.db.utils import IntegrityError
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
from common.models import AnonymousUserSingleton
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@ from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ugettext
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes import generic
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.contenttypes import generic
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.models import AnonymousUserSingleton
|
||||
|
||||
@@ -70,14 +70,13 @@ class PermissionManager(object):
|
||||
except KeyError:
|
||||
raise Permission.DoesNotExist
|
||||
|
||||
|
||||
def __init__(self, model):
|
||||
self.model = model
|
||||
|
||||
|
||||
class Permission(object):
|
||||
_stored_permissions_cache = {}
|
||||
|
||||
|
||||
DoesNotExist = PermissionDoesNotExists
|
||||
|
||||
def __init__(self, namespace, name, label):
|
||||
@@ -236,7 +235,7 @@ class Role(models.Model):
|
||||
|
||||
def remove_member(self, member):
|
||||
member = AnonymousUserSingleton.objects.passthru_check(member)
|
||||
member_type=ContentType.objects.get_for_model(member)
|
||||
member_type = ContentType.objects.get_for_model(member)
|
||||
role_member = RoleMember.objects.get(role=self, member_type=member_type, member_id=member.pk)
|
||||
role_member.delete()
|
||||
|
||||
@@ -261,7 +260,6 @@ class RoleMember(models.Model):
|
||||
objects = RoleMemberManager()
|
||||
|
||||
class Meta:
|
||||
#ordering = ('label',)
|
||||
verbose_name = _(u'role member')
|
||||
verbose_name_plural = _(u'role members')
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ from __future__ import absolute_import
|
||||
|
||||
from .cleanup import cleanup
|
||||
|
||||
|
||||
bootstrap_models = [
|
||||
{
|
||||
'name': 'role',
|
||||
|
||||
@@ -1,32 +1,31 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import operator
|
||||
import itertools
|
||||
import operator
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponseRedirect, Http404
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.contrib import messages
|
||||
from common.backport.generic.list_detail import object_list
|
||||
from django.core.urlresolvers import reverse
|
||||
from common.backport.generic.create_update import create_object, delete_object, update_object
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.utils.simplejson import loads
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.views import assign_remove
|
||||
from common.utils import generate_choices_w_labels, encapsulate, get_object_name
|
||||
from common.widgets import two_state_template
|
||||
from common.models import AnonymousUserSingleton
|
||||
from acls.classes import EncapsulatedObject
|
||||
from common.backport.generic.list_detail import object_list
|
||||
from common.backport.generic.create_update import create_object, delete_object, update_object
|
||||
from common.models import AnonymousUserSingleton
|
||||
from common.views import assign_remove
|
||||
from common.utils import encapsulate, get_object_name
|
||||
from common.widgets import two_state_template
|
||||
|
||||
from .models import Role, Permission, PermissionHolder, RoleMember
|
||||
from .forms import RoleForm, RoleForm_view
|
||||
from .models import Role, Permission
|
||||
from .permissions import (PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT,
|
||||
PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE,
|
||||
PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE)
|
||||
from .widgets import role_permission_link
|
||||
|
||||
|
||||
def role_list(request):
|
||||
@@ -49,7 +48,6 @@ def role_permissions(request, role_id):
|
||||
role = get_object_or_404(Role, pk=role_id)
|
||||
form = RoleForm_view(instance=role)
|
||||
|
||||
role_permissions_list = Permission.objects.get_for_holder(role)
|
||||
subtemplates_list = [
|
||||
{
|
||||
'name': u'generic_list_subtemplate.html',
|
||||
@@ -60,7 +58,7 @@ def role_permissions(request, role_id):
|
||||
{'name': _(u'namespace'), 'attribute': encapsulate(lambda x: x.namespace)},
|
||||
{'name': _(u'name'), 'attribute': encapsulate(lambda x: x.label)},
|
||||
{
|
||||
'name':_(u'has permission'),
|
||||
'name': _(u'has permission'),
|
||||
'attribute': encapsulate(lambda x: two_state_template(x.requester_has_this(role))),
|
||||
},
|
||||
],
|
||||
@@ -90,7 +88,8 @@ def role_edit(request, role_id):
|
||||
|
||||
return update_object(request, template_name='generic_form.html',
|
||||
form_class=RoleForm, object_id=role_id, extra_context={
|
||||
'object_name': _(u'role')})
|
||||
'object_name': _(u'role')}
|
||||
)
|
||||
|
||||
|
||||
def role_create(request):
|
||||
@@ -129,7 +128,7 @@ def permission_grant(request):
|
||||
|
||||
items = []
|
||||
for item_properties in items_property_list:
|
||||
#permission = get_object_or_404(Permission, pk=item_properties['permission_id'])
|
||||
# permission = get_object_or_404(Permission, pk=item_properties['permission_id'])
|
||||
try:
|
||||
permission = Permission.objects.get({'pk': item_properties['permission_id']})
|
||||
except Permission.DoesNotExist:
|
||||
@@ -192,7 +191,7 @@ def permission_revoke(request):
|
||||
|
||||
items = []
|
||||
for item_properties in items_property_list:
|
||||
#permission = get_object_or_404(Permission, pk=item_properties['permission_id'])
|
||||
# permission = get_object_or_404(Permission, pk=item_properties['permission_id'])
|
||||
try:
|
||||
permission = Permission.objects.get({'pk': item_properties['permission_id']})
|
||||
except Permission.DoesNotExist:
|
||||
@@ -280,7 +279,7 @@ def get_role_members(role, separate=False):
|
||||
|
||||
|
||||
def get_non_role_members(role):
|
||||
#non members = all users - members - staff - super users
|
||||
# non members = all users - members - staff - super users
|
||||
member_users, member_groups, member_anonymous = get_role_members(role, separate=True)
|
||||
|
||||
staff_users = User.objects.filter(is_staff=True)
|
||||
@@ -300,7 +299,7 @@ def get_non_role_members(role):
|
||||
if anonymous:
|
||||
non_members.append((_(u'Special'), _as_choice_list(list(anonymous))))
|
||||
|
||||
#non_holder_list.append((_(u'Special'), _as_choice_list([AnonymousUserSingleton.objects.get()])))
|
||||
# non_holder_list.append((_(u'Special'), _as_choice_list([AnonymousUserSingleton.objects.get()])))
|
||||
|
||||
return non_members
|
||||
|
||||
@@ -321,9 +320,9 @@ def role_members(request, role_id):
|
||||
|
||||
return assign_remove(
|
||||
request,
|
||||
#left_list=lambda: generate_choices_w_labels(get_non_role_members(role)),
|
||||
# left_list=lambda: generate_choices_w_labels(get_non_role_members(role)),
|
||||
left_list=lambda: get_non_role_members(role),
|
||||
#right_list=lambda: generate_choices_w_labels(get_role_members(role)),
|
||||
# right_list=lambda: generate_choices_w_labels(get_role_members(role)),
|
||||
right_list=lambda: get_role_members(role),
|
||||
add_method=lambda x: add_role_member(role, x),
|
||||
remove_method=lambda x: remove_role_member(role, x),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from django.utils.translation import ugettext
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import ugettext
|
||||
|
||||
|
||||
def role_permission_link(requester, permission, permission_list):
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation.api import register_top_menu
|
||||
|
||||
from .links import link_setup
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@ from django.core.urlresolvers import reverse
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from converter.exceptions import UnknownFileFormat, UnkownConvertError
|
||||
from documents.models import Document, DocumentType
|
||||
from documents.models import Document
|
||||
|
||||
|
||||
class DocumentResourceSimple(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
@@ -2,16 +2,12 @@
|
||||
|
||||
import logging
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from converter.exceptions import UnknownFileFormat, UnkownConvertError
|
||||
from documents.models import Document, DocumentVersion, DocumentPage
|
||||
|
||||
from rest_framework import generics
|
||||
from rest_framework import permissions
|
||||
from rest_framework import serializers
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.reverse import reverse
|
||||
|
||||
|
||||
Reference in New Issue
Block a user