Ejemplo n.º 1
0
    def ready(self):
        super(DocumentCommentsApp, self).ready()
        from actstream import registry

        Document = apps.get_model(app_label='documents', model_name='Document')

        Comment = self.get_model(model_name='Comment')

        ModelEventType.register(model=Comment,
                                event_types=(event_document_comment_edited, ))
        ModelEventType.register(model=Document,
                                event_types=(event_document_comment_created,
                                             event_document_comment_deleted,
                                             event_document_comment_edited))

        ModelPermission.register(model=Comment,
                                 permissions=(permission_events_view, ))
        ModelPermission.register_inheritance(
            model=Comment,
            related='document',
        )
        ModelPermission.register(
            model=Document,
            permissions=(permission_document_comment_create,
                         permission_document_comment_delete,
                         permission_document_comment_edit,
                         permission_document_comment_view))

        SourceColumn(attribute='submit_date', source=Comment)
        SourceColumn(attribute='get_user_label', source=Comment)
        SourceColumn(attribute='comment', source=Comment)

        document_page_search.add_model_field(
            field='document_version__document__comments__comment',
            label=_('Comments'))
        document_search.add_model_field(field='comments__comment',
                                        label=_('Comments'))

        menu_facet.bind_links(links=(link_comments_for_document, ),
                              sources=(Document, ))

        menu_list_facet.bind_links(
            links=(link_events_for_object,
                   link_object_event_types_user_subcriptions_list),
            sources=(Comment, ))

        menu_secondary.bind_links(
            links=(link_comment_add, ),
            sources=('comments:comments_for_document', 'comments:comment_add',
                     'comments:comment_delete', 'comments:comment_details',
                     'comments:comment_edit',
                     'comments:comment_multiple_delete'))

        menu_object.bind_links(links=(link_comment_delete, link_comment_edit),
                               sources=(Comment, ))

        registry.register(Comment)
Ejemplo n.º 2
0
    def ready(self):
        super(TagsApp, self).ready()
        from actstream import registry

        from .wizard_steps import WizardStepTags  # NOQA

        Document = apps.get_model(app_label='documents', model_name='Document')

        DocumentPageResult = apps.get_model(app_label='documents',
                                            model_name='DocumentPageResult')

        DocumentTag = self.get_model(model_name='DocumentTag')
        Tag = self.get_model(model_name='Tag')

        Document.add_to_class(name='get_tags', value=method_document_get_tags)

        ModelEventType.register(model=Tag,
                                event_types=(event_tag_attach,
                                             event_tag_edited,
                                             event_tag_remove))

        ModelField(model=Document, name='tags__label')
        ModelField(model=Document, name='tags__color')

        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_events_view,
                                     permission_tag_attach,
                                     permission_tag_delete,
                                     permission_tag_edit,
                                     permission_tag_remove,
                                     permission_tag_view,
                                 ))

        SourceColumn(attribute='label',
                     is_identifier=True,
                     is_sortable=True,
                     source=DocumentTag)
        SourceColumn(attribute='get_preview_widget', source=DocumentTag)

        SourceColumn(
            source=Document,
            label=_('Tags'),
            func=lambda context: widget_document_tags(
                document=context['object'], user=context['request'].user))

        SourceColumn(source=DocumentPageResult,
                     label=_('Tags'),
                     func=lambda context: widget_document_tags(
                         document=context['object'].document,
                         user=context['request'].user))

        SourceColumn(attribute='label',
                     is_identifier=True,
                     is_sortable=True,
                     source=Tag)
        SourceColumn(attribute='get_preview_widget', source=Tag)
        SourceColumn(source=Tag,
                     label=_('Documents'),
                     func=lambda context: context['object'].get_document_count(
                         user=context['request'].user))

        document_page_search.add_model_field(
            field='document_version__document__tags__label', label=_('Tags'))
        document_search.add_model_field(field='tags__label', label=_('Tags'))

        menu_facet.bind_links(links=(link_document_tag_list, ),
                              sources=(Document, ))

        menu_list_facet.bind_links(links=(
            link_acl_list,
            link_events_for_object,
            link_object_event_types_user_subcriptions_list,
            link_tag_document_list,
        ),
                                   sources=(Tag, ))

        menu_tags.bind_links(links=(link_tag_list, link_tag_create))

        menu_main.bind_links(links=(menu_tags, ), position=98)

        menu_multi_item.bind_links(
            links=(link_document_multiple_attach_multiple_tag,
                   link_document_multiple_tag_multiple_remove),
            sources=(Document, ))
        menu_multi_item.bind_links(links=(link_tag_multiple_delete, ),
                                   sources=(Tag, ))
        menu_object.bind_links(links=(link_tag_edit, link_tag_delete),
                               sources=(Tag, ))
        menu_secondary.bind_links(
            links=(link_document_tag_multiple_attach,
                   link_document_tag_multiple_remove),
            sources=('tags:tag_attach', 'tags:document_tag_list',
                     'tags:single_document_multiple_tag_remove'))
        registry.register(Tag)

        # Index update

        m2m_changed.connect(dispatch_uid='tags_handler_index_document',
                            receiver=handler_index_document,
                            sender=Tag.documents.through)

        pre_delete.connect(dispatch_uid='tags_handler_tag_pre_delete',
                           receiver=handler_tag_pre_delete,
                           sender=Tag)
