
    n+gh                    %   S SK JrJrJrJrJrJrJr  S SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJrJrJrJr  S SK Jr  \" \\R*                  R-                  \R.                  " 5       S5      S	9rS
\l        S SKJr  S SKJr  S SKrS\R<                  S'   S\R<                  S'   \
" \5      r " S S\R@                  5      r!S SK	J
r
  S SK"r" " S S\R@                  5      r# " S S\R@                  5      r$S SKJr   " S S\R@                  5      r%S SKJr   " S S\R@                  5      r& " S S\R@                  5      r' " S S\R@                  5      r( " S S \R@                  5      r) " S! S"\R@                  5      r* " S# S$\R@                  5      r+ " S% S&\R@                  5      r,S SK-r-\R]                  5          \R^                  " 5         SSS5        S' r0\Rc                  S(S)S*/S+9S, 5       r2\Rc                  S-5      S. 5       r3\Rc                  S/5      S0 5       r4S SKrS SK"r"S S1K5J6r6  S S2K JrJrJrJrJrJ7r7Jr  S S3KJrJ8r8  S S4K9J:r:  S S5KJrJ#r#J,r,J;r;  \" \5      rS6r<1 S7kr=\<\R<                  S8'   \R|                  " \<S9S:9  S; r?\Rc                  S<S)S*/S+9S= 5       r@\Rc                  S>S)S*/S+9S? 5       rA\Rc                  S@S)S*/S+9SA 5       rB\Rc                  SBS)S*/S+9SC 5       rC\Rc                  SD5      SE 5       rD\Rc                  SF5      SG 5       rE\Rc                  SH5      SI 5       rF\Rc                  SJ5      SK 5       rG\Rc                  SL5      SM 5       rH\Rc                  SN5      SO 5       rI\Rc                  SP5      SQ 5       rJ\Rc                  SR5      SS 5       rKGS]ST jrLS SKJr  \Rc                  SUS)S*/S+9SV 5       rMS SWK9JNrN  \Rc                  SX5      SY 5       rOS SK Jr  SZ rP\Rc                  S[S\/S+9S] 5       rQ\Rc                  S^S)/S+9S_ 5       rRS SKJr  S S`K JrJrJrJ7r7  \Rc                  SaS*/S+9Sb 5       rS\Rc                  Sc5      Sd 5       rT\Rc                  SeS*/S+9Sf 5       rUS SgKVJWrW  S SgKVJWrW  ShrXSirYSjrZSkr[Slr\Sm r]\Rc                  SnS*/S+9So 5       r^\Rc                  SpS*/S+9Sq 5       r_S SgKVJWrW  S SK`r`S SrKaJbrb  S SsKcJdrd  S StKeJfrf  SurgSvrhSwriSxrjGS^Sy jrkS SzKJlrl  S SKJr  S SKrS SKrS S{KmJnrn  S S|KoJprp  S SzKJlrl  S SKJr  S SKr\R*                  R                  \R*                  R                  \s5      5      rt\R*                  R-                  \tS}S~5      ruS S{KmJnrn  S S|KoJprp  \pR                  " \n" S\u5      5        S rLS rw " S S\R@                  5      r;\R]                  5          \R^                  " 5         SSS5        \Rc                  SS)S*/S+9S 5       rx\Rc                  SS*/S+9S 5       ry\Rc                  SS*/S+9S 5       rz\Rc                  SS*/S+9S 5       r{\Rc                  SS)S*/S+9S 5       r|S SK JrJr  S SKJr  S SWK9JNrN  \Rc                  SS)/S+9S 5       r} " S S\R@                  5      r~\R]                  5          \R^                  " 5         SSS5        \Rc                  SS)S*/S+9S 5       r\Rc                  SS)S*/S+9S 5       r\Rc                  SS)/S+9S 5       rS r " S S\R@                  5      r\R]                  5          \R^                  " 5         SSS5        \Rc                  SS*/S+9S 5       r\Rc                  SS)/S+9S 5       r\Rc                  S5      S 5       r\Rc                  SS*/S+9S 5       r\Rc                  SS*/S+9S 5       rS r\Rc                  S5      S 5       rS S3KJrJ8r8  \Rc                  SS)/S+9S 5       rS SK JrJrJr  S SKJrJ8r8Jr  S SK"r"S SKJr  S SWK9JNrN  SSSSSSSS.r\Rc                  SS)/S+9S 5       rS SK Jr  \Rc                  SS*/S+9S 5       rS SK JrJr  \Rc                  SS*/S+9S 5       r\Rc                  SS*/S+9S 5       r\Rc                  SS)/S+9S 5       rS S`K JrJrJrJ7r7  S SKJr  \Rc                  SS*/S+9S 5       r\Rc                  SS)/S+9S 5       rS S`K JrJrJrJ7r7  S SKJr  \Rc                  SS*/S+9S 5       rS SK Jr  \Rc                  SS)/S+9S 5       r\Rc                  SS*/S+9S 5       rS SKJr  S SKJr  S SK	J
r
   " S S\R@                  5      rS SK JrJ7r7JrJrJrJrJr  \Rc                  SS)S*/S+9S 5       r\Rc                  S5      S 5       r\Rc                  S5      S 5       rS SWK9JNrN  \Rc                  S5      S 5       rS SKJr  \Rc                  SS)S*/S+9S 5       r\Rc                  SS*/S+9S 5       r\Rc                  SS*/S+9S 5       r\Rc                  SS)S*/S+9S 5       r\Rc                  SS)S*/S+9S 5       r\Rc                  SS)S*/S+9S 5       r\Rc                  SS)S*/S+9S 5       rS SK"r"S SKrS SK JrJ7r7JrJrJrJr  S SgKVJWrW  ShrSirSjrSr\W" \\5      r\Rc                  SS)S*/S+9S 5       r\Rc                  SS)S*/S+9S 5       r\Rc                  SS)S*/S+9S 5       r\Rc                  S5      S 5       r\Rc                  SS*/S+9S 5       r\Rc                  SS*/S+9S 5       rS r?S SK J7r7  S S1K5J6r6  S SKJr  S SKrSr<1 S7kr=SrSr\<\R<                  S8'   \Rc                  SS)S*/S+9S 5       rS SK JrJrJr  S SWK9JNrN  S SKr\GRp                  " \GRr                  S5        \Rc                  S5      S 5       r\Rc                  SS)/S+9S 5       r\Rc                  GS S*/S+9GS 5       r\Rc                  GSS\/S+9GS 5       r\Rc                  GS5      GS 5       rS SKr\R*                  R                  \R*                  R                  \s5      5      r\R*                  R-                  \GSGS5      rGS\ 3\R<                  S'   S\R<                  S'    " GS	 GS
\R@                  5      r\R]                  5          \R^                  " 5         SSS5        \Rc                  GSS)S*/S+9GS 5       r\Rc                  GSS)/S+9GS 5       r\Rc                  GSS)S*/S+9GS 5       r " GS GS\R@                  5      r\R]                  5          \R^                  " 5         SSS5        \Rc                  GSS)S*/S+9GS 5       r\R]                  5          \R^                  " 5         SSS5        \Rc                  GSS)S*/S+9GS 5       r\Rc                  GSS)/S+9GS 5       r " GS GS\R@                  5      r\R]                  5          \R^                  " 5         SSS5        \Rc                  GSS)S*/S+9GS 5       r\Rc                  GSS)S*/S+9GS 5       r\Rc                  GSS)/S+9GS  5       rS SKJr  S GS!KJr   " GS" GS#\R@                  5      r\R]                  5          \R^                  " 5         SSS5        S SKJr  S GS!KJr   " GS$ GS%\R@                  5      r " GS& GS'\R@                  5      r " GS( GS)\R@                  5      r\R]                  5          \R^                  " 5         SSS5        \Rc                  GS*S)S*/S+9GS+ 5       r\Rc                  GS,S)S*/S+9GS- 5       r\Rc                  GS.S)/S+9GS/ 5       r\Rc                  GS05      GS1 5       r\Rc                  GS2S)S*/S+9GS3 5       rS S3KJrJ8r8  \Rc                  GS4S*/S+9GS5 5       rS SK JrJr  \Rc                  GS6S*/S+9GS7 5       rS SKJr  \Rc                  GS8S*/S+9GS9 5       rS SKJr  \Rc                  GS:S*/S+9GS; 5       rS SKJr  \Rc                  GS<5      GS= 5       r\Rc                  GS>S)S*/S+9GS? 5       r\Rc                  GS@S)S*/S+9GSA 5       r\Rc                  GSBS*/S+9GSC 5       rS S4K9J:r:  \Rc                  GSD5      GSE 5       rS S4K9J:r:  S SKJr  \Rc                  GSF5      GSG 5       rS GSHK JrJrJrJr  S S3KJrJ8r8  S S4K9J:r:  \Rc                  GSIS)/S+9GSJ 5       r\Rc                  GSK5      GSL 5       r\Rc                  GSM5      GSN 5       r\Rc                  GSO5      GSP 5       r\Rc                  GSQ5      GSR 5       rS GSSK Jr  \Rc                  S(5      GST 5       r\Rc                  GSU5      GSV 5       rGSW r\Rc                  GSXS)S*/S+9GSY 5       r\GSZ:X  a>  \R]                  5          \R^                  " 5         SSS5        \GR                  S9GS[GS\9  gg! , (       d  f       GN[= f! , (       d  f       GNv= f! , (       d  f       GN= f! , (       d  f       GN2= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f(_      )Flaskrender_templaterequestredirecturl_forsessionjsonifyN)
SQLAlchemy)datetime)ZoneInfo)radianscossinsqrtatan2)r	   	templates)template_foldergizli_anahtar)A4)canvaszsqlite:///izin_takip.dbSQLALCHEMY_DATABASE_URIFSQLALCHEMY_TRACK_MODIFICATIONSc                       \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SSS9r	S r
Srg	)
Bolum   Tprimary_keyd   Funiquenullablec                 "    SU R                    S3$ )Nz<Bolum >nameselfs    )/Users/Alptekin/Desktop/izin_takip/app.py__repr__Bolum.__repr__#   s    1%%     N)__name__
__module____qualname____firstlineno__dbColumnIntegeridStringr%   r)   __static_attributes__r,   r+   r(   r   r      s5    	2::4	0B99RYYs^D5AD&r+   r   c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r	\R
                  " \R                  " S5      SS9r
\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      5      r\R
                  " \R                  " S5      5      r\R
                  " \R                  " S5      SSS9r\R
                  " \R                  " S	5      S
S9r\R
                  " \R                   SS9r\R
                  " \R                  " S5      5      r\R
                  " \R&                  5      r\R
                  " \R                   SS9rS rS rSrg)User,   Tr   2   Fr!   r   r      personeldefault   c                 h    U R                   (       a   [        R                  " U R                   5      $ 0 $ N)calisma_saatlerijsonloadsr&   s    r(   get_calisma_saatleriUser.get_calisma_saatleri:   s%      ::d3344	r+   c                 :    [         R                  " U5      U l        g rB   )rD   dumpsrC   )r'   saatler_dicts     r(   set_calisma_saatleriUser.set_calisma_saatleri?   s     $

< 8r+   )rC   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   
first_name	last_namepassword
departmentphone_numberemailroleBooleanactivecalisma_gunleriTextrC   is_shift_workerrF   rK   r6   r,   r+   r(   r8   r8   ,   s   	2::4	0B299R=59J		"))B-%8Iyy27H299R=)J99RYYr]+LIIbiinTDAE99RYYr]J7DYYrzz40Fii		#/Oyy)ii

E:O
9r+   r8   c                      \ rS rSr\R
                  " \R                  SSS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SSS9r\R                  " S	\R                   " S
SS9S9rS rSrg)SalaryF   Tr   autoincrementuser.idFr;      r!   r?   r8   salarieslazybackrefc                 V    SU R                    SU R                   SU R                   S3$ )Nz<Salary  - r#   )user_idsalary
valid_fromr&   s    r(   r)   Salary.__repr__O   s*    $,,s4;;-s4??:K1MMr+   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   
ForeignKeyrh   Floatri   Daterj   monthly_hoursrelationshipre   userr)   r6   r,   r+   r(   rZ   rZ   F   s    	2::4t	DBii

BMM)$<uMGYYrxx%0F277U3JIIbjj5#FM??62::jt+LMDNr+   rZ   c                      \ rS rSr\R
                  " \R                  SSS9r\R
                  " \R                  " S5      SS9r	\R
                  " \R                  " S5      SS9r
\R
                  " \R                  " S5      SS9r\R
                  " \R                  SS9r\R
                  " \R                  \R                   S9rS	rg
)OvertimeMultiplierV   Tr\   r<   Fr;      r>   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   day
start_timeend_timerm   
multiplierDateTimer   utcnow
created_atr6   r,   r+   r(   rs   rs   V   s    	2::4t	DB
))BIIbME
2C299Q<%8Jyy16H288e4J2;;@Jr+   rs   c                       \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  SS9r	\R
                  " \R                  " S5      SS9r\R
                  " \R                  SS9rSrg)	
SpecialDay`   Tr   Fr;   r   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rn   dater5   r%   rm   ry   r6   r,   r+   r(   r~   r~   `   sV    	2::4	0B99RWWu-D99RYYs^e4D288e4Jr+   r~   c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R                  " S\R                  " SSS	9S
9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  SS9r\R
                  " \R"                  \R&                  " \" S5      5      S9r\R
                  " \R,                  SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R,                  SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9rSrg)
IzinTalebik   Tr   r^   Fr;   r8   izin_taleplerirb   rd      Europe/Istanbulr>   r:   Bekliyorr,   N) r-   r.   r/   r0   r1   r2   r3   r4   rl   rh   rp   re   rq   r5   reasonrW   reason_textrz   r   nowr   request_datern   
start_daterw   end_daterx   statusbolum_yoneticisibolum_muduru	ik_mudurur6   r,   r+   r(   r   r   k   s[   	2::4	0Bii

BMM)$<uMG??62::6FT+RSDYYryy~6F))BGGd3K99R[[(,,xHY?Z2[\L277U3J299R=59Jyy51Hyy27HYYryy}j9F yy3$?99RYYs^d;L		"))C.48Ir+   r   c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                   \R$                  S9r\R(                  " S\R*                  " S	SS
9S9rSrg)CalismaSaatleri   Tr   r^   Fr;   r>   r8   
vardiyalarrb   rd   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   rh   rn   baslangic_tarihibitis_tarihiTimegiris_saaticikis_saatirz   r   r{   r|   rp   re   rq   r6   r,   r+   r(   r   r      s    	2::4	0Bii

BMM)$<uMGyy5999RWWu5L))BGGe4K))BGGe4K2;;@J ??62::l+NODr+   r   c                   f   \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SSS9r	\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9rSrg	)
   ModulAyarları   Tr   r<   Fr   r>   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   rS   rT   izin_modulugiris_cikis_modulubordro_moduluvardiya_modulur6   r,   r+   r(   r   r      s    	2::4	0B99RYYr]4%@D))BJJ5K2::t<IIbjj%8MYYrzz59Nr+   r   c                      \ rS rSr\R
                  " \R                  SSS9r\R
                  " \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  \R                   S9rS	 rS
rg)Bilgilendirme   Tr\   r   Fr;   r@   r>   c                 "    SU R                    S3$ )Nz<Bilgilendirme r#   )titler&   s    r(   r)   Bilgilendirme.__repr__   s     A..r+   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   r   rW   message
image_pathdepartmentsrz   r   r{   r|   r)   r6   r,   r+   r(   r   r      s    	2::4t	DBIIbiinu5Eii%0G299S>D9J))BIIcNU;K2;;@J/r+   r   c                       \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  \R                  " S5      SS9r
S rS	rg
)UserReadMessage   Tr   r^   Fr;   zbilgilendirme.idc                 <    SU R                    SU R                   S3$ )Nz<UserReadMessage user_id=z, mesaj_id=r#   rh   mesaj_idr&   s    r(   r)   UserReadMessage.__repr__   s     *4<<.DMM?RSTTr+   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   rh   r   r)   r6   r,   r+   r(   r   r      s\    	2::4	0Bii

