ó
    tÏÇjƒ.  ã                   ó¸  • S SK Jr  S SKJrJrJr  S SKJrJrJrJ	r	  S SK
JrJrJr  S SKJr  S SKrS SKJr  S SKJrJrJrJrJrJrJrJr  S S	KJr  S S
KJr  S SK J!r!  \" \" \" S5      5      /S9r"SSSS.r#\$" \#RK                  5       5      r&S\'4S jr(S\)S\S\4S jr*\"RW                  S\S9SS\" \5      \" \5      4S\S\)S\)S\S\RX                  4
S jj5       r-\"R]                  S 5      \	" S!5      \	" S"5      \	" S"5      \	" S"5      \" \5      \" \5      4S#\/S\'S\'S\'S\S\RX                  4S$ jj5       r0\"R]                  S%5      \	" S!5      \	" S!5      \	" S!5      \	" S5      \" \5      \" \5      4S&\/S'\)S(\)S)\)S\S\RX                  4S* jj5       r1\"R]                  S+5      \	" S!5      \	" S!5      \" \5      \" \5      4S&\/S'\)S\S\RX                  4S, jj5       r2g)-é    )Údefaultdict)ÚdateÚdatetimeÚ	timedelta)Ú	APIRouterÚRequestÚDependsÚForm)ÚHTMLResponseÚRedirectResponseÚJSONResponse)ÚSessionN)Úget_db)Úget_current_userÚget_allowed_companies_listÚapply_user_data_scope_filterÚis_machine_allowedÚis_company_allowedÚrequire_modulÚirasi_tiltas_okaÚIRASI_TILTAS_UZENETEK)Úcompute_vizsgalati_esedekesseg)Ú!get_vizsgalati_datum_kotelezo_mod)Ú	templatesÚEMELOGEP)ÚdependenciesÚ
szerkezetiÚfovizsgalatÚibf)u   Szerkezeti vizsgÃ¡latu   FÅ‘vizsgÃ¡latu.   IdÅ‘szakos biztonsÃ¡gi felÃ¼lvizsgÃ¡lat (EBSZ)Úreturnc                 ó    • U R                   S:H  $ )Nu   EmelÅ‘gÃ©p szakÃ©rtÅ‘)Úrole)Úcurrent_users    Ú./var/www/website/routers/szakerto_dashboard.pyÚ_szakerto_kapur%   '   s   € Ø×ÑÐ 7Ñ7Ð7ó    ÚertekÚ	alapertekc                 ó„   • U (       d  U$  [         R                  " U S5      R                  5       $ ! [         a    Us $ f = f)Nú%Y-%m-%d)r   Ústrptimer   Ú
ValueError)r'   r(   s     r$   Ú_parse_datumr-   +   sA   € ÞØÐðÜ× Ò  ¨
Ó3×8Ñ8Ó:Ð:øÜó ØÒðús   ‹$0 °?¾?z/szakerto-dashboard)Úresponse_classÚ ÚrequestÚtolÚigÚdbr#   c                 ó˜
  • [        U5      (       d
  [        SSS9$ [        R                  " 5       n[	        X5      n[	        X%[        SS9-   5      n[        XCS5      nUR                  [        R                  5      R                  [        R                  R                  UR                  :H  5      R                  5        V	s0 s H  o™R                  U	_M     n
n	/ nU GH$  nU
R                  UR                  5      nU(       a  UR                   OSU(       a  UR"                  OSU(       a  UR$                  OSS.nUR                  [        R&                  5      R                  [        R&                  R                  UR                  :H  [        R&                  R(                  S	:H  5      n[+        Xô5      nUR                  5       nUR                  [        R,                  5      R                  [        R,                  R                  UR                  :H  5      R                  5        Vs0 s H  nUR.                  U_M     nn[1        UR                  U5      nUR                  [        R2                  5      R5                  [        R&                  5      R                  [        R&                  R                  UR                  :H  5      R                  5        Vs0 s H  nUR6                  UR8                  4U_M     nn[;        S
 5      n[;        [<        5      nU GHk  nUR>                  (       a  UR>                  R@                  OSnUU   S==   S-  ss'   UR                  UR.                  5      n[C        UUUU5       GH   n[D        R                  US   5      nU(       a  UR                  US5      (       d  M<  US   RG                  SS5      nUU   S   U==   S-  ss'   US   S;   nU(       dG  US   (       a=  [H        RJ                  " US   S5      R                  5       nUUs=:*  =(       a    U:*  Os  nU(       d  MÃ  UR                  UR                  U45      n UU   RM                  UUUS   US   U S.5        GM     GMn     URO                  5        H  n!U!RQ                  S S9  M     URM                  UU[S        U5      [U        U5      [U        U5      [W        S URO                  5        5       5      S.5        GM'     [X        RZ                  " U SUUUR]                  S5      UR]                  S5      S.S9$ s  sn	f s  snf s  snf )u¼  EmelÅ‘gÃ©p szakÃ©rtÅ‘nek szÃ³lÃ³ Ã¡ttekintÅ‘: Ã¼gyfelei (cÃ©gei) szerinti bontÃ¡sban megmutatja a
telephelyenkÃ©nti gÃ©pszÃ¡mot/vizsgÃ¡lati mÃ³dokat, Ã©s a kivÃ¡lasztott idÅ‘szakra esÅ‘ (vagy mÃ¡r
lejÃ¡rt) vizsgÃ¡lati teendÅ‘ket - a cÃ©genkÃ©nt Ã¶nkÃ©nt beÃ¡llÃ­tott "megbÃ­zatÃ¡s" (l.
[[project_szakerto_dashboard_2026_10_02]]) csak azt szÅ±ri, mely vizsgÃ¡lat-tÃ­pusok jelenjenek
meg itt, a tÃ©nyleges vizsgÃ¡lat-rÃ¶gzÃ­tÃ©st NEM korlÃ¡tozza.z/listai/  )ÚurlÚstatus_codeé   )Údaysr   T)r   r   r   u   AktÃ­vc                  ó&   • S[        [        5      S.$ )Nr   )ÚgepszamÚtipusok)r   Úint© r&   r$   Ú<lambda>Ú$szakerto_dashboard.<locals>.<lambda>m   s   € ¸aÌKÔX[ÓL\Ò2]r&   zNincs telephelyr:   é   Útipusz (EBSZ)r/   r;   Úallapot)ÚlejartÚhianyzikÚesedekesr*   )ÚgeprA   rB   rE   Ú	tervezettc                 ó   • U S   =(       d    S$ )NrE   z
0000-00-00r=   )Úts    r$   r>   r?   ‘   s   €  Q z¡]×%B°lÐ%Br&   )Úkeyc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f)N)Úlen)Ú.0Úvs     r$   Ú	<genexpr>Ú%szakerto_dashboard.<locals>.<genexpr>™   s   é € ÐQÒ0P¨1¤ A§ Ò0Pùs   ‚)ÚcegÚ
megbizatasr:   Útelephely_osszesitoÚteendok_telephelyenkentÚteendo_szamazszakerto_dashboard.html)ÚuserÚcegek_adatair1   r2   )r0   ÚnameÚcontext)/r%   r   r   Útodayr-   r   r   ÚqueryÚmodelsÚSzakertoMegbizatasÚfilterÚuser_idÚidÚallÚ
company_idÚgetr   r   r   ÚMachineÚstatuszr   ÚMachineTypeConfigÚgeptipusr   ÚTervezettVizsgalatÚjoinÚ
machine_idÚvizsgalat_tipusar   ÚlistÚ	telephelyÚnevr   Ú_TIPUS_ROVIDÚreplacer   r+   ÚappendÚvaluesÚsortrL   ÚdictÚsumr   ÚTemplateResponseÚstrftime)"r0   r1   r2   r3   r#   Úmai_napÚ	tol_datumÚig_datumÚcegekÚmÚmegbizatas_maprW   rQ   rR   Úengedelyezettr[   ÚgepekÚcÚconfigs_by_geptipusÚdatum_kotelezo_modrI   Útervezett_maprS   rT   rF   Útelephely_nevÚconfigÚeÚrovidÚtipus_teljesÚteendo_eÚesedekes_datumrG   Úlistas"                                     r$   Úszakerto_dashboardrŒ   4   s™  € ô ˜,×'Ñ'Ü H¸#Ñ>Ð>ä�jŠj‹l€GÜ˜SÓ*€IÜ˜B¬)¸Ñ*<Ñ <Ó=€Hä& |¸ÓD€Eð "$§¡¬&×*CÑ*CÓ!D×!KÑ!KÜ×%Ñ%×-Ñ-°·±Ñ@ó"
ç
‰#‹%ð"óò"˜A�‰�aŠñ "ð ð ð €LÜˆØ#×'Ñ'¨¯©Ó/ˆ
æ3=˜*×/Ò/À4Þ5?˜:×1Ò1ÀTÞ%/�:—>’>°Tñ
ˆð —‘œŸ™Ó(×/Ñ/Ü�N‰N×%Ñ%¨¯©Ñ/Ü�N‰N×"Ñ" hÑ.ó
ˆô -¨UÓAˆØ—	‘	“ˆð �H‰H”V×-Ñ-Ó.×5Ñ5´f×6NÑ6N×6YÑ6YÐ]`×]cÑ]cÑ6cÓd×hÑhÔjó
âjð  ˆA�J‰J˜ŠMÙjð 	ð 
ô ?¸s¿v¹vÀrÓJÐð �H‰H”V×.Ñ.Ó/×4Ñ4´V·^±^ÓD×KÑKÜ—‘×)Ñ)¨S¯V©VÑ3óç‰c‹eðó
òð 78ˆQ�\‰\˜1×-Ñ-Ð.°Ò1ñð 	ð 
ô *Ñ*]Ó^ÐÜ"-¬dÓ"3ÐäˆCØ14··˜CŸM™M×-Ò-ÐDUˆMØ Ñ.¨yÓ9¸QÑ>Ó9à(×,Ñ,¨S¯\©\Ó:ˆFÜ3°C¸À&ÐJ\×]�Ü$×(Ñ(¨¨7©Ó4�Þ ×!2Ñ!2°5¸$×!?Ñ!?Ùà  ™z×1Ñ1°)¸RÓ@�Ø# MÑ2°9Ñ=¸lÓKÈqÑPÓKð ˜Y™<Ð+AÑA�Þ A j§MÜ%-×%6Ò%6°q¸±}ÀjÓ%Q×%VÑ%VÓ%X�NØ(¨N×FÓF¸hÔF�HæÙà)×-Ñ-¨s¯v©v°|Ð.DÓE�	Ø'¨Ñ6×=Ñ=ØØ)Ø  ™|Ø ! *¡Ø!*ñ?÷ ô' ^ñ ð@ -×3Ñ3Ö5ˆEØ�J‰JÑBˆJÓCñ 6ð 	×ÑØØ'Ü˜5“zÜ#'Ð(;Ó#<Ü'+Ð,CÓ'DÜÑQÐ0G×0NÑ0NÔ0PÓQÓQñ
÷ 	ñE ôV ×%Ò%ØØ&à Ø(Ø×%Ñ% jÓ1Ø×#Ñ# JÓ/ñ	
ñ	ð 	ùòeùò,
ùò
s   Â?T=È&UË#Uz/szakerto-megbizatas.Frb   c                 ó‚  • [        U5      (       d  [        SSS0S9$ [        XP5      (       d  [        SSS0S9$ [        XPU5      nU(       a  [        SS[        U   0S9$ UR                  [        R                  5      R                  [        R                  R                  UR                  :H  [        R                  R                  U :H  5      R                  5       nU(       d0  [        R                  " UR                  U S9nUR                  U5        Xl        X'l        X7l        UR#                  5         [        SSS0S9$ )	Né“  Úmessageu=   Csak EmelÅ‘gÃ©p szakÃ©rtÅ‘ Ã¡llÃ­thatja be a megbÃ­zatÃ¡sÃ¡t!©r6   Úcontentu%   Nincs jogosultsÃ¡god ehhez a cÃ©ghez!)r_   rb   éÈ   u   MegbÃ­zatÃ¡s elmentve!)r%   r   r   r   r   r[   r\   r]   r^   r_   r`   rb   ÚfirstÚaddr   r   r   Úcommit)rb   r   r   r   r3   r#   ÚtiltasrR   s           r$   Úszakerto_megbizatas_menteser—   ¨   s#  € ô ˜,×'Ñ'Ü¨°ið  BAð  6Bñ  Cð  	Cä˜l×7Ñ7Ü¨°iÐAhÐ5iÑjÐjô ˜l¸Ó;€FÞÜ¨°iÔAVÐW]ÑA^Ð5_Ñ`Ð`à—‘œ&×3Ñ3Ó4×;Ñ;Ü×!Ñ!×)Ñ)¨\¯_©_Ñ<Ü×!Ñ!×,Ñ,°
Ñ:ó÷ �eƒgð ö Ü×.Ò.°|·±ÐS]Ñ^ˆ
Ø
�‰ˆzÔà&ÔØ(ÔØ„NØ‡I�I„Kä C°)Ð=UÐ1VÑWÐWr&   z/szakerto-tervezrj   rk   Útervezett_datumÚ
megjegyzesc                 ó   • [        U5      (       d  [        SSS0S9$ U[        ;  a  [        SSS0S9$ UR                  [        R
                  5      R                  [        R
                  R                  U :H  5      R                  5       nU(       a  [        Xe5      (       d  [        SSS0S9$ [        XVR                  U5      nU(       a  [        SS[        U   0S9$  [        R                  " US	5      R                  5       nUR                  [        R"                  5      R                  [        R"                  R$                  U :H  [        R"                  R&                  U:H  5      R                  5       n	U	(       d%  [        R"                  " XS9n	UR)                  U	5        UR                  U	l        X‰l        UR/                  5       =(       d    S U	l        UR3                  5         [        SSUS.S9$ ! [          a    [        SSS
0S9s $ f = f)NrŽ   r�   õ&   Csak EmelÅ‘gÃ©p szakÃ©rtÅ‘ Ã¼temezhet!r�   é�  õ    Ã‰rvÃ©nytelen vizsgÃ¡lat-tÃ­pus!é”  õ'   Hiba tÃ¶rtÃ©nt vagy nincs jogosultsÃ¡g!r*   u   Ã‰rvÃ©nytelen dÃ¡tum formÃ¡tum!)rj   rk   r’   u
   Ãœtemezve!)r�   r˜   )r%   r   ÚENGEDELYEZETT_VIZSGALAT_TIPUSOKr[   r\   rd   r^   r`   r“   r   r   rb   r   r   r+   r   r,   rh   rj   rk   r”   r_   r˜   Ústripr™   r•   )
rj   rk   r˜   r™   r3   r#   rF   r–   Útervezett_datum_objrG   s
             r$   Úszakerto_tervez_menteser£   Ì   sÅ  € ô ˜,×'Ñ'Ü¨°iÐAiÐ5jÑkÐkàÔ>Ó>Ü¨°iÐAcÐ5dÑeÐeà
�(‰(”6—>‘>Ó
"×
)Ñ
)¬&¯.©.×*;Ñ*;¸zÑ*IÓ
J×
PÑ
PÓ
R€CÞÔ(¨×;Ñ;Ü¨°iÐAjÐ5kÑlÐlô ˜l¯N©N¸BÓ?€FÞÜ¨°iÔAVÐW]ÑA^Ð5_Ñ`Ð`ðeÜ&×/Ò/°ÀÓL×QÑQÓSÐð —‘œ×2Ñ2Ó3×:Ñ:Ü×!Ñ!×,Ñ,°
Ñ:Ü×!Ñ!×2Ñ2Ð6FÑFó÷ �eƒgð ö Ü×-Ò-¸Ñgˆ	Ø
�‰ˆyÔà$Ÿ™€IÔØ 3ÔØ%×+Ñ+Ó-×5°€IÔØ‡I�I„Kä C¸\Ð^mÑ1nÑoÐoøô! ó eÜ¨°iÐAbÐ5cÑdÒdðeús   Ã%G4 Ç4HÈHz/szakerto-tervez-torlesc                 óÖ  • [        U5      (       d  [        SSS0S9$ U[        ;  a  [        SSS0S9$ UR                  [        R
                  5      R                  [        R
                  R                  U :H  5      R                  5       nU(       a  [        XC5      (       d  [        SSS0S9$ [        X4R                  U5      nU(       a  [        SS[        U   0S9$ UR                  [        R                  5      R                  [        R                  R                  U :H  [        R                  R                  U:H  5      R!                  S	S
9  UR#                  5         [        SSS0S9$ )NrŽ   r�   r›   r�   rœ   r�   rž   rŸ   F)Úsynchronize_sessionr’   u   ÃœtemezÃ©s tÃ¶rÃ¶lve!)r%   r   r    r[   r\   rd   r^   r`   r“   r   r   rb   r   rh   rj   rk   Údeleter•   )rj   rk   r3   r#   rF   r–   s         r$   Úszakerto_tervez_torleser§   ù   s2  € ô ˜,×'Ñ'Ü¨°iÐAiÐ5jÑkÐkàÔ>Ó>Ü¨°iÐAcÐ5dÑeÐeà
�(‰(”6—>‘>Ó
"×
)Ñ
)¬&¯.©.×*;Ñ*;¸zÑ*IÓ
J×
PÑ
PÓ
R€CÞÔ(¨×;Ñ;Ü¨°iÐAjÐ5kÑlÐlô ˜l¯N©N¸BÓ?€FÞÜ¨°iÔAVÐW]ÑA^Ð5_Ñ`Ð`à‡H�HŒV×&Ñ&Ó'×.Ñ.Ü×!Ñ!×,Ñ,°
Ñ:Ü×!Ñ!×2Ñ2Ð6FÑFó÷ �f €fÑ'Ø‡I�I„Kä C°)Ð=TÐ1UÑVÐVr&   )3Úcollectionsr   r   r   r   Úfastapir   r   r	   r
   Úfastapi.responsesr   r   r   Úsqlalchemy.ormr   r\   Údatabaser   Úsecurityr   r   r   r   r   r   r   r   Úmsz_constantsr   Ú	msz_logicr   Útemplates_envr   Úrouterro   Úsetrr   r    Úboolr%   Ústrr-   rc   ÚUserrŒ   Úpostr<   r—   r£   r§   r=   r&   r$   Ú<module>r·      sŸ  ðÝ #ß .Ñ .ç 5Ó 5ß JÑ JÝ "ã Ý ÷÷ ó õ
 9Ý 7Ý #á	¡©°zÓ)BÓ!CÐ DÑ	E€ð *Ø"Ø6;ñ€ñ #& l×&9Ñ&9Ó&;Ó"<Ð ð8 Dô 8ð˜ð ¨ð °ô ð ‡�Ð!°,€Ð?ð ØÙ˜&“/Ù 'Ð(8Ó 9ñpØðpà	ðpð 	ðpð 	ð	pð
 —+‘+ôpó @ðpðf ‡�Ð#Ó$á˜3“iÙ˜E“{Ù˜U›Ù�U“Ù˜&“/Ù 'Ð(8Ó 9ñ XØð Xàð Xð ð Xð 
ð	 Xð
 	ð Xð —+‘+ô Xó %ð XðF ‡�ÐÓ á˜3“iÙ  ›IÙ ›9Ù˜2“hÙ˜&“/Ù 'Ð(8Ó 9ñ)pØð)pàð)pð ð)pð ð	)pð
 	ð)pð —+‘+ô)pó !ð)pðX ‡�Ð&Ó'á˜3“iÙ  ›IÙ˜&“/Ù 'Ð(8Ó 9ñ	WØðWàðWð 	ðWð —+‘+ô	Wó (ñWr&   