""" Django settings for TWB project. Generated by 'django-admin startproject' using Django 4.2.2. For more information on this file, see https://docs.djangoproject.com/en/4.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/4.2/ref/settings/ """ from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-)q52-&03erd#(n#yje^)26^q8$jimfc154lhpu@cc8n*%kay^(' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ["*"] # SESSION_COOKIE_HTTPONLY = False # Application definition INSTALLED_APPS = [ # 'channels', "daphne", 'ChatServiceApp', 'modeltranslation', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'colorfield', 'ckeditor', 'ckeditor_uploader', 'GeneralApp', 'AuthApp', 'RoutesApp', 'ReferenceDataApp', 'ArticlesApp', 'SubscribesApp', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'AuthApp.middleware.ResponseInterceptionMiddleware', ] ROOT_URLCONF = 'TWB.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'] , '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', 'django.template.context_processors.media', ], }, }, ] # WSGI_APPLICATION = 'TWB.wsgi.application' ASGI_APPLICATION = 'TWB.asgi.application' WS_ADDRESS = 'localhost:8000' CHANNEL_LAYERS = { 'default': { # 'BACKEND': 'channels.layers.InMemoryChannelLayer', "BACKEND": "channels_redis.core.RedisChannelLayer", # 'USER': 'spadredis-zxs-service', # 'PASSWORD': '9zghygpri84f8vl', "CONFIG": { "hosts": [("127.0.0.1", 6379)], }, } } # Database # https://docs.djangoproject.com/en/4.2/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'twbDB', 'USER': 'test_user', 'PASSWORD': 'test_db_pass', 'HOST': '127.0.0.1', 'PORT': '5432', } } # Password validation # https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ LANGUAGE_CODE = 'ru' TIME_ZONE = 'Europe/Minsk' USE_I18N = True # USE_TZ = True USE_L10N = True USE_TZ = False # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ MEDIA_URL = '/media/' MEDIA_ROOT = 'media/' STATIC_URL = '/static/' STATIC_ROOT = '/' STATICFILES_DIRS = [ BASE_DIR / "static", ] import os LOCALE_PATHS = ( os.path.join(BASE_DIR,'locale'), ) gettext = lambda s: s LANGUAGES = ( (u'ru', gettext(u'Russian')), (u'en', gettext(u'English')), ) MODELTRANSLATION_LANGUAGES = ('ru', 'en') MODELTRANSLATION_ENABLE_FALLBACKS = True MODELTRANSLATION_FALLBACK_LANGUAGES = { 'default': ('ru','en'), } # Add custom languages not provided by Django import django.conf.locale LANG_INFO = dict(django.conf.locale.LANG_INFO.items()) #+ EXTRA_LANG_INFO.items()) django.conf.locale.LANG_INFO = LANG_INFO # Default primary key field type # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' CKEDITOR_BASEPATH = "/static/ckeditor/ckeditor/" CKEDITOR_UPLOAD_PATH = "uploads/" CKEDITOR_RESTRICT_BY_DATE = False CKEDITOR_RESTRICT_BY_USER = True CKEDITOR_BROWSE_SHOW_DIRS = True # CKEDITOR_IMAGE_BACKEND = 'ckeditor_uploader.backends.PillowBackend' # CKEDITOR_IMAGE_BACKEND = 'pillow' CKEDITOR_IMAGE_BACKEND = "BaseModels.PIL.pillow_backend.PillowBackend" # CKEDITOR_BROWSE_SHOW_DIRS = True CKEDITOR_JQUERY_URL = 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js' CKEDITOR_CONFIGS = { 'default': { 'height': 291, 'width': '70vw', 'filebrowserWindowHeight': 600, 'filebrowserWindowWidth': "90%", 'toolbar': 'Custom', 'forcePasteAsPlainText': True, 'allowedContent': True, 'filebrowserImageThumbWidth': 300, 'filebrowserImageThumbHeight': 300, 'filebrowserUploadUrl': '/ckeditor/upload/', # 'disallowedContent': 'img{width,height};img[width,height]', # 'extraPlugins': 'image2', 'enterMode': 2, 'basicEntities' : False, 'entities_additional': '', 'entities' : False, 'htmlEncodeOutput' : False, # 'toolbar_Custom': [ # ['Bold', 'Italic', 'Underline'], # ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], # ['Link', 'Unlink'], # ['RemoveFormat', 'Source'] # ], 'toolbar_Custom': [ {'name': 'document', 'items': ['Source', '-', 'Save', '-', 'Find', 'Replace', '-', 'SelectAll']}, {'name': 'clipboard', 'items': ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo', '-', 'Maximize', 'ShowBlocks']}, # {'name': 'forms', # 'items': ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', # 'HiddenField']}, '/', {'name': 'basicstyles', 'items': ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'TextColor', 'BGColor', '-', 'RemoveFormat', '-']}, {'name': 'paragraph', 'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl' ]}, '/', {'name': 'links', 'items': ['Link', 'Unlink', 'Anchor', '-', 'Blockquote' ]}, {'name': 'insert', 'items': ['Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']}, ], } } # CKEDITOR_OPTIONS = { # 'height': 291, # 'width': '95%', # 'filebrowserWindowHeight': 600, # 'filebrowserWindowWidth': "100%", # 'toolbar': 'YourCustomToolbarConfig', # # 'allowedContent': True, # # 'enterMode': 2, # 'basicEntities' : False, # 'entities_additional': '', # 'entities' : False, # 'htmlEncodeOutput' : False, # 'toolbar_Basic': [ # ['Source', '-', 'Bold', 'Italic'] # ], # 'toolbar_YourCustomToolbarConfig': [ # {'name': 'document', 'items': ['Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates']}, # {'name': 'clipboard', 'items': ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']}, # {'name': 'editing', 'items': ['Find', 'Replace', '-', 'SelectAll']}, # {'name': 'forms', # 'items': ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', # 'HiddenField']}, # '/', # {'name': 'basicstyles', # 'items': ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']}, # {'name': 'paragraph', # 'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', # 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl', # 'Language']}, # {'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']}, # {'name': 'insert', # 'items': ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']}, # '/', # {'name': 'styles', 'items': ['FontSize']}, # {'name': 'colors', 'items': ['TextColor', 'BGColor']}, # {'name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, # # {'name': 'about', 'items': ['About']}, # '/', # put this to force next toolbar on new line # # {'name': 'yourcustomtools', 'items': [ # # # put the name of your editor.ui.addButton here # # 'Preview', # # 'Maximize', # # # # ]}, # ], # # 'tabSpaces': 4, # 'removePlugins': 'stylesheetparser', # # 'extraPlugins': ','.join([ # # 'uploadimage', # the upload image feature # # # your extra plugins here # # 'div', # # 'autolink', # # 'autoembed', # # 'embedsemantic', # # 'autogrow', # # # 'devtools', # # 'widget', # # 'lineutils', # # 'clipboard', # # 'dialog', # # 'dialogui', # # 'elementspath' # # ]), # # } try: import db_local_sets DATABASES = db_local_sets.DATABASES except ImportError as e: pass # global prod_server try: import db_local_sets # SERVER_URL = local_sets.SERVER_URL except ImportError: pass try: from settings_local import * except ImportError: print('settings_local fail')