Files
mayan-edms/mayan/apps/cabinets/apps.py
Roberto Rosario 3e53ce0c43 Add keyword arguments to the cabinet app
Modernize tests. Use the FilteredSelectionForm in the view
to add new cabinets to documents. Add missing icons.
Rename some view names to be more consistent.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-01-02 13:54:58 -04:00

136 lines
4.4 KiB
Python

from __future__ import unicode_literals
from django.apps import apps
from django.utils.translation import ugettext_lazy as _
from mayan.apps.acls import ModelPermission
from mayan.apps.acls.permissions import (
permission_acl_edit, permission_acl_view
)
from mayan.apps.common import (
MayanAppConfig, menu_facet, menu_main, menu_multi_item, menu_object,
menu_sidebar
)
from mayan.apps.common.classes import ModelAttribute
from mayan.apps.documents.search import document_page_search, document_search
from mayan.apps.navigation import SourceColumn
from .links import (
link_cabinet_child_add, link_cabinet_create, link_cabinet_delete,
link_cabinet_edit, link_cabinet_list, link_cabinet_view,
link_custom_acl_list, link_document_cabinet_add,
link_document_cabinet_list, link_document_cabinet_remove,
link_document_multiple_cabinet_add, link_document_multiple_cabinet_remove
)
from .menus import menu_cabinets
from .methods import method_get_document_cabinets
from .permissions import (
permission_cabinet_add_document, permission_cabinet_delete,
permission_cabinet_edit, permission_cabinet_remove_document,
permission_cabinet_view
)
from .widgets import widget_document_cabinets
class CabinetsApp(MayanAppConfig):
app_namespace = 'cabinets'
app_url = 'cabinets'
has_rest_api = True
has_tests = True
name = 'mayan.apps.cabinets'
verbose_name = _('Cabinets')
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='get_cabinets', value=method_get_document_cabinets
)
ModelAttribute(model=Document, name='get_cabinets')
ModelPermission.register(
model=Document, permissions=(
permission_cabinet_add_document,
permission_cabinet_remove_document
)
)
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
)
)
ModelPermission.register_inheritance(
model=Cabinet, related='get_root',
)
SourceColumn(
func=lambda context: widget_document_cabinets(
document=context['object'], user=context['request'].user
), order=1, label=_('Cabinets'), source=Document
)
document_page_search.add_model_field(
label=_('Cabinets'),
field='document_version__document__cabinets__label'
)
document_search.add_model_field(
label=_('Cabinets'), field='cabinets__label'
)
menu_facet.bind_links(
links=(link_document_cabinet_list,), sources=(Document,)
)
menu_cabinets.bind_links(
links=(
link_cabinet_list, link_cabinet_create
)
)
menu_main.bind_links(links=(menu_cabinets,), position=98)
menu_multi_item.bind_links(
links=(
link_document_multiple_cabinet_add,
link_document_multiple_cabinet_remove
), sources=(Document,)
)
menu_object.bind_links(
links=(
link_cabinet_view,
), sources=(DocumentCabinet, )
)
menu_object.bind_links(
links=(
link_cabinet_view, link_cabinet_edit,
link_custom_acl_list, link_cabinet_child_add,
link_cabinet_delete
), sources=(Cabinet,)
)
menu_sidebar.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)