Zgj@/ddlZddlZddlZddlZddlmZmZmZmZddl m Z m Z m Z mZddlmZddl mZeedZ de jd <e d d Ze d d Ze ddZe ddZe ddgdZe ddgdZe ddgdZe ddgdZe ddZe ddZe d dgd!Z d"e!d#e!d$e!fd%Z"e d&dgd'Z#e d(d)Z$e d*dgd+Z%e d,dgd-Z&e d.dgd/Z'd0Z(e d1d2Z)e d1dgd3Z*e d1d4gd5Z+e d6d7gd8Z,dS)9N)Flaskrender_templatejsonifyrequest)statedbsessiondecoder) load_xlsx)exporter templates)template_folderFJSON_SORT_KEYS/c tdS)Nz index.html)rRC:\Users\Mauro Gagliardi\Dropbox\adrian\PYTHON\MonitorOsservatorioPy\app\server.pyindexrs < ( ((rz /api/recordsc lg}ttjD] \}}|id|d|jd|jd|jr|jdndd|jr|jdndd |j d |j d |j d |j d |j d|jd|jd|jd|jd|jd|jd|j|j|j|j|j|j|j|j|jd t;|S)Nidxchannelweekdaydatez%d/%m/%Ytimez%H:%Mtitle descriptionduration share_4plus rtg_4plus share_commrtg_commshare_men16plus rtg_men16plusshare_women16plusrtg_women16plus share_men1659) rtg_men1659share_women1659 rtg_women1659cod_oss agganciatoprima_tvtooltipraw_data) enumeraterrecordsappendrrrstrftime start_timerrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r)datairs r api_recordsr9s D%-((  1  1 qy  qy  16AAFOOJ///r  alJAL))'222  QW   1=     1=    !,     q0  Q_  !4 q0! " Q_# $= 0_y, y 3       6 4==rz/api/raw_headersc4ttjSN)rr raw_headersrrrapi_raw_headersr=5s 5$ % %%rz /api/searchctjdd}tjdddk}t|dkrt gSt j||}t |S)Nqrcontains01)r@)rargsgetlenrr search_scheda)r?r@resultss r api_searchrI:ss b!!A| C00C7H 1vvzzr{{q8444G 7  rz/api/prima_tv/POST)methodsc|dks|ttjkrtddidfStjdd}|dvrtddidfS|tj|_|d kr.d tj|_dtj|_ ttd d iS) Nrerrorindice non validovaluer)SNC_notteC_recaprzvalore non validorQFokT) rFrr2rrjsonrEr.r-r, _autosave)rvals r api_prima_tvrYDs Qww#U]++++!4566;; ,  7B ' 'C 666!4566;;"%EM# czz(- c%%' c" KKK D$<  rz/api/aggancia/c|dks|ttjkrtddidfStj|}d|_t jdd|_t jdd|_ d |_ ttd d iS) NrrMrNrOrQr,rr/TrU) rFrr2rr.rrVrEr,r/r-rWrrecs r api_agganciar]Ss Qww#U]++++!4566;; - CCL<##Ir22CK<##Ir22CKCN KKK D$<  rz/api/rimuovi/c|dks|ttjkrtddidfStj|}d|_d|_t tddiS) NrrMrNrOrFrUT)rFrr2rr,r-rWr[s r api_rimuovir_`sm Qww#U]++++!4566;; - CCKCN KKK D$<  rz/api/importa_filectjd}|stddidfS|jpd}t jtj d|z}| | t|\t_ t_t_t!j|}|t_|t_t)jtj }tj D]%}t)j|j\}}||_&|p d|vr|ddnd t_t!jtj tjtjtd t7tj |d  t j|S#t:$rYSwxYw#t<$rO}tdt?|id fcYd}~ t j|S#t:$rYSwxYwd}~wwxYw# t j|w#t:$rYwwxYwxYw) NfilerM nessun filerOz import.xlsx mo_upload__rrT)rUcountfilename) rfilesrErrfospathjointempfile gettempdirsaver rr2r<export_header_rowsess save_source source_filesource_basenamer detect_paesedecode_channelrsplitpaesesave_annotationsrFunlinkOSError Exceptionstr) fbasenametmp stable_path stato_paeser\decodedrdes rapi_importa_filerksG &!!A 6/00#55z*]H ',,x*,,lX.E F FCFF3KKKDMcNNA u(%*A&s++ + (*5=99 = " "C / </H9H>IH)) H65H69H>>II(II( I%"I($I%%I(z/api/db_statusc8tdtjiS)Nsync_ok)rr db_sync_okrrr api_db_statusrs Iu/0 1 11rz/api/session/statusc tj}|stddiStd|dd|ddt |dgdS) NexistsFTrsrsaved_at annotations)rrfrre)rp load_sessionrrErF)r s rapi_session_statusrs!!G *%())) KK 1266KK B//W[[3344   rz/api/session/restorec tj}|stddidfS ttj\t _t _t _tjt _ |dt _ | ddt _ t jD]#}tj|j\|_}$tjt j|tdt#t jt j | ddd S#t$$r*}tdt'|id fcYd}~Sd}~wwxYw) NrMzNessuna sessione salvatarsrwrTr)rUrerfrrg)rprrr source_pathrr2r<rorrrsrErwr rurapply_annotationsrFr{r|)r r\rdrs rapi_session_restorersc!!G C!;<==sBB/DMdN^N`N`DaDaA u(%*A $ 0 2 2 '(9 : ' GR 8 8 = A AC$3CK@@NCK u}g666''- J33      ///Q())3......./sD(E FF<FF export_dirsidecar_filename sidecar_pathcHddlm} |ddd}tj||dz}t j|dt j5}| ||tj }tj |r6| |dtj |ztddD]O}tj|} tj | r| | d |d P dddn #1swxYwY|d |dS#t"$r!} |d | Yd} ~ dSd} ~ wwxYw) Nr)logger.rCz _backup.zipw sorgente_session_backup_z.jsonzBackup ZIP creato: {}zBackup ZIP fallito: {})logururrsplitrirjrkzipfileZipFile ZIP_DEFLATEDwriterprrr~range _backup_fileinfor{warning) rrrrstemzip_pathzfsrcr7bakrs r_create_backup_ziprs4&&sA..q17<< D=,@AA _XsG,@ A A >R HH\#3 4 4 4"$$Cw~~c"" CkBG,<, >'**7>>#&&>HHS"  > > > > > > > > > > > > > > >  +X66666 444/3333333334s=AE6'CE E6EE6EE66 F!FF!z /api/esportactjstddidfS tjtjtjtjtj\}}tj }tj ||}t|d5}||dddn #1swxYwYtjt"|||fdtd||dS#t&$r*}tdt)|id fcYd}~Sd}~wwxYw) NrMzNessun file caricato.rO) header_rowwbT)targetrDdaemon)rUrjrfrg)rrrrexpexport_xlsx_sidecarr2rsrorprrirjrkopenr threadingThreadrstartr{r|)r6rfr export_pathr}rs r api_esportars  @!89::C??/0 M5,e.C.   h_&& gll:x88 +t $ $  GGDMMM               %h 4    %'''dKXNNOOO ///Q())3......./sCBD'C = D C  DC AD E "EE E z /api/utenticBttjSr;)rrp list_usersrrr api_utentirs 4?$$ % %%rz/api/session/import_jsonc ddl}tjd}|st ddidfS ||d}n-#t$r }t dd|idfcYd}~Sd}~wwxYw|dd }|st dd idfStj |}|st dd |d id fS t|\t_ t_t_|dt_|dd t_tj D]#}t%j|j\|_}$tjtj |tj|}|t_tjtj tjtjt dt3tj tj|dd |dS#t$r*}t dt5|idfcYd}~Sd}~wwxYw)NrrarMrbrOzutf-8zFile non valido: usernamerz.Campo 'username' non trovato nel file sessionez$File dati non trovato per l'utente ''rrsrwTrrUrerfr from_userrg)rVrrhrErloadsreaddecoder{rpsource_path_for_userr rr2r<rorsrwr rurrrqrrrxrFr|) _jsonr}r rrsrc_pathr\rdrs rapi_session_import_jsonrs &!!A 6/00#55@++affhhoog6677 @@@!8Q!8!89::C???????@{{:r**H Y!QRSSUXXX(22H [!S!S!S!STUUWZZZ/DMhDWDWA u(%*A '(9 : ' GR 8 8 = A AC$3CK@@NCK u}g666&x00 ' emU-BEKPPP''- J33!       ///Q())3......./s<:A55 B?BBB;EI I?I:4I?:I?z$/api/session/restore_from/c ttj|\}}|r|stdd|idfS t|\t_t_t_|dt_| ddt_ tjD]#}tj |j \|_ }$tjtj|tj|}|t_tjtjtjtj tdt%tjtj| dd|d S#t&$r*}tdt)|id fcYd}~Sd}~wwxYw) NrMzNessuna sessione attiva per rrsrwrTrrrg)rpload_session_from_userrr rr2r<rorsrErwr rurrrqrrrxrFr{r|)rr rr\rdrrs rapi_session_restore_fromrs3H==GX R(R!J!J!JKLLcQQ/DMhDWDWA u(%*A '(9 : ' GR 8 8 = A AC$3CK@@NCK u}g666&x00 ' emU-BEKPPP''- J33!       ///Q())3......./sEF F7 F2,F72F7z/api/session/clearcgt_dt_dt_dt_gt_t jtddiS)NrrUT) rr2rrrsrwr<rp clear_sessionrrrrapi_session_clearr!sIEMEEEKE D$<  rctjr`tjrVtjtjtjct jfdddSdSdS)Nc0tjSr;)rprxr~rwr2srz_autosave..0s40(EJJrT)rr)rr2rsrwrrrrs@@@rrWrW,s }.#(=%2G 5JJJJJJ    %''''' rz /api/reticBttjSr;)rr get_tablerrrapi_retir5s 7$&& ' ''rc"tjpi}|dd}|dd}|dd}|r|r|st ddidfS t j|||t dd iS#t$r*}t dt|id fcYd}~Sd}~wwxYw) Nrwr originale decodificatorMzCompilare tutti i campirOrUTrg) rrVrEstripupperrr add_rowr{r|)drwrrrs r api_reti_addr:s  Aw##))++1133E{B''--//I55,,2244L B BB!:;<DELETEc tj|tddiS#t$r*}tdt |idfcYd}~Sd}~wwxYw)NrUTrMrg)r delete_rowrr{r|)rrs rapi_reti_deleterUsv/3d|$$$ ///Q())3......./s$' AAAA)-rirlrrflaskrrrrapprrr rpr app.importerr r r__name__configrouterr9r=rIrYr]r_rrrrr|rrrrrrrWrrrrrrrrso ::::::::::::333333333333"""""" eHk222$ 3)))>B &&&= $vh77 ! !87 ! $vh77 ! !87 ! #fX66!!76! 1121< 222 !!  "!  !F844//54/,434#4S4444&>F8,,//-,/,=&&& %x88!/!/98!/H 1F8DD//ED/2 &22!!32!;(((;)) / /*) /;((//)(/ 8*55//65///r