Files
mayan-edms/mayan/apps/common/apps.py

85 lines
3.3 KiB
Python

from __future__ import absolute_import, unicode_literals
import logging
import tempfile
from django import apps
from django.conf import settings
from django.conf.urls import include, patterns, url
from django.contrib.auth.signals import user_logged_in
from django.db.models.signals import post_migrate, post_save
from django.utils.translation import ugettext_lazy as _
from common import settings as common_settings
from .handlers import (
user_locale_profile_session_config, user_locale_profile_create
)
from .links import (
link_about, link_admin_site, link_current_user_details,
link_current_user_edit, link_current_user_locale_profile_details,
link_current_user_locale_profile_edit, link_license,
link_maintenance_menu, link_setup, link_tools
)
from .menus import (
menu_facet, menu_main, menu_secondary, menu_setup, menu_tools
)
from .models import AnonymousUserSingleton
from .settings import TEMPORARY_DIRECTORY
from .utils import validate_path
logger = logging.getLogger(__name__)
def create_anonymous_user(sender, **kwargs):
AnonymousUserSingleton.objects.get_or_create()
class MayanAppConfig(apps.AppConfig):
app_url = None
app_namespace = None
def ready(self):
from mayan.urls import urlpatterns
if self.app_url:
top_url = '{}/'.format(self.app_url)
elif not self.app_url is None:
top_url = ''
else:
top_url = '{}/'.format(self.name)
urlpatterns += url(r'^{}'.format(top_url), include('{}.urls'.format(self.name), namespace=self.app_namespace or self.name)),
class CommonApp(MayanAppConfig):
app_url = ''
name = 'common'
verbose_name = _('Common')
def ready(self):
super(CommonApp, self).ready()
menu_facet.bind_links(links=[link_current_user_details, link_current_user_locale_profile_details, link_tools, link_setup], sources=['common:current_user_details', 'common:current_user_edit', 'common:current_user_locale_profile_details', 'common:current_user_locale_profile_edit', 'authentication:password_change_view', 'common:setup_list', 'common:tools_list'])
menu_main.bind_links(links=[link_about], position=-1)
menu_secondary.bind_links(
links=[link_about, link_license],
sources=['common:about_view', 'common:license_view']
)
menu_secondary.bind_links(
links=[
link_current_user_edit, link_current_user_locale_profile_edit
],
sources=['common:current_user_details', 'common:current_user_edit', 'common:current_user_locale_profile_details', 'common:current_user_locale_profile_edit', 'authentication:password_change_view', 'common:setup_list', 'common:tools_list']
)
menu_setup.bind_links(links=[link_admin_site])
menu_tools.bind_links(links=[link_maintenance_menu])
post_migrate.connect(create_anonymous_user, dispatch_uid='create_anonymous_user', sender=self)
user_logged_in.connect(user_locale_profile_session_config, dispatch_uid='user_locale_profile_session_config', sender=settings.AUTH_USER_MODEL)
post_save.connect(user_locale_profile_create, dispatch_uid='user_locale_profile_create', sender=settings.AUTH_USER_MODEL)
if (not validate_path(TEMPORARY_DIRECTORY)) or (not TEMPORARY_DIRECTORY):
setattr(common_settings, 'TEMPORARY_DIRECTORY', tempfile.mkdtemp())