Ejemplo n.º 3
0
    def ready(self):
        super(OCRApp, self).ready()

        Document = apps.get_model(app_label='documents', model_name='Document')
        DocumentPage = apps.get_model(app_label='documents',
                                      model_name='DocumentPage')
        DocumentType = apps.get_model(app_label='documents',
                                      model_name='DocumentType')
        DocumentTypeSettings = self.get_model(
            model_name='DocumentTypeSettings')
        DocumentVersion = apps.get_model(app_label='documents',
                                         model_name='DocumentVersion')

        DocumentVersionOCRError = self.get_model(
            model_name='DocumentVersionOCRError')

        Document.add_to_class(name='ocr_content',
                              value=get_instance_ocr_content)
        Document.add_to_class(name='submit_for_ocr',
                              value=method_document_ocr_submit)
        DocumentVersion.add_to_class(name='ocr_content',
                                     value=get_instance_ocr_content)
        DocumentVersion.add_to_class(name='submit_for_ocr',
                                     value=method_document_version_ocr_submit)

        ModelEventType.register(
            model=Document,
            event_types=(event_ocr_document_content_deleted,
                         event_ocr_document_version_finish,
                         event_ocr_document_version_submit))

        ModelFieldRelated(model=Document,
                          name='versions__version_pages__ocr_content__content')
        ModelProperty(description=_(
            'A generator returning the document\'s pages OCR content.'),
                      label=_('OCR content'),
                      model=Document,
                      name='content')

        ModelPermission.register(model=Document,
                                 permissions=(permission_ocr_document,
                                              permission_ocr_content_view))
        ModelPermission.register(
            model=DocumentType,
            permissions=(permission_document_type_ocr_setup, ))
        ModelPermission.register_inheritance(
            model=DocumentTypeSettings,
            related='document_type',
        )

        SourceColumn(attribute='document_version__document',
                     is_attribute_absolute_url=True,
                     is_identifier=True,
                     is_sortable=True,
                     source=DocumentVersionOCRError)
        SourceColumn(attribute='datetime_submitted',
                     is_sortable=True,
                     label=_('Date and time'),
                     source=DocumentVersionOCRError)
        SourceColumn(source=DocumentVersionOCRError,
                     label=_('Result'),
                     attribute='result')

        document_search.add_model_field(
            field='versions__version_pages__ocr_content__content',
            label=_('OCR'))

        document_page_search.add_model_field(field='ocr_content__content',
                                             label=_('OCR'))

        menu_facet.bind_links(links=(link_document_ocr_content, ),
                              sources=(Document, ))
        menu_list_facet.bind_links(links=(link_document_page_ocr_content, ),
                                   sources=(DocumentPage, ))
        menu_list_facet.bind_links(links=(link_document_type_ocr_settings, ),
                                   sources=(DocumentType, ))
        menu_multi_item.bind_links(links=(
            link_document_ocr_content_delete_multiple,
            link_document_submit_multiple,
        ),
                                   sources=(Document, ))
        menu_secondary.bind_links(links=(link_document_ocr_content_delete,
                                         link_document_ocr_errors_list,
                                         link_document_ocr_download,
                                         link_document_submit),
                                  sources=(
                                      'ocr:document_ocr_content_delete',
                                      'ocr:document_ocr_content',
                                      'ocr:document_ocr_download',
                                      'ocr:document_ocr_error_list',
                                      'ocr:document_submit',
                                  ))
        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_type_submit,
                                     link_entry_list))

        post_document_version_ocr.connect(
            dispatch_uid='ocr_handler_index_document',
            receiver=handler_index_document_version,
            sender=DocumentVersion)
        post_save.connect(
            dispatch_uid='ocr_handler_initialize_new_ocr_settings',
            receiver=handler_initialize_new_ocr_settings,
            sender=DocumentType)
        post_version_upload.connect(
            dispatch_uid='ocr_handler_ocr_document_version',
            receiver=handler_ocr_document_version,
            sender=DocumentVersion)