BMM)$<uMGyyR]]3E%FQVWHUr+   r   c                   $   \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  " S5      SS9r\R                  " S\R                  " S	SS
9S9rSrg)	UserPhoto   Tr   r^   Fr;   r@   r8   photosrb   rd   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   rh   r5   
photo_pathrp   re   rq   r6   r,   r+   r(   r   r      sh    	2::4	0Bii

BMM)$<uMG299S>E:J??62::hT+JKDr+   r   c                     U (       aD  [         R                  " SU 5      R                  SS5      R                  S5      R	                  5       $ g)NNFKDASCIIignorezutf-8 )unicodedata	normalizeencodedecodelower)texts    r(   normalize_textr      s=    $$VT299'8LSST[\bbddr+   /GETPOST)methodsc                     [         R                  S:X  Gan  [        [         R                  R	                  S5      5      n [        [         R                  R	                  S5      5      n[         R                  R	                  S5      n[
        R                  R                  5       nS nU HM  n[        UR                  5      U :X  d  M  [        UR                  5      U:X  d  M9  UR                  U:X  d  MK  Un  O   U(       Gay  UR                  [        S'   UR                  [        S'   [        UR                  [         5      (       a#  SR#                  UR                  5      [        S'   O&UR                  (       a  UR                  OS	[        S'   [%        S
UR                   SUR                   35        [%        SUR                   S[        S    35        UR                  S:X  a  ['        [)        S5      5      $ UR                  S:X  a  ['        [)        S5      5      $ UR                  S:X  a  ['        [)        S5      5      $ UR                  S:X  a  ['        [)        S5      5      $ ['        [)        S5      5      $ [+        S5      $ [+        S5      $ )Nr   rM   rN   rO   rh   rS   z, rP   
Bilinmiyoru   ✅ Giriş Başarılı:  u
   🔹 Rol: z, Departman: admin
admin_homemanagermanager_homefactory_managerfactory_manager_home
hr_managerhr_manager_homepersonel_homezlogin_failed.html
login.html)r   methodr   formgetr8   queryallrM   rN   rO   r4   r   rS   
isinstancerP   listjoinprintr   r   r   )rM   rN   rO   usersmatched_userrq   s         r(   loginr      s   ~~#GLL$4$4\$BC
"7<<#3#3K#@A	<<##J/ 

 Ddoo.*<PTP^P^A_clAlquq~q~  CK  rK#  !-GI*//GFO ,11488(,		,2I2I(J%COCZCZ(?(?`l% ,\-D-D,EQ|G]G]F^_`J|001w|?T>UVW   G+ 566""i/ 788""&77(> ?@@""l2(9 :;; 899"#677<((r+   z/logoutc                  T    [         R                  " 5         [        [        S5      5      $ )Nr   )r   clearr   r   r,   r+   r(   logoutr      s    MMOGG$%%r+   z/personel_listesic                  T   S[         ;  a  g[         R                  " S5      n U S:X  a  [        S5      nOAU S:X  a  [        S5      nO/U S:X  a  [        S	5      nOU S
:X  a  [        S5      nO[        S5      n[        R                  R                  SS9R                  5       n[        SX!S9$ )Nrh      Yetkisiz erişim!  rS   r   r   r   r   r   r   r   r   index   )rU   zpersonel_listesi.html)r   back_url)r   r   r   r8   r   	filter_byr   r   )rS   r   r   s      r(   personel_listesir     s    ';;vD w<(		>*	"	"12		,-7#JJ   *..0E2%SSr+   )secure_filename)r   r   r   r   r   flashr   )r   	timedelta)func)r1   r8   r   
Departmentzstatic/uploads/profile_pictures>   gifjpgpngjpegUPLOAD_FOLDERT)exist_okc                 n    SU ;   =(       a*    U R                  SS5      S   R                  5       [        ;   $ )u!   Geçerli uzantıları kontrol et..r   )rsplitr   ALLOWED_EXTENSIONS)filenames    r(   allowed_filer   :  s0    (?WxsA6q9??AEWWWr+   z/add_personc                  l   S[         ;  a  g[         R                  " S5      n U S;   a  [        U  S35      O
[        S5      n[        R                  R                  5       n[        R                  S:X  Ga8  [        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      n[        R                  R                  S5      n[        S5        [        R                  R                  S5      n0 n	S Hg  n
[        R                  R                  SU
 35      n[        R                  R                  SU
 35      nX;   d  MN  U(       a  UOSU(       a  UOSS.X'   Mi     [        R                  R                  S5      S:H  n[        UUUUUSSR                  U5      [        R                  " U	5      US9	n[        R                   R!                  U5        [        R                   R#                  5         [        SUR$                   35        S[        R&                  ;   Ga$  [        R&                  S   nUR(                  S:X  a  [        S5        OU(       a  [+        UR(                  5      (       a  [-        UR(                  5      nSUR$                   SU 3n[.        R0                  R                  [2        R4                  S    U5      nUR7                  U5        [9        UR$                  US!9n[        R                   R!                  U5        [        R                   R#                  5         [        S"U 35        O[        S#5        [;        S$S%5        [=        [        S&5      5      $ [?        S'X!S(9$ ))Nrh   r   rS   r   r   r   r   _homer   r   rM   rN   rO   rP   rQ   u"   📌 Kullanıcı oluşturuluyor...calisma_gunleri[]	Pazartesi   Salı
   Çarşamba	   PerşembeCuma	CumartesiPazargiris_saati_cikis_saati_z08:00z18:00giriscikisrX   onr=   ,)	rM   rN   rO   rP   rQ   rS   rV   rC   rX   u   ✅ Kullanıcı eklendi: profile_photor   u   ❌ HATA: Dosya seçilmedi!user__r   )rh   photo_filenameu   ✅ Fotoğraf kaydedildi: u#   ❌ HATA: Geçersiz dosya formatı!u"   Yeni personel başarıyla eklendi!successr   add_person.html)bolumlerr   ) r   r   r   r   r   r   r   r   r   r   getlistr8   r   rD   rI   r1   addcommitr4   filesr   r   r   ospathappconfigsaver   r   r   r   )rS   r   r  rM   rN   rO   rP   rQ   rV   rC   gunr   r   rX   new_userfiler   r  	file_path
user_photos                       r(   
add_personr%  >  s   ';;vD*.2g*gw$u~&mtu|m}H##%H~~\\%%l3
LL$$[1	<<##J/\\%%l3
||''723 ",,../BC bC!,,**\#+?@K!,,**\#+?@K%,7[W,7[W) % c ",,**+<=E !!%HH_5!ZZ(89+

 	

x 


)(++78 gmm+==1D}}"34,t}}55*4==9#(Qxj!AGGLLO)DnU			)$ 'x{{>Z


z*

!!#2>2BCD;<2I> 2344,xSSr+   z/add_managerc            	         S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  5       n [
        R                  S:X  Ga  [
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S	5      n[
        R                  R                  S
5      nU(       d  gSR                  U5      n[        UUUUUSS9n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ [!        SU S9$ )Nrh   rS   r   r   r   rM   rN   rO   rQ   rP   u!   Lütfen en az bir bölüm seçin.  r  r   rM   rN   rO   rQ   rP   rS   r   zadd_manager.htmlr  r   r   r   r   r   r   r   r   r  r   r8   r1   r  r  r   r   r   )r  rM   rN   rO   rQ   r   department_strnew_managers           r(   add_managerr.    s   7;;v#6'#A'##%H~~\\%%l3
LL$$[1	<<##J/||''7ll**<8;+. !%%
 	

{#


-..-AAr+   z/add_factory_managerc            	         S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  5       n [
        R                  S:X  Ga  [
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S	5      n[
        R                  R                  S
5      nU(       d  gSR                  U5      n[        UUUUUSS9n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ [!        SU S9$ )Nrh   rS   r   r   r   rM   rN   rO   rQ   rP   r'  r  r   r)  r   zadd_factory_manager.htmlr*  r+  )r  rM   rN   rO   rQ   r   r,  new_factory_managers           r(   add_factory_managerr1    s   7;;v#6'#A'##%H~~\\%%l3
LL$$[1	<<##J/||''7ll**<8;+. #!%%"
 	

*+


-..5IIr+   z/add_hr_managerc            
      B   S[         ;  d  [         R                  " S5      S:w  a  g[        R                  S:X  Ga[  [        R                  R                  S5      n [        R                  R                  S5      n[        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      nU (       a  U(       a  U(       a  U(       a  U(       d  gUR                  S5      (       a  [        U5      S:w  a  g[        U UUUUSS9n[        R                   R                  U5        [        R                   R                  5         [        SU  SU SU SU 35        [        [        S5      5      $ [        S5      $ )Nrh   rS   r   r   r   rM   rN   rO   rQ   rR   )    Lütfen tüm alanları doldurun!r(  +90   )u:   Telefon numarası '+90XXXXXXXXXX' formatında olmalıdır!r(  r   )rM   rN   rO   rQ   rR   rS   u    ✅ Yeni İK Müdürü Eklendi: r   z, Telefon: z	, Email: r   zadd_hr_manager.html)r   r   r   r   r   
startswithlenr8   r1   r  r  r   r   r   r   )rM   rN   rO   rQ   rR   new_hr_managers         r(   add_hr_managerr9    sC   7;;v#6'#A'~~\\%%l3
LL$$[1	<<##J/||''7  ) (,V[: &&u--\1Bb1HT !%
 	

~&


0Ai[T`Saajkpjqrs-..011r+   z/personel_izinleric                     S[         ;  a  [        [        S5      5      $ [         S   n [         R                  " S5      n[        R
                  R                  U S9R                  [        5      R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                   [        R"                  [        R$                  [        R&                  [        R(                  5      R+                  5       nSSSSS	S
.n[        UR                  US	5      5      nU Vs/ s GH  nUR                  UR                  (       a  UR                  R-                  S5      OSUR                  (       a  UR                  S S OSUR                  (       a  UR                  R-                  S5      OSUR                  (       a  UR                  S S OSUR                  UR                   UR"                  UR$                  UR&                  (       a  UR&                  R/                  S5      S   OSUR(                  =(       d    SS.PGM!     nn[1        SXdS9$ s  snf )Nrh   r   rS   rh   r   r   r   r   r   )r   r   r   r   r=   %d.%m.%Yr   ru   r  r      Belirtilmemişr4   r   rw   r   rx   r   r   rM   rN   rP   r   zpersonel_izinleri.html)taleplerr   )r   r   r   r   r   r   r   r   r8   add_columnsr4   r   rw   r   rx   r   r   rM   rN   rP   r   r   strftimesplitr   )rh   rS   r?  role_back_urlsr   talepformatted_taleplers          r(   personel_izinlerirF    s   ())i G;;vD ))'):??EQQ 
ce   1'!#N ~))$@AH"  E ((CHCSCS%**33J?Y[272B2B%**2A.?D~~//
;SU.3nnr*"llll**<A<L<L%**005a8RT ,,@0@	
   " 3>Pdd#s   D&Jz/factory_manager/homec                  0   S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  SS9R                  5       n [        SU (       a  U R                  OSU (       a  U R                  OSU (       a  U R                  S9$ SS9$ )	Nrh   rS   r   r   rS   zfactory_manager_home.htmlFr   r   r   )
r   r   r   r   r   firstr   r   r   r   )ayarlars    r(   r   r   T  s    7;;v#6:K#K' "",,2C,DJJLG#+2G''9@755e/6g++	  =B	 r+   z/hr_manager/homec                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  SS9R                  5       n U (       d  SnSnSnO$U R                  nU R                  nU R                  n[        SUUUS	9$ )
Nrh   rS   r   r   rH  TFzhr_manager_home.htmlrI  )
r   r   r   r   r   rJ  r   r   r   r   )rK  r   r   r   s       r(   r   r   f  s    7;;v#6,#F' "",,,,?EEGG !))$77---#	 r+   z/personel_homec                     S[         ;  a  [        [        S5      5      $ [         R                  " S5      n [        R
                  R                  U S9R                  5       n[        [         R                  " SS5      R                  S5      5      n[        R
                  R                  [        U Vs/ s H&  n[        R                  R                  SU S35      PM(     sn6 5      R                  5       n[!        S	U(       a  UR"                  OS
U(       a  UR$                  OS
U(       a  UR&                  US9$ S
US9$ s  snf )Nrh   r   rS   rH  r   r   r  %zpersonel_home.htmlF)r   r   r   okunmamis_sayi)r   r   r   r   r   r   r   rJ  setrB  r   filteror_r   likecountr   r   r   r   )	user_rolemodulleruser_departmentsdeptrO  s        r(   r   r     s   ()) F#I ##--9-=CCEH 7;;}b9??DE #((//FVWFVdm'',,qa[9FVWXeg  ,4H((%:B86608h,,%  ?D%  Xs   1-D=z/manager/homec                  X   S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  SS9R                  5       n [        SU (       a  U R                  OSU (       a  U R                  OSU (       a  U R                  OSU (       a  U R                  S9$ SS9$ )	Nrh   rS   r   r   rH  zmanager_home.htmlF)r   r   r   r   )r   r   r   r   r   rJ  r   r   r   r   r   ayars    r(   r   r     s    7;;v#6)#C' ))y)9??AD (,D$$%6:422.2t**,0d(( 
 7< r+   z/admin/homec                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  SS9R                  5       n U (       dI  [        SSSSS9n [        R                   R                  U 5        [        R                   R                  5         [        SU R                  U R                  U R                  S	9$ )
Nrh   rS   r   r   rH  T)rS   r   r   r   zadmin_home.htmlrI  )r   r   r   r   r   rJ  r1   r  r  r   r   r   r   rZ  s    r(   r   r     s    7;;v#6'#A' ))w)7==?D 7QUeij


t


$$22((	 r+   z/admin/izin_talepleric                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  [
        5      R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [
        R                  [
        R                  [
        R                   [        R"                  5      R%                  [        R                  S:g  5      R'                  5       n U  Vs/ s GH"  nUR                  UR                  (       a  UR                  R)                  S5      OSUR                  (       a(  [+        UR                  5      S:  a  UR                  S S OSUR                  (       a  UR                  R)                  S5      OSUR                  (       a(  [+        UR                  5      S:  a  UR                  S S OSUR                  UR                  UR                  UR                  UR                   UR"                  S	.PGM%     nn[-        S
US9$ s  snf )Nrh   rS   r   r      İzin Verildir<  r   ru   r>  izin_talepleri_goster.htmlr?  )r   r   r   r   r   r8   r@  r4   r   rw   r   rx   r   r   rM   rN   rP   r   rQ  r   rA  r7  r   r?  rD  rE  s      r(   r   r     s   7;;v#6'#A' $$T*66z,,j.C.CZ00*2C2C4??DNNDOO	
 f_,	ce 0  E ((CHCSCS%**33J?Y[272B2Bs5K[K[G\`aGa%**2A.gi?D~~//
;SU.3nnU^^ATXYAYr*_allll**** ,,	
   " 7BTUU#s   .D*I$z/manager/izin_talepleric                  <   S[         ;  d  [         R                  " S5      S:w  a  g[        R                   R                  [        [         S   5      n U (       d  gU R                  R                  S5      n[        R                  R                  [        5      R                  [        R                  R                  U5      [        R                  R                  SS/5      5      R                  [        R                  [        R                  [        R                  [        R                   [        R"                  [        R$                  [        R                  [        R&                  [        R(                  [        R                  [        R*                  5      R-                  5       nU Vs/ s H  nUR                  UR                  (       a  UR                  R/                  S	5      OS
UR                  UR                   (       a  UR                   R/                  S	5      OS
UR"                  UR$                  UR                  UR&                  UR(                  UR                  R                  S5      S   UR*                  =(       d    SS.PM     nn[1        SUS9$ s  snf )Nrh   rS   r   r      Kullanıcı bulunamadı!  r  r   u   Yönetici Onayladır<  r   r   r=  r>  r_  r`  )r   r   r1   r8   rP   rB  r   r   r   rQ  in_r   r@  r4   r   rw   r   rx   r   rM   rN   r   r   rA  r   )rq   yetkili_bolumlerr?  rD  rE  s        r(   manager_izin_taleplerirh    s   7;;v#6)#C'::>>$	 23D.,,S1$$T*11,-z+@AB k 
ce @  E ((CHCSCS%**33J?Y[**?D~~//
;SUllll****005a8 ,,@0@	
   " 7BTUU#s   (C%Jc                     U (       aT   U(       a&  [         R                  " U S5      R                  S5      $ [         R                  " U S5      R                  S5      $ g! [         a    U s $ f = f)u   
Tarih formatlarını düzenler.
- `to_db=True` olduğunda `GG.AA.YYYY` → `YYYY-MM-DD` formatına çevirir (DB için).
- `to_db=False` olduğunda `YYYY-MM-DD` → `GG.AA.YYYY` formatına çevirir (Ekran için).
r<  %Y-%m-%dr   )r   strptimerA  
ValueError)	tarih_strto_dbs     r(   format_tarihro  )  sg     	((J?HHTT((J?HHTT   		s   ,A %A A,+A,z/talep_izinc                     S[         ;  a  [        [        S5      5      $ [        R                  S:X  Ga  [        R
                  R                  S5      n [        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S5      n[        R
                  R                  S	5      n[         R                  " S5      n[        R                   R                  [        U5      nU(       d  g
[        SUR                   SUR                   SUR                   S35        S nU" U 5      n U" U5      n[        SU  35        [        SU 35        S n	U	" UR                  5      n
[        SU
 35        S nSnUR                  S:X  a  S n[        R                  R                  SS9R!                  5       nU H_  nU	" UR                  5      nU
R#                  U5      n[        SUR                   SUR                   SU SU
 SU 3
5        U(       d  M]  Un  O   U(       a  UnSnGO)[        R                  R                  SS9R%                  5       nU(       a  UnSnGOSnGOUR                  S:X  a<  [        R                  R                  SS9R%                  5       nU(       a  UnSnGOSnGOUR                  S:X  a  SnGOS n[        R                  R                  SS9R!                  5       nU H\  nU	" UR                  5      nU
R#                  U5      n[        S UR                   SUR                   S!U SU 35        U(       d  MZ  Un  O   U(       a  UnSnO[        S"5        S n[        R                  R                  SS9R!                  5       nU HY  nU	" UR                  5      nU
R#                  U5      n[        S#UR                   SUR                   SU 35        U(       d  MW  Un  O   U(       a  UnSnOO[        S$5        [        R                  R                  SS9R%                  5       nU(       a  UnSnO[        S%5        Sn['        UUUU UUUUS&9n[        R                   R)                  U5        [        R                   R+                  5         [        S'UR                   SUR                   S(U 35        U(       ai  [        S)UR                   SUR                   S35        [-        UR.                  [0        S*UR                   S+UR                   SUR                   S,35        UR                  S:X  a  [        [        S-5      5      $ UR                  S:X  a  [        [        S.5      5      $ UR                  S:X  a  [        [        S/5      5      $ [        [        S05      5      $ [3        S15      $ )2Nrh   r   r   r   rw   r   rx   r   r   rc  u   🛠 İzin talep eden: r    ()c                     U (       d  g  [         R                  " U S5      R                  5       $ ! [         a    [	        SU  S35         g f = f)Nrj  &   ⚠️ HATA: Tarih formatı hatalı! (rr  r   rk  r   rl  r   tarihs    r(   ro   talep_izin.<locals>.format_tarihZ  sM    ((
;@@BB >ugQGHs   $/ A
Au#   ✅ İşlenen Başlangıç Tarihi: u   ✅ İşlenen Bitiş Tarihi: c                 f    U (       d
  [        5       $ [        S U R                  S5       5       5      $ )Nc              3      #    U  H4  oR                  5       R                  S S5      R                  SS5      v   M6     g7f)r   r   -N)stripreplace).0bs     r(   	<genexpr>6talep_izin.<locals>.normalize_bolum.<locals>.<genexpr>n  s3     ]L\qwwy((b199#rBBL\s   <>r  )rP  rB  )bolums    r(   normalize_bolum#talep_izin.<locals>.normalize_bolumk  s'    u]EKKX[L\]]]r+   u   🔍 İzin Sahibi Bölümleri: r   r   r   rH  u   🟠 Müdür Kontrol: u    | Müdür Bölümleri: u    | Personel Bölümleri: u    | Ortak Bölümler: !   Bölüm Müdürü Onayı Bekliyorr   ,   İnsan Kaynakları Müdürü Onayı Bekliyorr^  u   🔍 Yönetici Kontrol: u    | Yönetici Bölümleri: u@   ⚠️ Yönetici bulunamadı, fabrika müdürüne bakılıyor...u    🔍 Bölüm Müdürü Kontrol: uG   ⚠️ Bölüm müdürü de bulunamadı, İK müdürüne bakılıyor...u<   🚨 İK Müdürü de bulunamadı, izin otomatik onaylandı!)rh   r   r   r   rw   r   rx   r   u   📢 u*    izin talep etti! ✅ Kaydedildi. Statü: u(   📩 Onay merciine mesaj gönderiliyor: {"1":"", "2":""}r   r   r   r   ztalep_izin.html)r   r   r   r   r   r   r   r1   r8   r   rM   rN   rS   rP   r   r   r   intersectionrJ  r   r  r  whatsapp_mesaj_gonderrQ   TEMPLATE_IZIN_TALEBIr   )r   rw   r   rx   r   r   rh   izin_sahibiro  r  izin_sahibi_bolumlerionay_merciir   r   bolum_mudurlerimudurmudur_bolumleriortak_bolumlerr   r   bolum_yoneticileriyoneticiyonetici_bolumleri
yeni_taleps                           r(   
talep_izinr  D  s   ())~~\\%%l3
\\%%l3
<<##J/<<##J/!!(+ll&&}5++i(jjnnT732'(>(>'?qAVAV@WWYZeZjZjYkklmn	 "*-
)3J<@A-hZ89	^
 !00F0F G/0E/FGH  y(L"jj228I2JNNPO("1%2B2B"C!6!C!CO!T.u/?/?.@%//ARRjkzj{ |//D.EEZ[iZjl m ">#(L ) *< JJ00l0CIIK	"+KKF,F !22

,,,,?EEGI'G( -$F  $!%!5!59!5!E!I!I!K.%4X5H5H%I"!6!C!CDV!W01D1D0EQxGYGYFZ [00B/CCXYgXhj k ">'/$ /  .#XY  $"&**"6"6<M"6"N"R"R"T,E&5e6F6F&GO%:%G%G%XN<U=M=M<NaPUP_P_O``u  wE  vF  G  H%~', -  ".K@Fcd !%

 4 4, 4 G M M OI &/!O\]!0  #!!	

 	

z"


k,,-Q{/D/D.EEopvowxy <[=S=S<TTVWbWgWgVhhijk!(($+001+:P:P9QQRS^ShShRiilm y(GN344!22G$:;<<-G$5677GO455,--r+   )rR  z/factory_manager/izin_talepleric                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                   R                  [        [         S   5      n U (       d  gU R                  R                  S5      n[        SU R                   SU R                   S	U 35        [        R                  R                  [        5      R                  [        R                  S
:H  [        U Vs/ s H&  n[        R                  R                  SU S35      PM(     sn6 5      R!                  [        R"                  [        R$                  [        R&                  [        R(                  [        R*                  [        R,                  [        R                  [        R                  [        R                  [        R                  [        R.                  5      R1                  5       nU Vs/ s H  nUR"                  UR$                  (       a  UR$                  R3                  S5      OSUR&                  UR(                  (       a  UR(                  R3                  S5      OSUR*                  UR,                  UR                  UR                  UR                  UR                  R                  S5      S   UR.                  =(       d    SS.PM     nnU(       d  [        S5        [5        SUS9$ s  snf s  snf )Nrh   rS   r   r   rc  r  u   🛠 Bölüm Müdürü: r   u   , Yetkili Bölümler: r  rN  r<  r   r   r=  r>  u;   ⚠️ Bölüm Müdürüne düşen hiçbir izin talebi yok!r_  r`  )r   r   r1   r8   rP   rB  r   rM   rN   r   r   r   rQ  r   rR  rS  r@  r4   r   rw   r   rx   r   r   r   rA  r   )rq   rg  r  r?  rD  rE  s         r(   factory_manager_izin_taleplerir    s:   7;;v#6:K#K'::>>$	 23D.,,S1	$T__$5Qt~~6FF\]m\n
op $$T*11@@>NO>NUdoo""QugQ<0>NOP k 
ce @  E ((CHCSCS%**33J?Y[**?D~~//
;SUllll****005a8 ,,@0@	
   $ KL7BTUUK P s   #-K C%K%c                    ^ [         R                  " S5      n U (       d  g[        R                   R                  [        U 5      nU(       d  gSS/mUR                  S:X  a  g[        U4S jUR                  R                  S5       5       5      $ )	u`   Kullanıcının İnsan Kaynakları veya Planlama bölümünde olup olmadığını kontrol eder. rh   F   İnsan KaynaklarıPlanlamar   Tc              3   H   >#    U  H  oR                  5       T;   v   M     g 7frB   )r|  )r~  deprg  s     r(   r   yetki_kontrol.<locals>.<genexpr>V  s     U:T3yy{..:Ts   "r  )r   r   r1   r8   rS   anyrP   rB  )rh   rq   rg  s     @r(   yetki_kontrolr  E  sp    kk)$G::>>$(D,j9 yyG U$//:O:OPS:TUUUr+   z/izin_sil/<int:talep_id>DELETEc                 L   [        5       (       d  [        SSS.5      S4$ [        R                  R	                  [
        U 5      nU(       d  [        SSS.5      S4$ [        R                  R                  U5        [        R                  R                  5         [        SSS	.5      $ )
NFr   r  errorr      İzin talebi bulunamadı!re  Tu!   İzin talebi başarıyla silindi!r  r   )r  r	   r1   r   r   r   deleter  talep_idrD  s     r(   izin_silr  Z  s    ??53FGH#MMJJNN:x0E53NOPRUUUJJeJJt0STUUr+   z/izin_duzenle/<int:talep_id>c                     [        5       (       d  g[        R                  R                  [        U 5      nU(       d  g[        SUS9$ )Nu)   Bu izin talebini düzenleme yetkiniz yok!r   r  re  zizin_duzenle.html)rD  )r  r1   r   r   r   r   r  s     r(   izin_duzenler  k  s4    ???JJNN:x0E/.e<<r+   )r   r   r   r   z/izin_guncelle/<int:talep_id>c                    [        5       (       d  g[        R                  R                  [        U 5      nU(       d  g[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      nS	 nU" U5      Ul        U" U5      Ul        XAl	        XQl
        Xal        Xql        S
Ul        [        R                  R                  5         [        SS5        [!        [#        S0 [
        R$                  D65      $ )Nr  r  r   r   rw   rx   r   r   c                 ^    U (       a%  [         R                  " U S5      R                  5       $ S $ Nrj  )r   rk  r   )date_strs    r(   
parse_date!izin_guncelle.<locals>.parse_date  s%    AIx  :6;;=StSr+   r^  u&   İzin talebi başarıyla güncellendi!r  )izin_raporlari)r  r1   r   r   r   r   r   r   r   rw   rx   r   r   r   r  r   r   r   args)	r  rD  start_date_strend_date_strrw   rx   r   r   r  s	            r(   izin_gunceller  z  s   ???JJNN:x0E/\\%%l3N<<##J/L!!,/J||
+H\\h'F,,""=1KT ".1E-EN!NL#"ELJJ	
2I> G==>>r+   z/hr_manager/izin_talepleric                  H   S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  [
        5      R                  [        R                  S:H  5      R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [
        R                  [
        R                   [
        R"                  [        R$                  5      R'                  5       n U  Vs/ s H  nUR                  UR                  (       a  UR                  R)                  S5      OSUR                  UR                  (       a  UR                  R)                  S5      OSUR                  UR                  UR                  UR                  UR                   UR"                  R+                  S5      S	   UR$                  =(       d    S
S.PM     nn[-        SUS9$ s  snf )Nrh   rS   r   r   r  r<  r   r  r   r=  r>  r_  r`  )r   r   r   r   r   r8   rQ  r   r@  r4   r   rw   r   rx   r   rM   rN   rP   r   r   rA  rB  r   ra  s      r(   hr_manager_izin_taleplerir    s   7;;v#6,#F' $$T*11KKk 
ce >  E ((CHCSCS%**33J?Y[**?D~~//
;SUllll****005a8 ,,@0@	
   " 7BTUU#s   .C%Hz/izin_iptalc                     S[         ;  a  [        [        S5      5      $ [        R                  R                  S5      n [        R                  R                  U 5      nU(       d  gUR                  S:X  aQ  [        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ g)Nrh   r   r  r  r   rF  )zBu izin talebi iptal edilemez!r   )r   r   r   r   r   r   r   r   r   r1   r  r  )r  izin_talebis     r(   
izin_iptalr    s    ())||
+H""&&x0K/ Z'


+&


 34550r+   )Client"ACcf644212580de8814867a0e3fd9b5607 283fbb7a78fa071ac4026525afc6b147zwhatsapp:+15153750115"HX42d224aec5c65ed7c3a41c564c383a1d"HX6ad1fd61cc79de6f40a4b5afb44037aac                 &   U (       d  [        S5        g [        [        [        5      nUR                  R                  [        SU  3UUS9n[        SUR                   35        g! [         a!  n[        S[        U5       35         SnAgSnAff = f)	u5   Belirtilen numaraya Twilio şablon mesajı gönderir.u&   ❌ Hata: Geçersiz telefon numarası!F	whatsapp:from_tocontent_sidcontent_variablesu9   ✅ WhatsApp mesajı başarıyla gönderildi! Mesaj SID: Tu+   ❌ WhatsApp mesajı gönderilemedi! Hata: N)
r   r  ACCOUNT_SID
AUTH_TOKENmessagescreateTWILIO_WHATSAPP_NUMARASIsid	Exceptionstr)kimetemplate_sid	variablesclientr   es         r(   r  r    s    67Z0//((*4&!$'	 ) 
 	I'++WX ;CF8DEs   AA% %
B/BBz/izin_onaylac                     S[         ;  a  [        [        S5      5      $ [        R                  R                  S5      n [        R                   R                  [        U 5      nU(       d  g[        R                   R                  [        [         S   5      n[        R                   R                  [        UR                  5      nUR                  S;  a  g[        R                  R                  [        R                  R                  SUR                   S35      [        R                  S:H  5      R                  5       n[        R                  R                  [        R                  R                  SUR                   S35      [        R                  S	:H  5      R                  5       n[        R                  R!                  S
S9R                  5       n[#        SUR$                   SUR&                   SUR                   S35        UR$                   SUR&                   3UR(                  (       a  UR(                  OSUR*                  (       a  UR*                  OSUR,                  (       a  UR,                  OSS.n/ nS n	UR                  S:X  Ga  UR$                   SUR&                   3Ul        [#        SUR(                   35        U(       a_  SUl        UR1                  UR2                  [4        UR$                  45        SUR$                   SUR$                   SUR&                   S3n	GOSUl        U(       aV  UR1                  UR2                  [4        UR$                  45        SUR$                   SUR$                   SUR&                   S3n	GOUR                  S	:X  a  UR$                   SUR&                   3Ul        [#        SUR*                   35        SUl        U(       aV  UR1                  UR2                  [4        UR$                  45        SUR$                   SUR$                   SUR&                   S3n	GOmUR                  S
:X  Ga\  UR$                   SUR&                   3Ul        [#        SUR,                   35        SUl        [7        XUR8                  R$                   SUR8                  R&                   3UR(                  UR*                  UR,                  S.5      n
U(       a  UR:                  (       a  U
(       ax  SnSUR$                   SUR&                   SUR<                   SUR>                   S UR@                   S!3n[C        UR:                  XU
5      n[#        S"UR:                   S#U 35        SUR$                   SUR$                   SUR&                   S$3n	[        R                   RE                  5         U H9  u  pnU(       d  M  [G        XSU SUR$                   SUR&                   S$35        M;     U	(       ao  UR.                  S:X  a0  [#        S%UR2                   35        [G        UR2                  S&U	5        O/[#        S'UR2                   35        [G        UR2                  S(U	5        UR                  S:X  a  [        [        S)5      5      $ UR                  S	:X  a  [        [        S*5      5      $ UR                  S
:X  a  [        [        S+5      5      $ [        [        S,5      5      $ )-Nrh   r   r  r  r   r   r   r   rN  r   r   r   rH  u   🛠 Onaylayan kişi: r   rq  rr  r   )r=   r   r   r   u#   ✅ Bölüm Yöneticisi Onayladı: r  r  r  u   ", "3":"Bölüm Müdürü"}r  u   ", "3":"İK Müdürü"}u!   ✅ Bölüm Müdürü Onayladı: u   ✅ İK Müdürü Onayladı: r^  u   Tamamlanan İzin Talebi Formuz
            <p><b>uW   </b> adlı personelin izin talebi tamamlandı.</p>
            <p><b>İzin Tarihi:</b> rg   u)   </p>
            <p><b>İzin Sebebi:</b> u]   </p>
            <p>Bu e-posta sistem tarafından otomatik gönderilmiştir.</p>
            u5   📧 İK Müdürüne e-posta gönderildi (PDF ekli): u
   , Sonuç: r  u?   📩 Personel için Süreç Tamamlandı mesajı gönderiliyor: "HXe280d67881d8aef134645d7941094302u@   📩 Personel için Süreç Devam Ediyor mesajı gönderiliyor: r  rh  r  r  r   )$r   r   r   r   r   r   r1   r   r8   rh   rS   r   rQ  rP   rS  rJ  r   r   rM   rN   r   r   r   r   appendrQ   r  izin_belgesi_olusturrq   rR   r   r   r   eposta_gonderr  r  )r  r  rq   r  r   r   r   imzalarmesaj_gonderileceklerpersonel_mesajipdf_dosya_yolukonuicerikeposta_sonucnumaratemplateisims                    r(   izin_onaylar    s-   ())||
+H**..X6K/::>>$	 23D**..{':':;KyyDD'zz((q!7!7 8:;TYY)=Seg  ::$$q!7!7 8:;TYYJ[=[eg  

$$,$7==?I	"4??"31T^^4DBtyykQR
ST #--.a0E0E/FG<G<X<XK88^`4?4L4L00RT.9.C.C[**	G OyyI*.//):!DNN;K'L$3K4P4P3QRS!DK!((,*C*CEY[g[r[r)st '(>(>'?xGXXYZ^ZhZhYi  jF  GO!OK%,,i.D.DFZ\e\p\p-qr$+K,B,B+C8DOOK\\]^b^l^l]m  nF  #G	'	'&*oo%6a7G#H 1+2J2J1KLMK!(()*@*@BVXaXlXl)mn '(>(>'?xGXXYZ^ZhZhYi  jB  CO	l	"#'??"31T^^4D E-k.C.C-DEF,-k&++667q9I9I9S9S8TU + < <'44$..	I
  ^2D))*!K,A,A+B C%%0%;%;$<C@T@T?U V%%0%7%7$8 9F )$WLI)//IZZdeqdrst $K$:$:#;8DOOCTTUVZVdVdUeehiJJ #8$6!&gdV8KLbLbKccdepezezd{{~4  A #8
 0ST_TlTlSmno!+":":<`bqrTU`UmUmTnop!+":":<`bqryyI 89::	'	' @ABB	l	" ;<==G,-..r+   z/izin_reddetc                     S[         ;  a  [        [        S5      5      $ [        R                  R                  S5      n [        R                   R                  [        U 5      nU(       d  g[        R                   R                  [        [         S   5      n[        R                   R                  [        UR                  5      nUR                  S;  a  gSUl        SS	S
S.nUR                  UR                  S5      n[        UR                  SSU S35        [        SUR                   SU 35        [        R                   R                  5         UR                  S:X  a  [        [        S5      5      $ UR                  S:X  a  [        [        S5      5      $ UR                  S:X  a  [        [        S5      5      $ [        [        S5      5      $ )Nrh   r   r  r  r  r   
Reddedildiu	   Yöneticiu   Bölüm Müdürüu   İK MüdürüzBilinmeyen Yetkili"HXa08b5e36a9bfdd1a62241eee43ee3977r  r  u%   📩 Reddedilme mesajı gönderildi: z, Reddeden: r   rh  r   r  r   r  r   )r   r   r   r   r   r   r1   r   r8   rh   rS   r   r  rQ   r   r  )r  r  rq   r  role_mapreddeden_rols         r(   izin_reddetr    s~   ())||
+H**..X6K/::>>$	 23D**..{':':;K yyDD' &K .%H
 <<		+?@L   ,
,s# 
1+2J2J1K<XdWe
fgJJ yyI 89::	'	' @ABB	l	" ;<==G,-..r+   )MIMEMultipart)MIMEApplication)MIMETextsmtp.gmail.comK  zpersonelbilgimerkezi@gmail.comzxxvj mjlt ggom hrhvc                     [        5       n[        US'   XS'   XS'   UR                  [        US5      5        U(       a  [	        US5       n[        UR                  5       [        R                  R                  U5      S9nS S S 5        S[        R                  R                  U5       S3WS	'   UR                  U5        [        R                  " [        [        5      nUR                  5         UR                  [        [         5        UR#                  [        XR%                  5       5        UR'                  5         [)        S
U  35        g! , (       d  f       N= f! [*         a!  n[)        S[-        U5       35         S nAgS nAff = f)NFromToSubjecthtmlrb)Namezattachment; filename=""zContent-Dispositionu&   📧 E-posta başarıyla gönderildi: Tu   ❌ E-posta gönderme hatası: F)r  
GMAIL_USERattachr  openr  readr  r  basenamesmtplibSMTPSMTP_SERVER	SMTP_PORTstarttlsr   GMAIL_PASSWORDsendmail	as_stringquitr   r  r  )	alicir  r  
dosya_yolumsgdosyapartserverr  s	            r(   r  r    s,   o FD	I

8FF+, j$'5&uzz|"'':J:J::VW (,B277CSCST^C_B``a*bD&'JJt k95Z0
E==?;6ug>? ('  /Ax89s1   A	E 6EC
E 
EE 
F'FF)A3)TTFont)
pdfmetricsstaticzDejaVuSans.ttf
DejaVuSansc                     [        U [        5      (       a  U R                  S5      $  [        R                  " [	        U 5      S5      R                  S5      $ ! [
         a    [	        U 5      s $ f = f)uB   Tarihi 'YYYY-MM-DD' formatından 'DD.MM.YYYY' formatına çevirir.r<  rj  )r   r   rA  rk  r  rl  rv  s    r(   ro  ro  =  s^    %""~~j))  UZ8AA*MM 5zs   .A A/.A/c           	      J   SUR                    SUR                   S3n[        R                  R	                  SU5      n[
        R                  " U[        S9nUR                  SS5        UR                  SS	S
5        UR                  SSSUR                    SUR                   35        [        U S5      (       a  U R                  R                  S5      nOSnUR                  SSSU 35        UR                  SSS[        U R                  5       SU R                   35        UR                  SSS[        U R                   5       SU R"                   35        U R$                  (       a  U R&                   SU R$                   3OU R&                  nUR                  SSU5        UR                  SSS5        UR                  SSS5        UR                  SSS 5        UR                  S!SS"5        UR)                  5        VV	s0 s H  u  pX(       a  U	OS#_M     nnn	S$ n
U
" USS%UR+                  S&S#5      5        U
" USS%UR+                  S'S#5      5        U
" USS%UR+                  S(S#5      5        U
" US!S%UR+                  S)S#5      5        UR-                  5         U$ s  sn	nf )*Nizin_belgesi_r  z.pdfr  )pagesizer     iT  iL  u   PERSONEL İZİN BELGESİ<   i  z
Ad Soyad: r   r   z%d.%m.%Y - %H:%Mr   i  zBildirim Tarihi: i  u   İznin Başlama Tarihi: rg   i  u   İznin Bitiş Tarihi: i  r:      z	Personel:   u   Bölüm Sorumlusu:i  u   Bölüm Müdürü:i  u   İnsan Kaynakları Müdürü:r   c                     U(       aL  U R                  SS5        U R                  XU5        U R                  SS5        U R                  XS-
  S5        g g )Nr  r        u!   Dijital ortamda onaylanmıştır.)setFont
drawString)cxyimzas       r(   yazdir_imza)izin_belgesi_olustur.<locals>.yazdir_imzao  sG    IIlB'LLt$IIlB'LLF$GH r+   i  r=   r   r   r   )rM   rN   r  r  r   r   Canvasr  r"  r#  hasattrr   rA  ro  r   rw   r   rx   r   r   itemsr   r  )r  r  r  	dosya_adir  r$  bildirim_tarihimazeretkeyvaluer(  s              r(   r  r  J  ss    6 67q9N9N8OtTIh	2Jj2.AIIlB LLd67 LLTZ(>(>'?qAVAV@WXY {N++%22;;<NO&LLT..?@ALLS4\+BXBX5Y4ZZ]^i^t^t]uvwLLS2<@T@T3U2VVYZeZnZnYopq FQE\E\##$C(?(?'@AbmbtbtGLLS'" LLS+&LLc/0LLc/0LLc:; @G}}OseU+GOI 2sGKK
B783W[[);R@A3W[[<=3W[[b9:FFH% Ps   Jc                       \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SSS9r	Sr
g)	r   i  Tr   r   Fr   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   r%   r6   r,   r+   r(   r   r     s0    	2::4	0B99RYYs^D5ADr+   r   z/admin/bolumlerc                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                  S:X  a  [        R                  R                  S5      R                  5       n U (       ax  [        R                  R                  U S9R                  5       nU(       dF  [        U S9n[        R                   R                  U5        [        R                   R                  5         [        R                  R                  5       n[        SUS	9$ )
Nrh   rS   r   r   r   	bolum_adir$   zadmin_bolumler.htmlr*  )r   r   r   r   r   r|  r   r   r   rJ  r1   r  r  r   r   )r4  mevcut_bolum
yeni_bolumr  s       r(   r  r    s    7;;v#6'#A'~~LL$$[1779	%++5595EKKML'Y7


z*

!!# ##%H08DDr+   z/admin/bolum_sil/<int:bolum_id>c                 :   S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R                  U 5      nU(       a=  [        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ )Nrh   rS   r   r   r  )	r   r   r   r   r1   r  r  r   r   )bolum_idr  s     r(   	bolum_silr9    sh    7;;v#6'#A'  *E


% 


GJ'((r+   z#/admin/bolum_duzenle/<int:bolum_id>c                    S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R                  U 5      nU(       a  [        R
                  R                  S5      R                  5       nU(       aV  [        R                  R                  US9R                  5       nU(       d$  X!l	        [        R                   R                  5         [        [        S5      5      $ )Nrh   rS   r   r   r4  r$   r  )r   r   r   r   r   r   r|  r   rJ  r%   r1   r  r   r   )r8  r  yeni_adr5  s       r(   bolum_duzenler<    s    7;;v#6'#A'  *E,,"";/557%++5575CIIKL$


!!#GJ'((r+   z/delete_personel/<int:user_id>c                    S[         ;  d  [         R                  " S5      S;  a  g[        R                  R                  U 5      nU(       d  g[        R                  R                  UR                  S9R                  5       nU(       a  SUl        O[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ )	Nrh   rS   r   r   )   Personel bulunamadı!re  r;  r   r   )r   r   r8   r   r   r   r4   rJ  rU   r1   r  r  r   r   )rh   rq   izin_var_mis      r(   delete_personelr@    s    7;;v#6>s#s'::>>'"D+ "",,TWW,=CCEK


$JJG./00r+   z/edit_person/<int:user_id>c           
         S[         ;  a  g[         R                  " S5      nUS;   a  [        U S35      O
[        S5      n[        R                  R                  U 5      n[        R                  R                  5       nUR                  (       a  UR                  R                  S5      O/ n[        R                  S:X  Ga  [        R                  R                  S	5      Ul        [        R                  R                  S
5      Ul        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        UR"                  S;   a6  [        R                  R%                  S5      nSR'                  U5      Ul        O$[        R                  R                  S5      Ul        [        R                  R%                  S5      n0 nS Hf  n	[        R                  R                  SU	 35      n
[        R                  R                  SU	 35      nX;   d  MN  U
(       d  MW  U(       d  M`  XS.X'   Mh     SR'                  U5      Ul        [*        R,                  " U5      Ul        [        R                  R                  S5      S:H  Ul        [2        R                   R5                  5         [7        SS5        [9        [        S5      5      $ [;        SUUUSUUR0                  S9$ )Nrh   r   rS   r   r   r   r  r   rM   rN   rO   rQ   r  zdepartments[]rP   r   r  r	  r
  r  rX   r  u    Personel bilgileri güncellendi!r  r   r  T)rq   r  r   	edit_modemevcut_bolumlerrX   )r   r   r   r8   r   
get_or_404r   r   rP   rB  r   r   r   rM   rN   rO   rQ   rS   r  r   rV   rD   rI   rC   rX   r1   r  r   r   r   )rh   rS   r   rq   r  rC  secilen_bolumlerrV   rC   r   r   r   s               r(   edit_personrF    s<   ';;vD*.2g*gw$u~&mtu|m}H::  )D##%H48OOdoo++C0O~~!,,**<8 ))+6((4#LL,,^<99DD&||33OD!hh'78DO%ll..|<DO!,,../BCbC!,,**\#+?@K!,,**\#+?@K%++++2=(T % c  #xx8 $

+; <  '||//0ABdJ


0)< 2344',, r+   )r   r   z/izin_raporlaric                  F	   S[         ;  a  g[         R                  " S5      n [         R                  " S5      nS n[        R                  R                  S5      n[        R                  R                  S5      nU(       a  U" U5      OS nU(       a  U" U5      OS n[	        SU SU 35        [
        R                  R                  [        5      nU S	;   a  OU S
:X  a  [        R                  R                  U5      nU(       a  UR                  (       a  SUR                  ;   a  OUR                  R                  S5       V	s/ s H  oR                  5       PM     n
n	UR                  [        U
 V	s/ s H&  n	[        R                  R                  SU	 S35      PM(     sn	6 [        R                  S:H  5      nOggU(       a<  U(       a5  UR                  [
        R                   U:  [
        R"                  U:*  5      nO`U(       a#  UR                  [
        R                   U:  5      nO6U(       a#  UR                  [
        R"                  U:*  5      nO/ n[%        SUS9$ UR'                  [
        R(                  [
        R                   [
        R*                  [
        R"                  [
        R,                  [
        R.                  [
        R0                  [        R2                  [        R4                  [        R                  5
      R7                  5       n[	        S[9        U5       S35        U Vs/ s GHS  nUR(                  UR                   (       a  UR                   R;                  S5      OS[=        UR*                  [>        5      (       a  UR*                  O-UR*                  (       a  UR*                  R;                  S5      OSUR"                  (       a  UR"                  R;                  S5      OS[=        UR,                  [>        5      (       a  UR,                  O-UR,                  (       a  UR,                  R;                  S5      OSUR.                  UR0                  UR2                  UR4                  UR                  S.
PGMV     nn[%        SUS9$ s  sn	f s  sn	f s  snf )Nrh   r   rS   c                    U (       d  g  SU ;   a%  [         R                  " U S5      R                  5       $ SU ;   a%  [         R                  " U S5      R                  5       $  g ! [         a    [	        SU  S35         g f = f)Nr{  rj  r   r<  rt  rr  ru  rv  s    r(   ro  $izin_raporlari.<locals>.format_tarih4  s    	e|((
;@@BB((
;@@BB 
   	:5'CD	s   *A" *A" "A>=A>r   r   u!   📅 Gelen filtreleme tarihleri: rg   )r   r   r   r   r  r  rN  r=   zizin_raporlari.htmlr`  u   📊 Sonuçlar: u    kayıt bulundu.r<  r   %H:%Mr{  )
r4   r   rw   r   rx   r   r   rM   rN   rP   ) r   r   r   r  r   r   r   r   r8   rP   rB  r|  rQ  rR  ilikerS   r   r   r   r@  r4   rw   rx   r   r   rM   rN   r   r7  rA  r   r  )rU  rh   ro  start_date_rawend_date_rawr   r   r   rq   r  rW  r?  rD  rE  s                 r(   r  r  +  s   'F#Ikk)$G \\%%l3N<<##J/L1?n-TJ-9|L)tH	-j\XJ
GH !!$'E >>	i	zz~~g&DOO#t6;???;P;PQT;U#V;UCIIK;U #VGWXGW$////!C5
;GWXYII+
 ,' hZ22j@*BUBUYaBab	Z22j@A	Z00H<=4xHH    
ce  
S]O+;
<=   E ((CHCSCS%**33J?Y[.89I9I3.O.O%**  |A  |L  |LUZUeUeUnUnovUw  RU?D~~//
;SU*4U^^S*I*Isx  tB  tBu~~OfOfgnOo  HKllll****	
     0;MNNm $WXHs   R0-R-ERc                   0   \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SSS9rS	rg
)Konumlari  Tr   r   Fr;   g?r`   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   r%   rm   latlonmax_mesafe_kmr6   r,   r+   r(   rO  rO    sl    	2::4	0B99RYYs^e4D
))BHHu
-C
))BHHu
-CIIbhhDMr+   rO  z/admin/ayarlarc                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                  S:X  a  [        R                  R                  S5      n [        [        R                  R                  S5      5      n[        [        R                  R                  S5      5      n[        [        R                  R                  S	5      5      n[        XX#S
9n[        R                   R                  U5        [        R                   R                  5         [        SS5        [        R                  R                  5       n[        SUS9$ )Nrh   rS   r   r   r   r%   rP  rQ  rR  )r%   rP  rQ  rR  u#   ✅ Yeni konum başarıyla eklendi!r  zadmin_ayarlar.html)konumlar)r   r   r   r   r   floatrO  r1   r  r  r   r   r   r   )r%   rP  rQ  rR  
yeni_konumrT  s         r(   sistem_ayarlarrW    s    7;;v#6'#A'~~||'GLL$$U+,GLL$$U+,gll..?@4cW



z"


3Y?~~!!#H/(CCr+   z#/admin/konum_duzenle/<int:konum_id>c                    S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  U 5      n[
        R                  S:X  a  [
        R                  R                  S5      Ul        [        [
        R                  R                  S5      5      Ul
        [        [
        R                  R                  S5      5      Ul        [        [
        R                  R                  S	5      5      Ul        [        R                   R                  5         [        S
S5        [!        [#        S5      5      $ [%        SUS9$ )Nrh   rS   r   r   r   r%   rP  rQ  rR  u#   ✅ Konum başarıyla güncellendi!r  rW  zkonum_duzenle.html)konum)r   r   rO  r   rD  r   r   r   r%   rU  rP  rQ  rR  r1   r  r   r   r   r   konum_idrY  s     r(   konum_duzenler\    s    7;;v#6'#A'NN%%h/E~~\\%%f-
',,**512	',,**512	#GLL$4$4_$EF


3Y? 0122/u==r+   z/admin/konum_sil/<int:konum_id>c                 D   S[         ;  d  [         R                  " S5      S:w  a  g[        R                  R	                  U 5      n[
        R                   R                  U5        [
        R                   R                  5         [        SS5        [        [        S5      5      $ )Nrh   rS   r   r   u"   🗑️ Konum başarıyla silindi!dangerrW  )r   r   rO  r   rD  r1   r  r  r   r   r   rZ  s     r(   	konum_silr_    so    7;;v#6'#A'NN%%h/EJJeJJ	
.9G,-..r+   c                 $   Sn[        X -
  5      n[        X1-
  5      n[        US-  5      S-  [        [        U 5      5      [        [        U5      5      -  [        US-  5      S-  -  -   nS[        [	        U5      [	        SU-
  5      5      -  nXH-  $ )Ni     r   )r   r   r   r   r   )	lat1lon1lat2lon2Rdlatdlonar$  s	            r(   	haversinerj    s    A4;D4;DDFQWT]+c'$-.@@3tAv;PQ>QQA	E$q'4A;''A5Lr+   c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R                  " S\R                  " SSS	9S
9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                   SS9r\R
                  " \R                   SS9rSrg)PersonelHareketlerii  Tr   r^   Fr;   r8   
hareketlerrb   rd   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   rh   rp   re   rq   rz   giris_tarihicikis_tarihirm   	konum_lat	konum_lngr6   r,   r+   r(   rl  rl    s    	2::4	0Bii

BMM)$<uMG??62::l+NOD99R[[48L99R[[48L		"((U3I		"((U3Ir+   rl  z/konum_kontrolc                     [         R                  n [        U S   5      [        U S   5      p![        R                  R                  5       nU(       d  [        SSSS.5      $ U H]  n[        XUR                  UR                  5      nXTR                  ::  d  M5  [        SUR                   S3S	S
UR                  S.5      s  $    [        SWS-  S S3SSS.5      $ )Nlatitude	longitudeu/   ⚠️ Tanımlı çalışma alanı bulunamadı!ERRORFmesajr   r     ✅     alanındasınız!OKTrw  r   r  
   konum_adı-   ⚠️ Çalışma alanı dışındasınız! (  .0f    metre uzaktasınız)OUT)r   rD   rU  rO  r   r   r	   rj  rP  rQ  rR  r%   )datarP  rQ  rT  rY  mesafes         r(   konum_kontrolr    s    <<DT*%&d;.?(@ ~~!!#H!R^erwxyy 3UYY		:(((

|+=>#jj	  	  @S@QQfg  r+   z/konumc                      [        S5      $ )Nzkonum_kontrol.htmlr   r,   r+   r(   konum_sayfasir    s    /00r+   z/giris_cikisc                     S[         ;  d  [         R                  " S5      S;  a  g[         R                  " S5      n [        S5      [        S5      [        S5      [        S5      S.nUR                  U [        S5      5      n[        S	US
9$ )Nrh   rS   r=   r   r   r   r   r   r   r   r   zgiris_cikis.html)r   )r   r   r   r   )rS   back_url_mapr   s      r(   giris_cikisr    s~    7;;v#6>v#v';;vD O,>*"#9:/0	L go&>?H-AAr+   z
/giris_yapc                     S[         ;  a  [        SSS.5      S4$ [        R                  n U R	                  S5      nU R	                  S5      n[        X5      nUR	                  S5      (       a  [        [         S   [        R                  " 5       UUS	9n[        R                   R                  U5        [        R                   R                  5         [        S
SUR	                  S5       S3S.5      $ [        SUR	                  S5      S.5      $ )Nrh   Fr   r  r   rs  rt  r  )rh   rn  rp  rq  Trx  r|  u&    konumunda giriş işlemi başarılı!rw  )r   r	   r   rD   r   konum_kontrol_testrl  r   r   r1   r  r  )r  rs  rt  sonuc
yeni_giriss        r(   	giris_yapr  4  s    55HIJCOO<<Dxx
#H%Ix3Eyy(I&!	

 	

z"


4d599\;R:SSy4z{||5UYYw5GHIIr+   z
/cikis_yapc                     S[         ;  a  [        SSS.5      S4$ [        R                  n U R	                  S5      nU R	                  S5      n[        X5      nUR	                  S5      (       a  [        R                  R                  [         S   S S	9R                  [        R                  R                  5       5      R                  5       nU(       aY  [        R                  " 5       Ul        [         R                   R#                  5         [        S
SUR	                  S5       S3S.5      $ [        SSS.5      $ [        SUR	                  S5      S.5      $ )Nrh   Fr   r  r   rs  rt  r  rh   ro  Tu   🚪 r|  u)    konumunda çıkış işlemi başarılı!u4   ❌ Çıkış yapacak bir giriş kaydı bulunamadı!rw  )r   r	   r   rD   r   r  rl  r   r   order_byrn  descrJ  r   r   ro  r1   r  )r  rs  rt  r  	son_giriss        r(   	cikis_yapr  N  s'   55HIJCOO<<Dxx
#H%Ix3Eyy'--77I&T 8 

(&3388:
;EEG 	 %-\\^I"JJt%		,@W?X  YB  9C  D  E  Eu9opqq5UYYw5GHIIr+   c                    [         R                  R                  5       nU(       d  SSSS.$ [        S5      nSnU H|  n[	        [        U 5      [        U5      UR
                  UR                  5      nXeR                  ::  a!  SUR                   S3S	S
UR                  S.s  $ Xc:  d  Mn  UnUR                  nM~     SU SUS-  S S3SSS.$ )z*Personelin konumunu kontrol eden fonksiyonu2   ⚠️ Henüz tanımlı bir çalışma alanı yok!ru  Frv  infNrx  ry  rz  Tr{  r}  z
 konumuna r~  r  r  r  )	rO  r   r   rU  rj  rP  rQ  rR  r%   )rP  rQ  rT  en_yakin_mesafeen_yakin_konumrY  r  s          r(   r  r  i  s    ~~!!#HMY`mrssElON5:uSz599eiiH (((

|+=>#jj	  #$O"ZZN $ A@PPZ[jko[opsZt  uJ  K r+   z/son_giris_kontrolc                     S[         ;  a  [        SSS.5      S4$ [        R                  R	                  [         S   S S9R                  [        R                  R                  5       5      R                  5       n [        S[        U 5      05      $ )Nrh   Fr   r  r   r  giris_devam_ediyor)
r   r	   rl  r   r   r  rn  r  rJ  bool)r  s    r(   son_giris_kontrolr    s    55HIJCOO#))33GI<N]a3bkkl  mM  mM  mR  mR  mT  U  [  [  ]I($y/:;;r+   z/hareketlerc                     S[         ;  a  [        [        S5      5      $ [         S   n [        R                  " 5       R                  5       nU[        SS9-
  n[        R                  R                  SUR                  S5      5      n[        R                  R                  SUR                  S5      5      n[        R                  " US5      n[        R                  " US5      [        SS9-   n[        R                  R                  [        R                  U :H  [        R                   U:  [        R                   U:  5      R#                  [        R                   R%                  5       5      R'                  5       nU Vs/ s Ht  nUR                   (       a  UR                   R                  S	5      OS
UR(                  (       a  UR(                  R                  S	5      OSUR(                  (       a  SOSS.PMv     n	n[+        SXUS9$ s  snf )Nrh   r      daysr   rj  r   r   %d.%m.%Y %H:%M   —u   ⏳ Devam Ediyoru   ✅ Tamamlandıu   ⏳ Çalışıyor)rn  ro  durumzhareketler.htmlrm  r   r   )r   r   r   r   r   r   r   r   r  r   rA  rk  rl  r   rQ  rh   rn  r  r  r   ro  r   )
rh   todayseven_days_agor   r   start_datetimeend_datetimerm  hareketformatted_hareketlers
             r(   rm  rm    s   ())i G LLN!EYA..N !!,0G0G
0STJ||
ENN:,FGH &&z:>N$$Xz:YA=NNL %**11##w.((N:((<7 h"//4467	  " "G	 PWOcOcG0099:JKinOVOcOcG0099:JKi{*1*>*>&DW	

 "   ,9Mowxxs   >A;H)r   r   r   )r   r   time)
joinedloadr  r  r  r  r  r  r  )MondayTuesday	WednesdayThursdayFridaySaturdaySundayz/giris_cikis_raporlaric                    ^*^+ S[         ;  d  [         R                  " S5      S;  a  g[        R                  R                  [         S   5      n S n[        R
                  " 5       R                  5       nU" [        R                  R                  S5      5      =(       d    Um*U" [        R                  R                  S5      5      =(       d    Un[        ST* S	U 35        [        R                  R                  [        [        R                  5      5      R                  5       nU(       d  g
SnSnSnSn/ n	0 n
[        R                  R                  [        R                   [        R"                  " T*[$        R&                  5      :  [        R                   [        R"                  " U[$        R(                  5      :*  5      R                  5       n[+        5       n[+        5       n[+        5       n[+        5       n[+        5       nU GHg  n U R,                  m+U R.                   SU R0                   3nU R2                  nU R4                  (       a  U R4                  R7                  S5      O/ nU R8                  (       a   [:        R<                  " U R8                  5      O0 n[?        U+4S jU 5       5      nU*4S j[A        UT*-
  RB                  S-   5       5        GH  n[D        R                  URG                  S5      S5      n[H        R                  R                  [H        RJ                  T+:H  [H        RL                  U:*  [H        RN                  U:  5      RQ                  5       nU(       a  URR                  nURT                  nOLUU;  a  M  UR                  U0 5      R                  SS 5      nUR                  U0 5      R                  SS 5      n[W        U[X        5      (       a%  [        RZ                  " US5      R%                  5       n[W        U[X        5      (       a%  [        RZ                  " US5      R%                  5       n[        R"                  " UU5      n[        R"                  " UU5      n[\        R                  R                  [\        RJ                  T+:H  [\        R^                  S:H  [\        R`                  U:*  [\        Rb                  U:  5      RQ                  5       nU Vs/ s H7  nURJ                  T+:X  d  M  UR                   R                  5       U:X  d  M5  UPM9     nnU(       Gan  UR`                  RG                  S5      S-   URd                  -   n URb                  RG                  S5      S-   URf                  -   n!U U!S.U
T+'   URi                  T+5        U(       a  U H  n"U"R                   n#U"Rj                  n$U	Rm                  U"R,                  U R,                  U R.                  U R0                  UU#(       a  U#RG                  S5      OSU$(       a  U$RG                  S5      OSSU  SU! S3S .5        URi                  U"R,                  5        M     O?U	Rm                  S U R,                  U R.                  U R0                  USSS!U  SU! S3S .5        GM  URi                  T+5        U(       dB  U(       d8  U	Rm                  S U R,                  U R.                  U R0                  USSS"S .5        GM!  U GHh  n"U"R                   n#U"Rj                  n$U#U-
  Ro                  5       S#-  n%U$(       a  U$U-
  Ro                  5       S#-  n&U%U:  a  S$n'OU%U* :  a  S%n'OS&n'U&U:  a  S$n(OU&U* :  a  S%n(OS&n(U'S&:X  a	  U(S&:X  a  S'n)OTU'S$:X  a	  U(S&:X  a  S(n)OEU'S%:X  a	  U(S&:X  a  S)n)O6U'S&:X  a	  U(S$:X  a  S*n)O'U'S&:X  a	  U(S%:X  a  S+n)OS,n)OU%U:  a  S(n)OU%U* :  a  S)n)OS'n)U	Rm                  U"R,                  U R,                  U R.                  U R0                  UU#RG                  S5      U$(       a  U$RG                  S5      OST+U;  a  U)OS-S .5        URi                  U"R,                  5        GMk     GM     GMj     U H  n"U"RJ                  m+U"Rp                  n U"R                   n#U"Rj                  n$T+U;   d  T+U;   a  MA  U	Rm                  U"R,                  T+U R.                  U R0                  U R2                  U#(       a  U#RG                  S5      OSU$(       a  U$RG                  S5      OSS.S .5        M     [s        S/U	T*RG                  S05      URG                  S05      S19$ s  snf )2Nrh   rS   )r   r   r   r   r   c                 ~    U (       d  g  [         R                  " U S5      R                  5       $ ! [         a     g f = fr  )r   rk  r   rl  rv  s    r(   ro  +giris_cikis_raporlari.<locals>.format_tarih  s;    	$$UJ7<<>> 		s   $/ 
<<r   r   u"   📅 Filtreleme Tarih Aralığı: rg   )u'   Veritabanında kullanıcı bulunamadı.i     r!  r   r   r  c              3   @   >#    U  H  oR                   T:H  v   M     g 7frB   r;  )r~  hrh   s     r(   r  (giris_cikis_raporlari.<locals>.<genexpr>	  s     &U_yyG';_s   c              3   <   >#    U  H  nT[        US 9-   v   M     g7f)r  N)r   )r~  nr   s     r(   r  r  	  s     f>ej9!#44>es   r   %Ar   r  r  rJ  r^  r<  )startendr  r  z<button class='izin-button btn btn-primary' data-bs-toggle='modal' data-bs-target='#izinModal' 
                                         data-start='z' data-end='u   '>🔵 İzinli</button>)r4   rh   rM   rN   rP   rn  ro  r   z<button class='izin-button btn btn-primary' data-bs-toggle='modal' data-bs-target='#izinModal' 
                                     data-start='u   🔴 Hiç Giriş Yapmadır  gecerkenuygunu   🟢 Kurallara Uygunu   🟠 Geç Girişu   🟠 Erken Girişu   🟠 Geç Çıkışu   🟠 Erken Çıkışu   🔴 Düzensiz Giriş Çıkışu   🔵 İzinliu   🟡 Fazla Mesaizgiris_cikis_raporlari.htmlrj  r  ):r   r   r8   r   r   r   r   r   r  r   optionsr  rm  r   rl  rQ  rn  combiner  minmaxrP  r4   rM   rN   rP   rV   rB  rC   rD   rE   r  ranger  GUN_DONUSUMUrA  r   rh   r   r   rJ  r   r   r   r  rk  r   r   r   r   rw   rx   r  ro  r  total_secondsrq   r   ),rq   ro  r  r   r   GIRIS_EKSI_TOLERANSGIRIS_ARTI_TOLERANSCIKIS_ARTI_TOLERANSCIKIS_EKSI_TOLERANSr  izin_detaylarihareketler_tumucalismasi_gereken_user_idsfazla_mesai_user_idseklenen_kullanicilarizinli_kullanicilareklenen_hareket_ids	user_namerP   rV   rC   kullanici_giris_yapti_mirw  gun_adivardiyar   r   planlanmis_girisplanlanmis_cikisizin_varr  rm  izin_baslangic
izin_bitisr  rn  ro  giris_farkicikis_farkigiris_durumucikis_durumur   r   rh   s,                                             @@r(   giris_cikis_raporlarir    sk   7;;v#6>s#s'::>>'),-D LLN!Egll..|<=FJGLL,,Z89BUH	.zl#hZ
HIJJz$//:;??AE=N)//66((H,<,<Z,RR((H,<,<Xtxx,PP 
ce 
 "%55% %'''q(89	__
=A=Q=Q$..44S9WY@D@U@U4::d&;&;<[] $'&U_&U#U feXPZEZD`D`cdDd>efE"&&u~~d';R@G%++22''7200E9,,5 eg	  %11%11/1.227B?CCGTR.227B?CCGTR+s++&//WEJJL+s++&//WEJJL'//{C'//{C!''..""g-!!_4%%.##u,	
 eg  &5p_		W8L!QRQ_Q_QdQdQfjoQo!_Jp !)!4!4!=!=j!IC!ORZReRe!e%..77
CcIHL]L]]
4B:*Vw'#''0#-'.';';'.';';,33")**'+ww*.//)-*4WcL,A,ABR,SinWcL,A,ABR,Sin+66D5E\R\Q]]t'x
5 
 ,//

; $." )//"#'77&*oo%)^^&0(-(-'22@1Aj\Yp#t
1 
 &**73/(//"#'77&*oo%)^^&0(-(-"=	1 	 %&33&33+.>>MMORTT#/2B#B"Q"Q"SVX"XK"%88',$(;';;'.'."%88',$(;';;'.'.#w.<73J!7%.<73J!3%0\W5L!4%0\U5J!6%0\W5L!7!B #%88!3$(;';;!4!7$++!**#ww"&//!%",$0$9$9:J$KO[L$9$9:J$Kaf(/7J(JfP^	- 	 $''

3q &y g B #//||++++00G?R4R##**////GSL112BCY^GSL112BCY^(	%
 		 #( 7DXeoexex  zD  fE  PX  Pa  Pa  bl  Pm  n  nQ qs   &e>eez/update_giris_cikisc                     [         R                  n U R                  S5      nU R                  S5      nU R                  S5      nU R                  S5      nU(       d  [        SS05      S4$ US:X  d  U(       dV  [	        US S S	S	S
9n[
        R                  R                  U5        [
        R                  R                  5         UR                  n[        R                  R                  U5      nU(       d  [        SS05      S4$ US:X  a  [        R                  " US5      Ul        O2US:X  a  [        R                  " US5      Ul        O[        SS05      S4$ [
        R                  R                  5         [        SSS.5      $ )N	record_idfield	new_valuerh   r  u!   Kullanıcı kimliği bulunamadı!r(  nullr   )rh   rn  ro  rp  rq     Kayıt bulunamadı!re  rn  r  ro     Geçersiz alan!Tu   Veri başarıyla güncellendi!r  )r   rD   r   r	   rl  r1   r   r  r  r4   r   r   rk  rn  ro  )r  
hareket_idr  r  rh   yeni_hareketr  s          r(   update_giris_cikisr  	  sL   <<D+&JHHWE%Ihhy!G!DEFKKV:*
 	

|$


!__
!''++J7G!678#=='00<LM	.	 '00<LM!234c99JJt0PQRRr+   )r   r	   z/delete_giris_cikisc                  t   [         R                  n U R                  S5      nU R                  S5      nU R                  S5      nU(       a  U(       d  [        SS05      S4$ [        R
                  R                  XS9R                  5       nU(       d  [        SS05      S	4$ US
:X  a  S Ul        OUS:X  a  S Ul	        O[        SS05      S4$ UR                  (       d0  UR                  (       d  [        R                  R                  U5        [        R                  R                  5         [        SSS.5      $ )Nr  r  rh   r  u+   Hareket ID veya Kullanıcı ID bulunamadı!r(  )r4   rh   r  re  rn  ro  r  Tu   Veri başarıyla silindi!r  )r   rD   r   r	   rl  r   r   rJ  rn  ro  r1   r   r  r  )r  r  r  rh   r  s        r(   delete_giris_cikisr  	  s   <<D+&JHHWEhhy!GW!NOPRUUU "''11Z1QWWYG!678#== #	.	 #!234c99 (<(<


'"JJt0KLMMr+   z/debug_user_idc                  |    [         R                  n U R                  S5      n[        SU 35        [	        SSS.5      $ )Nrh   u1   📌 Kullanıcı Tıklama Algılandı: User ID = Tu    User ID terminale yazdırıldı.r  )r   rD   r   r   r	   )r  rh   s     r(   debug_user_idr  
  s:    <<Dhhy!G	=gY
GHt0RSTTr+   z/calisma_saatleric                     S[         ;  d  [         R                  " S5      S;  a  g[        R                   R                  [        [         S   5      n U (       d  gU R                  R                  S5      n[        R                  R                  [        R                  R                  U5      [        R                  S:H  5      R                  5       n[        SUS	9$ )
Nrh   rS   r   r   r   rc  r  r=   zcalisma_saatleri.html)personeller)r   r   r1   r8   rP   rB  r   rQ  rf  rS   r   r   )rq   r  r  s      r(   rC   rC   )
  s    7;;v#6>\#\'::>>$	 23D. $$S)H **##DOO$7$7$A499PZCZ[__aK2LLr+   z/calisma_saatleri_kaydetc                  0   S[         ;  d  [         R                  " S5      S;  a  g[        R                   R                  [        [         S   5      n U (       d  gU R                  R                  S5      n[        R                  R                  [        R                  R                  U5      5      R                  5       nSnU GH}  n[        R                  R                  SUR                   35      n[        R                  R                  S	UR                   35      n[        R                  R                  S
UR                   35      n[        R                  R                  SUR                   35      nU(       a  U(       a  U(       a  U(       d<  [        UR                   SUR                   S3S5        [!        [#        S5      5      s  $ [$        R&                  " US5      R)                  5       n[$        R&                  " US5      R)                  5       n[$        R&                  " US5      R+                  5       n[$        R&                  " US5      R+                  5       n[,        R                  R                  [,        R.                  UR                  :H  [,        R0                  U:H  [,        R2                  U:H  5      R5                  5       n	U	(       a/  [        UR                   SUR                   SU SU S3S5        GMB  [-        UR                  UUUUS9n
[        R                   R7                  U
5        US-  nGM     [        R                   R9                  5         US:  a  [        U S3S5        O[        SS5        [!        [#        S5      5      $ )Nrh   rS   r  r   rc  r  r   start_date_	end_date_r	  r
  r   u    için tüm alanları doldurun!r^  rC   rj  rJ  u    için rg   u    tarihleri zaten kayıtlı!warning)rh   r   r   r   r   r   u7    personelin çalışma saatleri başarıyla kaydedildi!r  uS   Yeni bir kayıt eklenmedi. Tüm personel için çalışma saatleri zaten kayıtlı!info)r   r   r1   r8   rP   rB  r   rQ  rf  r   r   r   r4   r   rM   rN   r   r   r   rk  r   r  r   rh   r   r   rJ  r  r  )rq   r  r  kaydedilen_personel_sayisir=   r   r   r   r   mevcut_kayityeni_calisma_saatis              r(   calisma_saatleri_kaydetr  A
  s   7;;v#6>\#\'::>>$	 23D.$$S)H**##DOO$7$7$ABFFHK!"\\%%HKK=&AB
<<##i}$=>ll&&hkk]'CDll&&hkk]'CD KX(()8+=+=*>>]^`hiG$6788 &&z:>CCE
$$Xz:??A''W=BBD''W=BBD ',,33##x{{2,,
:((H4
 %'	 	 X(()8+=+=*>gj\QTU]T^^yz  }F  G -KK'!##
 	

)*"a'"K  N JJ!A%+,,cdfopceklG./00r+   z/vardiya_goruntulec            	      
   S[         ;  d  [         R                  " S5      S;  a  g[        R                   R                  [        [         S   5      n U (       d  gU R                  R                  S5      n[        R                  R                  [        R                  R                  U5      [        R                  S:H  5      R                  5       nU Vs/ s H  o3R                  PM     nn[        SU5        [        S	U5        [        R                  R                  S
5      n[        R                  R                  S5      n[        R                  R!                  [        5      R                  [        R"                  R                  U5      5      nU(       a"  UR                  [        R$                  U:  5      nU(       a"  UR                  [        R&                  U:*  5      nUR)                  [        R*                  [        R,                  [        R$                  [        R&                  [        R.                  [        R0                  [        R                  5      R                  5       n[        SU5        [3        SXUS9$ s  snf )Nrh   rS   r  r   rc  r  r=   u   📌 Yöneticinin Bölümleri:u   📌 Personel ID'leri:r   r   u   📌 Vardiyalar Gönderiliyor:zvardiya_goruntule.html)r   r   r   )r   r   r1   r8   rP   rB  r   rQ  rf  rS   r   r4   r   r   r  r   r   rh   r   r   r@  rM   rN   r   r   r   )	rq   r  r  ppersonel_idsr   r   r   r   s	            r(   vardiya_goruntuler  
  s   7;;v#6>\#\'::>>$	 23D. $$S)H**##DOO$7$7$A499PZCZ[__aK"-.+QDD+L. 

*H5	
"L1 !!,/J||
+H!!&&t,33O4K4K4O4OP\4]^E_==KL_99XEF""(($$#### 
ce  

*J73
ltuu7 /s   J z!/vardiya_duzenle/<int:vardiya_id>c                    S[         ;  d  [         R                  " S5      S;  a  g[        R                   R                  [        U 5      nU(       d   [	        SS5        [        [        S5      5      $ [        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      nU(       a  U(       a  U(       a  U(       d  [	        SS5        [        [        SU S95      $ [        R                  " US5      R                  5       n[        R                  " US5      R                  5       n[        R                  " US5      R                  5       n[        R                  " US5      R                  5       nUR                  U:X  aP  UR                  U:X  a@  UR                  U:X  a0  UR                   U:X  a   [	        SS5        [        [        S5      5      $ X!l        X1l        XAl        XQl        [        R                   R#                  5         [	        SS5        [        [        S5      5      $ )Nrh   rS   r  r      Vardiya bulunamadı!r^  r  r   r   r   r   u*   Tüm alanları doldurmanız gerekmektedir!vardiya_duzenle_form)
vardiya_idrj  rJ  u!   Hiçbir değişiklik yapılmadı!r  u!   Vardiya başarıyla güncellendi!r  )r   r   r1   r   r   r   r   r   r   r   rk  r   r  r   r   r   r   r  )r  r  r   r   r   r   s         r(   vardiya_duzenler  
  s   7;;v#6>\#\'jjnn_j9G$h/ 3455!!,/J||
+H,,""=1K,,""=1K X[:HE 6:NOO "":z:??AJ  :6;;=H##K9>>@K##K9>>@K 	  J.({*{*16: 3455  *#%%JJ	
-y9G/011r+   r  c                     S[         ;  d  [         R                  " S5      S;  a  g[        R                   R                  [        U 5      nU(       d   [	        SS5        [        [        S5      5      $ [        SUS	9$ )
Nrh   rS   r  r   r  r^  r  zvardiya_duzenle.html)r  )r   r   r1   r   r   r   r   r   r  r  s     r(   r  r  
  s_    7;;v#6>\#\'jjnn_j9G$h/ 345517CCr+   z/vardiya_sil/<int:vardiya_id>c                    S[         ;  d  [         R                  " S5      S;  a  g[        R                  R                  U 5      nU(       d   [	        SS5        [        [        S5      5      $ [        R                   R                  U5        [        R                   R                  5         [	        SS	5        [        [        S5      5      $ )
Nrh   rS   r  r   u(   Silmek istediğiniz vardiya bulunamadı!r^  r  u   Vardiya başarıyla silindi!r  )
r   r   r   r   r   r   r   r1   r  r  r	  s     r(   vardiya_silr  
  s    7;;v#6>\#\'##''
3G8(C 3455JJgJJ	
()4G/011r+   c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  S S9r\R
                  " \R                  SS9r\R                   " S	\R"                  " S
SS9S9rSrg)
GorusOnerii  Tr   r^   Fr;   c                  @    [         R                  " [        S5      5      $ )Nr   )r   r   r   r,   r+   r(   <lambda>GorusOneri.<lambda>  s    XN_E`8ar+   r>   r8   gorus_onerirb   rd   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   rh   rW   r   rz   r|   rT   okundurp   re   rq   r6   r,   r+   r(   r  r    s    	2::4	0Bii

BMM)$<uMGii%0G2;;0abJYYrzz51F??62::m$+OPDr+   r  )r   r   r   r   r   r   r   z/gorus_oneri_gonderc                     S[         ;  a  [        [        S5      5      $ [        R                   R	                  [
        [         S   5      n U (       d  [        [        S5      5      $ SSSSS.nUR	                  U R                  S5      n[        R                  S:X  a  [        R                  R	                  S	5      nU(       a]  [        U R                  US
9n[        R                   R                  U5        [        R                   R                  5         [        SS5        [        R                  R!                  U R                  S9R#                  [        R$                  R'                  5       5      R)                  5       n[+        SXRS9$ )Nrh   r   r   r   r   r   r  r   r   )rh   r   u.   Görüş ve öneriniz başarıyla gönderildi!r  r;  zgorus_oneri_gonder.html)gorus_onerileri
home_route)r   r   r   r1   r   r8   rS   r   r   r   r  r4   r  r  r   r   r   r  r|   r  r   r   )rq   home_routesr  r   
yeni_onerir  s         r(   gorus_onerisi_gonderr  -  s   ())::>>$	 23D()) $!1'	K O<J~~,,""9-#DGGWEJJJNN:&JJBIN !&&000AJJ:K`K`KeKeKghllnO4ommr+   z/gorus_onerileric                     S[         ;  d  [         R                  " S5      S;  a  g[        R                  R	                  [
        5      R                  [        R                  [        R                  [        R                  [        R                  [
        R                  [
        R                  5      R                  [        R                  R                  5       5      R                  5       n [         R                  " S5      S:X  aL  [        R                  R!                  SS9R#                  SS	05        [$        R                   R'                  5         [)        S
U S9$ )Nrh   rS   r   r   r   r   Fr  r  Tzgorus_onerileri.htmlr  )r   r   r  r   r   r8   r@  r4   r   r|   r  rM   rN   r  r  r   r   updater1   r  r   r  s    r(   r  r  R  s    7;;v#6>U#U' !&&++D1== hz$$))+,SSU  {{6l*""%"07748HI


1?SSr+   z/okunmamis_oneri_sayisic                      S[         ;  d  [         R                  " S5      S;  a  [        SS05      $ [        R                  R                  SS9R                  5       n [        SU 05      $ )Nrh   rS   r  rT  r   Fr  )r   r   r	   r  r   r   rT  )okunmamis_sayisis    r(   okunmamis_oneri_sayisir   o  s`    7;;v#6>U#U|$$ "''111?EEGG-.//r+   z/bekleyen_izin_sayisic                     S[         ;  a  [        SS05      $ [        R                   R                  [        [         S   5      n U (       d  [        SS05      $ [        SU R                   SU R                   SU R                   S35        U R                  S:X  a{  [        R                  R                  [        [        R                  S	:H  [        R                  S
:H  [        R                  S:H  5      5      R                  5       n[        SU 35        GOU R                  S:X  a  U R                  R!                  S5      n[        R                  R#                  [        5      R                  [        U Vs/ s H4  n[        R                  R%                  SUR'                  5        S35      PM6     sn6 [        R                  S	:H  5      R                  5       n[        SU 35        GO<U R                  S:X  a  U R                  R!                  S5      n[        R                  R#                  [        5      R                  [        U Vs/ s H4  n[        R                  R%                  SUR'                  5        S35      PM6     sn6 [        R                  S
:H  5      R                  5       n[        SU 35        OjU R                  S:X  aM  [        R                  R                  [        R                  S:H  5      R                  5       n[        SU 35        OSn[        S5        [        SSU05        [        SU05      $ s  snf s  snf )Nrh   rT  r   u   🛠 Kullanıcı: r   rq  rr  r   r   r  r  u0   📢 Admin için bekleyen toplam izin sayısı: r   r  rN  u+   📢 Manager için bekleyen izin sayısı: r   u3   📢 Factory Manager için bekleyen izin sayısı: r   u.   📢 HR Manager için bekleyen izin sayısı: u6   ❌ Yetkili rol bulunamadı, bekleyen izin sayısı: 0u   📌 API Yanıtı:)r   r	   r1   r   r8   r   rM   rN   rS   r   r   rQ  rR  r   rT  rP   rB  r   rS  r|  )rq   rT  rg  r  s       r(   bekleyen_izin_sayisir"    s   |$$::>>$	 23D|$$	t/q0@499+Q
OPyyG  ''!!Z/!!%HH!!%SS
 %' 	 	@HI	i	??005  %%d+22JZ[JZ$//&&5;;=/';<JZ[\+
 %' 	 	;E7CD	'	'??005  %%d+22JZ[JZ$//&&5;;=/';<JZ[\!DD
 %' 	 	CE7KL	l	"  ''!OO

%' 	 	>ugFG FG	
% 01GU#$$3 \ \s   5;L?;Mz/salaryc                  |   S[         ;  d  [         R                  " S5      S;  a  g[        R                  R	                  5       n [
        R                  R	                  5       n[        R                  S:X  Ga  [        R                  R                  S5      n[        R                  R                  S5      nUS:X  GaG  [        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      nU(       a  U(       a  U(       a  U(       d   [        SS5        [        [        S5      5      $  [        R                  " US5      R                  5       n[        U[!        U5      U[#        U5      S9n	[$        R                   R'                  U	5        [$        R                   R)                  5         [        SS5        GOmUS:X  a  [
        R                  R                  U5      nU(       a  [!        [        R                  R                  S	5      5      Ul        [        R                  " [        R                  R                  S
5      S5      R                  5       Ul        [#        [        R                  R                  S5      5      Ul        [$        R                   R)                  5         [        SS5        OuUS:X  ao  [
        R                  R                  U5      nU(       aI  [$        R                   R1                  U5        [$        R                   R)                  5         [        SS5        [        [        S5      5      $ [3        SXS9$ ! [         a#    [        SS5        [        [        S5      5      s $ f = f)Nrh   rS   r  r   r   action	salary_idr  ri   rj   ro   &   Tüm alanları doldurmanız gerekiyor!r^  manage_salaryrj  u(   Geçersiz tarih formatı! (Yıl-Ay-Gün))rh   ri   rj   ro   u"   Maaş bilgisi başarıyla eklendi!r  edit'   Maaş bilgisi başarıyla güncellendi!r  u   Maaş kaydı silindi!r  zsalary.html)r   ra   )r   r   r8   r   r   rZ   r   r   r   r   r   r   r   rk  r   rl  rU  intr1   r  r  ri   rj   ro   r  r   )
r   ra   r$  r%  rh   ri   valid_from_strro   rj   
new_salarys
             r(   r'  r'    s   7;;v#6>U#U'JJNNE||!H~~!!(+LL$$[1	U?ll&&y1G\\%%h/F$\\--l;N#LL,,_=M&m>I 899:%..~zJOOQ

  V}%!-0	J JJNN:&JJ6	Bv\\%%i0F %gll&6&6x&@ A$,$5$5gll6F6F|6TV`$a$f$f$h!'*7<<+;+;O+L'M$

!!#?Kx\\%%i0F

!!&)

!!#-y9011=IIC  :@(K 899:s   5%N *N;:N;z/salary_edit/<int:salary_id>c                    S[         ;  d  [         R                  " S5      S;  a  g[        R                  R	                  U 5      n[
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      nU(       a  U(       a  U(       d   [        SS	5        [        [        S
5      5      $  [        U5      Ul        [        R                  " US5      R                  5       Ul        [!        U5      Ul        [$        R                   R'                  5         [        SS5        [        [        S
5      5      $ ! [(         a"  n[        S[+        U5       3S	5         S nAN;S nAff = f)Nrh   rS   r  r   ri   rj   ro   r&  r^  r'  rj  r)  r     Hata oluştu: )r   r   rZ   r   rD  r   r   r   r   r   rU  ri   r   rk  r   rj   r*  ro   r1   r  r  r  )r%  ri   salary_amountrj   ro   r  s         r(   salary_editr0    s%   7;;v#6>U#U'\\$$Y/F LL$$X.M!!,/JLL$$_5M
-6A0113m,$--j*EJJL"=1


7C GO,--  3s1vh'223s   A4E   
F*FFz/salary_delete/<int:salary_id>c                    S[         ;  d  [         R                  " S5      S;  a  g[        R                  R	                  U 5      n [
        R                   R                  U5        [
        R                   R                  5         [        SS5        [        [        S	5      5      $ ! [         a"  n[        S[        U5       3S5         S nAN;S nAff = f)
Nrh   rS   r  r   u!   Maaş kaydı başarıyla silindi!r  r.  r^  r'  )r   r   rZ   r   rD  r1   r  r  r   r  r  r   r   )r%  ri   r  s      r(   salary_deleter2    s    7;;v#6>U#U'\\$$Y/F3


&!


19= GO,--  3s1vh'223s   A	B# #
C-C

Cz	/overtimec                     S[         ;  d  [         R                  " S5      S;  a  gSSSSS	S
SS.n U R                  5        VVs0 s H  u  pX!_M	     nnn[        R                  R                  5       nU H.  nUR                  UR                  UR                  5      Ul        M0     [        R                  S:X  Ga  [        R                  R                  S5      nUS:X  Ga)  [        R                  R                  S5      nU R                  Xw5      n[        R                  R                  S5      n	[        R                  R                  S5      n
[        R                  R                  S5      nU(       a  U	(       a  U
(       a  U(       d   [        SS5        [        [        S5      5      $ [        UU	U
[        U5      S9n[        R                   R!                  U5        [        R                   R#                  5         [        SS5        GOUS:X  Ga  [        R                  R                  S5      n[        R                  R                  U5      nU(       a  [        R                  R                  S5      nU R                  Xw5      Ul        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        [        [        R                  R                  S5      5      Ul        [        R                   R#                  5         [        SS5        OUS:X  a  [        R                  R                  S5      n[        R                  R                  U5      nU(       aI  [        R                   R+                  U5        [        R                   R#                  5         [        SS5        [        [        S5      5      $ [-        S XCS!9$ s  snnf )"Nrh   rS   r  r   r  r  r  r  r  r  r  r  r   r$  r  rv   rw   rx   ry   r&  r^  manage_overtime)rv   rw   rx   ry   u*   Fazla mesai çarpanı başarıyla eklendi!r  r(  multiplier_idu)   Çarpan bilgisi başarıyla güncellendi!r  u   Çarpan bilgisi silindi!r  zovertime.html)multipliersenglish_to_turkish_days)r   r   r,  rs   r   r   rv   display_dayr   r   r   r   r   r   rU  r1   r  r  rw   rx   ry   r  r   )turkish_to_english_dayskvr7  r6  ry   r$  turkish_dayrv   rw   rx   multiplier_valuenew_multiplierr5  s                 r(   r4  r4  3  s   7;;v#6>U#U' ! 1H0M0M0OP0Oqt0OP$**..0K "
!8!<!<Z^^Z^^!\
 " ~~!!(+U?!,,**51K)--kGC )),7J||''
3H&||//=j@P>I(9 :;;/%! !12	N JJNN>*JJ>	Jv#LL,,_=M+1155mDJ%ll..u5!8!<!<[!V
(/(8(8(F
%&-ll&6&6z&B
#(-gll.>.>|.L(M
%

!!#A9Mx#LL,,_=M+1155mDJ

!!*-

!!#0)< 1233?uuy Qs   Oz/special_daysc                     S[         ;  d  [         R                  " S5      S;  a  g[        R                  R	                  [        R
                  5      R                  5       n [        R                  S:X  Ga  [        R                  R                  S5      n[        R                  R                  S5      nUS:X  Ga  [        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      nU(       a  U(       a  U(       d   [        SS5        [        [        S5      5      $ [        R                  " US5      R                  5       n[        Xd[        U5      S9n[         R                   R#                  U5        [         R                   R%                  5         [        SS5        GOdUS:X  a  [        R                  R                  U5      nU(       a  [        R                  " [        R                  R                  S	5      S5      R                  5       Ul        [        R                  R                  S
5      Ul        [        [        R                  R                  S5      5      Ul        [         R                   R%                  5         [        SS5        OuUS:X  ao  [        R                  R                  U5      nU(       aI  [         R                   R+                  U5        [         R                   R%                  5         [        SS5        [        [        S5      5      $ [-        SU S9$ )Nrh   rS   r  r   r   r$  day_idr  r   r%   ry   u   Tüm alanları doldurun!r^  manage_special_daysrj  )r   r%   ry   u   Özel gün başarıyla eklendi!r  r(  u   Özel gün güncellendi!r  u   Özel gün silindi!r  zspecial_days.html)special_days)r   r   r~   r   r  r   r   r   r   r   r   r   r   r   rk  rU  r1   r  r  r%   ry   r  r   )	rB  r$  r@  r  r%   ry   r   new_dayspecial_days	            r(   rA  rA    s>   7;;v#6>U#U' ##,,Z__=AACL~~!!(+!!(+U?||''/H<<##F+D )),7J4z0(;(= >??$$Xz:??AD d%
BSTGJJNN7#JJ3Y?v$**..v6K#+#4#4W\\5E5Ef5Mz#Z#_#_#a #*<<#3#3F#; ).w||/?/?/M)N&

!!#0)<x$**..v6K

!!+.

!!#+Y7 5677.\JJr+   z/payrollc                  J   S[         ;  d  [         R                  " S5      S;  a  g[        R                  R	                  5       n [
        R                  S:X  Ga8  [
        R                  R                  S5      n[
        R                  R                  S5      n[
        R                  R                  S5      nU(       a  U(       d   [        SS	5        [        [        S
5      5      $ [        R                  " US5      R                  5       n[        R                  " US5      R                  5       n/ nUS:X  a  U O-[        R                   R                  [        [        U5      5      /nU GH  n[         R                  R#                  [         R$                  UR&                  :H  [         R(                  U:*  5      R+                  [         R(                  R-                  5       5      R/                  5       n	U	(       dB  [1        SUR2                   SUR4                   35        UR7                  USSSSSS/ SS.	5        M  U	R8                  n
U	R:                  nX-  n[<        R                  R#                  [<        R$                  UR&                  :H  [<        R>                  U:  [<        R>                  U:*  5      R	                  5       n[@        R                  R	                  5       n[B        R                  R	                  5       nSnSnSnSnSn/ n/ n/ n[E        5       nU GHn  nUR>                  nURF                  =(       dA    [        RH                  " UR                  5       [        RJ                  RM                  5       5      nUU-
  RO                  5       S-  nUU-  n[1        SUR2                   SUR4                   35        [1        SU SU 35        [1        SUS 35        SnU H  nUR                  UR                  5       :X  d  M#  UU-  URP                  -  nUU-  nUU-  nUR7                  URS                  S5      [U        US5      URP                  [U        US5      S.5        SnURW                  UR                  5          O   U(       a  GMu  Un Sn!U GH  n"URS                  S5      n#U"RX                  R[                  5       n$U#R]                  5       U$R]                  5       :X  d  MS  [        R                  " U"R^                  S5      RM                  5       n%[        R                  " U"R`                  S5      RM                  5       n&[        RH                  " UR                  5       U%5      n'[        RH                  " UR                  5       U&5      n(UU':  d  GM  UU(:  d  GM  [K        UU'5      n)[c        UU(5      n*U*U)-
  RO                  5       S-  n+U+S:  d  GMD  U!U+-  n!U+U-  U"RP                  -  n,UU,-  nUR7                  URS                  S5      [U        U+S5      U"RP                  [U        U,S5      S.5        GM     UU!-
  n U S:  a;  UR7                  URS                  S5      [U        U S5      [U        U U-  S5      S .5        UU!-  nGMq     U HX  nUR                  U;  d  M  S!U-  n-UU--  nUR7                  UR                  RS                  S5      S!S"[U        U-S5      S.5        MZ     [d        R                  R#                  [d        R$                  UR&                  :H  [d        Rf                  S#:H  [d        Rh                  U:*  [d        Rj                  U:  [d        Rl                  S$:H  5      R	                  5       n.[o        U. V/s/ s Hz  n/U/Rj                  U/Rh                  -
  Rp                  S!-  [        R                  " U/R`                  S5      [        R                  " U/R^                  S5      -
  Rr                  S-  -   PM|     sn/5      n0[o        U V1s/ s H  n1U1S%   PM
     sn15      n2U2U-  n3U3U-   U-   U0U-  -   n4UR7                  0 S&U_S'S(_S)U4_S*U_S+U2_S,U3_S-U_S.U_S/U_S0U_S1U_S2U_S3U_S4U_S5U0_S6U0U-  _5        GM     [u        S7XS89$ [u        S7U S99$ s  sn/f s  sn1f ):Nrh   rS   r  r   r   r   r   u"   Tarih aralığını seçmelisiniz!r^  payrollrj  r   u(   DEBUG: Kullanıcı maaşı bulunamadı: r   u   ❌ Maaş bilgisi bulunamadır   )	rq   r   
net_salaryworked_hoursovertime_hoursovertime_payspecial_day_payspecial_day_detailsannual_leave_hours  u   
📌 İşlenen Kullanıcı: u     ➝ Giriş Tarihi: u   , Çıkış Tarihi: u     ➝ Çalışılan Saat: z.2fFr<  ra  )r   hoursry   amountTr  rJ  g{Gz?)r   rO  rP     g      ?r^  SenelikrO  rq   r   u   ✅ Hesaplama TamamlandırG  rH  normal_hours
normal_paynormal_detailshourly_raterI  rJ  overtime_detailsspecial_day_hoursrK  rL  rM  annual_leave_payzpayroll.html)r   payroll_results)r   );r   r   r8   r   r   r   r   r   r   r   r   r   rk  r   r1   r*  rZ   rQ  rh   r4   rj   r  r  rJ  r   rM   rN   r  ri   ro   rl  rn  rs   r~   rP  ro  r  r  r  r  ry   rA  roundr  rv   r|  r   rw   rx   r  r   r   r   r   r   sumr  secondsr   )5r   r  r  rh   r   r   rZ  selected_usersrq   ri   monthly_salaryro   rV  rm  overtime_multipliersrB  total_worked_hoursrI  rJ  rK  rX  rW  rL  rU  special_days_workedr  r  r  rH  is_special_dayspecialspecial_amountnormal_hours_dayovertime_hours_dayovertimecalisma_gunu
mesai_gunuovertime_startovertime_endovertime_start_dtovertime_end_dtoverlap_startoverlap_endovertime_durationovertime_amountfixed_paymentizinlerizinizin_saatleridetailrS  rT  total_salarys5                                                        r(   rF  rF    sP   7;;v#6>U#U'JJNNE~~ )),7||''
3,,""9-\6AGI.//&&~zBGGI
$$\:>CCE")U"2cRYl9[8\"D\\(($'')!!Z/ hv((--/0 
 @@QQRSWSaSaRbcd&& ="#$%&'$%'(+-*+
( 
 #]]N"00M(8K,2299#++tww6#00J>#00H< ce	  $6#;#;#?#?#A %++//1L!"NLO !!"$N #&%%,,,,c0@0@x||O`O`Ob0c %<<>E"l2"6t6GqHXYZ-eW4HPQ2<2DEF "'+G||uzz|3)5)CgFXFX)X)\9)'>9+22$)NN:$>%*<%;*1*<*<&+NA&>	4  *.+//=  ,  " $0 %&" 4H#(>>$#7L!)!3!3!5J#))+z/?/?/AA)1):):8;N;NPW)X)])])_'/'8'89J9JG'T'Y'Y'[,4,<,<UZZ\>,Z)*2*:*:5::<*V #449P,/7H,IM*-e_*EK1<}1L0[0[0]`d0d-047 26G G 22Ck2QT\TgTg2g , ? 0 7 7,1NN:,F-23Da-H2:2E2E.3OQ.G	9" !#+ !5: $02D#D #a'")) %z :!&'7!;"'(8;(F"J+  "44U &Z (<<'::$%OM#}4O'.. ' 5 5j A!"&)"'q"9	0  ( !&&--""dgg-!!_4%%1##z1!!Y. ce    $! $D --$//177!;##DMM7;h>O>OPTP_P_ah>iirruyy{#! M nMnFwnMNL%3J &4F-ZeJefL"" $$5$ l$  2	$
 $ j$ !.$ {$ !.$ $ #$4$ $%6$ "?$ &':$ %m$  #MK$?!$ y #^ ~U\\>77E!  Ns   Bb
b 
z/admin/modul_ayarlarc                     S[         ;  d  [         R                  " S5      S:w  a  g[        R                  S:X  Ga#  S H  n [        R
                  R                  U S9R                  5       nU(       d  M7  [        R                  R                  SU  35      S	:H  Ul	        [        R                  R                  S
U  35      S	:H  Ul
        [        R                  R                  SU  35      S	:H  Ul        [        R                  R                  SU  35      S	:H  Ul        M     [        R                   R                  5         [        SS5        [!        [#        S5      5      $ [        R
                  R%                  5       n['        SUS9$ )Nrh   rS   r   r   r   )r=   r   r   r   r   rH  izin_r  giris_cikis_bordro_vardiya_u   Modül ayarları güncellendi!r  modul_ayarlarzmodul_ayarlar.html)rV  )r   r   r   r   r   r   r   rJ  r   r   r   r   r   r1   r  r   r   r   r   r   )rS   r[  rV  s      r(   r~  r~    s6   7;;v#6'#A'~~UD!''11t1<BBDDt#*<<#3#3eD6N#Ct#K *1,,*:*:\$;P*QUY*Y'%,\\%5%5v6F%G4%O"&-ll&6&6$7H&IT&Q# V 	

.	:011##'')H/(CCr+   )r   r   r   r   r   r   "HXaa1625948d41cd5b3db285352422bc18z/forgot_passwordc            	      n   [         R                  S:X  GaS  [         R                  R                  S5      R	                  5       n U R                  SS5      R                  SS5      nUR                  S5      (       d  SUSS  -   n[        R                  R                  US9R                  5       nU(       d   [        S	S
5        [        [        S5      5      $ [        [        R                   " SS5      5      nU["        S'   U["        S'    [$        R&                  R)                  [*        SU 3[,        [.        R0                  " SU05      S9n[        SS5        [        [        S5      5      $ [5        S5      $ ! [2         a6  n[        S[        U5       3S
5        [        [        S5      5      s S nA$ S nAff = f)Nr   rQ   r   r   r{  r4  irQ   u>   Bu telefon numarasıyla kayıtlı bir kullanıcı bulunamadı!r^  forgot_passwordi i?B 
reset_codereset_phoner  1r  u8   Şifre sıfırlama kodu WhatsApp üzerinden gönderildi!r  verify_reset_codeu#   Mesaj gönderilirken hata oluştu: zforgot_password.html)r   r   r   r   r|  r}  r6  r8   r   r   rJ  r   r   r   r  randomrandintr   r  r  r  TWILIO_WHATSAPP_NUMBERTWILIO_TEMPLATE_IDrD   rI   r  r   )rQ   normalized_phonerq   r  r   r  s         r(   r  r    s   ~~||''7==? (//R8@@bI**511$'7'== zz##1A#BHHJRT\]G$5677 78
 !+!1	8oo,,,/01."&**. #	 - G LiXG$7899 122	  	87Ax@(KG$5677	8s   A E4 4
F4>+F/)F4/F4z/verify_reset_codec                     [         R                  S:X  ab  [         R                  R                  S5      n S[        ;   a-  [        S   U :X  a   [        SS5        [        [        S5      5      $ [        SS5        [        S5      $ )	Nr   r  u<   Doğrulama başarılı! Yeni şifrenizi belirleyebilirsiniz.r  reset_passwordu&   Geçersiz kod! Lütfen tekrar deneyin.r^  zverify_reset_code.html)	r   r   r   r   r   r   r   r   r   )	user_codes    r(   r  r    sl    ~~LL$$\2	 7"w|'<	'IPR[\G$4566:HE344r+   z/reset_passwordc                  
   [         R                  S:X  a  [         R                  R                  S5      n [        R                  " S5      n[
        R                  R                  US9R                  5       nU(       ar  Xl	        [        R                  R                  5         [        R                  " SS 5        [        R                  " SS 5        [        SS5        [        [        S5      5      $ [        S	S
5        [!        S5      $ )Nr   new_passwordr  r  r  u;   Şifreniz başarıyla sıfırlandı! Giriş yapabilirsiniz.r  r   u)   Bir hata oluştu! Lütfen tekrar deneyin.r^  zreset_password.html)r   r   r   r   r   r8   r   r   rJ  rO   r1   r  popr   r   r   r   )r  rQ   rq   s      r(   r  r    s    ~~||''7 {{=1zz###>DDF(MJJ KKd+KKt,OQZ[GG,--=xH011r+   z	/settingsc                      S[         ;  a  [        [        S5      5      $ [        R                  R                  [         S   5      n [        SU R                  S9$ )Nrh   r   zsettings.htmlr  )r   r   r   r8   r   r   r   rQ   )rq   s    r(   settingsr    sD    ())::>>'),-D?9J9JKKr+   z/update_phonec                  v   S[         ;  a  [        [        S5      5      $ [        R                  R                  [         S   5      n [        R                  R                  S5      R                  5       nSU 3nX l	        [        R                   R                  5         [        SS5        [        [        S5      5      $ )Nrh   r   rQ   r4  u0   ✅ Telefon numaranız başarıyla güncellendi!r  r  )r   r   r   r8   r   r   r   r   r|  rQ   r1   r  r   )rq   	new_phoner  s      r(   update_phoner    s    ())::>>'),-D  0668I YK( )JJ	
<iHGJ'((r+   z/update_passwordc                  v   S[         ;  a  [        [        S5      5      $ [        R                  R                  [         S   5      n [        R                  R                  S5      n[        R                  R                  S5      n[        R                  R                  S5      nU R                  U:w  a   [        SS5        [        [        S5      5      $ X#:w  a   [        S	S5        [        [        S5      5      $ X l        [        R                   R                  5         [        S
S5        [        [        S5      5      $ )Nrh   r   old_passwordr  confirm_passwordu   ❌ Mevcut şifreniz yanlış!r^  r  u6   ❌ Yeni şifreler uyuşmuyor! Lütfen tekrar deneyin.u'   ✅ Şifreniz başarıyla güncellendi!r  )r   r   r   r8   r   r   r   r   rO   r   r1   r  )rq   r  r  r  s       r(   update_passwordr  *  s    ())::>>'),-D<<##N3L<<##N3L||''(:; }}$.9
+,, 'FQ
+,, !MJJ	
3Y?GJ'((r+   c                 n    1 SknSU ;   =(       a&    U R                  SS5      S   R                  5       U;   $ )u!   Dosya uzantısını kontrol eder.>   r   r   r   r   r   r   )r   r   )r   r   s     r(   r   r   H  s6    6(?WxsA6q9??AEWWWr+   )r   )Imagezstatic/uploadsi    r  z/bilgilendirme_eklec                  8  ^ S[         ;  a  g[         R                  " S5      n [         R                  " S5      mU S;  a)  U S;   a"  T(       a  [        U4S jS 5       5      (       a  Og[        R                  R                  5       n[        R                  S	:X  Gaw  [        R                  R                  S
5      n[        R                  R                  S5      n[        R                  R                  S5      nU(       a  U(       a  U(       d   [        SS5        [        [        S5      5      $ SR                  [        [        U5      5      nS nS[        R                   ;   GaF  [        R                   S   nUR"                  S:w  Ga"  [%        UR"                  5      (       d   [        SS5        [        [        S5      5      $ ['        UR"                  5      n[(        R*                  R                  [,        R.                  S   U5      n	UR1                  U	5        [2        R4                  " U	5      n
U
R6                  [8        :  ab  [8        U
R6                  -  n[;        U
R<                  U-  5      nU
R?                  [8        U4[2        R@                  5      n
U
R1                  U	SSS9  SU 3n[C        UUUUS9n[D        R                   RG                  U5        [D        R                   RI                  5         [        SS5        [        [        S5      5      $ [K        SUS9$ )Nrh   r   rS   rP   r  r   r   c              3   ,   >#    U  H	  oT;   v   M     g 7frB   r,   r~  r  rP   s     r(   r  %bilgilendirme_ekle.<locals>.<genexpr>g  s$       IJ  gI_bPZIZ  gI   r  r  r   r   r   r   u3   Başlık, mesaj ve en az bir bölüm seçmelisiniz!r^  bilgilendirme_ekler  imager   u;   Sadece PNG, JPG, JPEG ve GIF formatları desteklenmektedir!r   TU   )optimizequalityzstatic/uploads/)r   r   r   r   u*   Bilgilendirme mesajı başarıyla eklendi!r  bilgilendirme_listesizbilgilendirme_ekle.htmlr*  )&r   r   r  r   r   r   r   r   r   r  r   r   r   r   mapr  r  r   r   r   r  r  r  r  r  r  r   width	MAX_WIDTHr*  heightresizeLANCZOSr   r1   r  r  r   )rS   r  r   r   selected_departmentsdepartments_strr   r  r   filepathimgratio
new_height
yeni_mesajrP   s                 @r(   r  r  \  sh   ';;vD\*J **11jS  IJ  gI  IJ  FJ  FJ+##%H~~  ),,""9-&||33MBG+?GRG$89::((3s,@#AB 
gmm#MM'*E~~##ENN33WYab#G,@$ABB*5>>:77<<

?(CXN

8$jj*99y(%		1E!$SZZ%%7!8J**i%<emmLCHHXbHA.xj9
 #!'	

 	

z"


:IF 78994xHHr+   )r	   r   r   r   z/bilgilendirme_listesic                     S[         ;  a  g[         S   n [        R                  R                  U 5      nU(       d  gUR                  S;   =(       d    SUR
                  R                  S5      ;   nU(       aK  [        R                  R                  [        R                  R                  5       5      R                  5       nGO:UR
                  R                  S5      n[        R                  R                  [        R                  R                  U5      5      R                  5        Vs/ s H  n[!        UR"                  5      PM     nnU(       d
  [%        S/ S9$ [        R                  R                  ['        S	 U 5       5      ['        S
 U 5       5      -  ['        S U 5       5      -  ['        S U 5       5      -  5      R                  [        R                  R                  5       5      R                  5       n[(        R                  R+                  U S9R                  5        Vs1 s H  owR,                  iM     nn[%        SX8S9$ s  snf s  snf )Nrh   r   rc  r  r  r  zbilgilendirme_listesi.html)mesajlarc              3   H   #    U  H  n[         R                  U:H  v   M     g 7frB   )r   r   r~  dep_ids     r(   r  (bilgilendirme_listesi.<locals>.<genexpr>  s"      ,F ))V3,s    "c              3   f   #    U  H'  n[         R                  R                  U S 35      v   M)     g7f,%Nr   r   rS  r  s     r(   r  r    s1      ,F ))..&}==,   /1c              3   h   #    U  H(  n[         R                  R                  S U S35      v   M*     g7f%,r  Nr  r  s     r(   r  r    s3      ,F ))..F82??,   02c              3   f   #    U  H'  n[         R                  R                  S U 35      v   M)     g7fr  Nr  r  s     r(   r  r    s1      ,F ))..F8}==,r  r;  )r  okunan_mesajlar)r   r8   r   r   rS   rP   rB  r   r  r|   r  r   r   rQ  r%   rf  r  r4   r   rR  r   r   r   )	rh   rq   tum_mesajlari_gorebilirfiltreli_mesajlarrW  r  department_idsrw  r  s	            r(   r  r    s   'i G::>>'"D. #ii+BBxFZ^b^m^m^s^stw^xFx)//889Q9Q9V9V9XY]]_??005#-#3#3#:#::??;N;NO_;`#a#e#e#g
#gCCK#g 	 
 "#?"MM)//66 ,   ,   , 	  , 
 (=++002
3CCE 	" 4C3H3H3R3R[b3R3c3g3g3ij3i%~~3iOj7BSuu5
0 ks   )I
)Iz/okunmamis_mesaj_sayisic                  4   S[         ;  a  [        SSS.5      S4$ [         S   n [        R                  R	                  U 5      nU(       d  [        SSS.5      S4$ UR
                  S;   =(       d    S	UR                  R                  S
5      ;   nU(       a  [        R                  R                  [        R                  R                  [        R                   R                  [        R                  5      R                  U S95      ) 5      R!                  5       nGOxUR                  R                  S
5      n["        R                  R                  ["        R$                  R                  U5      5      R!                  5        Vs/ s H  n['        UR                  5      PM     nnU(       d  [        SSS.5      $ [        R                  R                  [)        S U 5       5      [)        S U 5       5      -  [)        S U 5       5      -  [)        S U 5       5      -  5      R                  [        R                  R                  [        R                   R                  [        R                  5      R                  U S95      ) 5      R!                  5       n[+        U5      n[-        SUR                  R                  S
5       35        U(       d  [-        SW 35        [-        S[        R                   R                  [        R                  5      R                  U S9R!                  5        Vs/ s H  oR                  PM     sn 35        [-        SU Vs/ s H  oR                  PM     sn 35        [-        SU 35        [        SUS.5      $ s  snf s  snf s  snf )Nrh   Fr   r  r   rd  re  r  r  r  r;  Tr   )r  rO  c              3   b   #    U  H%  n[         R                  R                  U 5      v   M'     g 7frB   r   r   rK  r  s     r(   r  )okunmamis_mesaj_sayisi.<locals>.<genexpr>  s)      KY))//6(<<>s   -/c              3   f   #    U  H'  n[         R                  R                  U S 35      v   M)     g7fr  r  r  s     r(   r  r    s-      M[6))//6(">>^r  c              3   h   #    U  H(  n[         R                  R                  S U S35      v   M*     g7fr  r  r  s     r(   r  r    s/      O]V))//"VHB@@~r  c              3   f   #    U  H'  n[         R                  R                  S U 35      v   M)     g7fr  r  r  s     r(   r  r    s-      M[6))//"VH>>^r  u   Kullanıcının Bölümleri: u!   Kullanıcının Bölüm ID'leri: u#   Kullanıcının Okuduğu Mesajlar: u#   Gerçek Okunmamış Mesaj ID'leri: u/   ✅ Backend dönen okunmamış mesaj sayısı: )r   r	   r8   r   r   rS   rP   rB  r   rQ  r4   rf  r1   r   r   r   r   r   r%   r  rR  r7  r   )	rh   rq   r  okunmamis_mesajlarrW  r  r  rO  rw  s	            r(   okunmamis_mesaj_sayisir    sT   53FGH#MMi G::>>'"D53MNOQTTT #ii+BBxFZ^b^m^m^s^stw^xFx*0077!!

  !9!9:DDWDU 
 #%	 	  ??005#-#3#3#:#::??;N;NO_;`#a#e#e#g
#gCCK#g 	 
 tqABB*0077 KY  M[   O] 	  M[ 

 &-""&&JJ_556@@@Q
 
 35 	 +,N	)$//*?*?*D)E
FG"1.1ABC	/RZZM]M]^m^v^vMw  NB  NB  KR  NB  NS  NW  NW  NY  1Z  NYE  NY  1Z  0[  \  ]	/GY0ZGYeGY0Z/[
\]	;N;K
LMt~FGG=
4 1Z0Zs   N)N
N
z/okundu_isaretle/<int:mesaj_id>c                    S[         ;  a  [        SSS.5      S4$ [         S   n[        R                  R	                  U5      nU(       d  [        SSS.5      S4$ [
        R                  R                  XS9R                  5       nU(       dF  [        XS9n[        R                   R                  U5        [        R                   R                  5         [        S	S
05      $ )Nrh   Fr   r  r   rd  re  r   r  T)r   r	   r8   r   r   r   r   rJ  r1   r  r  )r   rh   rq   okunmus_mesaj
yeni_kayits        r(   okundu_isaretler    s    53FGH#MMi G::>>'"D53MNOQTTT $))33G3W]]_M$WH



z"


It$%%r+   z!/bilgilendirme_sil/<int:mesaj_id>c                 
  ^ S[         ;  a  [        SSS.5      S4$ [         R                  " S5      n[         R                  " SS5      mUS	;   a  O1US
;   a  [        U4S jS 5       5      (       a  O[        SSS.5      S4$ [        R
                  R                  U 5      nU(       d  [        SSS.5      S4$ UR                  (       ar  [        R                  R                  [        R                  UR                  5      n[        R                  R                  U5      (       a  [        R                  " U5        [        R                   R                  U5        [        R                   R!                  5         [        SSS.5      $ )Nrh   Fr   r  r   rS   rP   r   r  r  c              3   ,   >#    U  H	  oT;   v   M     g 7frB   r,   r  s     r(   r  $bilgilendirme_sil.<locals>.<genexpr>5  s     7xUwcz8IUwr  r  u   Mesaj bulunamadı!re  Tu   Mesaj başarıyla silindi!r  )r   r	   r   r  r   r   r   r  r  r   r  	root_pathexistsremover1   r  r  )r   rS   rw  r   rP   s       @r(   bilgilendirme_silr  )  s,   53FGH#MM;;vD\2.J &&	/	/C7xUw7x4x4x53FGH#MM##H-E53GHI3NN WW\\#--1A1AB
77>>*%%IIj! JJeJJt0LMNNr+   z/uretimc                     ^ S[         ;  a  g[         R                  " S5      n [         R                  " SS5      m/ SQnSS/nX;   a%  [        U4S	 jU 5       5      (       a  [        S
5      $ g)Nrh   r   rS   rP   r   )r   r   r   r=   r  
Enjeksiyonc              3   ,   >#    U  H	  oT;   v   M     g 7frB   r,   r  s     r(   r  uretim.<locals>.<genexpr>[  s     '\E[cz(9E[r  zuretim.htmlu   Erişim yetkiniz yok.r   )r   r   r  r   )rS   authorized_rolesauthorized_departmentsrP   s      @r(   uretimr  N  sg    ';;vD\2.J K(,7 C'\E['\$\$\}--'r+   instancezizin_takip.dbz
sqlite:///c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r	\R
                  " \R                  " S5      SS9r
\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  SS9rSrg	)
Makineim  Tr   r:   Fr;   r   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   makine_turu
makine_adimarkamodelrW   ozellikr6   r,   r+   r(   r  r  m  s    	2::4	0B))BIIbME:K299S>E:JIIbiimd3EIIbiimd3Eii$/Gr+   r  z/makine_eklec                     S[         ;  a  [        [        S5      5      $ [         R                  " SS5      n SU ;  a  g[        R
                  S:X  a  [        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      n[        R                  R                  S5      n[        UUUUUS9n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ [        R                  R                  5       n[        SUS9$ )Nrh   r   rP   r   r  r  r   r  r  r  r  r  )r  r  r  r  r  makine_eklezmakine_ekle.html)	makineler)r   r   r   r   r   r   r   r  r1   r  r  r   r   r   )user_departmentr  r  r  r  r  yeni_makiner  s           r(   r  r  ~  s   ())kk,3O (+~~ll&&}5\\%%l3
  )  ),,""9-#!
 	

{#


.//   "I-CCr+   z/makine_sil/<int:makine_id>c                 j   S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      nU(       d  g[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ )	Nrh   r   rP   r   r  r  u   Makine bulunamadı.re  r  )	r   r   r   r   r  r   r1   r  r  	makine_idr  makines      r(   
makine_silr    s    ())kk,3O (+\\i(F)JJfJJGM*++r+   z/makine_duzenle/<int:makine_id>c                    S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      nU(       d  g[        R                  S:X  a  [        R                  R                  S	5      Ul	        [        R                  R                  S
5      Ul
        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        [        R                   R                  5         [        [        S5      5      $ [!        SUS9$ )Nrh   r   rP   r   r  r  r  r   r  r  r  r  r  r  zmakine_duzenle.html)r  )r   r   r   r   r  r   r   r   r   r  r  r  r  r  r1   r  r   r  s      r(   makine_duzenler    s    ())kk,3O (+\\i(F)~~$\\--m<#LL,,\:||''0||''0 )))4


.//0@@r+   c                   J   \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  " S5      SSS9r\R
                  " \R                  " S	5      SSS9rS
rg)Uruni  Tr   r   Fr;   r<   r   r@   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   urun_adirm   ortalama_cevrim_suresibarkodqr_kodr6   r,   r+   r(   r  r    sw    	2::4	0Byy3%8HYYrxx$?YYryy}TDAFYYryy~dTBFr+   r  z
/urun_eklec                     S[         ;  a  [        [        S5      5      $ [         R                  " SS5      n SU ;  a  g[        R
                  S:X  a  [        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      n[        UU(       a  [        U5      OS UUS9n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ [        R                  R                  5       n[        SUS9$ )Nrh   r   rP   r   r  r  r   r  r   r  r  )r  r   r  r  	urun_eklezurun_ekle.html)urunler)r   r   r   r   r   r   r   r  rU  r1   r  r  r   r   r   )r  r  r   r  r  	yeni_urunr  s          r(   r  r    s   ())kk,3O(+~~<<##J/!(!1!12J!K!!(+!!(+DZ5)?#@`d	
	 	

y!


,--jjnnG+W==r+   z/urun_duzenle/<int:urun_id>c                    S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      n[        R                  S:X  a  [        R                  R                  S5      Ul
        [        R                  R                  S	5      Ul        UR                  (       a  [        UR                  5      OS Ul        [        R                  R                  S
5      Ul        [        R                  R                  S5      Ul        [        R                   R!                  5         [        [        S5      5      $ [#        SUS9$ )Nrh   r   rP   r   r  r  r   r  r   r  r  r  zurun_duzenle.html)urun)r   r   r   r   r  r   rD  r   r   r   r  r   rU  r  r  r1   r  r   urun_idr  r  s      r(   urun_duzenler    s    ())kk,3O(+::  )D~~((4&-ll&6&67O&P#LPLgLgeD,G,G&Hmq#ll&&x0ll&&x0


,--.T::r+   z/urun_sil/<int:urun_id>c                 Z   S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ )Nrh   r   rP   r   r  r  r  )
r   r   r   r   r  r   rD  r1   r  r  r	  s      r(   urun_silr  *  }    ())kk,3O (+::  )DJJdJJGK())r+   c                       \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r	Sr
g)	Renki?  Tr   r   Fr;   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   renk_adir6   r,   r+   r(   r  r  ?  s.    	2::4	0Byy3%8Hr+   r  z
/renk_eklec                     S[         ;  a  [        [        S5      5      $ [         R                  " SS5      n SU ;  a  g[        R
                  S:X  ay  [        R                  R                  S5      n[        US	9n[        R                   R                  U5        [        R                   R                  5         [        [        S
5      5      $ [        R                  R                  5       n[        SUS9$ )Nrh   r   rP   r   r  r  r   r  )r  	renk_eklezrenk_ekle.html)renkler)r   r   r   r   r   r   r   r  r1   r  r  r   r   r   )r  r  	yeni_renkr  s       r(   r  r  J  s    ())kk,3O (+~~<<##J/(+	


y!


,-- jjnnG+W==r+   z/renk_duzenle/<int:renk_id>c                    S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      n[        R                  S:X  aV  [        R                  R                  S5      Ul
        [        R                   R                  5         [        [        S	5      5      $ [        S
US9$ )Nrh   r   rP   r   r  r  r   r  r  zrenk_duzenle.html)renk)r   r   r   r   r  r   rD  r   r   r   r  r1   r  r   renk_idr  r  s      r(   renk_duzenler  f  s    ())kk,3O (+::  )D~~((4


,--.T::r+   z/renk_sil/<int:renk_id>c                 Z   S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ )Nrh   r   rP   r   r  r  r  )
r   r   r   r   r  r   rD  r1   r  r  r  s      r(   renk_silr  |  r  r+   )rp   c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SSS9r	\R
                  " \R                  \R                  " S5      SS9r\R
                  " \R                  \R                  " S	5      SS9r\R
                  " \R                  \R                  " S
5      SS9r\R
                  " \R                  SS9r\R
                  " \R                  5      r\R
                  " \R                  " S5      SS9r\R
                  " \R$                  \R(                  S9r\R
                  " \R$                  SS9r\R
                  " \R$                  SS9r\R0                  " SSS9r\R0                  " SSS9r\R0                  " SSS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R$                  SS9r \R
                  " \RB                  SS9r"\R
                  " \R                  \R                  " S5      SS9r#\R
                  " \R                  \R                  " S5      SS9r$\R
                  " \R                  \R                  " S5      SS9r%\R
                  " \R                  \R                  " S5      SS9r&\R0                  " S\#/S9r'\R0                  " S\$/S9r(\R0                  " S\%/S9r)\R0                  " S\&/S9r*\R
                  " \RB                  SS9r+Sr,g)IsEmrii  Tr   r:   Fr   zurun.idr;   zrenk.idz	makine.idr<      Başlamadır>   r  is_emirlerird   r  r  r   r^   r8   foreign_keysr,   N)-r-   r.   r/   r0   r1   r2   r3   r4   r5   
is_emri_norl   r
  r  r  miktarrW   aciklamar  rz   r   r{   
tarih_saatbaslangic_zamanitamamlanma_zamanirp   r  r  r  kalite_1kalite_2kalite_3fireson_islem_tarihirm   r   personel1_idpersonel2_idpersonel3_idvardiya_ustasi_id	personel1	personel2	personel3vardiya_ustasitoplam_bekleme_suresir6   r,   r+   r(   r  r    s   	2::4	0B299R=FJii

BMM)$<uMGii

BMM)$<uMG		"**bmmK&@5QIYYrzzE2Fyy!HIIbiim];E2;;@J yyt<		"++= ??6=9D??6=9D__X}=F yyQ/HyyQ/HyyQ/H99RZZ+D yyt<YYrxx; 99RZZy)ADQL99RZZy)ADQL99RZZy)ADQL		"**bmmI.FQUV l^DIl^DIl^DI__V;L:MNN IIbhh:r+   r  c                      \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  SS9r\R
                  " \R                  SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R                   " S	S
S9rSrg)UretimSurelerii  Tr   
is_emri.idFr;   r<   r@   r  uretim_surelerird   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   
is_emri_idrz   r'  bitis_zamanir5   r  durus_nedenirp   is_emrir6   r,   r+   r(   r8  r8    s    	2::4	0B2::r}}\'BUSJyyu=99R[[48LIIbiime4E99RYYs^d;Looh0ABGr+   r8  c                       \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  " S5      SSS9r	S r
Srg	)
DurusNedenlerii  Tr   r@   F)r!   r    c                 "    SU R                    S3$ )Nz<DurusNedenleri r#   nedenr&   s    r(   r)   DurusNedenleri.__repr__  s    !$**Q//r+   r,   N)r-   r.   r/   r0   r1   r2   r3   r4   r5   rC  r)   r6   r,   r+   r(   r@  r@    s5    	2::4	0BIIbiinuTBE0r+   r@  c                   @   \ rS rSr\R
                  " \R                  SS9r\R
                  " \R                  \R                  " S5      SS9r	\R
                  " \R                  \R                  " S5      SS9r
\R
                  " \R                  \R                  " S5      SS9r\R
                  " \R                  \R                  " S5      SS9r\R
                  " \R                  \R                  " S5      SS9r\R
                  " \R                  " S5      SS9r\R
                  " \R                   \R$                  S	9r\R(                  " S
SS9r\R(                  " S\
/S9r\R(                  " S\/S9r\R(                  " S\/S9r\R(                  " S\/S9rSrg)UretimKayiti  Tr   r9  Fr;   r^   r<   r>   r  uretim_kayitlarird   r8   r!  r,   N)r-   r.   r/   r0   r1   r2   r3   r4   rl   r;  r.  r/  r0  r1  r5   kalite_tururz   r   r{   zamanrp   r>  r2  r3  r4  r5  r6   r,   r+   r(   rF  rF    sB   	2::4	0B2::r}}\'BUSJ 99RZZy)ADQL99RZZy)ADQL99RZZy)ADQL		"**bmmI.FQUV))BIIbME:KIIbkk8??;E ooh0BCGl^DIl^DIl^DI__V;L:MNNr+   rF  z/is_emri_eklec            	         S[         ;  a  [        [        S5      5      $ [         R                  " SS5      n SU ;  a  g[        R
                  S:X  Ga  [        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      n[        R                  R                  S5      n[        R                  R                  S5      nU(       dd  [        R                  R                  [        R                  R                  5       5      R                  5       nSU(       a  UR                  S-   OS 3n[        UUUUUUS9n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ [         R                  R#                  5       n	[$        R                  R#                  5       n
[&        R                  R#                  5       n[        R                  R)                  [        R*                  R-                  / SQ5      5      R#                  5       n[/        SXXS9$ )Nrh   r   rP   r   r  r  r   r#  r
  r  r  r$  r%  zEMR-r   )r#  r
  r  r  r$  r%  is_emri_ekle)r  Devam Ediyoru   Duruşzis_emri_ekle.html)r  r  r  r   )r   r   r   r   r   r   r   r  r   r  r4   r  rJ  r1   r  r  r  r   r  r  rQ  r  rf  r   )r  r#  r
  r  r  r$  r%  son_emiryeni_is_emrir  r  r  r   s                r(   rK  rK    s   ())kk,3O (+~~\\%%l3
,,""9-,,""9-LL$$[1	!!(+<<##J/ ||,,VYY^^-=>DDFHXq1EFJ!
 	

|$


/00 jjnnGjjnnG  "I ,,%%fll&6&67`&abffhK.\er+   z!/is_emri_duzenle/<int:is_emri_id>c                    S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      n[        R                  S:X  Ga.  [        R                  R                  S5      Ul
        [        R                  R                  S	5      Ul        [        R                  R                  S
5      Ul        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        [        R                  R                  S5      Ul        ["        R                   R%                  5         [        [        S5      5      $ [&        R
                  R)                  5       n[*        R
                  R)                  5       n[,        R
                  R)                  5       n[/        SX#XES9$ )Nrh   r   rP   r   r  r  r   r#  r
  r  r  r$  r%  r  rK  zis_emri_duzenle.html)r>  r  r  r  )r   r   r   r   r  r   rD  r   r   r   r#  r
  r  r  r$  r%  r  r1   r  r  r   r  r  r   )r;  r  r>  r  r  r  s         r(   is_emri_duzenlerP  6  sY   ())kk,3O (+ll%%j1G~~$\\--l;!,,**95!,,**95#LL,,[9 ))(3"<<++J7((1


/00 jjnnGjjnnG  "I17]dzzr+   z/is_emri_sil/<int:is_emri_id>c                 Z   S[         ;  a  [        [        S5      5      $ [         R                  " SS5      nSU;  a  g[        R
                  R                  U 5      n[        R                   R                  U5        [        R                   R                  5         [        [        S5      5      $ )Nrh   r   rP   r   r  r  rK  )
r   r   r   r   r  r   rD  r1   r  r  )r;  r  r>  s      r(   is_emri_silrR  Z  s}    ())kk,3O (+ll%%j1GJJgJJGN+,,r+   z/is_emirleric                      S[         ;  a  [        [        S5      5      $ [        R                  R                  5       n [        SU S9$ )Nrh   r   zis_emirleri.htmlr   )r   r   r   r  r   r   r   rT  s    r(   r   r   q  s<    ()) ,,""$K-;GGr+   z#/is_emri_goruntule/<int:is_emri_id>c           
         S[         ;  a  [        [        S5      5      $ [        R                  R                  U 5      n[        R                  R                  5       n[        R                  R                  [        R                  S:H  5      R                  5       n[        R                  S:X  Ga  [        S5        [        S[        R                   35        [        R                  R                  S5      n[        R                  R                  S5      n[        R                  R                  S	5      n[        R                  R                  S
5      n[        R                  R                  S5      n[        SU SU SU SU 35        U(       d)  [!        SS5        [        [        SUR"                  S95      $ [%        XVU/5      (       d)  [!        SS5        [        [        SUR"                  S95      $ ['        U5      Ul        U(       a  ['        U5      OS Ul        U(       a  ['        U5      OS Ul        U(       a  ['        U5      OS Ul        U(       a  ['        U5      OS Ul        [        SUR*                   SUR,                   SUR.                   SUR0                   35        [2        R                   R5                  5         [        R                  R                  UR"                  5      n	[        SU	R*                   SU	R,                   SU	R.                   SU	R0                   35        [!        SS5        [        [        SUR"                  S95      $ [7        SXUS9$ )Nrh   r   r  r   u   📌 FORM GÖNDERİLDİ!u   📌 HAM FORM VERİLERİ: r  r2  r3  r4  r5  u   📌 FORM VERİLERİ -> P1: z, P2: z, P3: z, VU: u   ⚠️ Makine seçilmelidir!r^  is_emri_goruntuler;  u(   ⚠️ En az bir personel seçilmelidir!u!   🔍 DB'YE KAYDEDİLİYOR -> P1: u   ✅ DB SONRASI KONTROL -> P1: u(   ✅ İş emri başarıyla başlatıldı.r  uretim_takipzis_emri_goruntule.html)r>  r  r  )r   r   r   r  r   rD  r  r   r8   rQ  rP   r   r   r   r   r   r   r4   r  r*  r  r.  r/  r0  r1  r1   r  r   )
r;  r>  r  r  r  r.  r/  r0  r1  is_emri_checks
             r(   rV  rV    s   ())ll%%j1G  "I**##DOO|$CDHHJK~~() 	*7<<.9:LL$$[1	||''4||''4||''4#LL,,-=>,\N&fUaTbbhizh{|} 0(;G$7GJJOPP L=>><hGG$7GJJOPP  	N4@s<0d4@s<0d4@s<0d>OC(9$:UY!1'2F2F1GvgNbNbMccijqj~j~i  @F  GN  G`  G`  Fa  b  	c


((4.}/I/I.J&Q^QkQkPllr  tA  tN  tN  sO  OU  Vc  Vu  Vu  Uv  w  	x8)D7::FGG3Wgrssr+   z /is_emri_uretim/<int:is_emri_id>c                    S[         ;  a  [        [        S5      5      $ [        R                  R                  U 5      n[        R                  R                  S5      n[        R                  " 5       nUR                  (       a  X1R                  -
  R                  5       nOS nX1l        US:X  aG  UR                  =(       d    SS-   Ul        UR                  b  U(       a  XAR                  :  a  XAl        OkUS:X  a  UR                  =(       d    SS-   Ul        OGUS:X  a  UR                   =(       d    SS-   Ul        O#US	:X  a  UR"                  =(       d    SS-   Ul        U(       aX  UR$                  =(       d    SU-   Ul        UR&                  =(       d    SS-   Ul        UR$                  UR&                  -  Ul        [*        R                   R-                  5         [        [        S
UR.                  S95      $ )Nrh   r   rH  1_kaliter   r   2_kalite3_kaliter,  rV  rW  )r   r   r   r  r   rD  r   r   r   r   r{   r-  r  r)  en_kisa_cevrimr*  r+  r,  toplam_cevrim_suresiislem_sayisir   r1   r  r4   )r;  r>  rH  su_an
gecen_sures        r(   is_emri_uretimrc    s   ())ll%%j1G ,,""=1K OOE 666EEG

$ j #,,1Q6!!)jZJ`J`=`%/"	
	"#,,1Q6	
	"#,,1Q6		)Q. (/(D(D(IZ'W$ ' 4 4 9Q>)0)E)EH\H\)\&JJG/GJJGHHr+   z/dogrula_sifrec                  n   [         R                  " 5       n U R                  S5      nU R                  S5      n[        R                  R                  U5      nU(       d  [        SSS.5      S4$ UR                  R                  5       UR                  5       :w  a  [        SSS.5      S4$ [        S	S
05      $ )Npersonel_idsifreFr>  r  re  u   Hatalı şifre!r   r  T)r   get_jsonr   r8   r   r	   rO   r|  )r  re  girilen_sifrer=   s       r(   dogrula_sifreri    s    D((=)KHHW%Mzz~~k*H53JKLcQQ
  M$7$7$9953DEFKK It$%%r+   z!/uretim_guncelle/<int:is_emri_id>c           
         S[         ;  a  [        SSS.5      S4$ [        R                  R	                  U 5      n[
        R                  " 5       nUR                  S5      n[        R                  " 5       nXAl
        UR                  (       a  UR                  OS nUR                  (       a  UR                  OS nUR                  (       a  UR                  OS nUR                  (       a  UR                  OS n[        UR                   UUUUUUS9n	["        R                   R%                  U	5        ["        R                   R'                  5         [)        SU	R                    35        US	:X  a  U=R*                  S
-  sl        OdUS:X  a  U=R,                  S
-  sl        OHUS:X  a  U=R.                  S
-  sl        O,US:X  a  U=R0                  S
-  sl        O[        SSS.5      S4$ UR*                  UR,                  -   UR.                  -   UR0                  -   n
UR2                  nUn[4        R                  R7                  UR                   SS9R9                  5       n[;        S U 5       5      nU(       a   U
S:  a  X-
  R=                  5       U-
  nX-  nOSnS n["        R                   R'                  5         [        SUR*                  UR,                  UR.                  UR0                  U" U5      U	R                   S.5      $ )Nrh   F   Yetkisiz erişimr  r   rH  )r;  r.  r/  r0  r1  rH  rI  u'   ✅ Yeni Üretim Kaydı Eklendi -> ID: r)  r   r*  r+  r,  u   Geçersiz kalite türür(  Beklemer;  r  c              3      #    U  H>  oR                   (       d  M  UR                   UR                  -
  R                  5       v   M@     g 7frB   r<  r'  r  r~  kayits     r(   r  "uretim_guncelle.<locals>.<genexpr>9  =       &E*<*< 	F		e44	4CCEE&
   A.Ar   c                 v    [        U S-  5      n[        U S-  S-  5      n[        U S-  5      n US SUS SU S 3$ NrN  r  02:r*  saniyesaatdakikas      r(   format_sure$uretim_guncelle.<locals>.format_sureE  N    6T>"ftm*+Vb[!r!F2;ar{33r+   T)r  r)  r*  r+  r,  r   uretim_kayit_id)r   r	   r  r   rD  r   rg  r   r   r{   r-  r.  r/  r0  r1  rF  r4   r1   r  r  r   r)  r*  r+  r,  r'  r8  r   r   r\  r  )r;  r>  r  rH  r   r.  r/  r0  r1  r  toplam_parca_sayisir'  r-  bekleme_kayitlarir6  toplam_gecen_surer   r~  s                     r(   uretim_gunceller    s   53EFGLLll%%j1GD((=)K
//
C  # ,3+?+?7''TL+2+?+?7''TL+2+?+?7''TL5<5N5N11TX ::!!!+J JJNN:JJ	3JMM?
CD j A	
	"A	
	"A		53LMNPSSS "**W-=-==@P@PPSZS_S__ //&,,66'**T]6^bbd  &  
 /!3-@OOQTii!2!H!"4 JJ$$$$$$"-.D"E%==  r+   z'/uretim_durum_guncelle/<int:is_emri_id>c                    S[         ;  a  [        SSS.5      S4$ [        R                  R	                  U 5      n[
        R                  " 5       nUR                  S5      nUR                  SS 5      n[        R                  " 5       nXQl
        US:X  d  US	:X  a  [        R                  R                  UR                  S
S9R                  [        R                  R!                  5       5      R#                  5       nU(       a  UR$                  (       d  XVl        [        UR                  USUS9n[&        R                   R)                  U5        SUl        GOUS
:X  GaD  [        R                  R                  UR                  S9R#                  5       nU(       d5  [        UR                  US
S9n[&        R                   R)                  U5        O[        R                  R                  UR                  SS9R                  [        R                  R!                  5       5      R#                  5       n	U	(       a  U	R$                  (       d  XYl        [        UR                  US
S9n[&        R                   R)                  U5        UR                  (       d  XQl        S
Ul        GOUS:X  Ga  [        R                  R-                  [        R.                  UR                  :H  [        R*                  S
:H  [        R$                  S :H  5      R                  [        R                  R!                  5       5      R#                  5       nU(       a  XVl        SUl        XQl        SUl        UR2                  UR4                  -   UR6                  -   UR8                  -   n
UR                  (       a  UR0                  (       a  U
S:  a{  UR0                  UR                  -
  R;                  5       n[=        S [        R                  R                  UR                  SS9R?                  5        5       5      nX-
  nX-  Ul         OS Ul         [&        R                   RC                  5         [        SUR*                  S.5      $ )Nrh   Frk  r  r   r  r=  rl  	BeklemederL  rm  )r;  r'  r  r=  rW  )r;  r'  r     Tamamlandır   c              3      #    U  H?  nUR                   (       d  M  UR                   UR                  -
  R                  5       v   MA     g 7frB   ro  rp  s     r(   r  (uretim_durum_guncelle.<locals>.<genexpr>  s@      (iE%% N##e&<&<<KKMMis
   A	.A	T)r  
yeni_durum)"r   r	   r  r   rD  r   rg  r   r   r{   r-  r8  r   r4   r  r'  r  rJ  r<  r1   r  r  rQ  r;  r(  r)  r*  r+  r,  r  r\  r   r   r  )r;  r>  r  r  r=  r   	son_devamr  ilk_kayit_var_mison_beklemer  r  r6  net_uretim_suresis                 r(   uretim_durum_gunceller  _  s   53EFGLLll%%j1GD'"J88ND1L
//
C  #Y*";"((22gjjP^2_hhiw  jI  jI  jN  jN  jP  Q  W  W  Y	Y33%("#zz %	

 	

z"!	~	%)//99WZZ9PVVX'"::!$$J
 JJNN:&(..88GJJV_8`iijx  kJ  kJ  kO  kO  kQ  R  X  X  ZK;#;#;+.('"::!$$J
 JJNN:&'''*$&	}	$"((//%%3  N2''4/
 (>22779
:557	 	 %("+IO$'!% &..1A1AAGDTDTTW^WcWcc##(A(AFY\]F]!(!:!:W=U=U!U d d f %( (+11;;wzzYb;cggi( %! !2 I->-TG*-1G* JJ t7==ABBr+   z/uretim_takip/<int:is_emri_id>c                    S[         ;  a  [        [        S5      5      $ [        R                  R                  U 5      nUR                  (       a  UR                  OS nUR                  (       a  UR                  OS nUR                  (       a  UR                  OS n[        R                  R                  UR                  SS9R                  5       n[        S U 5       5      nS nU(       a)  [        R                  " 5       U-
  R!                  5       U-
  OSnU" U5      n	U" U5      n
UR"                  UR$                  -   UR&                  -   UR(                  -   nU(       a'  U(       a   US:  a  XB-
  R!                  5       U-
  nX-  nOSnU" U5      n[        R                  R                  UR                  S9R+                  [        R                  R-                  5       5      R/                  5       nU(       a  UR0                  OS	nUR0                  U:w  a%  UUl        [2        R                   R5                  5         [6        R                  R                  5       n[9        S
UUUU
U	UUUS9	$ )Nrh   r   rl  rm  c              3      #    U  H>  oR                   (       d  M  UR                   UR                  -
  R                  5       v   M@     g 7frB   ro  rp  s     r(   r  uretim_takip.<locals>.<genexpr>  rs  rt  c                 v    [        U S-  5      n[        U S-  S-  5      n[        U S-  5      n US SUS SU S 3$ rv  ry  rz  s      r(   r~  !uretim_takip.<locals>.format_sure  r  r+   r   rW  r  zuretim_takip.html)r>  r'  r(  r6  rb  mevcut_durumr   durus_nedenleri)r   r   r   r  r   rD  r'  r(  r-  r8  r   r4   r   r\  r   r{   r  r)  r*  r+  r,  r  r  rJ  r  r1   r  r@  r   )r;  r>  r'  r(  r-  r  r6  r~  gecen_sure_saniyegecen_sure_formatlitoplam_bekleme_suresi_formatlir  r  r   ortalama_cevrim_suresi_formatli	son_kayitr  r  s                     r(   rX  rX    s,   ())ll%%j1G 4;3K3Kw//QU5<5N5N11TX3:3K3Kw//QU ',,66'**T]6^bbd    &  4 k{*-==LLNQff  AB%&78%01F%G" "**W-=-==@P@PPSZS_S__,1Dq1H-@OOQTii!2!H!"&12H&I# $$..'**.E%-Xn.M.M.R.R.T%UV[V[V]  '09??]L }}$$


$**..0O)+<&!>'
 
r+   z/bekleme_nedenleric                     S[         ;  a  [        [        S5      5      $ [        R                  S:X  a  [        R
                  R                  S5      n U (       aw  U R                  5       (       ab   [        U R                  5       S9n[        R                   R                  U5        [        R                   R                  5         [        SS5        O[        S
S	5        [        [        S5      5      $ [        R                  R!                  5       n[#        SUS9$ ! [         a4  n[        R                   R                  5         [        SS	5         S nANuS nAff = f)Nrh   r   r   	neden_adirB  zBekleme nedeni eklendi.r  u)   Bir hata oluştu, lütfen tekrar deneyin.r^  !   Lütfen bir bekleme nedeni girin!bekleme_nedenlerizbekleme_nedenleri.html)nedenler)r   r   r   r   r   r   r   r|  r@  r1   r  r  r   r  rollbackr   r   r   )rC  
yeni_nedenr  r  s       r(   r  r    s    ())~~  - U[[]]	M+%++-@


z*

!!#/; 5x@ 3455##'')H 3hGG  M

##%A8LLMs   /A D 
E"*EEz&/bekleme_nedeni_duzenle/<int:neden_id>c                    S[         ;  a  [        [        S5      5      $ [        R                  R                  U 5      n[        R                  S:X  a  [        R                  R                  S5      R                  5       nU(       a1  X!l        [        R                   R                  5         [        SS5        O[        SS5        [        [        S	5      5      $ [        S
US9$ )Nrh   r   r   rC  u   Bekleme nedeni güncellendi.r  r  r^  r  zbekleme_nedeni_duzenle.htmlrB  )r   r   r   r@  r   rD  r   r   r   r   r|  rC  r1   r  r   r   )neden_idrC  r  s      r(   bekleme_nedeni_duzenler  1  s    ())  ++H5E~~\\%%g.446
$KJJ0)<5x@ 34558FFr+   z"/bekleme_nedeni_sil/<int:neden_id>c                 6   S[         ;  a  [        [        S5      5      $ [        R                  R                  U 5      n[        R                   R                  U5        [        R                   R                  5         [        SS5        [        [        S5      5      $ )Nrh   r   zBekleme nedeni silindi.r  r  )
r   r   r   r@  r   rD  r1   r  r  r   )r  rC  s     r(   bekleme_nedeni_silr  F  sn    ())  ++H5EJJeJJ	
#Y/G/011r+   z/is_emri_performansc                  4   [         R                  R                  [         R                  S:g  5      R	                  5       n / nU  GHH  n[
        R                  R                  [        R                  [        R                  " [        R                  5      5      R                  [        R                  UR                  :H  5      R                  [        R                  5      R	                  5       nSSSSS.nU H	  u  pVXdU'   M     UR                  UR                  UR                  (       a  UR                  R                   OSUR"                  UR$                  (       a  UR$                  OSUR                  US   US   US   US	   S
.	5        GMK     ['        SUS9$ )Nr  r   r)  r*  r+  r,     Bilinmeyen Ürün   Açıklama yokr)  r*  r+  r,  )	r4   r  r$  r%  r  r)  r*  r+  r,  zis_emri_performans.html)is_emri_listesi)r  r   rQ  r  r   r1   r   rF  rH  r   rT  r;  r4   group_byr  r  r  r$  r%  r   )r   r  r>  kalite_sayilarikalite_dagilimirH  sayis          r(   is_emri_performansr  W  sM    ,,%%fllm&CDHHJK O****##TZZ0G0G%H

&''7::5
6xx@W@W7XY\Y\Y^ 	 	
 "1K+/K( "1 	**18--CVnn,3,<,<((BR]]'
3'
3'
3#F+
 
 
	! 8 4oVVr+   z/is_emri_performans_jsonc                  j   [         R                  R                  [         R                  S:g  5      R	                  5       n / nU  GHb  n[
        R                  R                  [        R                  [        R                  " [        R                  5      5      R                  [        R                  UR                  :H  5      R                  [        R                  5      R	                  5       nSSSSS.nU H	  u  pVXdU'   M     UR                  nUR                  n[         R                  R#                  UR                  SS9R	                  5       n	[%        S U	 5       5      n
US   US   -   US	   -   US
   -   nU(       a'  U(       a   US:  a  X-
  R'                  5       U
-
  nX-  nOSnS nU" U5      nUR(                  (       a1  UR(                  R*                  (       a  UR(                  R*                  OSnU" U5      nUR-                  UR                  UR(                  (       a  UR(                  R.                  OS[1        US5      (       a'  UR2                  (       a  UR2                  R4                  OSUR6                  UR8                  (       a  UR8                  OS[1        US5      (       a'  UR:                  (       a  UR:                  R<                  OSUR                  US   US   US	   US
   UU[1        US5      (       aB  UR(                  (       a1  UR(                  R>                  (       a  UR(                  R>                  OS [1        US5      (       aB  UR(                  (       a1  UR(                  R@                  (       a  UR(                  R@                  OS S.5        GMe     [C        U5      $ )Nr  r   r  rl  rm  c              3      #    U  H>  oR                   (       d  M  UR                   UR                  -
  R                  5       v   M@     g 7frB   ro  rp  s     r(   r  *is_emri_performans_json.<locals>.<genexpr>  s=      $
*.@.@ JU%"8"88GGII*rt  r)  r*  r+  r,  c                 v    [        U S-  5      n[        U S-  S-  5      n[        U S-  5      n US SUS SU S 3$ rv  ry  rz  s      r(   r~  ,is_emri_performans_json.<locals>.format_sure  sN    v~&D&4-B./F"%F2Yar{!F2;77r+   r  r  zBilinmeyen Renkr  r  zBilinmeyen Makiner  )r4   r  r  r$  r%  r  r  r)  r*  r+  r,  r   hedef_cevrim_suresir  r  )"r  r   rQ  r  r   r1   r   rF  rH  r   rT  r;  r4   r  r'  r-  r8  r   r\  r  r  r   r  r  r+  r  r  r$  r%  r  r  r  r  r	   )r   r  r>  r  r  rH  r  r'  r-  r  r6  r  r  r   r~  r  r  hedef_cevrim_suresi_formatlis                     r(   is_emri_performans_jsonr    s    ,,%%fllm&CDHHJK O****##TZZ0G0G%H

&''7::5
6xx@W@W7XY\Y\Y^ 	 	
 "1K+/K( "1 #33"33 +00::gjjXa:bffh # $
*$
 !
 J'J'(J'( F#$ 	  05H15L!1!D S S UXm m%6%L"%&"	8 +66L*M' FM\\V]VbVbVyVygllAA  @A'23F'G$**18--CV18&1I1Igll--`qnn,3,<,<((BR7>w7Q7QV]VdVd'..33j}]]'
3'
3'
3#F+&E#?-4Wf-E-E',,[b[g[g[n[ngll))tx-4Wf-E-E',,[b[g[g[n[ngll))tx 
 	m R ?##r+   )r   r   r   r	   z/personel_performansc                  r
   [         R                  R                  S5      n [         R                  R                  S5      nU (       a  U(       d  [        S/ SSS9$ [        R
                  " U S5      n [        R
                  " US5      [        SS9-   [        SS	9-
  n[        R                  R                  [        R                  S
:H  5      R                  5       n/ n[        R                  R                  [        R                  " [         R"                  5      5      R                  [         R$                  U :  [         R$                  U:*  5      R'                  5       =(       d    SnUS:X  a*  [        S/ U R)                  S5      UR)                  S5      S9$ U GHa  n[         R                  R                  [         R$                  U :  [         R$                  U:*  [         R*                  UR"                  :H  [         R,                  UR"                  :H  -  [         R.                  UR"                  :H  -  5      R1                  [         R2                  [         R$                  5      R                  5       n/ nS nS n	/ n
U Hh  nUb  UR2                  U:w  d  XR*                  :w  a  U
(       a  UR5                  U
5        / n
U
R5                  U5        UR2                  nUR*                  n	Mj     U
(       a  UR5                  U
5        SnSnSn/ nU GH.  nUS   R2                  n[6        R                  R                  U5      nU(       a'  UR8                  (       a  UR8                  R:                  OSnU(       a  [=        U5      OSnU(       a  US   R$                  OS nU(       a  US   R$                  OS nU(       a  U(       a  UU-
  R?                  5       OSnUS:  a  UU-  OSnUS:  a  [A        UU-  S-  S5      OSnUU-  nUU-  nUR5                  U(       a  URB                  OS[A        US5      UUUS.5        GM1     U(       a(  [A        [E        S U 5       5      [=        U5      -  S5      OSnU(       a  X-  S-  OSn[A        US-  S[G        [I        SU-
  5      S5      -
  S-  -   S5      nUR5                  UR"                  URJ                   SURL                   3U=(       d    S[A        US5      UUUS.5        GMd     URO                  S SS9  [        SUUU R)                  S5      UR)                  S5      S9$ )Nr   r   zpersonel_performans.htmlr   )personel_raporur   r   rj  r   r  )r]  r  r   r<   r   ra  r   )r#  r_  uretim_sayisir  cevrim_suresi_oranic              3   *   #    U  H	  oS    v   M     g7f)r  Nr,   )r~  ds     r(   r  &personel_performans.<locals>.<genexpr>+  s     0aS`a3H1IS`s   g333333?gffffff?r   )r4   ad_soyadr  uretim_yuzdesir  toplam_puandetay_listesic                     U S   $ )Nr  r,   )r%  s    r(   r  %personel_performans.<locals>.<lambda>>  s	    q'7r+   T)r0  reverse)r  toplam_uretimr   r   )(r   r  r   r   r   rk  r   r8   r   rQ  rP   r   r1   r   r   rT  rF  r4   rI  scalarrA  r.  r/  r0  r  r;  r  r  r  r   r7  r  r[  r#  r\  r  absrM   rN   sort)r   r   r  r  r  r=   rG  is_emri_gruplarionceki_is_emrionceki_personelblokrq  r_  toplam_cevrim_sayisir  r  grupr;  r>  r  r  r'  r<  rb  r   r  ortalama_cevrim_suresi_oranir  s                               r(   personel_performansr    s   ||''(:;<<##N3L<92`bqstt(()9:F$$\:>PQARRU^ghUiiL**##DOO|$CDHHJKOJJ$$TZZ%?@	!!%55{7H7HL7X	Y	  92`p`y`y  {E  aF  Ua  Uj  Uj  ku  Uv  w  	w&,,V!!%55!!\1))X[[8))X[[8:))X[[8: h{--{/@/@A##% 	 %E%)9)9^)KbtbtOt$++D1KK"--N#00O & ##D)  $Da++Jll&&z2GIPU\UaUa',,"E"Egi)-CI1M04tAw}}$-148>>tLN^co,)99HHJuvJCPSTCTZ-%?Z["dz}~d~%)<?U)UY\(\^_"`  EF J.  M1   4;g00(-j!(<!.':':" # %2 LuS0aS`0a-adghudv-vxy'z  RS$I].>#Ecdc!CC">>?EELNOP

 	++#../q1C1C0DE16Q#NA6#?&* 
 	G  Z 7F"'#)22:>!**:6 r+   z/kvkkc                      [        S5      $ )Nz	kvkk.htmlr  r,   r+   r(   kvkkr  T  s    ;''r+   z/personelyonetimic                      [        S5      $ )Nzpersonelyonetimi.htmlr  r,   r+   r(   personelyonetimir  X  s    233r+   z/hakkimizdac                      [        S5      $ )Nzhakkimizda.htmlr  r,   r+   r(   
hakkimizdar  \  s    ,--r+   z/izindefteric                      [        S5      $ )Nzizindefteri.htmlr  r,   r+   r(   izindefterir  `  s    -..r+   )Responsec                      [        S5      $ )Nr   r  r,   r+   r(   homer  i  s    <((r+   z/sitemap.xmlc                      / n [         R                  " 5       R                  S5      n/ SQnU H!  nU R                  [	        USS9USSS.5        M#     [        SU S	9n[        US
S9$ )Nrj  )r  r   r  iletisimr  T)	_externalweeklyg?)loclastmod
changefreqpriorityzsitemap.xml)pageszapplication/xml)mimetype)r   r   rA  r  r   r   r  )r  ten_days_agostatic_pagespagesitemap_xmls        r(   sitemapr  m  so    E<<>**:6L YL440#"	
 	  "-u=KK*;<<r+   c                    SnSnSnSU  3nSU  SU SU SU 3n[        5       n	XIS'   XiS	'   XyS
'   U	R                  [        US5      5         [        R                  " SS5      n
U
R                  5         U
R                  XE5        U
R                  XFU	R                  5       5        U
R                  5         [        S5        g ! [         a  n[        S[        U5      5         S nAg S nAff = f)Nzalptekinalpan@gmail.comzoobw qqwq kkns zomsu   📩 Yeni İletişim Mesajı - zAd: z

Telefon: z

E-posta: z
Mesaj:
r  r  r  plainr  r  u$   ✅ E-posta başarıyla gönderildi!u(   ❌ E-posta gönderilirken hata oluştu:)r  r  r  r  r  r  r   r	  r
  r  r   r  r  )r%   phonerR   r   sender_emailsender_passwordreceiver_emailsubjectbodyr  r  r  s               r(   
send_emailr    s    ,L+O.N/v6G${5'UG:gYOD
/CKI	NJJxg&'B.4\3cmmoF45 B8#a&AABs   A3C   
C)
C$$C)z	/iletisimc                     [         R                  S:X  a  [         R                  R                  S5      n [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      nU (       a  U(       a  U(       a  U(       d   [	        SS5        [        [        S5      5      $ [        XX#5        [	        S	S
5        [        [        S5      5      $ [        S5      $ )Nr   r%   r  rR   r   r3  r^  r  uU   Mesajınız başarıyla gönderildi! En kısa sürede sizinle iletişime geçeceğiz.r  ziletisim.html)	r   r   r   r   r   r   r   r  r   )r%   r  rR   r   s       r(   r  r    s    ~~||'  )  ),,""9-5W4h?GJ/00 	4/egpq
+,,?++r+   __main__z0.0.0.0)debughost)FrB   )flaskr   r   r   r   r   r   r	   r  flask_sqlalchemyr
   r   zoneinfor   mathr   r   r   r   r   r-   r  r   getcwdr  
secret_keyreportlab.lib.pagesizesr   reportlab.pdfgenr   r  r1   Modelr   rD   r8   rZ   rs   r~   r   r   r   r   r   r   r   app_context
create_allr   router   r   r   werkzeug.utilsr   r   r   
sqlalchemyr   r   r   r   makedirsr   r%  r.  r1  r9  rF  r   r   r   r   r   r   rh  ro  r  rR  r  r  r  r  r  r  r  twilio.restr  r  r  r  r  TEMPLATE_IZIN_TALEBI_ONAYLANDIr  r  r  r  email.mime.multipartr  email.mime.applicationr  email.mime.textr  r  r  r  r  r  r  reportlab.pdfbase.ttfontsr  reportlab.pdfbaser  dirnameabspath__file__base_dir	font_yoluregisterFontr  r  r9  r<  r@  rF  r  rO  rW  r\  r_  rj  rl  r  r  r  r  r  r  r  rm  r  sqlalchemy.ormr  r  r  r  r  r  rC   r  r  r  r  r  r  r  r  r   r"  r'  r0  r2  r4  rA  rF  r~  r  TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENr  r  r  r  r  r  r  r  r  PILr  MAX_FILE_SIZEr  r  locale	setlocaleLC_TIMEr  r  r  r  r  BASE_DIRDATABASE_PATHr  r  r  r  r  r  r  r  r  r  r  r  rp   r  r8  r@  rF  rK  rP  rR  r   rV  rc  ri  r  r  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  runr,   r+   r(   <module>r$     s   V V V 	 '   / /  Hbggll299;&LM  ' # 	 )B

$ %/4

+ ,_&BHH & ( 9288 94
NRXX 
N A A 5 59 9*
Pbhh 
P :RXX :	/BHH 	/Ubhh UL L __MMO  3(,) ),)b 9& & T  TB 
  * T T T (  / /Ho 22  ,

?  MD )X =5&/2MT 3MTr >E6?3 B 4 BP !E6?; J < JR ufo6#2 7#2T  3e !3ez "# $"  :  : ? & = . "# V $ VL $%.V &.Vf0  =5&/2r. 3r.z ,-4V .4Vz V* %z:V ;V  )E7;= <=  3 3*VH= ? > ?\ '('V )'VZ =6(+1 ,10   3/
2  < !E 4 >F8,p/ -p/J >F8,// -//z   . 2 $ 	-
&F ' # 	 
 , ( & # 
 77??277??845GGLL8-=>	 - ( 
  |Y7 84|B B 	__MMO 
 ufo6E 7E& ,vh?	) @	) 06(C) D), +fX>1 ?16 '%A4 B4| +  ug.`O /`OLErxx E 	__MMO 
 eV_5D 6D, 05&/J> K>& ,ug>	/ ?	/(4"(( 4 	__MMO  fX. /> 8eW%1 &1 >B B( <&*J +J2 <&*J +J4J  < !< )=5'*#y +#y^ 4 3 . .  %   #eW5bn 6bnP  6(3#S 4#SN # 6(3N 4NB fX.U /U, 0M 1M( 4 3 %x8<1 9<1@ %1&v 2&vZ 4 3 .A-2 B-2h ".@
D A
D *VH=2 >2.   'Q Q& U T T  5&/:n ;nH T T8 $%0 &0  "#1% $1%p 9ufo.8J /8Jz )F8<. =.> +fX>. ?.. ;0Jv 1Jvd ?UFO4-K 5-Kn :v/F8 0F8^ !E6?;D <D0   M M  : 6 0 9 	"$5	6v7'3 8'3X %95 :5 ufo62 722 ;L L ?VH-) .)( x0) 1):X  *  	 2 	+

?   5&/:@I ;@IN 4 3      $ #$+v %+v\ $ug63H 73Hl ,vh?& @&, .
CO DOH 9( (* 
77??277??845Xz?C*4]O(D

$ %/4

+ ,0RXX 0 	__MMO  >E6?3 D 4 DL (5':, ;,0 ,ufoFA GA:C288 C 	__MMO  <%1> 2>@ 	__MMO  (5&/B; C;2 $ug6* 7*(9288 9
 	__MMO  <%1> 2>6 (5&/B; C;* $ug6* 7*(  '+;RXX +;\ 	__MMO   'CRXX C0RXX 0O"(( O* 	__MMO  ?UFO4-@ 5-@d .H{ I{F *UG<- =-, >H H 05&/J1t K1tl )-x@(I A(IX #fX.& /&2 .AQ BQp  4vhG_C H_CJ +,A -AN %9H :HB 3eV_MG NG( /&B	2 C	2  !"W ""WR  %&O$ 'O$f ; : ( !E73i 4in 7( ( 4  4 =. . >/ / 3) ) >= =,B. ;0, 1,@ z		
 
GG$YG' C` b. Z p J< ` N n ~ n F 
	s   ;AH!2AH3AIAIAI)AI;AJAJ'AJ1#AKG2AKH!
AH0H3
AII
AII
AI&I)
AI8I;
AJ
J
AJJ
AJ.J1
AK K
AKK
AK#