from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
class ApiConfig(AppConfig):
    name = 'apps.api'
    label = 'api'
    verbose_name = _('API')
    verbose_name_plural = _('APIs')
    try:
        assert settings.SWAGGER_SETTINGS
    except AttributeError:
        # We only load this setting, if it is not available in the overall settings.py file
        settings.SWAGGER_SETTINGS = {
            'SECURITY_DEFINITIONS': {
                'Hawk': {
                    'type': 'apiKey',
                    'description': 'HTTP Holder-Of-Key Authentication Scheme, https://github.com/hapijs/hawk, https://hawkrest.readthedocs.io/en/latest/
Ex header:
\'Authorization\': \'Hawk mac="F4+S9cu7yZiZEgdtqzMpOOdudvqcV2V2Yzk2WcphECc=", hash="+7fKUX+djeQolvnLTxr0X47e//UHKbkRlajwMw3tx3w=", id="7FI5JET4", ts="1592905433", nonce="DlV-fL"\'',
                    'name': 'Authorization',
                    'in': 'header'
                }
            }
        }
    try:
        assert settings.REST_FRAMEWORK
    except AttributeError:
        # We only load this setting, if it is not available in the overall settings.py file
        # To protect all API views with Hawk by default, put this in your settings:
        # https://hawkrest.readthedocs.io/en/latest/usage.html#protecting-api-views-with-hawk
        settings.REST_FRAMEWORK = {
            'DEFAULT_AUTHENTICATION_CLASSES': (
                'apps.api.authentication.APIHawk',
            ),
            'DEFAULT_PERMISSION_CLASSES': (
                'rest_framework.permissions.IsAuthenticated',
            ),
            # 'DEFAULT_AUTHENTICATION_CLASSES': (
            #     'rest_framework.authentication.TokenAuthentication',
            # ),
            # 'DEFAULT_PERMISSION_CLASSES': (
            #     'rest_framework.permissions.IsAuthenticated', ),
            # Use Django's standard `django.contrib.auth` permissions,
            # or allow read-only access for unauthenticated users.
            #'DEFAULT_PERMISSION_CLASSES': [
            #    'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
            #],
            'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
            'PAGE_SIZE': 10
        }
    try:
        assert settings.HAWK_MESSAGE_EXPIRATION
    except AttributeError:
        # We only load this setting, if it is not available in the overall settings.py file
        settings.HAWK_MESSAGE_EXPIRATION = 60
    def ready(self):
        from . import signals