Ejemplo n.º 4
0
    def ready(self):
        super(CabinetsApp, self).ready()
        from actstream import registry
        from .wizard_steps import WizardStepCabinets  # NOQA

        Document = apps.get_model(app_label='documents', model_name='Document')

        DocumentCabinet = self.get_model(model_name='DocumentCabinet')
        Cabinet = self.get_model(model_name='Cabinet')

        # Add explicit order_by as DocumentCabinet ordering Meta option has no
        # effect.
        Document.add_to_class(name='document_cabinets',
                              value=method_get_document_cabinets)

        ModelEventType.register(model=Cabinet,
                                event_types=(event_cabinet_edited,
                                             event_cabinet_add_document,
                                             event_cabinet_remove_document))

        ModelPermission.register(
            model=Document,
            permissions=(permission_cabinet_add_document,
                         permission_cabinet_remove_document,
                         permission_events_view))

        ModelPermission.register(
            model=Cabinet,
            permissions=(permission_acl_edit, permission_acl_view,
                         permission_cabinet_delete, permission_cabinet_edit,
                         permission_cabinet_view,
                         permission_cabinet_add_document,
                         permission_cabinet_remove_document))

        def get_root_filter():
            return {
                'acl_filter': {
                    'level': 0
                },
                'acl_values': ('tree_id', ),
                'field_lookup': 'tree_id__in'
            }

        ModelPermission.register_function(model=Cabinet,
                                          function=get_root_filter)

        SourceColumn(attribute='label',
                     is_identifier=True,
                     is_sortable=True,
                     source=Cabinet)

        SourceColumn(
            source=Document,
            label=_('Cabinets'),
            func=lambda context: widget_document_cabinets(
                document=context['object'], user=context['request'].user),
            order=1)

        document_page_search.add_model_field(
            field='document_version__document__cabinets__label',
            label=_('Cabinets'))
        document_search.add_model_field(field='cabinets__label',
                                        label=_('Cabinets'))

        menu_facet.bind_links(links=(link_document_cabinet_list, ),
                              sources=(Document, ))

        menu_cabinets.bind_links(links=(link_cabinet_list,
                                        link_cabinet_create))
        menu_list_facet.bind_links(links=(
            link_cabinet_view,
            link_custom_acl_list,
            link_events_for_object,
            link_object_event_types_user_subcriptions_list,
        ),
                                   sources=(Cabinet, ))

        menu_main.bind_links(links=(menu_cabinets, ), position=98)

        menu_multi_item.bind_links(
            links=(link_document_multiple_cabinet_add,
                   link_multiple_document_cabinet_remove),
            sources=(Document, ))
        menu_object.bind_links(links=(link_cabinet_view, ),
                               sources=(DocumentCabinet, ))
        menu_object.bind_links(links=(link_cabinet_delete, link_cabinet_edit,
                                      link_cabinet_child_add),
                               sources=(Cabinet, ))
        menu_object.unbind_links(links=(link_cabinet_delete, link_cabinet_edit,
                                        link_cabinet_child_add),
                                 sources=(DocumentCabinet, ))
        menu_secondary.bind_links(links=(link_document_cabinet_add,
                                         link_document_cabinet_remove),
                                  sources=('cabinets:document_cabinet_list',
                                           'cabinets:document_cabinet_add',
                                           'cabinets:document_cabinet_remove'))

        registry.register(Cabinet)
