def ready(self): super(FoldersApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class( 'document_folders', lambda document: DocumentFolder.objects.filter(documents=document)) ModelPermission.register( model=Document, permissions=(permission_folder_add_document, permission_folder_remove_document)) ModelPermission.register( model=Folder, permissions=(permission_acl_edit, permission_acl_view, permission_folder_delete, permission_folder_edit, permission_folder_view)) SourceColumn(source=Folder, label=_('Created'), attribute='datetime_created') SourceColumn(source=Folder, label=_('User'), attribute='user') SourceColumn(source=Folder, label=_('Documents'), func=lambda context: context['object'].get_document_count( user=context['request'].user)) menu_facet.bind_links(links=(link_document_folder_list, ), sources=(Document, )) menu_main.bind_links(links=(link_folder_list, )) menu_multi_item.bind_links( links=(link_folder_add_multiple_documents, ), sources=(Document, )) menu_multi_item.bind_links( links=(link_folder_document_multiple_remove, ), sources=('folders:folder_view', )) menu_object.bind_links(links=(link_folder_view, ), sources=(DocumentFolder, )) menu_object.bind_links(links=(link_folder_view, link_folder_edit, link_acl_list, link_folder_delete), sources=(Folder, )) menu_secondary.bind_links(links=(link_folder_list, link_folder_create), sources=(Folder, 'folders:folder_list', 'folders:folder_create')) menu_sidebar.bind_links(links=(link_folder_add_document, ), sources=('folders:document_folder_list', 'folders:folder_add_document'))
def initialize_document_checkout_extra_methods(): Document.add_to_class( 'is_checked_out', lambda document: DocumentCheckout.objects. is_document_checked_out(document)) Document.add_to_class('check_in', lambda document, user=None: DocumentCheckout.objects. check_in_document(document, user)) Document.add_to_class( 'checkout_info', lambda document: DocumentCheckout.objects. document_checkout_info(document)) Document.add_to_class( 'checkout_state', lambda document: DocumentCheckout.objects. document_checkout_state(document)) Document.add_to_class('is_new_versions_allowed', lambda document, user=None: DocumentCheckout.objects. is_document_new_versions_allowed(document, user))
from django.contrib.contenttypes import generic from django.utils.translation import ugettext_lazy as _ from acls.api import class_permissions from common.classes import ModelAttribute from common.utils import encapsulate from documents.models import Document from navigation.api import register_links, register_model_list_columns from .links import comment_add, comment_delete, comments_for_document from .permissions import (PERMISSION_COMMENT_CREATE, PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW) Document.add_to_class( 'comments', generic.GenericRelation(Comment, content_type_field='content_type', object_id_field='object_pk')) class_permissions(Document, [ PERMISSION_COMMENT_CREATE, PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW ]) register_model_list_columns(Comment, [{ 'name': _('Date'), 'attribute': 'submit_date' }, { 'name': _('User'), 'attribute':
def ready(self): super(TagsApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class( 'attached_tags', lambda document: DocumentTag.objects.filter(documents=document)) ModelPermission.register(model=Document, permissions=(permission_tag_attach, permission_tag_remove, permission_tag_view)) ModelPermission.register(model=Tag, permissions=( permission_acl_edit, permission_acl_view, permission_tag_delete, permission_tag_edit, permission_tag_view, )) SourceColumn(source=DocumentTag, label=_('Preview'), func=lambda context: widget_single_tag(context['object'])) SourceColumn( source=Document, label=_('Tags'), func=lambda context: widget_document_tags( document=context['object'], user=context['request'].user)) SourceColumn(source=Tag, label=_('Preview'), func=lambda context: widget_single_tag(context['object'])) SourceColumn(source=Tag, label=_('Documents'), func=lambda context: context['object'].get_document_count( user=context['request'].user)) document_search.add_model_field(field='tags__label', label=_('Tags')) menu_facet.bind_links(links=(link_tag_document_list, ), sources=(Document, )) menu_main.bind_links(links=(link_tag_list, )) menu_multi_item.bind_links(links=(link_multiple_documents_attach_tag, link_multiple_documents_tag_remove), sources=(Document, )) menu_multi_item.bind_links(links=(link_tag_multiple_delete, ), sources=(Tag, )) menu_multi_item.bind_links( links=(link_single_document_multiple_tag_remove, ), sources=(DocumentTag, )) menu_object.bind_links(links=(link_tag_tagged_item_list, link_tag_edit, link_acl_list, link_tag_delete), sources=(Tag, )) menu_secondary.bind_links(links=(link_tag_list, link_tag_create), sources=(Tag, 'tags:tag_list', 'tags:tag_create')) menu_sidebar.bind_links( links=(link_tag_attach, ), sources=('tags:document_tags', 'tags:tag_remove', 'tags:tag_multiple_remove', 'tags:tag_attach'))
def initialize_document_checkout_extra_methods(): Document.add_to_class('is_checked_out', lambda document: DocumentCheckout.objects.is_document_checked_out(document)) Document.add_to_class('check_in', lambda document, user=None: DocumentCheckout.objects.check_in_document(document, user)) Document.add_to_class('checkout_info', lambda document: DocumentCheckout.objects.document_checkout_info(document)) Document.add_to_class('checkout_state', lambda document: DocumentCheckout.objects.document_checkout_state(document)) Document.add_to_class('is_new_versions_allowed', lambda document, user=None: DocumentCheckout.objects.is_document_new_versions_allowed(document, user))
}, ]) register_links(Tag, [tag_tagged_item_list, tag_edit, tag_delete, tag_acl_list]) register_multi_item_links(['tag_list'], [tag_multiple_delete]) register_links([Tag, 'tag_list', 'tag_create'], [tag_list, tag_create], menu_name='secondary_menu') register_top_menu('tags', link={'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'}, children_view_regex=[r'^tag_(list|create|delete|edit|tagged|acl)']) register_links(Document, [tag_document_list], menu_name='form_header') register_links(['document_tags', 'tag_remove', 'tag_multiple_remove', 'tag_attach'], [tag_attach], menu_name='sidebar') register_multi_item_links(['document_tags'], [single_document_multiple_tag_remove]) register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_node_view', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent', 'tag_tagged_item_list'], [tag_multiple_attach, multiple_documents_selection_tag_remove]) class_permissions(Document, [ PERMISSION_TAG_ATTACH, PERMISSION_TAG_REMOVE, ]) class_permissions(Tag, [ PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, PERMISSION_TAG_VIEW, ]) Document.add_to_class('tags', TaggableManager()) endpoint = APIEndPoint('tags') endpoint.register_urls(api_urls) endpoint.add_endpoint('tag-list', _(u'Returns a list of all the tags.'))
logger.debug('received post_document_type_change') logger.debug('instance: %s', instance) # Delete existing document metadata for metadata in instance.metadata.all(): metadata.delete(enforce_required=False) # Add new document type metadata types to document for document_type_metadata_type in instance.document_type.metadata.filter( required=True): DocumentMetadata.objects.create( document=instance, metadata_type=document_type_metadata_type.metadata_type, value=None) Document.add_to_class('metadata_value_of', DocumentMetadataHelper.constructor) register_links([ 'metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view' ], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar') register_links(Document, [metadata_view], menu_name='form_header') register_links([Document], [ metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove, link_spacer ], menu_name='multi_item_links') register_links( DocumentType, [setup_document_type_metadata, setup_document_type_metadata_required])
def ready(self): super(MetadataApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class('metadata_value_of', DocumentMetadataHelper.constructor) Filter(label=_('Documents missing required metadata'), slug='documents-no-required-metadata', filter_kwargs=[{ 'document_type__metadata__required': True, }, { 'metadata__value__isnull': True }, { 'is_stub': False }], model=Document, object_permission=permission_document_view, hide_links=True) Filter(label=_('Documents missing optional metadata'), slug='documents-no-optional-metadata', filter_kwargs=[{ 'document_type__metadata__required': False, }, { 'metadata__value__isnull': True }, { 'is_stub': False }], model=Document, object_permission=permission_document_view, hide_links=True) ModelAttribute( Document, 'metadata', type_name='related', description=_( 'Queryset containing a MetadataType instance reference and a ' 'value for that metadata type')) ModelAttribute(Document, 'metadata__metadata_type__name', label=_('Metadata type name'), type_name='query') ModelAttribute(Document, 'metadata__value', label=_('Metadata type value'), type_name='query') ModelAttribute( Document, 'metadata_value_of', label=_('Value of a metadata'), description=_('Return the value of a specific document metadata'), type_name=['property', 'indexing']) ModelPermission.register(model=Document, permissions=( permission_metadata_document_add, permission_metadata_document_edit, permission_metadata_document_remove, permission_metadata_document_view, )) SourceColumn( source=Document, label=_('Metadata'), func=lambda context: get_metadata_string(context['object'])) SourceColumn(source=DocumentMetadata, label=_('Value'), attribute='value') SourceColumn(source=DocumentMetadata, label=_('Required'), func=lambda context: two_state_template(context['object']. is_required)) app.conf.CELERY_QUEUES.append( Queue('metadata', Exchange('metadata'), routing_key='metadata'), ) app.conf.CELERY_ROUTES.update({ 'metadata.tasks.task_remove_metadata_type': { 'queue': 'metadata' }, 'metadata.tasks.task_add_required_metadata_type': { 'queue': 'metadata' }, }) document_search.add_model_field(field='metadata__metadata_type__name', label=_('Metadata type')) document_search.add_model_field(field='metadata__value', label=_('Metadata value')) menu_facet.bind_links(links=(link_metadata_view, ), sources=(Document, )) menu_multi_item.bind_links(links=(link_metadata_multiple_add, link_metadata_multiple_edit, link_metadata_multiple_remove), sources=(Document, )) menu_object.bind_links( links=(link_setup_document_type_metadata, link_setup_document_type_metadata_required), sources=(DocumentType, )) menu_object.bind_links(links=(link_setup_metadata_type_edit, link_setup_metadata_type_delete), sources=(MetadataType, )) menu_secondary.bind_links( links=(link_setup_metadata_type_list, link_setup_metadata_type_create), sources=(MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create')) menu_setup.bind_links(links=(link_setup_metadata_type_list, )) menu_sidebar.bind_links( links=(link_metadata_add, link_metadata_edit, link_metadata_remove), sources=('metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view')) post_delete.connect( post_document_type_metadata_type_delete, dispatch_uid='post_document_type_metadata_type_delete', sender=DocumentTypeMetadataType) post_document_type_change.connect( post_post_document_type_change_metadata, dispatch_uid='post_post_document_type_change_metadata', sender=Document) post_save.connect(post_document_type_metadata_type_add, dispatch_uid='post_document_type_metadata_type_add', sender=DocumentTypeMetadataType)
def ready(self): super(OCRApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class('submit_for_ocr', document_ocr_submit) DocumentVersion.add_to_class( 'submit_for_ocr', document_version_ocr_submit ) ModelPermission.register( model=Document, permissions=( permission_ocr_document, permission_ocr_content_view ) ) SourceColumn( source=DocumentVersionOCRError, label=_('Document'), func=lambda context: document_link(context['object'].document_version.document) ) SourceColumn( source=DocumentVersionOCRError, label=_('Added'), attribute='datetime_submitted' ) SourceColumn( source=DocumentVersionOCRError, label=_('Result'), attribute='result' ) app.conf.CELERY_QUEUES.append( Queue('ocr', Exchange('ocr'), routing_key='ocr'), ) app.conf.CELERY_ROUTES.update( { 'ocr.tasks.task_do_ocr': { 'queue': 'ocr' }, } ) document_search.add_model_field( field='versions__pages__ocr_content__content', label=_('Content') ) menu_facet.bind_links( links=(link_document_content,), sources=(Document,) ) menu_multi_item.bind_links( links=(link_document_submit_multiple,), sources=(Document,) ) menu_object.bind_links( links=(link_document_submit,), sources=(Document,) ) menu_object.bind_links( links=(link_document_type_ocr_settings,), sources=(DocumentType,) ) menu_secondary.bind_links( links=(link_entry_list,), sources=( 'ocr:entry_list', 'ocr:entry_delete_multiple', 'ocr:entry_re_queue_multiple', DocumentVersionOCRError ) ) menu_tools.bind_links( links=( link_document_submit_all, link_document_type_submit, link_entry_list ) ) post_save.connect( initialize_new_ocr_settings, dispatch_uid='initialize_new_ocr_settings', sender=DocumentType ) post_version_upload.connect( post_version_upload_ocr, dispatch_uid='post_version_upload_ocr', sender=DocumentVersion ) namespace = PropertyNamespace('ocr', _('OCR')) try: pdftotext = sh.Command(setting_pdftotext_path.value) except sh.CommandNotFound: namespace.add_property( 'pdftotext', _('pdftotext version'), _('not found'), report=True ) except Exception: namespace.add_property( 'pdftotext', _('pdftotext version'), _('error getting version'), report=True ) else: namespace.add_property( 'pdftotext', _('pdftotext version'), pdftotext('-v').stderr, report=True ) try: tesseract = sh.Command(setting_tesseract_path.value) except sh.CommandNotFound: namespace.add_property( 'tesseract', _('tesseract version'), _('not found'), report=True ) except Exception: namespace.add_property( 'tesseract', _('tesseract version'), _('error getting version'), report=True ) else: namespace.add_property( 'tesseract', _('tesseract version'), tesseract('-v').stderr, report=True )
def ready(self): super(OCRApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class('submit_for_ocr', document_ocr_submit) DocumentVersion.add_to_class('submit_for_ocr', document_version_ocr_submit) ModelPermission.register(model=Document, permissions=(permission_ocr_document, permission_ocr_content_view)) SourceColumn(source=DocumentVersionOCRError, label=_('Document'), func=lambda context: document_link(context[ 'object'].document_version.document)) SourceColumn(source=DocumentVersionOCRError, label=_('Added'), attribute='datetime_submitted') SourceColumn(source=DocumentVersionOCRError, label=_('Result'), attribute='result') app.conf.CELERY_QUEUES.append( Queue('ocr', Exchange('ocr'), routing_key='ocr'), ) app.conf.CELERY_ROUTES.update({ 'ocr.tasks.task_do_ocr': { 'queue': 'ocr' }, }) document_search.add_model_field( field='versions__pages__ocr_content__content', label=_('Content')) menu_facet.bind_links(links=(link_document_content, ), sources=(Document, )) menu_multi_item.bind_links(links=(link_document_submit_multiple, ), sources=(Document, )) menu_object.bind_links(links=(link_document_submit, ), sources=(Document, )) menu_object.bind_links(links=(link_document_type_ocr_settings, ), sources=(DocumentType, )) menu_secondary.bind_links( links=(link_entry_list, ), sources=('ocr:entry_list', 'ocr:entry_delete_multiple', 'ocr:entry_re_queue_multiple', DocumentVersionOCRError)) menu_tools.bind_links(links=(link_document_submit_all, link_document_type_submit, link_entry_list)) post_save.connect(initialize_new_ocr_settings, dispatch_uid='initialize_new_ocr_settings', sender=DocumentType) post_version_upload.connect(post_version_upload_ocr, dispatch_uid='post_version_upload_ocr', sender=DocumentVersion) namespace = PropertyNamespace('ocr', _('OCR')) try: pdftotext = sh.Command(setting_pdftotext_path.value) except sh.CommandNotFound: namespace.add_property('pdftotext', _('pdftotext version'), _('not found'), report=True) except Exception: namespace.add_property('pdftotext', _('pdftotext version'), _('error getting version'), report=True) else: namespace.add_property('pdftotext', _('pdftotext version'), pdftotext('-v').stderr, report=True) try: tesseract = sh.Command(setting_tesseract_path.value) except sh.CommandNotFound: namespace.add_property('tesseract', _('tesseract version'), _('not found'), report=True) except Exception: namespace.add_property('tesseract', _('tesseract version'), _('error getting version'), report=True) else: namespace.add_property('tesseract', _('tesseract version'), tesseract('-v').stderr, report=True)
def ready(self): super(MetadataApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class( 'metadata_value_of', DocumentMetadataHelper.constructor ) Filter( label=_('Documents missing required metadata'), slug='documents-no-required-metadata', filter_kwargs=[ { 'document_type__metadata__required': True, }, { 'metadata__value__isnull': True }, { 'is_stub': False } ], model=Document, object_permission=permission_document_view, hide_links=True ) Filter( label=_('Documents missing optional metadata'), slug='documents-no-optional-metadata', filter_kwargs=[ { 'document_type__metadata__required': False, }, { 'metadata__value__isnull': True }, { 'is_stub': False } ], model=Document, object_permission=permission_document_view, hide_links=True ) ModelAttribute( Document, 'metadata', type_name='related', description=_( 'Queryset containing a MetadataType instance reference and a ' 'value for that metadata type' ) ) ModelAttribute( Document, 'metadata__metadata_type__name', label=_('Metadata type name'), type_name='query' ) ModelAttribute( Document, 'metadata__value', label=_('Metadata type value'), type_name='query' ) ModelAttribute( Document, 'metadata_value_of', label=_('Value of a metadata'), description=_( 'Return the value of a specific document metadata' ), type_name=['property', 'indexing'] ) ModelPermission.register( model=Document, permissions=( permission_metadata_document_add, permission_metadata_document_edit, permission_metadata_document_remove, permission_metadata_document_view, ) ) SourceColumn( source=Document, label=_('Metadata'), func=lambda context: get_metadata_string(context['object']) ) SourceColumn( source=DocumentMetadata, label=_('Value'), attribute='value' ) SourceColumn( source=DocumentMetadata, label=_('Required'), func=lambda context: two_state_template( context['object'].is_required ) ) app.conf.CELERY_QUEUES.append( Queue('metadata', Exchange('metadata'), routing_key='metadata'), ) app.conf.CELERY_ROUTES.update( { 'metadata.tasks.task_remove_metadata_type': { 'queue': 'metadata' }, 'metadata.tasks.task_add_required_metadata_type': { 'queue': 'metadata' }, } ) document_search.add_model_field( field='metadata__metadata_type__name', label=_('Metadata type') ) document_search.add_model_field( field='metadata__value', label=_('Metadata value') ) menu_facet.bind_links(links=(link_metadata_view,), sources=(Document,)) menu_multi_item.bind_links( links=( link_metadata_multiple_add, link_metadata_multiple_edit, link_metadata_multiple_remove ), sources=(Document,) ) menu_object.bind_links( links=( link_setup_document_type_metadata, link_setup_document_type_metadata_required ), sources=(DocumentType,) ) menu_object.bind_links( links=( link_setup_metadata_type_edit, link_setup_metadata_type_delete ), sources=(MetadataType,) ) menu_secondary.bind_links( links=( link_setup_metadata_type_list, link_setup_metadata_type_create ), sources=( MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create' ) ) menu_setup.bind_links(links=(link_setup_metadata_type_list,)) menu_sidebar.bind_links( links=( link_metadata_add, link_metadata_edit, link_metadata_remove ), sources=( 'metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view' ) ) post_delete.connect( post_document_type_metadata_type_delete, dispatch_uid='post_document_type_metadata_type_delete', sender=DocumentTypeMetadataType ) post_document_type_change.connect( post_post_document_type_change_metadata, dispatch_uid='post_post_document_type_change_metadata', sender=Document ) post_save.connect( post_document_type_metadata_type_add, dispatch_uid='post_document_type_metadata_type_add', sender=DocumentTypeMetadataType )
def document_version_ocr_submit(self): task_do_ocr.apply_async(args=[self.pk], queue='ocr') @receiver(post_version_upload, dispatch_uid='post_version_upload_ocr', sender=DocumentVersion) def post_version_upload_ocr(sender, instance, **kwargs): logger.debug('received post_version_upload') logger.debug('instance pk: %s', instance.pk) if instance.document.document_type.ocr: instance.submit_for_ocr() Document.add_to_class('submit_for_ocr', document_ocr_submit) DocumentVersion.add_to_class('submit_for_ocr', document_version_ocr_submit) class_permissions(Document, [PERMISSION_OCR_DOCUMENT]) register_tool(link_entry_list) APIEndPoint('ocr') register_model_list_columns(DocumentVersionOCRError, [ { 'name': _('Document'), 'attribute': encapsulate( lambda entry: document_link(entry.document_version.document))
def ready(self): super(FoldersApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class( 'document_folders', lambda document: DocumentFolder.objects.filter(documents=document) ) ModelPermission.register( model=Document, permissions=( permission_folder_add_document, permission_folder_remove_document ) ) ModelPermission.register( model=Folder, permissions=( permission_acl_edit, permission_acl_view, permission_folder_delete, permission_folder_edit, permission_folder_view ) ) SourceColumn( source=Folder, label=_('Created'), attribute='datetime_created' ) SourceColumn(source=Folder, label=_('User'), attribute='user') SourceColumn( source=Folder, label=_('Documents'), func=lambda context: context['object'].get_document_count( user=context['request'].user ) ) menu_facet.bind_links( links=(link_document_folder_list,), sources=(Document,) ) menu_main.bind_links(links=(link_folder_list,)) menu_multi_item.bind_links( links=(link_folder_add_multiple_documents,), sources=(Document,) ) menu_multi_item.bind_links( links=(link_folder_document_multiple_remove,), sources=('folders:folder_view',) ) menu_object.bind_links( links=( link_folder_view, ), sources=(DocumentFolder, ) ) menu_object.bind_links( links=( link_folder_view, link_folder_edit, link_acl_list, link_folder_delete ), sources=(Folder,) ) menu_secondary.bind_links( links=(link_folder_list, link_folder_create), sources=(Folder, 'folders:folder_list', 'folders:folder_create') ) menu_sidebar.bind_links( links=(link_folder_add_document,), sources=( 'folders:document_folder_list', 'folders:folder_add_document' ) )
@receiver(post_document_type_change, dispatch_uid='post_post_document_type_change_metadata', sender=Document) def post_post_document_type_change_metadata(sender, instance, **kwargs): logger.debug('received post_document_type_change') logger.debug('instance: %s', instance) # Delete existing document metadata for metadata in instance.metadata.all(): metadata.delete(enforce_required=False) # Add new document type metadata types to document for document_type_metadata_type in instance.document_type.metadata.filter(required=True): DocumentMetadata.objects.create(document=instance, metadata_type=document_type_metadata_type.metadata_type, value=None) Document.add_to_class('metadata_value_of', DocumentMetadataHelper.constructor) register_links(['metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar') register_links(Document, [metadata_view], menu_name='form_header') register_links([Document], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove, link_spacer], menu_name='multi_item_links') register_links(DocumentType, [setup_document_type_metadata, setup_document_type_metadata_required]) register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete]) register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu') register_setup(setup_metadata_type_list) register_tool(link_documents_missing_required_metadata) class_permissions(Document, [ PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT, PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW, ])
'attribute': 'submit_date' }, { 'name': _(u'user'), 'attribute': encapsulate(lambda x: x.user.get_full_name() if x.user.get_full_name() else x.user) }, { 'name': _(u'comment'), 'attribute': 'comment' } ]) register_links(['comments_for_document', 'comment_add', 'comment_delete', 'comment_multiple_delete'], [comment_add], menu_name='sidebar') register_links(Comment, [comment_delete]) register_links(Document, [comments_for_document], menu_name='form_header') Document.add_to_class( 'comments', generic.GenericRelation( Comment, content_type_field='content_type', object_id_field='object_pk' ) ) class_permissions(Document, [ PERMISSION_COMMENT_CREATE, PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW ])
def ready(self): super(TagsApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class( 'attached_tags', lambda document: DocumentTag.objects.filter(documents=document) ) ModelPermission.register( model=Document, permissions=( permission_tag_attach, permission_tag_remove, permission_tag_view ) ) ModelPermission.register( model=Tag, permissions=( permission_acl_edit, permission_acl_view, permission_tag_delete, permission_tag_edit, permission_tag_view, ) ) SourceColumn( source=DocumentTag, label=_('Preview'), func=lambda context: widget_single_tag(context['object']) ) SourceColumn( source=Document, label=_('Tags'), func=lambda context: widget_document_tags( document=context['object'], user=context['request'].user ) ) SourceColumn( source=Tag, label=_('Preview'), func=lambda context: widget_single_tag(context['object']) ) SourceColumn( source=Tag, label=_('Documents'), func=lambda context: context['object'].get_document_count( user=context['request'].user ) ) document_search.add_model_field(field='tags__label', label=_('Tags')) menu_facet.bind_links( links=(link_tag_document_list,), sources=(Document,) ) menu_main.bind_links(links=(link_tag_list,)) menu_multi_item.bind_links( links=( link_multiple_documents_attach_tag, link_multiple_documents_tag_remove ), sources=(Document,) ) menu_multi_item.bind_links( links=(link_tag_multiple_delete,), sources=(Tag,) ) menu_multi_item.bind_links( links=(link_single_document_multiple_tag_remove,), sources=(DocumentTag,) ) menu_object.bind_links( links=( link_tag_tagged_item_list, link_tag_edit, link_acl_list, link_tag_delete ), sources=(Tag,) ) menu_secondary.bind_links( links=(link_tag_list, link_tag_create), sources=(Tag, 'tags:tag_list', 'tags:tag_create') ) menu_sidebar.bind_links( links=(link_tag_attach,), sources=( 'tags:document_tags', 'tags:tag_remove', 'tags:tag_multiple_remove', 'tags:tag_attach' ) )
task_do_ocr.apply_async(args=[self.latest_version.pk], queue='ocr') def document_version_ocr_submit(self): task_do_ocr.apply_async(args=[self.pk], queue='ocr') @receiver(post_version_upload, dispatch_uid='post_version_upload_ocr', sender=DocumentVersion) def post_version_upload_ocr(sender, instance, **kwargs): logger.debug('received post_version_upload') logger.debug('instance pk: %s', instance.pk) if instance.document.document_type.ocr: instance.submit_for_ocr() Document.add_to_class('submit_for_ocr', document_ocr_submit) DocumentVersion.add_to_class('submit_for_ocr', document_version_ocr_submit) class_permissions(Document, [PERMISSION_OCR_DOCUMENT]) register_tool(link_entry_list) APIEndPoint('ocr') register_model_list_columns(DocumentVersionOCRError, [ { 'name': _('Document'), 'attribute': encapsulate(lambda entry: document_link(entry.document_version.document)) }, { 'name': _('Added'), 'attribute': 'datetime_submitted' },
def ready(self): super(CheckoutsApp, self).ready() APIEndPoint(app=self, version_string='1') Document.add_to_class( 'check_in', lambda document, user=None: DocumentCheckout.objects.check_in_document(document, user) ) Document.add_to_class( 'checkout_info', lambda document: DocumentCheckout.objects.document_checkout_info( document ) ) Document.add_to_class( 'checkout_state', lambda document: DocumentCheckout.objects.document_checkout_state( document ) ) Document.add_to_class( 'is_checked_out', lambda document: DocumentCheckout.objects.is_document_checked_out( document ) ) ModelPermission.register( model=Document, permissions=( permission_document_checkout, permission_document_checkin, permission_document_checkin_override, ) ) app.conf.CELERYBEAT_SCHEDULE.update( { 'task_check_expired_check_outs': { 'task': 'checkouts.tasks.task_check_expired_check_outs', 'schedule': timedelta( seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL ), }, } ) app.conf.CELERY_QUEUES.append( Queue( 'checkouts_periodic', Exchange('checkouts_periodic'), routing_key='checkouts_periodic', delivery_mode=1 ), ) app.conf.CELERY_ROUTES.update( { 'checkouts.tasks.task_check_expired_check_outs': { 'queue': 'checkouts_periodic' }, } ) menu_facet.bind_links(links=(link_checkout_info,), sources=(Document,)) menu_main.bind_links(links=(link_checkout_list,)) menu_sidebar.bind_links( links=(link_checkout_document, link_checkin_document), sources=( 'checkouts:checkout_info', 'checkouts:checkout_document', 'checkouts:checkin_document' ) )