U
    #hO                     @   sH  d Z ddlZddlmZ ddlmZmZ ee j	j	Z
e
d Zzejdd W n( ek
rx   edZejdd Y nX ed	d
dZeddedZedde dZdddddddddddddddd d!gZd"d#d$d%d&d'd(d)d*g	Zd+Zd,e
d- gdd.d/d0d1d2d3gid4gZd5Zd6Zd7d8ed9d:ded;d<ded=d<ded>d?ded@dAdedBdCededDdeddEdFedGdHddIdJdK	iZdLdMidLdNidLdOidLdPigZdQZedRdSdZdZdZedTdUdZedVe
dW dZ e
dX gZ!dYZ"edZd[dZ#ed\e
d] dZ$d^Z%d_d`dadbgdcgdddegdfdggdhdidjdkdldmdndoZ&edpdqe dZ'dZ(edrdsdZ)edtdsdZ*dugZ+duZ,duZ-eZ.dZ/d7dvedwdxddyedzd{eddd|d}d~ddIeddeddiZ0dZ1d7Z2eddedZ3ddddddddddddddddddddddddddddddddddZ4edddeddededdededdededdededdeddZ5edddedddeddededddeddddZ6edddeddededdeddZ7eddqdeddqdeeddqddZ8eddededde9deddededdeddZ:deddqdiZ;ddddddŜddddŜddddŜddddŜdʜddiddidΜdddddӜidgedddd՜dgeddddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜dgddd֜d؜dٜZ<dZ=dZ>dZ?ddgZ@dZAdZBdZCdZDdZEdLdMidNddiddLdOidLdPigZeseddedZFdZGeddedZHeddedZIdZJdZKdZLdddddddcgdadbgddddddddddddddddddddddddddddgdZMdS )a  
Django settings for Stream Processor project.

This module contains all configuration settings for the Django application,
including database configuration, security settings, installed apps,
middleware configuration, and third-party service settings.

The settings are designed to work with python-decouple for environment
variable management, allowing for different configurations across
development, staging, and production environments.
    N)Path)configCsvZlogsT)exist_okz	/app/logs
SECRET_KEYz)django-insecure-change-this-in-production)defaultDEBUGF)r   castALLOWED_HOSTSz#localhost,127.0.0.1,173.212.199.208zdjango.contrib.adminzdjango.contrib.authzdjango.contrib.contenttypeszdjango.contrib.sessionszdjango.contrib.messageszdjango.contrib.staticfilesZrest_frameworkZcorsheadersZdjango_filtersZdrf_spectacularZwidget_tweaksz	apps.corezapps.authenticationapps.streamsapps.jinglesapps.notificationsapps.monitoringz-django.middleware.security.SecurityMiddlewarez*whitenoise.middleware.WhiteNoiseMiddlewarez4django.contrib.sessions.middleware.SessionMiddlewarez%corsheaders.middleware.CorsMiddlewarez)django.middleware.common.CommonMiddlewarez)django.middleware.csrf.CsrfViewMiddlewarez7django.contrib.auth.middleware.AuthenticationMiddlewarez4django.contrib.messages.middleware.MessageMiddlewarez6django.middleware.clickjacking.XFrameOptionsMiddlewarez	core.urlsz/django.template.backends.django.DjangoTemplates	templatescontext_processorsz(django.template.context_processors.debugz*django.template.context_processors.requestz+django.contrib.auth.context_processors.authz3django.contrib.messages.context_processors.messagesz-apps.core.context_processors.settings_context)BACKENDDIRSAPP_DIRSOPTIONSzcore.wsgi.applicationzcore.asgi.applicationr   zdjango.db.backends.postgresqlZDB_NAMEZ	stream_dbZDB_USERZpostgresZDB_PASSWORDZDB_HOST	localhostZDB_PORTZ5432ZDB_CONN_MAX_AGEiX  ZDB_CONN_HEALTH_CHECKS<   z--c default_transaction_isolation=serializableZDB_SSL_MODEpreferstream_processor)connect_timeoutoptionsZsslmodeZapplication_name)	ENGINENAMEUSERPASSWORDHOSTPORTCONN_MAX_AGECONN_HEALTH_CHECKSr   r   zHdjango.contrib.auth.password_validation.UserAttributeSimilarityValidatorz>django.contrib.auth.password_validation.MinimumLengthValidatorz?django.contrib.auth.password_validation.CommonPasswordValidatorz@django.contrib.auth.password_validation.NumericPasswordValidatorzen-us	TIME_ZONEUTC
STATIC_URLz/static/STATIC_ROOTstaticfilesZstaticz/whitenoise.storage.CompressedStaticFilesStorage	MEDIA_URLz/media/
MEDIA_ROOTZmediazdjango.db.models.BigAutoFieldz.rest_framework.pagination.PageNumberPagination   z3rest_framework.authentication.SessionAuthenticationz1rest_framework.authentication.TokenAuthenticationz*rest_framework.permissions.IsAuthenticatedz%rest_framework.renderers.JSONRendererz-rest_framework.renderers.BrowsableAPIRendererz*rest_framework.throttling.AnonRateThrottlez*rest_framework.throttling.UserRateThrottlez100/hourz	1000/hourz	45/minutez600/hourz300/hour)ZanonuserZstream_controlZdetection_apiZnotification_apiz"drf_spectacular.openapi.AutoSchema)ZDEFAULT_PAGINATION_CLASSZ	PAGE_SIZEZDEFAULT_AUTHENTICATION_CLASSESZDEFAULT_PERMISSION_CLASSESZDEFAULT_RENDERER_CLASSESZDEFAULT_THROTTLE_CLASSESZDEFAULT_THROTTLE_RATESZDEFAULT_SCHEMA_CLASSCORS_ALLOWED_ORIGINS CELERY_BROKER_URLzredis://localhost:6379/0CELERY_RESULT_BACKENDjsonzdjango_redis.cache.RedisCacheZ	REDIS_URLzredis://localhost:6379/1z!django_redis.client.DefaultClientZREDIS_MAX_CONNECTIONS2   )max_connectionsretry_on_timeoutz,django_redis.serializers.json.JSONSerializerz,django_redis.compressors.zlib.ZlibCompressor)ZCLIENT_CLASSZCONNECTION_POOL_KWARGSZ
SERIALIZERZ
COMPRESSORZCACHE_DEFAULT_TIMEOUTi,  )r   LOCATIONr   
KEY_PREFIXTIMEOUTz&django.contrib.sessions.backends.cachePERFORMANCE_PROFILING_ENABLEDz&apps.streams.tasks.check_stream_healthg      >@)taskschedulez'apps.streams.tasks.cleanup_old_segmentsg     r@z,apps.jingles.tasks.process_pending_ad_breaksg      N@z,apps.monitoring.tasks.collect_system_metricsz)apps.monitoring.tasks.collect_app_metricsz1apps.monitoring.tasks.generate_performance_reportg      @z,apps.monitoring.tasks.monitor_resource_usagez+apps.monitoring.tasks.cleanup_metrics_cachez4apps.monitoring.tasks.check_external_services_healthz#apps.monitoring.tasks.create_backupg     @z%apps.monitoring.tasks.cleanup_backupsg     u"A)zstream-health-checkzcleanup-old-segmentszprocess-ad-breakszcollect-system-metricszcollect-app-metricszgenerate-performance-reportzmonitor-resource-usagezcleanup-metrics-cachezcheck-external-serviceszcreate-backupzcleanup-backups
OUTPUT_DIRz/app/media/streamsSEGMENT_DURATION   MAX_TS_FILE_NUMBER
   MAX_CAPTURE_RETRIES   CAPTURE_RETRY_INTERVALEXIT_ON_FAILURE)r:   r;   r=   r?   rA   rB   
RESOLUTIONZ1280x720ASPECT_RATIOz16:9FPS   MIN_BITRATEZ2000kMAX_BITRATEZ4000k)rC   rD   rE   rG   rH   ZAUDIO_BITRATEZ128kZAUDIO_SAMPLE_RATEi  ZAUDIO_CHANNELS   )ZBITRATEZSAMPLE_RATEZCHANNELSZTELEGRAM_BOT_TOKENZTELEGRAM_CHAT_ID)Z	BOT_TOKENZCHAT_IDENABLEDUSE_JINGLESZJINGLE_SIMILARITY_THRESHOLDg?MIN_AD_BREAK_DURATION   MAX_AD_BREAK_DURATIONiJ  )rK   ZSIMILARITY_THRESHOLDrL   rN   ZDAI_API_URL   zG[{asctime}] {levelname} {name} {module}.{funcName}:{lineno} - {message}{z%Y-%m-%d %H:%M:%S)formatstyledatefmtz*[{asctime}] {levelname} {name} - {message}zE{asctime} {levelname} {name} {module}.{funcName}:{lineno} - {message}z%Y-%m-%dT%H:%M:%Sz3[{asctime}] SECURITY {levelname} {name} - {message})verbosesimpler0   securityz()z"django.utils.log.RequireDebugFalsez!django.utils.log.RequireDebugTrue)Zrequire_debug_falseZrequire_debug_trueZconsoleINFOzlogging.StreamHandlerrU   )levelclass	formatterZ	LOG_LEVEL)handlersrX   )r[   rX   	propagateERROR)djangozdjango.securityzdjango.requestz"apps.authentication.authenticationr   zstream_processor.taskszstream_processor.monitoringceleryzcelery.taskzcelery.workerr   r   r   r   )versionZdisable_existing_loggersZ
formattersfiltersr[   rootloggersz/auth/login//z@apps.authentication.authentication.EnhancedAuthenticationBackendz)django.contrib.auth.backends.ModelBackendi ' LaxZ
min_length   )r   r   SECURE_SSL_REDIRECT)ZHTTP_X_FORWARDED_PROTOhttpsSESSION_COOKIE_SECURECSRF_COOKIE_SECUREDENYzStream Processing APIzWComprehensive API for HLS stream capture, jingle detection, and notification managementz1.0.0z/api/v1/z*drf_spectacular.generators.SchemaGenerator)ZdeepLinkingZpersistAuthorizationZdisplayOperationIdfilterZChannelszStream channel management)namedescriptionZSessionszStream session monitoringZConfigurationsz!Video and audio encoding settingsZJinglesz(Jingle template and detection managementz	Ad BreakszAdvertisement break trackingZNotificationsz!Multi-channel notification systemZ
MonitoringzSystem health and metrics)ZTITLEZDESCRIPTIONVERSIONZSERVE_INCLUDE_SCHEMAZSCHEMA_PATH_PREFIXZDEFAULT_GENERATOR_CLASSZSERVE_PERMISSIONSZSERVE_AUTHENTICATIONZSWAGGER_UI_SETTINGSZCOMPONENT_SPLIT_REQUESTZSORT_OPERATIONSZTAGS)N__doc__ospathlibr   Zdecoupler   r   __file__resolveparentZBASE_DIRZlogs_dirmkdirPermissionErrorr   boolr   r
   INSTALLED_APPS
MIDDLEWAREROOT_URLCONF	TEMPLATESWSGI_APPLICATIONZASGI_APPLICATIONint	DATABASESAUTH_PASSWORD_VALIDATORSLANGUAGE_CODEr#   USE_I18NUSE_TZr%   r&   STATICFILES_DIRSSTATICFILES_STORAGEr(   r)   DEFAULT_AUTO_FIELDZREST_FRAMEWORKr,   ZCORS_ALLOW_CREDENTIALSr.   r/   ZCELERY_ACCEPT_CONTENTZCELERY_TASK_SERIALIZERZCELERY_RESULT_SERIALIZERZCELERY_TIMEZONEZCELERY_ENABLE_UTCCACHESSESSION_ENGINESESSION_CACHE_ALIASr7   CELERY_BEAT_SCHEDULEZSTREAM_CONFIGZVIDEO_CONFIGZAUDIO_CONFIGTELEGRAM_CONFIGfloatZJINGLE_CONFIGZEXTERNAL_APISLOGGING	LOGIN_URLLOGIN_REDIRECT_URLLOGOUT_REDIRECT_URLAUTHENTICATION_BACKENDSSESSION_COOKIE_AGESESSION_EXPIRE_AT_BROWSER_CLOSESESSION_SAVE_EVERY_REQUESTSESSION_COOKIE_HTTPONLYSESSION_COOKIE_SAMESITErg   SECURE_PROXY_SSL_HEADERri   rj   ZSECURE_BROWSER_XSS_FILTERSECURE_CONTENT_TYPE_NOSNIFFX_FRAME_OPTIONSZSPECTACULAR_SETTINGS r   r   2/var/www/html/StreamProcessor/src/core/settings.py<module>   s  





    

	2





	

	
 
  	

x    