Initial set of update to convert the sources app to the new registry and icon system

This commit is contained in:
Roberto Rosario
2012-09-30 03:01:49 -04:00
parent 3b9a5080b5
commit d41dac13ea
18 changed files with 237 additions and 153 deletions

View File

@@ -11,6 +11,11 @@ class IconSet(IconSetBase):
available_sizes = ['32x32', '16x16']
dictionary = {
ADD: 'add.png',
APPLICATION_FORM: 'application_form.png',
APPLICATION_FORM_DELETE: 'application_form_delete.png',
APPLICATION_FORM_EDIT: 'application_form_edit.png',
APPLICATION_FORM_ADD: 'application_form_add.png',
APPLICATION_VIEW_ICONS: 'application_view_icons.png',
APPLICATION_VIEW_ICONS: 'application_view_icons.png',
ARROW_TURN_RIGHT: 'arrow_turn_right.png',
ARROW_TURN_LEFT: 'arrow_turn_left.png',
@@ -49,14 +54,20 @@ class IconSet(IconSetBase):
DELETE: 'delete.png',
DISK: 'disk.png',
DRAW_AIRBRUSH: 'draw_airbrush.png',
DRIVE: 'drive.png',
DRIVE_NETWORK: 'drive_network.png',
DRIVE_USER: 'drive_user.png',
DOCUMENT_SIGNATURE: 'document_signature.png',
EMAIL: 'email.png',
ERROR: 'error.png',
FOLDER: 'folder.png',
FOLDERS: 'folders.png',
FOLDER_ADD: 'folder_add.png',
FOLDER_CAMERA: 'folder_camera.png',
FOLDER_EDIT: 'folder_edit.png',
FOLDER_DELETE: 'folder_delete.png',
FOLDER_GO: 'folder_go.png',
FOLDER_MAGNIFY: 'folder_magnify.png',
FOLDER_PAGE: 'folder_page.png',
FOLDER_USER: 'folder_user.png',
GROUP: 'group.png',
@@ -68,6 +79,8 @@ class IconSet(IconSetBase):
GROUP_MEMBERS: ['group.png', 'arrow_refresh.png'],
HOURGLASS: 'hourglass.png',
HOUSE: 'house.png',
IMAGE: 'image.png',
IMAGES: 'images.png',
INDEX: 'index.png',
INFORMATION: 'information.png',
KEY: 'key.png',
@@ -101,6 +114,7 @@ class IconSet(IconSetBase):
NODE_TREE_DELETE: ['node-tree.png', 'delete.png'],
PACKAGE: 'package.png',
PAGE: 'page.png',
PAGE_ADD: 'page_add.png',
PAGE_COPY: 'page_copy.png',
PAGE_GEAR: 'page_gear.png',
PAGE_GO: 'page_go.png',
@@ -123,6 +137,7 @@ class IconSet(IconSetBase):
PILL: 'pill.png',
PLUGIN: 'plugin.png',
PRINTER: 'printer.png',
PRINTER_EMPTY: 'printer_empty.png',
RADIOACTIVITY: 'radioactivity.png',
RAINBOW: 'rainbow.png',
RESULTSET_FIRST: 'resultset_first.png',
@@ -169,6 +184,7 @@ class IconSet(IconSetBase):
WIZARD_DELETE: ['wizard.png', 'delete.png'],
WIZARD_EDIT: ['wizard.png', 'pencil.png'],
WIZARD_LIGHTNING: ['wizard.png', 'lightning.png'],
WORLD: 'world.png',
WORLD_GO: 'world_go.png',
WRENCH: 'wrench.png',
XHTML: 'xhtml.png',

View File

@@ -5,6 +5,10 @@ DEFAULT_ICON_SET = 'fat_cow'
ICONSETS_STATIC_DIRECTORY = 'icons'
ADD = 'add'
APPLICATION_FORM = 'application_form'
APPLICATION_FORM_DELETE = 'application_form_delete'
APPLICATION_FORM_EDIT = 'application_form_edit'
APPLICATION_FORM_ADD = 'application_form_add'
APPLICATION_VIEW_ICONS = 'application_view_icons'
ARROW_TURN_RIGHT = 'arrow_turn_right'
ARROW_TURN_LEFT = 'arrow_turn_left'
@@ -43,16 +47,22 @@ DATABASE_LIGHTNING = 'database_lightning'
DELETE = 'delete'
DISK = 'disk'
DRAW_AIRBRUSH = 'draw_airbrush'
DRIVE = 'drive'
DRIVE_NETWORK = 'drive_network'
DRIVE_USER = 'drive_user'
DOCUMENT_SIGNATURE = 'document_signature'
EMAIL = 'email'
ERROR = 'error'
FILE_EXTENSION_ERROR = 'file_extension_error'
FILE_EXTENSION_UNKNOWN = 'file_extension_unknown'
FOLDER = 'folder'
FOLDERS = 'folders'
FOLDER_ADD = 'folder_add'
FOLDER_CAMERA = 'folder_camera'
FOLDER_EDIT = 'folder_edit'
FOLDER_DELETE = 'folder_delete'
FOLDER_GO = 'folder_go'
FOLDER_MAGNIFY = 'folder_magnify'
FOLDER_PAGE = 'folder_page'
FOLDER_USER = 'folder_user'
GROUP = 'group'
@@ -64,6 +74,8 @@ GROUP_LINK = 'group_link'
GROUP_MEMBERS = 'group_members'
HOURGLASS = 'hourglass'
HOUSE = 'house'
IMAGE = 'image'
IMAGES = 'images'
INDEX = 'index'
INFORMATION = 'information'
KEY = 'key'
@@ -97,6 +109,7 @@ NODE_TREE_EDIT = 'node_tree_edit'
NODE_TREE_DELETE = 'node_tree_delete'
PACKAGE = 'package'
PAGE = 'page'
PAGE_ADD = 'page_add'
PAGE_COPY = 'page_copy'
PAGE_DELETE = 'page_delete'
PAGE_EDIT = 'page_edit'
@@ -119,6 +132,7 @@ PICTURES = 'pictures'
PILL = 'pill'
PLUGIN = 'plugin'
PRINTER = 'printer'
PRINTER_EMPTY = 'printer_empty'
RADIOACTIVITY = 'radioactivity'
RAINBOW = 'rainbow'
RESULTSET_FIRST = 'resultset_first'
@@ -165,6 +179,7 @@ WIZARD_ADD = 'wizard_add'
WIZARD_DELETE = 'wizard_delete'
WIZARD_EDIT = 'wizard_edit'
WIZARD_LIGHTNING = 'wizard_lightning'
WORLD = 'world'
WORLD_GO = 'world_go'
WRENCH = 'wrench'
XHTML = 'xhtml'

View File

@@ -1,76 +1 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
#from backups.api import AppBackup, ModelBackup
#from app_registry import register_app, UnableToRegister
from common.utils import encapsulate
from documents.models import Document
from navigation.api import (bind_links, register_model_list_columns,
register_sidebar_template)
from project_setup.api import register_setup
from scheduler.api import LocalScheduler
from .conf.settings import EMAIL_PROCESSING_INTERVAL
from .links import (staging_file_delete, setup_sources,
setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list,
setup_pop3_email_list, setup_imap_email_list, setup_source_edit,
setup_source_delete, setup_source_create, setup_source_log_list,
setup_source_transformation_list, setup_source_transformation_create,
setup_source_transformation_edit, setup_source_transformation_delete,
upload_version, document_create_multiple, setup_local_scanner_list,
setup_local_scanners_refresh)
from .models import (WebForm, StagingFolder, SourceTransformation,
WatchFolder, POP3Email, IMAPEmail, LocalScanner)
from .staging import StagingFile
from .tasks import task_fetch_pop3_emails, task_fetch_imap_emails
from .widgets import staging_file_thumbnail
bind_links([StagingFile], [staging_file_delete])
bind_links([SourceTransformation], [setup_source_transformation_edit, setup_source_transformation_delete])
bind_links([LocalScanner, 'setup_local_scanner_list'], [setup_local_scanners_refresh], menu_name='secondary_menu')
bind_links(['setup_imap_email_list', 'setup_pop3_email_list', 'setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_create', 'setup_local_scanner_list'], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([WebForm, StagingFolder, POP3Email, IMAPEmail, LocalScanner, 'setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_create', 'setup_pop3_email_list', 'setup_imap_email_list', 'setup_local_scanner_list'], [setup_source_create], menu_name='secondary_menu')
bind_links([WebForm], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([WebForm], [setup_source_transformation_list, setup_source_edit, setup_source_delete])
bind_links([StagingFolder], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([StagingFolder], [setup_source_transformation_list, setup_source_edit, setup_source_delete])
bind_links([POP3Email], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([POP3Email], [setup_source_transformation_list, setup_source_edit, setup_source_delete])
bind_links([POP3Email], [setup_source_log_list])
bind_links([IMAPEmail], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([IMAPEmail], [setup_source_transformation_list, setup_source_edit, setup_source_delete])
bind_links([IMAPEmail], [setup_source_log_list])
bind_links([WatchFolder], [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([WatchFolder], [setup_source_transformation_list, setup_source_edit, setup_source_delete])
bind_links([LocalScanner], [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([LocalScanner], [setup_source_transformation_list, setup_source_edit, setup_source_delete])
register_sidebar_template([LocalScanner, 'setup_local_scanner_list'], 'scanner_list.html')
# Document version
bind_links(['document_version_list', 'upload_version', 'document_version_revert', 'document_version_text_compare', 'document_version_show_diff_text'], [upload_version], menu_name='sidebar')
bind_links(['setup_source_transformation_create', 'setup_source_transformation_edit', 'setup_source_transformation_delete', 'setup_source_transformation_list'], [setup_source_transformation_create], menu_name='sidebar')
source_views = ['setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_edit', 'setup_source_delete', 'setup_source_create', 'setup_source_transformation_list', 'setup_source_transformation_edit', 'setup_source_transformation_delete', 'setup_source_transformation_create']
register_model_list_columns(StagingFile, [
{'name':_(u'thumbnail'), 'attribute':
encapsulate(lambda x: staging_file_thumbnail(x))
},
])
register_setup(setup_sources)
sources_scheduler = LocalScheduler('sources', _(u'Document sources'))
sources_scheduler.add_interval_job('task_fetch_pop3_emails', _(u'Connects to the POP3 email sources and fetches the attached documents.'), task_fetch_pop3_emails, seconds=EMAIL_PROCESSING_INTERVAL)
sources_scheduler.add_interval_job('task_fetch_imap_emails', _(u'Connects to the IMAP email sources and fetches the attached documents.'), task_fetch_imap_emails, seconds=EMAIL_PROCESSING_INTERVAL)
sources_scheduler.start()
bind_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_interactive', 'staging_file_delete'], [document_create_multiple], menu_name='secondary_menu')
bind_links([Document], [document_create_multiple], menu_name='secondary_menu')
#try:
# app = register_app('sources', _(u'Sources'))
#except UnableToRegister:
# pass
#else:
# AppBackup(app, [ModelBackup()])

View File

@@ -8,7 +8,7 @@ from documents.forms import DocumentForm
from .models import (WebForm, StagingFolder, SourceTransformation,
WatchFolder, POP3Email, IMAPEmail, LocalScanner)
from .widgets import FamFamRadioSelect
from .widgets import IconRadioSelect
from .utils import validate_whitelist_blacklist
@@ -74,7 +74,7 @@ class WebFormForm(DocumentForm):
class WebFormSetupForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(WebFormSetupForm, self).__init__(*args, **kwargs)
self.fields['icon'].widget = FamFamRadioSelect(
self.fields['icon'].widget = IconRadioSelect(
attrs=self.fields['icon'].widget.attrs,
choices=self.fields['icon'].widget.choices,
)
@@ -86,7 +86,7 @@ class WebFormSetupForm(forms.ModelForm):
class StagingFolderSetupForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StagingFolderSetupForm, self).__init__(*args, **kwargs)
self.fields['icon'].widget = FamFamRadioSelect(
self.fields['icon'].widget = IconRadioSelect(
attrs=self.fields['icon'].widget.attrs,
choices=self.fields['icon'].widget.choices,
)
@@ -110,7 +110,7 @@ class LocalScannerSetupForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(LocalScannerSetupForm, self).__init__(*args, **kwargs)
self.fields['icon'].widget = FamFamRadioSelect(
self.fields['icon'].widget = IconRadioSelect(
attrs=self.fields['icon'].widget.attrs,
choices=self.fields['icon'].widget.choices,
)

26
apps/sources/icons.py Normal file
View File

@@ -0,0 +1,26 @@
from __future__ import absolute_import
from icons.literals import (APPLICATION_FORM, APPLICATION_FORM_DELETE, APPLICATION_FORM_EDIT,
APPLICATION_FORM_ADD, BOOK, DELETE, EMAIL, IMAGE, FOLDER_MAGNIFY, FOLDER_CAMERA,
PAGE_ADD, ZOOM, CROSS)
from icons import Icon
icon_staging_file_preview = Icon(ZOOM)
icon_staging_file_delete = Icon(DELETE)
icon_setup_sources = Icon(APPLICATION_FORM)
icon_setup_web_form_list = Icon(APPLICATION_FORM)
icon_setup_staging_folder_list = Icon(FOLDER_CAMERA)
icon_setup_watch_folder_list = Icon(FOLDER_MAGNIFY)
icon_setup_pop3_email_list = Icon(EMAIL)
icon_setup_imap_email_list = Icon(EMAIL)
icon_setup_local_scanner_list = Icon(IMAGE)
icon_setup_local_scanners_refresh = Icon(IMAGE)
icon_setup_source_edit = Icon(APPLICATION_FORM_EDIT)
icon_setup_source_delete = Icon(APPLICATION_FORM_DELETE)
icon_setup_source_create = Icon(APPLICATION_FORM_ADD)
icon_setup_source_log_list = Icon(BOOK)
icon_source_list = Icon(PAGE_ADD)
icon_upload_version = Icon(PAGE_ADD)
icon_document_create_multiple = Icon(PAGE_ADD)
icon_cross = Icon(CROSS)

View File

@@ -5,33 +5,49 @@ from django.utils.translation import ugettext_lazy as _
from navigation import Link
from documents.permissions import (PERMISSION_DOCUMENT_NEW_VERSION,
PERMISSION_DOCUMENT_CREATE)
from .permissions import (PERMISSION_SOURCES_SETUP_VIEW,
PERMISSION_SOURCES_SETUP_EDIT, PERMISSION_SOURCES_SETUP_DELETE,
PERMISSION_SOURCES_SETUP_CREATE)
staging_file_preview = Link(text=_(u'preview'), klass='fancybox-noscaling', view='staging_file_preview', args=['source.source_type', 'source.pk', 'object.pk'], sprite='zoom', permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE])
staging_file_delete = Link(text=_(u'delete'), view='staging_file_delete', args=['source.source_type', 'source.pk', 'object.pk'], sprite='delete', keep_query=True, permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE])
from .icons import (icon_staging_file_preview, icon_staging_file_delete,
icon_setup_sources, icon_setup_web_form_list, icon_setup_staging_folder_list,
icon_setup_watch_folder_list, icon_setup_pop3_email_list,
icon_setup_imap_email_list, icon_setup_local_scanner_list,
icon_setup_local_scanners_refresh, icon_setup_source_edit,
icon_setup_source_delete, icon_setup_source_create,
icon_setup_source_log_list, icon_source_list, icon_upload_version,
icon_document_create_multiple, icon_staging_file_preview,
icon_staging_file_delete, icon_setup_sources, icon_setup_web_form_list,
icon_setup_staging_folder_list, icon_setup_watch_folder_list,
icon_setup_pop3_email_list, icon_setup_imap_email_list,
icon_setup_local_scanner_list, icon_setup_local_scanners_refresh,
icon_setup_source_edit, icon_setup_source_delete, icon_setup_source_create,
icon_setup_source_log_list, icon_source_list, icon_upload_version,
icon_document_create_multiple)
setup_sources = Link(text=_(u'sources'), view='setup_web_form_list', sprite='application_form', icon='application_form.png', permissions=[PERMISSION_SOURCES_SETUP_VIEW], children_view_regex=[r'setup_web_form', r'setup_staging_folder', r'setup_source_', r'setup_pop3', r'setup_imap'])
setup_web_form_list = Link(text=_(u'web forms'), view='setup_web_form_list', sprite='application_form', icon='application_form.png', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_staging_folder_list = Link(text=_(u'staging folders'), view='setup_staging_folder_list', sprite='folder_camera', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_watch_folder_list = Link(text=_(u'watch folders'), view='setup_watch_folder_list', sprite='folder_magnify', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_pop3_email_list = Link(text=_(u'POP3 email'), view='setup_pop3_email_list', sprite='email', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_imap_email_list = Link(text=_(u'IMAP email'), view='setup_imap_email_list', sprite='email', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_local_scanner_list = Link(text=_(u'Local scanner'), view='setup_local_scanner_list', sprite='image', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_local_scanners_refresh = Link(text=_(u'Refresh scanner list'), view='scanners_refresh', sprite='images', permissions=[PERMISSION_SOURCES_SETUP_VIEW])
staging_file_preview = Link(text=_(u'preview'), klass='fancybox-noscaling', view='staging_file_preview', args=['source.source_type', 'source.pk', 'object.pk'], icon=icon_staging_file_preview, permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE])
staging_file_delete = Link(text=_(u'delete'), view='staging_file_delete', args=['source.source_type', 'source.pk', 'object.pk'], icon=icon_staging_file_delete, keep_query=True, permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE])
setup_source_edit = Link(text=_(u'edit'), view='setup_source_edit', args=['source.source_type', 'source.pk'], sprite='application_form_edit', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_delete = Link(text=_(u'delete'), view='setup_source_delete', args=['source.source_type', 'source.pk'], sprite='application_form_delete', permissions=[PERMISSION_SOURCES_SETUP_DELETE])
setup_source_create = Link(text=_(u'add new source'), view='setup_source_create', args='source_type', sprite='application_form_add', permissions=[PERMISSION_SOURCES_SETUP_CREATE])
setup_source_log_list = Link(text=_(u'logs'), view='setup_source_log_list', args=['source.source_type', 'source.pk'], sprite='book', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_sources = Link(text=_(u'sources'), view='setup_web_form_list', icon=icon_setup_sources, permissions=[PERMISSION_SOURCES_SETUP_VIEW], children_view_regex=[r'setup_web_form', r'setup_staging_folder', r'setup_source_', r'setup_pop3', r'setup_imap'])
setup_web_form_list = Link(text=_(u'web forms'), view='setup_web_form_list', icon=icon_setup_web_form_list, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_staging_folder_list = Link(text=_(u'staging folders'), view='setup_staging_folder_list', icon=icon_setup_staging_folder_list, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_watch_folder_list = Link(text=_(u'watch folders'), view='setup_watch_folder_list', icon=icon_setup_watch_folder_list, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_pop3_email_list = Link(text=_(u'POP3 email'), view='setup_pop3_email_list', icon=icon_setup_pop3_email_list, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_imap_email_list = Link(text=_(u'IMAP email'), view='setup_imap_email_list', icon=icon_setup_imap_email_list, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_local_scanner_list = Link(text=_(u'Local scanner'), view='setup_local_scanner_list', icon=icon_setup_local_scanner_list, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_local_scanners_refresh = Link(text=_(u'Refresh scanner list'), view='scanners_refresh', icon=icon_setup_local_scanners_refresh, permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_source_transformation_list = Link(text=_(u'transformations'), view='setup_source_transformation_list', args=['source.source_type', 'source.pk'], sprite='shape_move_front', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_create = Link(text=_(u'add transformation'), view='setup_source_transformation_create', args=['source.source_type', 'source.pk'], sprite='shape_square_add', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_edit = Link(text=_(u'edit'), view='setup_source_transformation_edit', args='transformation.pk', sprite='shape_square_edit', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_delete = Link(text=_(u'delete'), view='setup_source_transformation_delete', args='transformation.pk', sprite='shape_square_delete', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_edit = Link(text=_(u'edit'), view='setup_source_edit', args=['source.source_type', 'source.pk'], icon=icon_setup_source_edit, permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_delete = Link(text=_(u'delete'), view='setup_source_delete', args=['source.source_type', 'source.pk'], icon=icon_setup_source_delete, permissions=[PERMISSION_SOURCES_SETUP_DELETE])
setup_source_create = Link(text=_(u'add new source'), view='setup_source_create', args='source_type', icon=icon_setup_source_create, permissions=[PERMISSION_SOURCES_SETUP_CREATE])
setup_source_log_list = Link(text=_(u'logs'), view='setup_source_log_list', args=['source.source_type', 'source.pk'], icon=icon_setup_source_log_list, permissions=[PERMISSION_SOURCES_SETUP_EDIT])
source_list = Link(text=_(u'Document sources'), view='setup_web_form_list', sprite='page_add', children_url_regex=[r'sources/setup'], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
#setup_source_transformation_list = Link(text=_(u'transformations'), view='setup_source_transformation_list', args=['source.source_type', 'source.pk'], sprite='shape_move_front', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
#setup_source_transformation_create = Link(text=_(u'add transformation'), view='setup_source_transformation_create', args=['source.source_type', 'source.pk'], sprite='shape_square_add', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
#setup_source_transformation_edit = Link(text=_(u'edit'), view='setup_source_transformation_edit', args='transformation.pk', sprite='shape_square_edit', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
#setup_source_transformation_delete = Link(text=_(u'delete'), view='setup_source_transformation_delete', args='transformation.pk', sprite='shape_square_delete', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
upload_version = Link(text=_(u'upload new version'), view='upload_version', args='object.pk', sprite='page_add', permissions=[PERMISSION_DOCUMENT_NEW_VERSION])
document_create_multiple = Link(text=_(u'upload new documents'), view='document_create_multiple', sprite='page_add', permissions=[PERMISSION_DOCUMENT_CREATE], children_view_regex=[r'upload_interactive'])
source_list = Link(text=_(u'Document sources'), view='setup_web_form_list', icon=icon_source_list, children_url_regex=[r'sources/setup'], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
upload_version = Link(text=_(u'upload new version'), view='upload_version', args='object.pk', icon=icon_upload_version, permissions=[PERMISSION_DOCUMENT_NEW_VERSION])
document_create_multiple = Link(text=_(u'upload new documents'), view='document_create_multiple', icon=icon_document_create_multiple, permissions=[PERMISSION_DOCUMENT_CREATE], children_view_regex=[r'upload_interactive'])

View File

@@ -1,5 +1,10 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from icons.literals import (DISK, DATABASE, DRIVE, DRIVE_NETWORK, DRIVE_USER,
EMAIL, FOLDER, WORLD, PRINTER, PRINTER_EMPTY, IMAGES)
POP3_PORT = 110
POP3_SSL_PORT = 995
DEFAULT_POP3_INTERVAL = 15 * 60 # 15 minutes in seconds
@@ -25,30 +30,18 @@ SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES = (
(SOURCE_UNCOMPRESS_CHOICE_ASK, _(u'Ask user'))
)
SOURCE_ICON_DISK = 'disk'
SOURCE_ICON_DATABASE = 'database'
SOURCE_ICON_DRIVE = 'drive'
SOURCE_ICON_DRIVE_NETWORK = 'drive_network'
SOURCE_ICON_DRIVE_USER = 'drive_user'
SOURCE_ICON_EMAIL = 'email'
SOURCE_ICON_FOLDER = 'folder'
SOURCE_ICON_WORLD = 'world'
SOURCE_ICON_PRINTER = 'printer'
SOURCE_ICON_PRINTER_EMPTY = 'printer_empty'
SOURCE_ICON_IMAGES = 'images'
SOURCE_ICON_CHOICES = (
(SOURCE_ICON_DISK, _(u'Disk')),
(SOURCE_ICON_DATABASE, _(u'Database')),
(SOURCE_ICON_DRIVE, _(u'Drive')),
(SOURCE_ICON_DRIVE_NETWORK, _(u'Network drive')),
(SOURCE_ICON_DRIVE_USER, _(u'User drive')),
(SOURCE_ICON_EMAIL, _(u'Envelope')),
(SOURCE_ICON_FOLDER, _(u'Folder')),
(SOURCE_ICON_IMAGES, _(u'Images')),
(SOURCE_ICON_WORLD, _(u'World')),
(SOURCE_ICON_PRINTER, _(u'Printer')),
(SOURCE_ICON_PRINTER_EMPTY, _(u'Empty printer')),
(DISK, _(u'Disk')),
(DATABASE, _(u'Database')),
(DRIVE, _(u'Drive')),
(DRIVE_NETWORK, _(u'Network drive')),
(DRIVE_USER, _(u'User drive')),
(EMAIL, _(u'Envelope')),
(FOLDER, _(u'Folder')),
(IMAGES, _(u'Images')),
(WORLD, _(u'World')),
(PRINTER, _(u'Printer')),
(PRINTER_EMPTY, _(u'Empty printer')),
)
SOURCE_CHOICE_WEB_FORM = 'webform'
@@ -77,3 +70,6 @@ SOURCE_CHOICES_PLURAL = (
)
DEFAULT_LOCAL_SCANNER_FILE_FORMAT = 'JPEG'
DEFAULT_POP3_DEFAULT_TIMEOUT = 10 # for POP3 only not POP3_SSL
DEFAULT_EMAIL_PROCESSING_INTERVAL = 60
DEFAULT_POP3_EMAIL_LOG_COUNT = 10 # Max log entries to store

View File

@@ -5,7 +5,7 @@ from ast import literal_eval
from django.db import models
from django.contrib.contenttypes.models import ContentType
from .conf.settings import LOG_SIZE
#from .settings import LOG_SIZE
class SourceTransformationManager(models.Manager):

View File

@@ -24,7 +24,7 @@ from django.core.exceptions import ValidationError
from django.db import transaction
from django.core.files import File
from converter.api import get_available_transformations_choices
#from converter.api import get_available_transformations_choices
from converter.literals import DIMENSION_SEPARATOR
from documents.models import Document, DocumentType
from documents.events import history_document_created
@@ -34,7 +34,7 @@ from acls.utils import apply_default_acls
from .managers import SourceTransformationManager, SourceLogManager
from .literals import (SOURCE_CHOICES, SOURCE_CHOICES_PLURAL,
SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, SOURCE_CHOICE_WEB_FORM,
SOURCE_CHOICE_STAGING, SOURCE_ICON_DISK, SOURCE_ICON_DRIVE,
SOURCE_CHOICE_STAGING, DISK, DRIVE,
SOURCE_ICON_CHOICES, SOURCE_CHOICE_WATCH, SOURCE_UNCOMPRESS_CHOICES,
SOURCE_UNCOMPRESS_CHOICE_Y,
POP3_PORT, POP3_SSL_PORT,
@@ -42,11 +42,10 @@ from .literals import (SOURCE_CHOICES, SOURCE_CHOICES_PLURAL,
IMAP_PORT, IMAP_SSL_PORT,
SOURCE_CHOICE_IMAP_EMAIL, DEFAULT_IMAP_INTERVAL,
IMAP_DEFAULT_MAILBOX,
SOURCE_CHOICE_LOCAL_SCANNER, SOURCE_ICON_IMAGES,
SOURCE_CHOICE_LOCAL_SCANNER, IMAGES,
DEFAULT_LOCAL_SCANNER_FILE_FORMAT)
from .compressed_file import CompressedFile, NotACompressedFile
from .conf.settings import POP3_TIMEOUT
#from . import sources_scheduler
#from .post_init import sources_scheduler
logger = logging.getLogger(__name__)
@@ -268,6 +267,8 @@ class POP3Email(EmailBaseModel):
source_type = SOURCE_CHOICE_POP3_EMAIL
def fetch_mail(self):
from .settings import POP3_TIMEOUT
try:
last_check = SourceLog.objects.get_latest_for(self)
except SourceLog.DoesNotExist:
@@ -391,7 +392,7 @@ class LocalScanner(InteractiveBaseModel):
is_interactive = True
source_type = SOURCE_CHOICE_LOCAL_SCANNER
default_icon = SOURCE_ICON_IMAGES
default_icon = IMAGES
scanner_device = models.CharField(max_length=255, verbose_name=_(u'scanner device'))
scanner_description = models.CharField(max_length=255, verbose_name=_(u'scanner description'))
@@ -462,7 +463,7 @@ class LocalScanner(InteractiveBaseModel):
class StagingFolder(InteractiveBaseModel):
is_interactive = True
source_type = SOURCE_CHOICE_STAGING
default_icon = SOURCE_ICON_DRIVE
default_icon = DRIVE
folder_path = models.CharField(max_length=255, verbose_name=_(u'folder path'), help_text=_(u'Server side filesystem path.'))
preview_width = models.IntegerField(verbose_name=_(u'preview width'), help_text=_(u'Width value to be passed to the converter backend.'))
@@ -502,7 +503,7 @@ class SourceMetadata(models.Model):
class WebForm(InteractiveBaseModel):
is_interactive = True
source_type = SOURCE_CHOICE_WEB_FORM
default_icon = SOURCE_ICON_DISK
default_icon = DISK
uncompress = models.CharField(max_length=1, choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, verbose_name=_(u'uncompress'), help_text=_(u'Whether to expand or not compressed archives.'))
#Default path
@@ -578,7 +579,8 @@ class SourceTransformation(models.Model):
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'), db_index=True)
transformation = models.CharField(choices=get_available_transformations_choices(), max_length=128, verbose_name=_(u'transformation'))
#transformation = models.CharField(choices=get_available_transformations_choices(), max_length=128, verbose_name=_(u'transformation'))
transformation = models.CharField(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: %s') % u'{\'degrees\':90}', validators=[ArgumentsValidator()])
objects = models.Manager()

64
apps/sources/post_init.py Normal file
View File

@@ -0,0 +1,64 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from common.utils import encapsulate
from documents.models import Document
from navigation.api import (bind_links, register_model_list_columns,
register_sidebar_template)
from scheduler.api import LocalScheduler
#from .settings import EMAIL_PROCESSING_INTERVAL
from .links import (staging_file_delete, setup_sources,
setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list,
setup_pop3_email_list, setup_imap_email_list, setup_source_edit,
setup_source_delete, setup_source_create, setup_source_log_list,
#setup_source_transformation_list, setup_source_transformation_create,
#setup_source_transformation_edit, setup_source_transformation_delete,
upload_version, document_create_multiple, setup_local_scanner_list,
setup_local_scanners_refresh)
from .models import (WebForm, StagingFolder, SourceTransformation,
WatchFolder, POP3Email, IMAPEmail, LocalScanner)
from .staging import StagingFile
from .tasks import task_fetch_pop3_emails, task_fetch_imap_emails
from .widgets import staging_file_thumbnail
bind_links([StagingFile], [staging_file_delete])
#bind_links([SourceTransformation], [setup_source_transformation_edit, setup_source_transformation_delete])
bind_links([LocalScanner, 'setup_local_scanner_list'], [setup_local_scanners_refresh], menu_name='secondary_menu')
bind_links(['setup_imap_email_list', 'setup_pop3_email_list', 'setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_create', 'setup_local_scanner_list'], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([WebForm, StagingFolder, POP3Email, IMAPEmail, LocalScanner, 'setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_create', 'setup_pop3_email_list', 'setup_imap_email_list', 'setup_local_scanner_list'], [setup_source_create], menu_name='secondary_menu')
bind_links([WebForm], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([WebForm], [setup_source_edit, setup_source_delete])
bind_links([StagingFolder], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([StagingFolder], [setup_source_edit, setup_source_delete])
bind_links([POP3Email], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([POP3Email], [setup_source_edit, setup_source_delete])
bind_links([POP3Email], [setup_source_log_list])
bind_links([IMAPEmail], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([IMAPEmail], [setup_source_edit, setup_source_delete])
bind_links([IMAPEmail], [setup_source_log_list])
bind_links([WatchFolder], [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([WatchFolder], [setup_source_edit, setup_source_delete])
bind_links([LocalScanner], [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list, setup_imap_email_list, setup_local_scanner_list], menu_name='form_header')
bind_links([LocalScanner], [setup_source_edit, setup_source_delete])
register_sidebar_template([LocalScanner, 'setup_local_scanner_list'], 'scanner_list.html')
# Document version
bind_links(['document_version_list', 'upload_version', 'document_version_revert', 'document_version_text_compare', 'document_version_show_diff_text'], [upload_version], menu_name='sidebar')
#bind_links(['setup_source_transformation_create', 'setup_source_transformation_edit', 'setup_source_transformation_delete', 'setup_source_transformation_list'], [setup_source_transformation_create], menu_name='sidebar')
source_views = ['setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_edit', 'setup_source_delete', 'setup_source_create', 'setup_source_transformation_list', 'setup_source_transformation_edit', 'setup_source_transformation_delete', 'setup_source_transformation_create']
register_model_list_columns(StagingFile, [
{'name':_(u'thumbnail'), 'attribute':
encapsulate(lambda x: staging_file_thumbnail(x))
},
])
#sources_scheduler = LocalScheduler('sources', _(u'Document sources'))
#sources_scheduler.add_interval_job('task_fetch_pop3_emails', _(u'Connects to the POP3 email sources and fetches the attached documents.'), task_fetch_pop3_emails, seconds=EMAIL_PROCESSING_INTERVAL)
#sources_scheduler.add_interval_job('task_fetch_imap_emails', _(u'Connects to the IMAP email sources and fetches the attached documents.'), task_fetch_imap_emails, seconds=EMAIL_PROCESSING_INTERVAL)
#sources_scheduler.start()
bind_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_interactive', 'staging_file_delete'], [document_create_multiple], menu_name='secondary_menu')
bind_links([Document], [document_create_multiple], menu_name='secondary_menu')

View File

@@ -1,15 +1,17 @@
"""Configuration options for the sources app"""
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from smart_settings.api import Setting, SettingNamespace
from .icons import icon_source_list
from .links import setup_sources
namespace = SettingNamespace('sources', _(u'Sources'), module='sources.conf.settings')
POP3_DEFAULT_TIMEOUT = 10 # for POP3 only not POP3_SSL
DEFAULT_EMAIL_PROCESSING_INTERVAL = 60
DEFAULT_POP3_EMAIL_LOG_COUNT = 10 # Max log entries to store
label = _(u'Sources')
description = _(u'Provides source from where to add documents.')
dependencies = ['app_registry', 'icons', 'navigation', 'documents']
icon = icon_source_list
setup_links = [setup_sources]
'''
Setting(
namespace=namespace,
name='POP3_TIMEOUT',
@@ -30,3 +32,4 @@ Setting(
global_name='SOURCES_LOG_SIZE',
default=DEFAULT_POP3_EMAIL_LOG_COUNT,
)
'''

View File

@@ -9,10 +9,10 @@ from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import ugettext
from django.utils.encoding import smart_str
from documents.conf.settings import THUMBNAIL_SIZE
from documents.settings import THUMBNAIL_SIZE
from mimetype.api import (get_icon_file_path, get_error_icon_file_path,
get_mimetype)
#from mimetype.api import (get_icon_file_path, get_error_icon_file_path,
from mimetype.api import get_mimetype
from converter.api import convert, cache_cleanup
from converter.exceptions import UnknownFileFormat, UnkownConvertError
@@ -146,6 +146,7 @@ class StagingFile(object):
#return convert(self.filepath, size=size, cleanup_files=False, transformations=transformations)
except UnknownFileFormat:
mimetype, encoding = get_mimetype(open(self.filepath, 'rb'), self.filepath)
return get_icon_file_path(mimetype)
# TODO: Fix
return ''#get_icon_file_path(mimetype)
except UnkownConvertError:
return get_error_icon_file_path()

View File

@@ -5,7 +5,7 @@ import logging
from lock_manager import Lock, LockError
from .models import POP3Email, IMAPEmail
from .conf.settings import POP3_TIMEOUT
#from .settings import POP3_TIMEOUT
from .literals import IMAP_LOCK_TIMEOUT
logger = logging.getLogger(__name__)

View File

@@ -16,7 +16,7 @@ from django.core.exceptions import PermissionDenied
from documents.permissions import (PERMISSION_DOCUMENT_CREATE,
PERMISSION_DOCUMENT_NEW_VERSION)
from documents.models import DocumentType, Document
from documents.conf.settings import THUMBNAIL_SIZE
from documents.settings import THUMBNAIL_SIZE
from documents.exceptions import NewDocumentVersionNotAllowed
from documents.forms import DocumentTypeSelectForm
from metadata.forms import MetadataFormSet, MetadataSelectionForm
@@ -27,6 +27,7 @@ from common.widgets import two_state_template
import sendfile
from acls.models import AccessEntry
from navigation import Link
from icons import Icon
from .models import (WebForm, StagingFolder, SourceTransformation,
WatchFolder, POP3Email, SourceLog, IMAPEmail, LocalScanner)
@@ -61,7 +62,7 @@ def get_tab_link_for_source(source, document=None):
view = u'upload_interactive'
args = [u'"%s"' % source.source_type, source.pk]
return Link(text=source.title, view=view, args=args, sprite=source.icon, keep_query=True, conditional_highlight=return_function(source))
return Link(text=source.title, view=view, args=args, icon=Icon(source.icon), keep_query=True, conditional_highlight=return_function(source))
def get_active_tab_links(document=None):
@@ -524,7 +525,7 @@ def setup_source_list(request, source_type):
'list_object_variable_name': 'source',
'source_type': source_type,
'extra_columns': [
{'name': _(u'Enabled'), 'attribute': encapsulate(lambda source: two_state_template(source.enabled))},
{'name': _(u'Enabled'), 'attribute': encapsulate(lambda source: two_state_template(source.enabled).display_small())},
],
}

View File

@@ -5,6 +5,10 @@ from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from icons import Icon
from .icons import icon_cross
class FamFamRadioFieldRenderer(forms.widgets.RadioFieldRenderer):
def render(self):
@@ -21,8 +25,23 @@ class FamFamRadioFieldRenderer(forms.widgets.RadioFieldRenderer):
return mark_safe(u'\n'.join(results))
class FamFamRadioSelect(forms.widgets.RadioSelect):
renderer = FamFamRadioFieldRenderer
class IconRadioFieldRenderer(forms.widgets.RadioFieldRenderer):
def render(self):
results = []
results.append(u'<ul>\n')
for w in self:
if w.choice_value:
icon_template = Icon(w.choice_value).display_small()
else:
icon_template = icon_cross.display_small()
results.append(u'<li class="undecorated_list">%s%s</li>' % (icon_template, force_unicode(w)))
results.append(u'\n</ul>')
return mark_safe(u'\n'.join(results))
class IconRadioSelect(forms.widgets.RadioSelect):
renderer = IconRadioFieldRenderer
def staging_file_thumbnail(staging_file):

View File

@@ -182,7 +182,7 @@ INSTALLED_APPS = (
'main',
#'installation',
'document_indexing',
#'sources',
'sources',
#'mailer',
#'document_acls',
'history',

View File

@@ -24,7 +24,7 @@ urlpatterns = patterns('',
(r'^document_indexing/', include('document_indexing.urls')),
(r'^history/', include('history.urls')),
(r'^converter/', include('converter.urls')),
#(r'^sources/', include('sources.urls')),
(r'^sources/', include('sources.urls')),
(r'^acls/', include('acls.urls')),
#(r'^document_acls/', include('document_acls.urls')),
(r'^api/', include('rest_api.urls')),