diff --git a/apps/app_registry/__init__.py b/apps/app_registry/__init__.py index 040830eff6..c625e9a29f 100644 --- a/apps/app_registry/__init__.py +++ b/apps/app_registry/__init__.py @@ -2,6 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ +from backups.api import AppBackup, ModelBackup from icons.literals import APP from navigation.api import bind_links from project_tools.api import register_tool @@ -19,3 +20,6 @@ try: app = register_app('app_registry', label=_(u'App registry'), icon=APP) except UnableToRegister: pass +else: + AppBackup(app, [ModelBackup()]) + diff --git a/apps/backups/__init__.py b/apps/backups/__init__.py index 4c403488a8..15627eac4c 100644 --- a/apps/backups/__init__.py +++ b/apps/backups/__init__.py @@ -4,12 +4,14 @@ from django.db import transaction, DatabaseError from django.utils.translation import ugettext_lazy as _ from app_registry import register_app, UnableToRegister +from common.utils import encapsulate from job_processor.exceptions import JobQueuePushError from job_processor.models import JobQueue, JobType from navigation.api import bind_links, register_model_list_columns from project_setup.api import register_setup from project_tools.api import register_tool +from .api import AppBackup, ModelBackup from .links import backup_tool_link, restore_tool_link, backup_job_list, backup_job_create, backup_job_edit, backup_job_test from .models import BackupJob @@ -37,10 +39,14 @@ bind_links([BackupJob], [backup_job_edit, backup_job_test]) register_model_list_columns(BackupJob, [ {'name':_(u'begin date time'), 'attribute': 'begin_datetime'}, - {'name':_(u'storage module'), 'attribute': 'storage_module'}, + {'name':_(u'storage module'), 'attribute': 'storage_module.label'}, + {'name':_(u'apps'), 'attribute': encapsulate(lambda x: u', '.join([unicode(app) for app in x.apps.all()]))}, ]) try: - register_app('backups', _(u'Backups')) + app = register_app('backups', _(u'Backups')) except UnableToRegister: pass +else: + AppBackup(app, [ModelBackup()]) +# 'attribute': encapsulate(lambda x: x.user.get_full_name() if x.user.get_full_name() else x.user) diff --git a/apps/bootstrap/__init__.py b/apps/bootstrap/__init__.py index c16ac88029..299fa4430e 100644 --- a/apps/bootstrap/__init__.py +++ b/apps/bootstrap/__init__.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from app_registry import register_app, UnableToRegister +#from app_registry import register_app, UnableToRegister from navigation.api import bind_links from project_setup.api import register_setup @@ -14,7 +14,7 @@ register_setup(erase_database_link) bind_links([BootstrapSimple], [bootstrap_execute]) bind_links([BootstrapPermit], [bootstrap_execute]) -try: - register_app('bootstrap', _(u'Database bootstrap')) -except UnableToRegister: - pass +#try: +# register_app('bootstrap', _(u'Database bootstrap')) +#except UnableToRegister: +# pass diff --git a/apps/checkouts/__init__.py b/apps/checkouts/__init__.py index e8452809ad..cf9952a37c 100644 --- a/apps/checkouts/__init__.py +++ b/apps/checkouts/__init__.py @@ -4,6 +4,7 @@ from django.utils.translation import ugettext_lazy as _ from acls.api import class_permissions from app_registry import register_app, UnableToRegister +from backups.api import AppBackup, ModelBackup from documents.models import Document from navigation.api import bind_links, register_top_menu from scheduler.api import LocalScheduler @@ -42,6 +43,8 @@ checkouts_scheduler.start() initialize_document_checkout_extra_methods() try: - register_app('checkouts', _(u'Checkouts')) + app = register_app('checkouts', _(u'Checkouts')) except UnableToRegister: pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/document_indexing/__init__.py b/apps/document_indexing/__init__.py index 23b06aa730..42487ef565 100644 --- a/apps/document_indexing/__init__.py +++ b/apps/document_indexing/__init__.py @@ -2,25 +2,26 @@ from __future__ import absolute_import import logging +from django.db.models.signals import post_save, pre_delete, post_delete from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ -from django.db.models.signals import post_save, pre_delete, post_delete +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister +from documents.models import Document +from maintenance.api import MaintenanceNamespace +from metadata.models import DocumentMetadata from navigation.api import (register_top_menu, register_sidebar_template, bind_links, Link) - -from maintenance.api import MaintenanceNamespace -from documents.models import Document -from metadata.models import DocumentMetadata from project_setup.api import register_setup -from .models import (Index, IndexTemplateNode, IndexInstanceNode) from .api import update_indexes, delete_indexes from .links import (index_setup, index_setup_list, index_setup_create, index_setup_edit, index_setup_delete, index_setup_view, template_node_create, template_node_edit, template_node_delete, index_parent, document_index_list, rebuild_index_instances, index_setup_document_types) +from .models import (Index, IndexTemplateNode, IndexInstanceNode) logger = logging.getLogger(__name__) @@ -70,3 +71,10 @@ def document_metadata_index_delete(sender, **kwargs): def document_metadata_index_post_delete(sender, **kwargs): # TODO: save result in index log update_indexes(kwargs['instance'].document) + +try: + app = register_app('document_indexing', _(u'Document indexing')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index 5697c25ba9..91a8b47075 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -5,8 +5,8 @@ import tempfile from django.utils.translation import ugettext_lazy as _ from acls.api import class_permissions -from app_registry import register_app, UnableToRegister from backups.api import AppBackup, ModelBackup, FileBackup +from app_registry import register_app, UnableToRegister from common.utils import validate_path, encapsulate from diagnostics.api import DiagnosticNamespace from history.permissions import PERMISSION_HISTORY_VIEW diff --git a/apps/folders/__init__.py b/apps/folders/__init__.py index 8077706bae..23d0db9d55 100644 --- a/apps/folders/__init__.py +++ b/apps/folders/__init__.py @@ -2,35 +2,29 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import (bind_links, register_top_menu, - register_multi_item_links, register_sidebar_template, Link) -from documents.models import Document from acls.api import class_permissions from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL -from backups.api import AppBackup, ModelBackup from app_registry import register_app, UnableToRegister +from backups.api import AppBackup, ModelBackup +from documents.models import Document +from navigation.api import (bind_links, register_top_menu, + register_multi_item_links, register_sidebar_template, Link) -from .models import Folder from .links import (folder_list, folder_create, folder_edit, folder_delete, folder_document_multiple_remove, folder_view, folder_add_document, document_folder_list, folder_acl_list) +from .models import Folder from .permissions import (PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE, PERMISSION_FOLDER_REMOVE_DOCUMENT, PERMISSION_FOLDER_VIEW, PERMISSION_FOLDER_ADD_DOCUMENT) -register_multi_item_links(['folder_view'], [folder_document_multiple_remove]) - -bind_links([Folder], [folder_view, folder_edit, folder_delete, folder_acl_list]) - -bind_links([Folder, 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='secondary_menu') - register_top_menu(name='folders', link=Link(text=_('folders'), sprite='folder_user', view='folder_list', children_views=['folder_list', 'folder_create', 'folder_edit', 'folder_delete', 'folder_view', 'folder_document_multiple_remove'])) - +register_multi_item_links(['folder_view'], [folder_document_multiple_remove]) +bind_links([Folder], [folder_view, folder_edit, folder_delete, folder_acl_list]) +bind_links([Folder, 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='secondary_menu') bind_links([Document], [document_folder_list], menu_name='form_header') - -register_sidebar_template(['folder_list'], 'folders_help.html') - bind_links(['document_folder_list', 'folder_add_document'], [folder_add_document], menu_name="sidebar") +register_sidebar_template(['folder_list'], 'folders_help.html') class_permissions(Folder, [ PERMISSION_FOLDER_EDIT, @@ -51,4 +45,3 @@ except UnableToRegister: pass else: AppBackup(app, [ModelBackup()]) - diff --git a/apps/history/__init__.py b/apps/history/__init__.py index fcb0b7edca..85b9942475 100644 --- a/apps/history/__init__.py +++ b/apps/history/__init__.py @@ -2,9 +2,11 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from project_tools.api import register_tool -from navigation.api import bind_links, register_model_list_columns +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister from common.utils import encapsulate +from navigation.api import bind_links, register_model_list_columns +from project_tools.api import register_tool from .models import History from .widgets import history_entry_type_link @@ -28,3 +30,10 @@ register_model_list_columns(History, [ ]) bind_links([History], [history_details]) + +try: + app = register_app('history', _(u'History')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/installation/__init__.py b/apps/installation/__init__.py index cea811c51e..eb6ba41001 100644 --- a/apps/installation/__init__.py +++ b/apps/installation/__init__.py @@ -2,11 +2,14 @@ from __future__ import absolute_import from south.signals import post_migrate -from project_tools.api import register_tool - from django.dispatch import receiver from django.db.utils import DatabaseError from django.db import transaction +from django.utils.translation import ugettext_lazy as _ + +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister +from project_tools.api import register_tool from .links import installation_details from .models import Installation @@ -35,3 +38,10 @@ def check_first_run(): register_tool(installation_details) check_first_run() + +try: + app = register_app('installation', _(u'Installation')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/job_processor/__init__.py b/apps/job_processor/__init__.py index 6dbd7dabbd..803cc8ec9e 100644 --- a/apps/job_processor/__init__.py +++ b/apps/job_processor/__init__.py @@ -9,6 +9,8 @@ from django.db import transaction, DatabaseError from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister from scheduler.api import LocalScheduler from navigation.api import bind_links, register_model_list_columns from project_tools.api import register_tool @@ -88,3 +90,10 @@ def kill_all_node_processes(): atexit.register(kill_all_node_processes) + +try: + app = register_app('job_processor', _(u'Job processor')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/linking/__init__.py b/apps/linking/__init__.py index bdfa038750..c4c4b54ab3 100644 --- a/apps/linking/__init__.py +++ b/apps/linking/__init__.py @@ -1,18 +1,22 @@ from __future__ import absolute_import -from navigation.api import bind_links, register_sidebar_template -from project_setup.api import register_setup -from documents.models import Document +from django.utils.translation import ugettext_lazy as _ + from acls.api import class_permissions from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister +from documents.models import Document +from navigation.api import bind_links, register_sidebar_template +from project_setup.api import register_setup -from .models import SmartLink, SmartLinkCondition -from .permissions import (PERMISSION_SMART_LINK_VIEW, - PERMISSION_SMART_LINK_DELETE, PERMISSION_SMART_LINK_EDIT) from .links import (smart_link_instances_for_document, smart_link_setup, smart_link_list, smart_link_create, smart_link_edit, smart_link_delete, smart_link_condition_list, smart_link_condition_create, smart_link_condition_edit, smart_link_condition_delete, smart_link_acl_list) +from .models import SmartLink, SmartLinkCondition +from .permissions import (PERMISSION_SMART_LINK_VIEW, + PERMISSION_SMART_LINK_DELETE, PERMISSION_SMART_LINK_EDIT) bind_links([Document], [smart_link_instances_for_document], menu_name='form_header') bind_links([SmartLink], [smart_link_edit, smart_link_delete, smart_link_condition_list, smart_link_acl_list]) @@ -31,3 +35,10 @@ class_permissions(SmartLink, [ ACLS_EDIT_ACL, ACLS_VIEW_ACL ]) + +try: + app = register_app('linking', _(u'Document linking')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/main/__init__.py b/apps/main/__init__.py index 2181b6e722..64ba9ea61a 100644 --- a/apps/main/__init__.py +++ b/apps/main/__init__.py @@ -22,11 +22,6 @@ __version_info__ = { 'serial': 0 } -if not DISABLE_HOME_VIEW: - register_top_menu('home', link=Link(text=_(u'home'), view='home', sprite='house'), position=0) -if not SIDE_BAR_SEARCH: - register_top_menu('search', link=Link(text=_(u'search'), view='search', sprite='zoom', children_url_regex=[r'^search/'])) - def get_version(): ''' @@ -40,4 +35,9 @@ def get_version(): vers.append('%(releaselevel)s%(serial)i' % __version_info__) return ''.join(vers) + __version__ = get_version() +if not DISABLE_HOME_VIEW: + register_top_menu('home', link=Link(text=_(u'home'), view='home', sprite='house'), position=0) +if not SIDE_BAR_SEARCH: + register_top_menu('search', link=Link(text=_(u'search'), view='search', sprite='zoom', children_url_regex=[r'^search/'])) diff --git a/apps/metadata/__init__.py b/apps/metadata/__init__.py index e85c078bfe..b72aa851a3 100644 --- a/apps/metadata/__init__.py +++ b/apps/metadata/__init__.py @@ -2,24 +2,26 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import (bind_links, register_sidebar_template, - register_model_list_columns, register_multi_item_links) +from acls.api import class_permissions +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister from common.utils import encapsulate from documents.models import Document, DocumentType +from navigation.api import (bind_links, register_sidebar_template, + register_model_list_columns, register_multi_item_links) from project_setup.api import register_setup -from acls.api import class_permissions from .api import get_metadata_string -from .models import MetadataType, MetadataSet -from .permissions import (PERMISSION_METADATA_DOCUMENT_EDIT, - PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE, - PERMISSION_METADATA_DOCUMENT_VIEW) from .links import (metadata_edit, metadata_view, metadata_add, metadata_remove, setup_metadata_type_list, setup_metadata_type_edit, setup_metadata_type_delete, setup_metadata_type_create, setup_metadata_set_list, setup_metadata_set_edit, setup_metadata_set_delete, setup_metadata_set_create, setup_metadata_set_members, setup_document_type_metadata, metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove) +from .models import MetadataType, MetadataSet +from .permissions import (PERMISSION_METADATA_DOCUMENT_EDIT, + PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE, + PERMISSION_METADATA_DOCUMENT_VIEW) bind_links(['metadata_add', 'metadata_edit', 'metadata_remove', 'metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar') bind_links([Document], [metadata_view], menu_name='form_header') @@ -55,3 +57,11 @@ register_model_list_columns(Document, [ encapsulate(lambda x: get_metadata_string(x)) }, ]) + + +try: + app = register_app('metadata', _(u'Metadata')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/permissions/__init__.py b/apps/permissions/__init__.py index d8c351536a..9f0cf83eed 100644 --- a/apps/permissions/__init__.py +++ b/apps/permissions/__init__.py @@ -3,14 +3,17 @@ from __future__ import absolute_import from django.contrib.auth.models import User from django.db.models.signals import post_save from django.core.exceptions import ObjectDoesNotExist +from django.utils.translation import ugettext_lazy as _ +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister from navigation.api import bind_links, register_multi_item_links from project_setup.api import register_setup from .conf.settings import DEFAULT_ROLES -from .models import Role from .links import (role_list, role_create, role_edit, role_members, role_permissions, role_delete, permission_grant, permission_revoke) +from .models import Role bind_links([Role], [role_edit, role_delete, role_permissions, role_members]) bind_links([Role, 'role_list', 'role_create'], [role_list, role_create], menu_name='secondary_menu') @@ -37,3 +40,10 @@ def user_post_save(sender, instance, **kwargs): post_save.connect(user_post_save, sender=User) register_setup(role_list) + +try: + app = register_app('permissions', _(u'Permissions')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/sources/__init__.py b/apps/sources/__init__.py index 9e5e1d3fa5..03f8fb5a3e 100644 --- a/apps/sources/__init__.py +++ b/apps/sources/__init__.py @@ -2,18 +2,15 @@ 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 common.utils import encapsulate from project_setup.api import register_setup from scheduler.api import LocalScheduler -from documents.models import Document -from .staging import StagingFile -from .models import (WebForm, StagingFolder, SourceTransformation, - WatchFolder, POP3Email, IMAPEmail, LocalScanner) -from .widgets import staging_file_thumbnail -from .tasks import task_fetch_pop3_emails, task_fetch_imap_emails 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, @@ -23,41 +20,36 @@ from .links import (staging_file_delete, setup_sources, 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') -register_sidebar_template([LocalScanner, 'setup_local_scanner_list'], 'scanner_list.html') 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, [ @@ -75,3 +67,10 @@ 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()]) diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py index 7602464414..2d26ccfe0b 100644 --- a/apps/tags/__init__.py +++ b/apps/tags/__init__.py @@ -2,22 +2,24 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import (bind_links, register_top_menu, - register_model_list_columns, register_multi_item_links, Link) +from acls.api import class_permissions +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister from common.utils import encapsulate from documents.models import Document -from acls.api import class_permissions +from navigation.api import (bind_links, register_top_menu, + register_model_list_columns, register_multi_item_links, Link) from taggit.models import Tag from taggit.managers import TaggableManager -from .widgets import (get_tags_inline_widget_simple, single_tag_widget) -from .permissions import (PERMISSION_TAG_ATTACH, - PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, - PERMISSION_TAG_VIEW) from .links import (tag_list, tag_create, tag_attach, tag_document_remove_multiple, tag_document_list, tag_delete, tag_edit, tag_tagged_item_list, tag_multiple_delete, tag_acl_list) +from .permissions import (PERMISSION_TAG_ATTACH, + PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, + PERMISSION_TAG_VIEW) +from .widgets import (get_tags_inline_widget_simple, single_tag_widget) register_model_list_columns(Tag, [ { @@ -57,3 +59,10 @@ class_permissions(Tag, [ ]) Document.add_to_class('tags', TaggableManager()) + +try: + app = register_app('tags', _(u'Tags')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()]) diff --git a/apps/user_management/__init__.py b/apps/user_management/__init__.py index 25ff66efc2..794b616dc2 100644 --- a/apps/user_management/__init__.py +++ b/apps/user_management/__init__.py @@ -1,7 +1,10 @@ from __future__ import absolute_import from django.contrib.auth.models import User, Group +from django.utils.translation import ugettext_lazy as _ +from backups.api import AppBackup, ModelBackup +from app_registry import register_app, UnableToRegister from navigation.api import bind_links, register_multi_item_links from project_setup.api import register_setup @@ -27,3 +30,10 @@ user_management_views = [ register_setup(user_setup) register_setup(group_setup) + +try: + app = register_app('user_management', _(u'User management')) +except UnableToRegister: + pass +else: + AppBackup(app, [ModelBackup()])