Ejemplo n.º 5
0
    def ready(self):
        super(DocumentParsingApp, self).ready()

        Document = apps.get_model(app_label='documents', model_name='Document')
        DocumentPage = apps.get_model(app_label='documents',
                                      model_name='DocumentPage')
        DocumentType = apps.get_model(app_label='documents',
                                      model_name='DocumentType')
        DocumentTypeSettings = self.get_model(
            model_name='DocumentTypeSettings')
        DocumentVersion = apps.get_model(app_label='documents',
                                         model_name='DocumentVersion')
        DocumentVersionParseError = self.get_model(
            model_name='DocumentVersionParseError')

        Document.add_to_class(name='submit_for_parsing',
                              value=method_document_parsing_submit)
        Document.add_to_class(name='content', value=get_document_content)
        DocumentVersion.add_to_class(name='content',
                                     value=get_document_content)
        DocumentVersion.add_to_class(
            name='submit_for_parsing',
            value=method_document_version_parsing_submit)

        ModelField(model=Document, name='versions__pages__content__content')

        ModelPermission.register(model=Document,
                                 permissions=(permission_content_view,
                                              permission_parse_document))
        ModelPermission.register(
            model=DocumentType,
            permissions=(permission_document_type_parsing_setup, ))
        ModelPermission.register_inheritance(
            model=DocumentTypeSettings,
            related='document_type',
        )

        SourceColumn(attribute='document_version__document',
                     is_attribute_absolute_url=True,
                     is_identifier=True,
                     is_sortable=True,
                     source=DocumentVersionParseError)
        SourceColumn(attribute='datetime_submitted',
                     is_sortable=True,
                     source=DocumentVersionParseError)
        SourceColumn(source=DocumentVersionParseError,
                     label=_('Result'),
                     attribute='result')

        document_search.add_model_field(
            field='versions__pages__content__content', label=_('Content'))

        document_page_search.add_model_field(field='content__content',
                                             label=_('Content'))

        menu_facet.bind_links(links=(link_document_content, ),
                              sources=(Document, ))
        menu_facet.bind_links(links=(link_document_page_content, ),
                              sources=(DocumentPage, ))
        menu_list_facet.bind_links(
            links=(link_document_type_parsing_settings, ),
            sources=(DocumentType, ))
        menu_multi_item.bind_links(links=(link_document_submit_multiple, ),
                                   sources=(Document, ))
        menu_secondary.bind_links(
            links=(link_document_content_download,
                   link_document_parsing_errors_list, link_document_submit),
            sources=(
                'document_parsing:document_content',
                'document_parsing:document_content_download',
                'document_parsing:document_parsing_error_list',
                'document_parsing:document_submit',
            ))
        menu_tools.bind_links(links=(
            link_document_type_submit,
            link_error_list,
        ))

        post_document_version_parsing.connect(
            dispatch_uid='document_parsing_handler_index_document',
            receiver=handler_index_document,
            sender=DocumentVersion)
        post_save.connect(
            dispatch_uid=
            'document_parsing_handler_initialize_new_parsing_settings',
            receiver=handler_initialize_new_parsing_settings,
            sender=DocumentType)
        post_version_upload.connect(
            dispatch_uid='document_parsing_handler_parse_document_version',
            receiver=handler_parse_document_version,
            sender=DocumentVersion)
