from __future__ import absolute_import, unicode_literals import logging import tempfile from django import apps from django.conf import settings 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 CommonApp(apps.AppConfig): name = 'common' verbose_name = _('Common') def ready(self): 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())