mif(dZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z Gd d eZGd d eZdS) zI Data Loaders for Dashboard Diritti - Refactored to use CancelableThread N) pyqtSignal)logger)CancelableThread)get_cache_manager)get_diritti_pivot_dataget_diritti_detail_datacTeZdZdZeejZdeffd Z dZ dZ xZ S)DirittiDataLoaderz Worker thread per caricare ed elaborare i dati per la pivot dei diritti. Refactored to use CancelableThread for safe cancellation. filterscVt||_dSN)super__init__r )selfr __class__s ?C:\PYTHON\MyICR_Suite\app\features\dash_diritti\data_loaders.pyrzDirittiDataLoader.__init__s$  ctj|dd}tj|dd}t|d|}t|d|}||krdS||z jdzS)uMCalcola i giorni di validità di un diritto all'interno di un anno specifico.r decrscadr)pd Timestampmaxmindays)rrowyear start_of_year end_of_year overlap_start overlap_ends r_calculate_days_in_yearz)DirittiDataLoader._calculate_days_in_yearsu T1a00 l4R00 CK77 #f+{33  ; & &1m+1A55rc H jrtjddS tjdt}|djfdd}jrtjddS||jr>jtj tj Stjd t|d tj |d |d <tj |d |d <g}tj jd j }tj jdj }jdd}|r|D]\}}jrtjddS|d j } || cxkr|krMn@|| } ||d| |d|d|d| dn|D]\}}jrtjddSt%|d j |} t'|d j |} t)| | dzD]L} || } ||d| |d|d|d| dM|s>jtj tj Stj |}jdr׉jrdStjd|ddgd}||ddkddg}tj||ddgd}|jr>jtj tj Sjdr׉jrdStjd |ddgd}||dd!kddg}tj||ddgd}|jr>jtj tj Sjrtjd"dStjd#|gd$d%&}|ddgdd%d'(d)}|d*d+d,d-.d*|jvrd)|d*<d+|jvrd)|d+<tjd/jsj||S#t<$rK}tjd0|d-1j tC|Yd}~dSd}~wwxYw)2zt Carica ed elabora i dati per la pivot dei diritti. Override di CancelableThread.do_work() z.DirittiDataLoader: Cancellato prima dell'avvioNz/Worker Diritti: Esecuzione query dati grezzi... diritti_rawc,tjSr)rr rsrz+DirittiDataLoader.do_work..<s#9$,#G#GrX namespaceparams query_functtlz(DirittiDataLoader: Cancellato dopo queryz*Worker Diritti: Inizio elaborazione dati (z righe).rrdata_decorrenza data_scadenzaonly_decorrenza_yearFz2DirittiDataLoader: Cancellato durante elaborazione tipologiafr_rrprodperc)r4annor5r6r7rrexclude_disponibilita_breveu@Worker Diritti: Applicazione filtro disponibilità >= 30 giorni.r8rinner)onhowexclude_perc_minoritariau8Worker Diritti: Applicazione filtro titolarità >= 100%.gY@z8DirittiDataLoader: Cancellato prima della finalizzazionez3Worker Diritti: Finalizzazione dati per la pivot...)r4r8r5count)namesum)indexcolumnsvaluesaggfuncrfirst_run_count re_run_count)FRT)rCinplacez(Worker Diritti: Elaborazione completata.zAWorker Diritti: Errore durante il caricamento/elaborazione dati: exc_info)" is_cancelledrinfor cached_queryr empty data_loadedemitr DataFramelen to_datetimer getiterrowsr%appendrrrangegroupbyrA reset_indexmergesize pivot_tablefillnarenamerC Exceptionerrorerror_occurredstr)rcacheraw_data exploded_rowsfilter_start_yearfilter_end_yearview_mode_decorrenza_rdecorrenza_year days_in_yearstartendr exploded_df days_sum_df valid_prods perc_sum_dffull_rights_prods counts_dffinal_data_for_pivotes` rdo_workzDirittiDataLoader.do_work)s    KH I I I4D  KI J J J&''E))'|GGGG *H   FGGGt8> %%blnn555|~~% K\S]]\\\ ] ] ]!~hv.>??HV !~hv.>??HV M "t|> *$ 4 ^___*11662BCCFKOOQQ]]__ *+f*=*CDffEUV !h{KVVDTZabbb $*$))",..999<>>)| :;; *$ 4 VWWW)11662BCCFKOOQQ]]__ $/ F0Cu0L$MvW]N^$_! h{4E6SYJZ`ghhh $*$))",..999<>>)   VWWWt KM N N N#++,J,J,JKKPPRR^^dk^llI#,#8#8"F+WWV[$9$$fQii  ! ! ' '6Gn0]0]gk ' l l l (<(DDD:;$%67%9%AAA78$^4 KB C C C$ < %%&:;;;' '    L`]^``ko p p p p   $ $SVV , , ,44444 s\AY AY C;Y BY $CY ;5Y 2C Y !Y #C Y 1Y C=Y Z!AZZ!) __name__ __module__ __qualname____doc__rrrSrQdictrr%rx __classcell__rs@rr r s *R\**K 6 6 6NNNNNNNrr cZeZdZdZeejZdededede ffd Z dZ xZ S)DirittiDetailDataLoaderz Thread per caricamento dati di dettaglio dei diritti. Gestisce il caricamento asincrono dei dettagli per una cella selezionata nella pivot table, evitando di bloccare l'interfaccia. r4r8r5r ct||_||_||_||_dSr)rrr4r8r5r )rr4r8r5r rs rrz DirittiDetailDataLoader.__init__s9 "   rc|jrtjddS tjdjdjdjt }jjjtjd}| d|fdd }js?j |tjd t|d |S#t$rK}tjd |d j t|Yd}~dSd}~wwxYw)zi Carica i dati di dettaglio con caching. Override di CancelableThread.do_work() z4DirittiDetailDataLoader: Cancellato prima dell'avvioNz3DirittiDetailDataLoader: Caricamento dettaglio per z, )r4r8r5r diritti_detailcPtjjjjSr)r r4r8r5r r)srr*z1DirittiDetailDataLoader.do_work..s&#:NIJL $$rr+r,z-DirittiDetailDataLoader: Dettaglio caricato, z righez8DirittiDetailDataLoader: Errore durante il caricamento: TrK)rMrrNr4r8r5rrdr rO detail_loadedrRrTrarbrc)rre detail_params detail_dfrws` rrxzDirittiDetailDataLoader.do_works    KN O O O4"  Kydnyy`d`iyymqmwyy z z z&''E!^ t|,, M***$ +  I$ d"'' 222 bCPYNNbbbccc     LWTUWWbf g g g g   $ $SVV , , ,44444 sCC&& D;0AD66D;) ryrzr{r|rrrSrrdr}rrxr~rs@rrrs Jr|,,M#St,,,,,,,rr)r|pandasr PyQt6.QtCorerlogururapp.utils.cancelable_threadrapp.utils.cache_managerrqueriesrr r rrrrs######888888555555DDDDDDDDhhhhh(hhhV<<<<<.<<<<<r