2021-12-22 18:03:21 +00:00
|
|
|
"""Manages settings for the categories application."""
|
2024-04-15 17:43:22 +00:00
|
|
|
|
2021-12-05 14:34:46 +00:00
|
|
|
import collections
|
|
|
|
|
|
2009-10-22 16:32:28 +00:00
|
|
|
from django.conf import settings
|
2011-05-08 00:33:00 +00:00
|
|
|
from django.db.models import Q
|
2021-12-16 11:26:40 +00:00
|
|
|
from django.utils.translation import gettext_lazy as _
|
2009-10-22 16:32:28 +00:00
|
|
|
|
2011-05-11 11:09:19 +00:00
|
|
|
DEFAULT_SETTINGS = {
|
2021-12-05 14:34:46 +00:00
|
|
|
"ALLOW_SLUG_CHANGE": False,
|
|
|
|
|
"M2M_REGISTRY": {},
|
|
|
|
|
"FK_REGISTRY": {},
|
|
|
|
|
"THUMBNAIL_UPLOAD_PATH": "uploads/categories/thumbnails",
|
2023-08-17 12:12:42 +00:00
|
|
|
"THUMBNAIL_STORAGE_ALIAS": "default",
|
2021-12-05 14:34:46 +00:00
|
|
|
"JAVASCRIPT_URL": getattr(settings, "STATIC_URL", settings.MEDIA_URL) + "js/",
|
|
|
|
|
"SLUG_TRANSLITERATOR": "",
|
|
|
|
|
"REGISTER_ADMIN": True,
|
|
|
|
|
"RELATION_MODELS": [],
|
2011-05-08 00:33:00 +00:00
|
|
|
}
|
2010-04-05 17:09:02 +00:00
|
|
|
|
2024-05-22 07:31:56 +00:00
|
|
|
if hasattr(settings, "DEFAULT_FILE_STORAGE"):
|
|
|
|
|
DEFAULT_SETTINGS["THUMBNAIL_STORAGE"] = settings.DEFAULT_FILE_STORAGE
|
|
|
|
|
|
2021-12-05 14:34:46 +00:00
|
|
|
DEFAULT_SETTINGS.update(getattr(settings, "CATEGORIES_SETTINGS", {}))
|
2011-05-11 11:09:19 +00:00
|
|
|
|
2021-12-05 14:34:46 +00:00
|
|
|
if DEFAULT_SETTINGS["SLUG_TRANSLITERATOR"]:
|
|
|
|
|
if isinstance(DEFAULT_SETTINGS["SLUG_TRANSLITERATOR"], collections.Callable):
|
2012-02-07 18:34:35 +00:00
|
|
|
pass
|
2021-12-05 14:34:46 +00:00
|
|
|
elif isinstance(DEFAULT_SETTINGS["SLUG_TRANSLITERATOR"], str):
|
2012-02-07 18:34:35 +00:00
|
|
|
from django.utils.importlib import import_module
|
2021-12-05 14:34:46 +00:00
|
|
|
|
|
|
|
|
bits = DEFAULT_SETTINGS["SLUG_TRANSLITERATOR"].split(".")
|
2012-02-07 18:34:35 +00:00
|
|
|
module = import_module(".".join(bits[:-1]))
|
2021-12-05 14:34:46 +00:00
|
|
|
DEFAULT_SETTINGS["SLUG_TRANSLITERATOR"] = getattr(module, bits[-1])
|
2012-02-07 18:34:35 +00:00
|
|
|
else:
|
|
|
|
|
from django.core.exceptions import ImproperlyConfigured
|
2021-12-05 14:34:46 +00:00
|
|
|
|
|
|
|
|
raise ImproperlyConfigured(
|
|
|
|
|
_("%(transliterator) must be a callable or a string.") % {"transliterator": "SLUG_TRANSLITERATOR"}
|
|
|
|
|
)
|
2012-02-07 18:34:35 +00:00
|
|
|
else:
|
2021-12-05 14:34:46 +00:00
|
|
|
DEFAULT_SETTINGS["SLUG_TRANSLITERATOR"] = lambda x: x
|
2012-02-07 18:34:35 +00:00
|
|
|
|
2011-05-12 10:46:21 +00:00
|
|
|
|
|
|
|
|
# Add all the keys/values to the module's namespace
|
|
|
|
|
globals().update(DEFAULT_SETTINGS)
|
2011-05-03 14:41:56 +00:00
|
|
|
|
2021-12-05 14:34:46 +00:00
|
|
|
RELATIONS = [Q(app_label=al, model=m) for al, m in [x.split(".") for x in DEFAULT_SETTINGS["RELATION_MODELS"]]]
|
2012-08-18 16:53:37 +00:00
|
|
|
|
|
|
|
|
# The field registry keeps track of the individual fields created.
|
|
|
|
|
# {'app.model.field': Field(**extra_params)}
|
|
|
|
|
# Useful for doing a schema migration
|
|
|
|
|
FIELD_REGISTRY = {}
|
|
|
|
|
|
|
|
|
|
# The model registry keeps track of which models have one or more fields
|
|
|
|
|
# registered.
|
|
|
|
|
# {'app': [model1, model2]}
|
|
|
|
|
# Useful for admin alteration
|
|
|
|
|
MODEL_REGISTRY = {}
|