Ejemplo n.º 6
0
    def ready(self):
        super(MetadataApp, self).ready()
        from actstream import registry

        from .wizard_steps import WizardStepMetadata  # NOQA

        Document = apps.get_model(app_label='documents', model_name='Document')
        DocumentPageResult = apps.get_model(app_label='documents',
                                            model_name='DocumentPageResult')

        DocumentType = apps.get_model(app_label='documents',
                                      model_name='DocumentType')

        DocumentMetadata = self.get_model(model_name='DocumentMetadata')
        DocumentTypeMetadataType = self.get_model(
            model_name='DocumentTypeMetadataType')
        MetadataType = self.get_model(model_name='MetadataType')

        Document.add_to_class(name='metadata_value_of',
                              value=DocumentMetadataHelper.constructor)

        ModelAttribute(
            model=Document,
            name='metadata_value_of',
            description=_('Return the value of a specific document metadata'))

        ModelField(model=Document,
                   name='metadata__metadata_type__name',
                   label=_('Metadata type name'))
        ModelField(model=Document,
                   name='metadata__value',
                   label=_('Metadata type value'))

        ModelEventType.register(model=Document,
                                event_types=(
                                    event_document_metadata_added,
                                    event_document_metadata_edited,
                                    event_document_metadata_removed,
                                ))

        ModelEventType.register(model=MetadataType,
                                event_types=(
                                    event_document_metadata_added,
                                    event_document_metadata_edited,
                                    event_document_metadata_removed,
                                    event_metadata_type_edited,
                                    event_metadata_type_relationship,
                                ))

        ModelEventType.register(
            model=DocumentType,
            event_types=(event_metadata_type_relationship, ))

        ModelPermission.register(model=Document,
                                 permissions=(
                                     permission_document_metadata_add,
                                     permission_document_metadata_edit,
                                     permission_document_metadata_remove,
                                     permission_document_metadata_view,
                                 ))
        ModelPermission.register(model=MetadataType,
                                 permissions=(permission_acl_edit,
                                              permission_acl_view,
                                              permission_events_view,
                                              permission_metadata_type_delete,
                                              permission_metadata_type_edit,
                                              permission_metadata_type_view))

        SourceColumn(
            source=Document,
            label=_('Metadata'),
            func=lambda context: get_metadata_string(context['object']))

        SourceColumn(source=DocumentPageResult,
                     label=_('Metadata'),
                     func=lambda context: get_metadata_string(context['object']
                                                              .document))

        SourceColumn(attribute='metadata_type',
                     is_identifier=True,
                     is_sortable=True,
                     source=DocumentMetadata)
        SourceColumn(attribute='value',
                     is_sortable=True,
                     source=DocumentMetadata)

        SourceColumn(attribute='is_required',
                     source=DocumentMetadata,
                     widget=TwoStateWidget)

        SourceColumn(attribute='label',
                     is_identifier=True,
                     is_sortable=True,
                     source=MetadataType)
        SourceColumn(attribute='name', is_sortable=True, source=MetadataType)

        document_search.add_model_field(field='metadata__metadata_type__name',
                                        label=_('Metadata type'))
        document_search.add_model_field(field='metadata__value',
                                        label=_('Metadata value'))

        document_page_search.add_model_field(
            field='document_version__document__metadata__metadata_type__name',
            label=_('Metadata type'))
        document_page_search.add_model_field(
            field='document_version__document__metadata__value',
            label=_('Metadata value'))

        menu_facet.bind_links(links=(link_metadata_view, ),
                              sources=(Document, ))
        menu_list_facet.bind_links(
            links=(link_setup_document_type_metadata_types, ),
            sources=(DocumentType, ))
        menu_multi_item.bind_links(links=(link_metadata_multiple_add,
                                          link_metadata_multiple_edit,
                                          link_metadata_multiple_remove),
                                   sources=(Document, ))
        menu_list_facet.bind_links(links=(
            link_acl_list,
            link_setup_metadata_type_document_types,
            link_object_event_types_user_subcriptions_list,
            link_events_for_object,
        ),
                                   sources=(MetadataType, ))
        menu_object.bind_links(links=(link_setup_metadata_type_delete,
                                      link_setup_metadata_type_edit),
                               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_secondary.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(
            dispatch_uid=
            'metadata_handler_post_document_type_metadata_type_delete',
            receiver=handler_post_document_type_metadata_type_delete,
            sender=DocumentTypeMetadataType)
        post_document_type_change.connect(
            dispatch_uid='metadata_handler_post_document_type_change_metadata',
            receiver=handler_post_document_type_change_metadata,
            sender=Document)
        post_save.connect(
            dispatch_uid=
            'metadata_handler_post_document_type_metadata_type_add',
            receiver=handler_post_document_type_metadata_type_add,
            sender=DocumentTypeMetadataType)

        # Index updating

        post_delete.connect(
            dispatch_uid='metadata_handler_index_document_delete',
            receiver=handler_index_document,
            sender=DocumentMetadata)
        post_save.connect(dispatch_uid='metadata_handler_index_document_save',
                          receiver=handler_index_document,
                          sender=DocumentMetadata)

        registry.register(MetadataType)
        registry.register(DocumentTypeMetadataType)
Ejemplo n.º 7
0
    else:
        return term_string


cabinet_search = SearchModel(
    app_label='cabinets',
    model_name='CabinetSearchResult',
    permission=permission_cabinet_view,
    serializer_path='mayan.apps.cabinets.serializers.CabinetSerializer')

cabinet_search.add_model_field(field='label')

cabinet_search.add_model_field(field='documents__document_type__label',
                               label=_('Document type'))
cabinet_search.add_model_field(field='documents__versions__mimetype',
                               label=_('Document MIME type'))
cabinet_search.add_model_field(field='documents__label',
                               label=_('Document label'))
cabinet_search.add_model_field(field='documents__description',
                               label=_('Document description'))
cabinet_search.add_model_field(
    field='documents__uuid',
    label=_('Document UUID'),
    transformation_function=transformation_format_uuid)
cabinet_search.add_model_field(field='documents__versions__checksum',
                               label=_('Document checksum'))

document_page_search.add_model_field(
    field='document_version__document__cabinets__label', label=_('Cabinets'))
document_search.add_model_field(field='cabinets__label', label=_('Cabinets'))
Ejemplo n.º 8
0
    def ready(self):
        super(MayanBarcodesConfig, self).ready()

        Document = apps.get_model(app_label='documents', model_name='Document')
        DocumentPage = apps.get_model(app_label='documents',
                                      model_name='DocumentPage')
        DocumentType = apps.get_model(app_label='documents',
                                      model_name='DocumentType')
        DocumentTypeSettings = self.get_model(
            model_name='DocumentTypeSettings')
        DocumentVersion = apps.get_model(app_label='documents',
                                         model_name='DocumentVersion')

        Barcode = self.get_model(model_name='Barcode')

        Document.add_to_class(name='barcodes', value=get_document_barcodes)
        Document.add_to_class(name='submit_for_scan',
                              value=method_document_scan)
        DocumentVersion.add_to_class(name='barcodes',
                                     value=get_document_version_barcodes)

        ModelEventType.register(
            model=Document,
            event_types=(event_barcode_document_version_finish, ))

        #         ModelFieldRelated(
        #             model=Document,
        #             name='versions__version_pages__barcodes'
        #         )
        ModelProperty(
            description=_('A generator returning the document\'s barcodes.'),
            label=_('Barcodes'),
            model=Document,
            name='barcodes')

        ModelPermission.register(model=Document,
                                 permissions=(
                                     permission_barcodes_setup,
                                     permission_barcodes_view,
                                 ))
        ModelPermission.register(model=DocumentType,
                                 permissions=(permission_barcodes_setup, ))
        ModelPermission.register_inheritance(
            model=DocumentTypeSettings,
            related='document_type',
        )

        SourceColumn(
            attribute='document_page__page_number',
            is_sortable=True,
            source=Barcode,
        )
        SourceColumn(
            attribute='data',
            is_sortable=False,
            source=Barcode,
        )
        SourceColumn(
            attribute='type',
            is_sortable=True,
            source=Barcode,
        )

        document_search.add_model_field(
            field='versions__version_pages__barcodes', label=_('Barcodes'))

        document_page_search.add_model_field(field='barcodes',
                                             label=_('Barcodes'))

        menu_facet.bind_links(links=(link_document_barcodes, ),
                              sources=(Document, ))
        menu_list_facet.bind_links(links=(link_document_page_barcodes, ),
                                   sources=(DocumentPage, ))
        menu_list_facet.bind_links(
            links=(link_document_type_barcode_settings, ),
            sources=(DocumentType, ))

        menu_tools.bind_links(links=(link_document_type_submit, ))

        post_save.connect(
            dispatch_uid='handler_initialize_new_barcode_settings',
            receiver=handler_initialize_new_barcode_settings,
            sender=DocumentType)
        post_version_upload.connect(
            dispatch_uid='barcodes_handler_document_version',
            receiver=handler_document_version,
            sender=DocumentVersion)
Ejemplo n.º 9
0
    def ready(self):
        super(FileMetadataApp, self).ready()

        FileMetadataEntry = self.get_model(model_name='FileMetadataEntry')
        DocumentVersionDriverEntry = self.get_model(
            model_name='DocumentVersionDriverEntry')
        Document = apps.get_model(app_label='documents', model_name='Document')
        DocumentTypeSettings = self.get_model(
            model_name='DocumentTypeSettings')
        DocumentType = apps.get_model(app_label='documents',
                                      model_name='DocumentType')
        DocumentVersion = apps.get_model(app_label='documents',
                                         model_name='DocumentVersion')

        Document.add_to_class(name='file_metadata_value_of',
                              value=FileMetadataHelper.constructor)
        Document.add_to_class(name='get_file_metadata',
                              value=method_get_document_file_metadata)
        Document.add_to_class(name='submit_for_file_metadata_processing',
                              value=method_document_submit)
        DocumentVersion.add_to_class(
            name='get_file_metadata',
            value=method_get_document_version_file_metadata)
        DocumentVersion.add_to_class(
            name='submit_for_file_metadata_processing',
            value=method_document_version_submit)

        ModelAttribute(
            model=Document,
            name=
            'file_metadata_value_of.< underscore separated driver name and property name >',
            description=_('Return the value of a specific file metadata.'),
            label=_('File metadata value of'))

        ModelEventType.register(
            model=Document,
            event_types=(event_file_metadata_document_version_finish,
                         event_file_metadata_document_version_submit))

        ModelField(
            label=_('File metadata key'),
            model=Document,
            name='versions__file_metadata_drivers__entries__key',
        )
        ModelField(
            label=_('File metadata value'),
            model=Document,
            name='versions__file_metadata_drivers__entries__value',
        )

        ModelPermission.register(model=Document,
                                 permissions=(
                                     permission_file_metadata_submit,
                                     permission_file_metadata_view,
                                 ))
        ModelPermission.register(
            model=DocumentType,
            permissions=(permission_document_type_file_metadata_setup,
                         permission_file_metadata_submit,
                         permission_file_metadata_view))
        ModelPermission.register_inheritance(
            model=DocumentTypeSettings,
            related='document_type',
        )
        ModelPermission.register_inheritance(
            model=DocumentVersionDriverEntry,
            related='document_version',
        )

        SourceColumn(attribute='key', source=FileMetadataEntry)
        SourceColumn(attribute='value', source=FileMetadataEntry)
        SourceColumn(attribute='driver', source=DocumentVersionDriverEntry)
        SourceColumn(attribute='driver__internal_name',
                     source=DocumentVersionDriverEntry)
        SourceColumn(attribute='get_attribute_count',
                     source=DocumentVersionDriverEntry)

        document_search.add_model_field(
            field='versions__file_metadata_drivers__entries__key',
            label=_('File metadata key'))
        document_search.add_model_field(
            field='versions__file_metadata_drivers__entries__value',
            label=_('File metadata value'))

        document_page_search.add_model_field(
            field='document_version__file_metadata_drivers__entries__key',
            label=_('File metadata key'))
        document_page_search.add_model_field(
            field='document_version__file_metadata_drivers__entries__value',
            label=_('File metadata value'))

        menu_facet.bind_links(links=(link_document_driver_list, ),
                              sources=(Document, ))
        menu_list_facet.bind_links(
            links=(link_document_type_file_metadata_settings, ),
            sources=(DocumentType, ))
        menu_object.bind_links(links=(link_document_file_metadata_list, ),
                               sources=(DocumentVersionDriverEntry, ))
        menu_multi_item.bind_links(links=(link_document_multiple_submit, ),
                                   sources=(Document, ))
        menu_secondary.bind_links(
            links=(link_document_submit, ),
            sources=(
                'file_metadata:document_driver_list',
                'file_metadata:document_version_driver_file_metadata_list'))
        menu_tools.bind_links(links=(link_document_type_submit, ), )
        post_save.connect(
            dispatch_uid=
            'file_metadata_handler_initialize_new_document_type_settings',
            receiver=handler_initialize_new_document_type_settings,
            sender=DocumentType)
        post_version_upload.connect(
            dispatch_uid='file_metadata_handler_process_document_version',
            receiver=handler_process_document_version,
            sender=DocumentVersion)
        post_document_version_file_metadata_processing.connect(
            dispatch_uid='file_metadata_handler_index_document',
            receiver=handler_index_document_version,
            sender=DocumentVersion)
Ejemplo n.º 10
0
from django.utils.translation import ugettext_lazy as _

from mayan.apps.documents.search import document_page_search, document_search

document_page_search.add_model_field(
    field='document_version__document__comments__comment', label=_('Comments'))
document_search.add_model_field(field='comments__comment', label=_('Comments'))
Ejemplo n.º 11
0
from django.utils.translation import ugettext_lazy as _

from mayan.apps.documents.search import document_search, document_page_search

__all__ = ()

document_search.add_model_field(field='workflows__log_entries__comment',
                                label=_('Workflow transition comment'))
document_page_search.add_model_field(
    field='document_version__document__workflows__log_entries__comment',
    label=_('Workflow transition comment'))
Ejemplo n.º 12
0
from django.utils.translation import ugettext_lazy as _

from mayan.apps.documents.search import document_search, document_page_search

document_search.add_model_field(
    field='versions__version_pages__ocr_content__content', label=_('OCR'))

document_page_search.add_model_field(field='ocr_content__content',
                                     label=_('OCR'))
Ejemplo n.º 13
0
from django.utils.translation import ugettext_lazy as _

from mayan.apps.documents.search import document_page_search, document_search
from mayan.apps.dynamic_search.classes import SearchModel

from .permissions import permission_metadata_type_view

document_search.add_model_field(
    field='metadata__metadata_type__name', label=_('Metadata type')
)
document_search.add_model_field(
    field='metadata__value', label=_('Metadata value')
)

document_page_search.add_model_field(
    field='document_version__document__metadata__metadata_type__name',
    label=_('Metadata type')
)
document_page_search.add_model_field(
    field='document_version__document__metadata__value',
    label=_('Metadata value')
)

metadata_type_search = SearchModel(
    app_label='metadata', model_name='MetadataType',
    permission=permission_metadata_type_view,
    serializer_path='mayan.apps.metadata.serializers.MetadataTypeSerializer'
)

metadata_type_search.add_model_field(
    field='name', label=_('Name')
Ejemplo n.º 14
0
from django.utils.translation import ugettext_lazy as _

from mayan.apps.documents.search import document_page_search, document_search

document_search.add_model_field(
    field='versions__file_metadata_drivers__entries__key',
    label=_('File metadata key'))
document_search.add_model_field(
    field='versions__file_metadata_drivers__entries__value',
    label=_('File metadata value'))

document_page_search.add_model_field(
    field='document_version__file_metadata_drivers__entries__key',
    label=_('File metadata key'))
document_page_search.add_model_field(
    field='document_version__file_metadata_drivers__entries__value',
    label=_('File metadata value'))
Ejemplo n.º 15
0
from django.utils.translation import ugettext_lazy as _

from mayan.apps.documents.search import document_page_search, document_search
from mayan.apps.dynamic_search.classes import SearchModel

from .permissions import permission_tag_view

document_page_search.add_model_field(
    field='document_version__document__tags__label', label=_('Tags')
)
document_search.add_model_field(field='tags__label', label=_('Tags'))

tag_search = SearchModel(
    app_label='tags', model_name='Tag',
    permission=permission_tag_view,
    serializer_path='mayan.apps.tags.serializers.TagSerializer'
)
tag_search.add_model_field(field='label')
tag_search.add_model_field(field='color')