ejplatform/ej-server

View on GitHub
src/ej/settings/__init__.py

Summary

Maintainability
A
0 mins
Test Coverage
import logging
import os

from boogie.configurations import DjangoConf, env
from .apps import InstalledAppsConf
from .constance import ConstanceConf
from .email import EmailConf
from .log import LoggingConf
from .middleware import MiddlewareConf
from .options import EjOptions
from .paths import PathsConf
from .security import SecurityConf
from .themes import ThemesConf
from .. import fixes

log = logging.getLogger("ej")


class Conf(
    ThemesConf,
    ConstanceConf,
    MiddlewareConf,
    SecurityConf,
    LoggingConf,
    PathsConf,
    InstalledAppsConf,
    DjangoConf,
    EjOptions,
    EmailConf,
):
    """
    Configuration class for the EJ platform.

    Settings are created as attributes of a Conf instance and injected in
    the global namespace.
    """

    USING_DOCKER = env(False, name="USING_DOCKER")
    HOSTNAME = env("localhost")

    #
    # Accounts
    #
    AUTH_USER_MODEL = "ej_users.User"
    ACCOUNT_AUTHENTICATION_METHOD = "email"
    ACCOUNT_EMAIL_REQUIRED = True
    ACCOUNT_UNIQUE_EMAIL = True
    ACCOUNT_USERNAME_REQUIRED = False
    ACCOUNT_USER_MODEL_USERNAME_FIELD = None
    LOGIN_REDIRECT_URL = "/"
    ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
    ACCOUNT_EMAIL_VERIFICATION = "none"
    SOCIALACCOUNT_PROVIDERS = {
        "google": {
            "SCOPE": [
                "profile",
                "email",
            ],
            "AUTH_PARAMS": {
                "access_type": "online",
            },
        }
    }

    # MANAGER CONFIGURATION
    # See: https://docs.djangoproject.com/en/dev/ref/settings/#admins
    MANAGERS = ADMINS = [
        (
            "Bruno Martin, Luan GuimarĂ£es, Ricardo Poppi, Henrique Parra",
            "bruno@hacklab.com.br",
        ),
        ("Laury Bueno", "laury@hacklab.com.br"),
        ("David Carlos", "davidcarlos@pencillabs.com.br"),
    ]

    #
    # Third party modules
    #
    MIGRATION_MODULES = {"sites": "ej.contrib.sites.migrations"}

    EJ_CONVERSATIONS_URLMAP = {
        "conversation-detail": "/conversations/{conversation.slug}/",
        "conversation-list": "conversation:list",
    }

    REST_FRAMEWORK = {
        "DEFAULT_AUTHENTICATION_CLASSES": (
            "rest_framework.authentication.TokenAuthentication",
            "rest_framework.authentication.SessionAuthentication",
        ),
        "DEFAULT_PERMISSION_CLASSES": ("rest_framework.permissions.IsAuthenticatedOrReadOnly",),
        "DEFAULT_RENDERER_CLASSES": (
            "rest_framework.renderers.JSONRenderer",
            "rest_framework.renderers.BrowsableAPIRenderer",
            "ej.settings.custom_api_renders.PlainTextRenderer",
        ),
        "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
        "PAGE_SIZE": 50,
        "DEFAULT_VERSION": "v1",
        "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.coreapi.AutoSchema",
    }

    DB_HOST = os.getenv("DB_HOST", "db")
    if DB_HOST != "db":
        DATABASES = {
            "default": {
                "ENGINE": "django.db.backends.postgresql",
                "NAME": "ej",
                "USER": "ej",
                "PASSWORD": "ej",
                "HOST": DB_HOST,
                "PORT": 5432,
            }
        }

    CORS_ALLOWED_ORIGINS = [
        "https://debates.nic.br",
        "https://wordpress.pencillabs.com.br",
        "https://agentesdacidadania.org.br",
        "http://192.168.0.248:3333",
    ]

    ALLOWED_HOSTS = ["*"]

    REST_AUTH_REGISTER_SERIALIZERS = {
        "REGISTER_SERIALIZER": "ej_users.rest_auth_serializer.RegistrationSerializer"
    }

    DEFAULT_AUTO_FIELD = "django.db.models.AutoField"


Conf.save_settings(globals())

#
# Apply fixes and wait for services to start
#
fixes.apply_all()