Ë
    Bêj#  ã                   óÖ	  — d dl Z d dlZd dlmZ d dlmZ  ee«      j                  «       j                  j                  Z		 d dl
mZ  ee	dz  «       e j                  j                  dd«      Ze j                  j                  dd	«      j!                  «       d
v Ze j                  j                  dd«      j%                  d«      ZeD � cg c]#  } | j)                  «       sŒ| j)                  «       ‘Œ% c} ZdD ]  ZeevsŒej/                  e«       Œ erdevrej/                  d«       e j                  j                  dd«      j%                  d«      ZeD �cg c]#  }|j)                  «       sŒ|j)                  «       ‘Œ% c}ZdZg d¢Zej/                  d«       g d¢ZdZde	dz  gddg d¢idœgZdZe j                  j                  dd«      j)                  «       Z e j                  j                  d d«      j)                  «       Z!e j                  j                  d!d«      j)                  «       Z"e re!re"s,e j                  j                  d"«      d#k7  rd d$l#m$Z$  e$d%«      ‚d&d'e e!e j                  j                  d(d«      e"e j                  j                  d)d*«      d+d,d-œd.œiZ%e j                  j                  d/d«      j)                  «       Z&e&r
d0e&ie%d&   d1<   d0d2id0d3id0d4id0d5igZ'd6Z(d7Z)dZ*dZ+d8Z,e	d9z  gZ-e	d:z  Z.d;Z/e	d<z  Z0d=Z1d>Z2d?d@dAdBdCdDœZ3 edE¬F«       edG¬H«      dddIœZ4e j                  j                  dJdK«      Z5e5j%                  d«      D �cg c]#  }|j)                  «       sŒ|j)                  «       ‘Œ% c}Z6dZ7e j                  j                  dLdM«      Z8e j                  j                  dNdO«      Z9e j                  j                  dPdQ«      Z:dRZ;d&dSdTdUdVœiZ<d&Z=e j                  j                  dWd	«      j!                  «       d
v Z>dXdYdZd[œZ?d\dZd]d^d_iid`dad]ej€                  dbœid`ge j                  j                  dcdd«      deœdfdgdhiid`gdidZdfgdjœd`gdidZdkœdlœdmœZAesfe j                  j                  dndo«      j!                  «       d
v ZBeBrdZCdZDdZEdZFdpZGe j                  j                  dqdo«      j!                  «       d
v rdZHdr„ ZIds„ ZJy# e$ r Y �Œ‡w xY wc c} w c c}w c c}w )té    N)Ú	timedelta)ÚPath)Úload_dotenvz.envÚDJANGO_SECRET_KEYz,dev-insecure-change-me-in-production-use-envÚDJANGO_DEBUGÚtrue)Ú1r   ÚyesÚDJANGO_ALLOWED_HOSTSzlocalhost,127.0.0.1ú,)z192.168.1.8z95.104.225.67zfinuniver-perm.ruzwww.finuniver-perm.ruÚ
testserverÚCSRF_TRUSTED_ORIGINSzahttps://finuniver-perm.ru,https://www.finuniver-perm.ru,https://95.104.225.67,https://192.168.1.8)ÚHTTP_X_FORWARDED_PROTOÚhttps)zdjango.contrib.adminzdjango.contrib.authzdjango.contrib.contenttypeszdjango.contrib.sessionszdjango.contrib.messageszdjango.contrib.staticfilesÚrest_frameworkÚrest_framework_simplejwtz(rest_framework_simplejwt.token_blacklistÚcorsheadersÚdrf_spectacularÚusersÚ	portfolioÚresumeztests.apps.ProjectTestsConfig)	z-django.middleware.security.SecurityMiddlewarez8portfolio_system.middleware.BlockProbeRequestsMiddlewarez4django.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portfolio_system.urlsz/django.template.backends.django.DjangoTemplatesÚ	templatesTÚcontext_processors)z(django.template.context_processors.debugz*django.template.context_processors.requestz+django.contrib.auth.context_processors.authz3django.contrib.messages.context_processors.messages)ÚBACKENDÚDIRSÚAPP_DIRSÚOPTIONSz!portfolio_system.wsgi.applicationÚMYSQL_DATABASEÚ Ú
MYSQL_USERÚ
MYSQL_HOSTÚDJANGO_SKIP_MYSQL_CHECKr	   )ÚImproperlyConfiguredu~   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ MYSQL_DATABASE, MYSQL_USER Ð¸ MYSQL_HOST (Ñ„Ð°Ð¹Ð» .env Ð² ÐºÐ¾Ñ€Ð½Ðµ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°). SQLite Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ñ‘Ð½.Údefaultzdjango.db.backends.mysqlÚMYSQL_PASSWORDÚ
MYSQL_PORTÚ3306Úutf8mb4zLSET sql_mode='STRICT_TRANS_TABLES', NAMES utf8mb4 COLLATE utf8mb4_unicode_ci)ÚcharsetÚinit_command)ÚENGINEÚNAMEÚUSERÚPASSWORDÚHOSTÚPORTr   ÚMYSQL_TEST_DATABASEr,   ÚTESTzHdjango.contrib.auth.password_validation.UserAttributeSimilarityValidatorz>django.contrib.auth.password_validation.MinimumLengthValidatorz?django.contrib.auth.password_validation.CommonPasswordValidatorz@django.contrib.auth.password_validation.NumericPasswordValidatorzru-ruzEurope/Moscowzstatic/ÚstaticÚstaticfileszmedia/Úmediazdjango.db.models.BigAutoFieldz
users.User)z9rest_framework_simplejwt.authentication.JWTAuthentication)z*rest_framework.permissions.IsAuthenticated)z!rest_framework.parsers.JSONParserz&rest_framework.parsers.MultiPartParserz!rest_framework.parsers.FormParserz"drf_spectacular.openapi.AutoSchemaz4portfolio_system.exceptions.custom_exception_handler)ÚDEFAULT_AUTHENTICATION_CLASSESÚDEFAULT_PERMISSION_CLASSESÚDEFAULT_PARSER_CLASSESÚDEFAULT_SCHEMA_CLASSÚEXCEPTION_HANDLERé<   )Úminutesé   )Údays)ÚACCESS_TOKEN_LIFETIMEÚREFRESH_TOKEN_LIFETIMEÚROTATE_REFRESH_TOKENSÚBLACKLIST_AFTER_ROTATIONÚCORS_ALLOWED_ORIGINSz+http://localhost:8000,http://127.0.0.1:8000ÚEMAIL_BACKENDz.django.core.mail.backends.console.EmailBackendÚDEFAULT_FROM_EMAILznoreply@portfolio.localÚFRONTEND_URLzhttp://127.0.0.1:8000z/login/z-django.core.cache.backends.locmem.LocMemCachezportfolio-ratelimiti,  )r   ÚLOCATIONÚTIMEOUTÚRATELIMIT_ENABLEu@   Ð¦Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ðµ Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿Ð¾Ñ€Ñ‚Ñ„Ð¾Ð»Ð¸Ð¾ APIz1.0.0F)ÚTITLEÚVERSIONÚSERVE_INCLUDE_SCHEMAé   ÚverboseÚformatz1%(asctime)s [%(levelname)s] %(name)s: %(message)sÚconsolezlogging.StreamHandler)ÚclassÚ	formatterÚstreamÚDJANGO_LOG_LEVELÚINFO)ÚhandlersÚlevelÚsuppress_probe_404z()z7portfolio_system.logging_filters.SuppressProbe404FilterÚWARNING)rV   rW   Ú	propagateÚfilters)rV   rW   rZ   )zdjango.requestzdjango.security)ÚversionÚdisable_existing_loggersÚ
formattersrV   Úrootr[   ÚloggersÚDJANGO_SECURE_COOKIESÚfalseÚDENYÚDJANGO_SECURE_SSL_REDIRECTc                 óä  — ddl }g }| j                  j                  d«      xs dj                  «       }|r'|j	                  d„ |j                  d«      D «       «       | j                  j                  d«      xs dj                  «       }|r|j                  |«       |D ]@  }|}d|v r#|j                  dd	«      d   j                  «       }	 |j                  |«       |c S  y
# t        $ r Y ŒOw xY w)ub   ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ð²Ð°Ð»Ð¸Ð´Ð½Ñ‹Ð¹ IP Ð¸Ð· X-Forwarded-For Ð¸Ð»Ð¸ REMOTE_ADDR (Ð±ÐµÐ· CIDR-Ð¼Ð°Ñ�ÐºÐ¸).r   NÚHTTP_X_FORWARDED_FORr   c              3   ó^   K  — | ]%  }|j                  «       sŒ|j                  «       –— Œ' y ­w©N)Ústrip)Ú.0Úparts     ú&portfolio\portfolio_system\settings.pyú	<genexpr>z%_extract_client_ip.<locals>.<genexpr>  s   è ø€ ÒU¨ÈÏ
É
Í�t—z‘z—|ÑUùs   ‚-˜-r   ÚREMOTE_ADDRú/rM   z	127.0.0.1)	Ú	ipaddressÚMETAÚgetri   ÚextendÚsplitÚappendÚ
ip_addressÚ
ValueError)Úrequestrp   ÚsourcesÚ	forwardedÚremoteÚ	candidateÚips          rl   Ú_extract_client_ipr~   ÿ   sæ   € ãà€GØ—‘×!Ñ!Ð"8Ó9Ò?¸R×FÑFÓH€IÙØ�‰ÑU°	·±ÀÓ0DÔUÔUØ�l‰l×Ñ˜}Ó-Ò3°×:Ñ:Ó<€FÙØ�‰�vÔàò ˆ	ØˆØ�"‰9Ø—‘˜#˜qÓ! !Ñ$×*Ñ*Ó,ˆBð	Ø× Ñ  Ô$ØŠIðð øô ò 	Ùð	ús   ÃC#Ã#	C/Ã.C/c                 ó   — t        | «      S rh   )r~   )rx   s    rl   ú<lambda>r€     s   € Ô(:¸7Ó(C€ ó    )KÚosÚsysÚdatetimer   Úpathlibr   Ú__file__ÚresolveÚparentÚBASE_DIRÚdotenvr   ÚImportErrorÚenvironrr   Ú
SECRET_KEYÚlowerÚDEBUGrt   Ú_allowed_hostsri   ÚALLOWED_HOSTSÚhostru   Ú_trusted_originsr   ÚSECURE_PROXY_SSL_HEADERÚINSTALLED_APPSÚ
MIDDLEWAREÚROOT_URLCONFÚ	TEMPLATESÚWSGI_APPLICATIONÚ	_mysql_dbÚ_mysql_userÚ_mysql_hostÚdjango.core.exceptionsr#   Ú	DATABASESÚ_mysql_testÚAUTH_PASSWORD_VALIDATORSÚLANGUAGE_CODEÚ	TIME_ZONEÚUSE_I18NÚUSE_TZÚ
STATIC_URLÚSTATICFILES_DIRSÚSTATIC_ROOTÚ	MEDIA_URLÚ
MEDIA_ROOTÚDEFAULT_AUTO_FIELDÚAUTH_USER_MODELÚREST_FRAMEWORKÚ
SIMPLE_JWTÚ_corsrC   ÚCORS_ALLOW_CREDENTIALSrD   rE   rF   Ú	LOGIN_URLÚCACHESÚRATELIMIT_USE_CACHErI   ÚSPECTACULAR_SETTINGSÚstdoutÚLOGGINGÚ_secureÚSESSION_COOKIE_SECUREÚCSRF_COOKIE_SECUREÚSECURE_BROWSER_XSS_FILTERÚSECURE_CONTENT_TYPE_NOSNIFFÚX_FRAME_OPTIONSÚSECURE_SSL_REDIRECTr~   ÚRATELIMIT_IP_META_KEY)ÚhÚus   00rl   ú<module>rÀ      s·  ðÛ 	Û 
Ý Ý á�‹>×!Ñ!Ó#×*Ñ*×1Ñ1€ð	Ý"á�˜6Ñ!Ô"ð �Z‰Z�^‰^ØÐGó€
ð 	�
‰
�‰�~ vÓ.×4Ñ4Ó6Ð:NÐN€à—‘—‘Ð 6Ð8MÓN×TÑTÐUXÓY€Ø$2Ö@˜q°a·g±gµi�—‘•Ò@€ØZò #€DØ�=Ò Ø×Ñ˜TÕ"ð#ñ 	ˆ\ Ñ.Ø×Ñ˜Ô&à—:‘:—>‘>ØØgó÷ �%ˆƒ*ð ð ,<ÖI a¸q¿w¹w½y˜Ÿ™�	ÒIÐ Ø=Ð ò€ð" × Ñ Ð5Ô 6ò
€
ð '€ð EØ˜KÑ'Ð(Øà ò #ð
ñ	ð€	ð  7Ð ð �J‰J�N‰NÐ+¨RÓ0×6Ñ6Ó8€	Ø�j‰j�n‰n˜\¨2Ó.×4Ñ4Ó6€Ø�j‰j�n‰n˜\¨2Ó.×4Ñ4Ó6€Ù™©;Ø	‡z�z‡~�~Ð/Ó0°CÒ7Ý?á"ð'ó
ð 	
ð Ø,ØØØ—J‘J—N‘NÐ#3°RÓ8ØØ—
‘
—‘˜|¨VÓ4à ð;ñ
ñð€	ð( �j‰j�n‰nÐ2°BÓ7×=Ñ=Ó?€ÙØ$*¨KÐ#8€IˆiÑ˜Ñ ð ÐWÐXØÐMÐNØÐNÐOØÐOÐPð	Ð ð €Ø€	Ø€Ø	€à€
Ø˜xÑ'Ð(Ð Ø˜Ñ&€à€	Ø˜Ñ€
à4Ð à€ð'ð #Rðð
 AØOñ€ñ '¨rÔ2Ù'¨QÔ/Ø!Ø $ñ	€
ð 	�
‰
�‰ØØ1ó	€ð ,1¯;©;°sÓ+;ÖI a¸q¿w¹w½y˜Ÿ™�	ÒIÐ ØÐ à—
‘
—‘ØÐEó€ð —Z‘Z—^‘^Ð$8Ð:SÓTÐ Ø�z‰z�~‰~˜nÐ.EÓF€à€	ð ØBØ)Øñð
€ð  Ð Ø—:‘:—>‘>Ð"4°fÓ=×CÑCÓEð Jð Ð ð PØØ!ñÐ ð Ø %àØÐIð
ðð 	Ø,Ø"Ø—j‘jñ
ðð �KØ—‘—‘Ð 2°FÓ;ñð
 	ØÐKð
ðð #˜ØØØ,Ð-ñ	
ð *3¨¸iÐV[Ñ\ññ1!€ñF Ø�j‰j�n‰nÐ4°gÓ>×DÑDÓFð Kð €Gñ
 Ø $ÐØ!ÐØ $ÐØ"&ÐØ€OØ	‡z�z‡~�~Ð2°GÓ<×BÑBÓDÐH\Ñ\Ø"Ðòñ0 DÑ øðW ò 	Úð	üò Aùò JùòV Js6   Á S ÃSÃSÅS!Å,S!ÍS&Í)S&ÓSÓS