"""
Django settings for cheeseshop project.

For more information on this file, see
https://docs.djangoproject.com/en/4.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.1/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
from datetime import date

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/

SITE_ID = 1

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "hdx64#m+lnc_0ffoyehbk&7gk1&*9uar$pcfcm-%$km#p0$k=6"

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = (
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.sites",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "cheeseshop.apps.catalog",
    "cheeseshop.apps.storage",
    "constance",
)

MIDDLEWARE = (
    "django.middleware.common.CommonMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
)

ROOT_URLCONF = "cheeseshop.urls"

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

WSGI_APPLICATION = "cheeseshop.wsgi.application"


# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": "/tmp/cheeseshop.db",
    }
}

CONSTANCE_REDIS_CONNECTION = {
    "host": "localhost",
    "port": 6379,
    "db": 0,
}

CONSTANCE_ADDITIONAL_FIELDS = {
    "yes_no_null_select": [
        "django.forms.fields.ChoiceField",
        {"widget": "django.forms.Select", "choices": ((None, "-----"), ("yes", "Yes"), ("no", "No"))},
    ],
    "email": ("django.forms.fields.EmailField",),
    "json_field": ["cheeseshop.fields.JsonField"],
    "image_field": ["django.forms.ImageField", {}],
}

CONSTANCE_CONFIG = {
    "BANNER": ("The National Cheese Emporium", "name of the shop"),
    "OWNER": ("Mr. Henry Wensleydale", "owner of the shop"),
    "OWNER_EMAIL": ("henry@example.com", "contact email for owner", "email"),
    "MUSICIANS": (4, "number of musicians inside the shop"),
    "DATE_ESTABLISHED": (date(1972, 11, 30), "the shop's first opening"),
    "MY_SELECT_KEY": ("yes", "select yes or no", "yes_no_null_select"),
    "MULTILINE": ("Line one\nLine two", "multiline string"),
    "JSON_DATA": (
        {"a": 1_000, "b": "test", "max": 30_000_000},
        "Some test data for json",
        "json_field",
    ),
    "LOGO": (
        "",
        "Logo image file",
        "image_field",
    ),
}

CONSTANCE_CONFIG_FIELDSETS = {
    "Cheese shop general info": [
        "BANNER",
        "OWNER",
        "OWNER_EMAIL",
        "MUSICIANS",
        "DATE_ESTABLISHED",
        "LOGO",
    ],
    "Awkward test settings": ["MY_SELECT_KEY", "MULTILINE", "JSON_DATA"],
}

CONSTANCE_BACKEND = "constance.backends.database.DatabaseBackend"


CACHES = {
    "default": {
        "BACKEND": "django.core.cache.backends.memcached.PyMemcacheCache",
        "LOCATION": "127.0.0.1:11211",
    }
}
CONSTANCE_DATABASE_CACHE_BACKEND = "default"

# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/

LANGUAGE_CODE = "en-us"

TIME_ZONE = "America/Chicago"

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/

STATIC_URL = "/static/"

MEDIA_URL = "/media/"

MEDIA_ROOT = os.path.join(BASE_DIR, "media")

CONSTANCE_FILE_ROOT = "constance"

DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
