idZddlmZmZmZmZmZmZmZm Z m Z m Z ddl m Z ddlZddlmZddlmZddlmZddlmZdd lmZGd d eZdS) zc Schedules Widget for Python Scheduler Central scheduling hub - schedule individual jobs or groups ) QWidget QVBoxLayout QHBoxLayout QTableWidgetQTableWidgetItem QPushButton QHeaderViewQLabel QMessageBoxQMenu)QtN)QAction)logger)SchedulerDatabase)SchedulerConfig)ScheduleEditorDialogcpeZdZdZdedeffd ZdZdZde de d e fd Z d Z d e fd Z d ZdZdZxZS)SchedulesWidgetz$Schedules list and management widgetdbconfigct||_||_||dS)N)super__init__rr _setup_uirefresh)selfrr __class__s 'C:\PYTHON\Frank\gui\schedules_widget.pyrzSchedulesWidget.__init__sH    c0t|}t}td}|d|||t d|_|jj |j ||j| |t}t d|_ |j d|j j |j ||j t d|_|jd|jj |j||jt d|_|jd |jd|jj |j||j|| |t'|_|jd |jgd |jd t2jj|jt&jj|jd |j t&j!j"|jj# |j$||jdS)zSetup UIz Schedules - When to Execute Jobsz#font-size: 14px; font-weight: bold;Refreshz New Schedulez;background-color: #4CAF50; color: white; padding: 5px 15px;EditFDeletez;background-color: #f44336; color: white; padding: 5px 15px;)IDNameTypeTargetScheduleEnabledTN)%rrr setStyleSheet addWidget addStretchr refresh_btnclickedconnectr addLayoutnew_schedule_btn _new_scheduleedit_schedule_btn setEnabled_edit_scheduledelete_schedule_btn_delete_schedulertablesetColumnCountsetHorizontalHeaderLabelshorizontalHeadersetSectionResizeModer ResizeModeStretchsetSelectionBehaviorSelectionBehavior SelectRowssetAlternatingRowColorssetEditTriggers EditTriggerNoEditTriggersitemSelectionChanged_on_selection_changed)rlayout header_layout header_labelactions_layouts rrzSchedulesWidget._setup_uisT""$ @AA ""#HIII ---  """'y11  ((666 0111'''% +N ; ; ++,ijjj %--d.@AAA  !6777!,V!4!4 ))%000 &..t/BCCC  !7888#.x#8#8   ../lmmm  ++E222  (001FGGG  !9:::!!###((("^^  !!!$$$ ,,. . .     ##%%::1k>T>\]]] '' (F(QRRR **4000 ""<#;#JKKK '//0JKKK$$$$$rc 4 |jtj}|jt |t|D]\}}|j|dtt|d|j|dt|ddddd d }| |d |d }|j|d t|| d d|d}|j|dt|| |d|d}|j|dt||drdnd}t|} |dr%| tjjn$| tjj|j|d| t%jdt |ddS#t($r"} t%jd| Yd} ~ dSd} ~ wwxYw)zRefresh schedules list)hostnameridr+nameJobGroupBackupSync)jobgroupbackup_profile sync_profile target_type target_namezID target_id schedule_typeschedule_configenabledYesNozRefreshed schedules table: z scheduleszError refreshing schedules: N)rget_all_schedulessocket gethostnamer: setRowCountlen enumeratesetItemrstrget_format_schedule setForegroundr GlobalColor darkGreenredrdebug Exceptionerror) r schedulesrowscheduletype_map type_textr\ schedule_text enabled_text enabled_itemes rrzSchedulesWidget.refreshWs* =116;M;O;O1PPI J " "3y>> 2 2 2!*9!5!5 9 9 X ""3+;CPS4T4TiTZZ000ZiF&&; 65 9 9;;;*,,K==Cf}} s %;%;c%;%;<<<2 % 0 0222(**$}$$ -'', , , ,sAB$AB$B$"B$$B?ct|jdk}|j||j|dS)zHandle selection changerN)rjr: selectedItemsr5r6r8)r has_selections rrIz%SchedulesWidget._on_selection_changedsVDJ446677!;  ))-888  ++M:::::rc|j}|sdS|d}t |j|dS)zGet selected schedule IDNr)r:selectionModel selectedRowsrxintitemtext)r selected_rowsrxs r_get_selected_schedule_idz)SchedulesWidget._get_selected_schedule_idsn 1133@@BB  4A""$$4:??3**//11222rct||j|j}|r|dSdS)zCreate new scheduleN)rrrexecr)rdialogs rr4zSchedulesWidget._new_schedulesB%dDGT[AA ;;==  LLNNNNN  rc|}|sdSt||j|j|}|r|dSdS)zEdit selected scheduleN) schedule_id)rrrrrr)rrrs rr7zSchedulesWidget._edit_schedulese4466   F%dDGT[kZZZ ;;==  LLNNNNN  rc |}|sdS |j|}tj|dd|dd|ddtjjtjjztjj}|tjjkrg|j|tj d|tj |d d |dd | dSdS#t$r;}tjd |tj|d d|Yd}~dSd}~wwxYw)zDelete selected scheduleNzConfirm DeletezDelete schedule 'rQz'? (The target rZz will not be deleted)zDeleted schedule Successz Schedule 'z ' deletedzError deleting schedule: ErrorzFailed to delete schedule: )rr get_scheduler questionStandardButtonrcrddelete_schedulerinfo informationrrurvcritical)rrryreplyrs rr9z SchedulesWidget._delete_schedules4466   F Sw++K88H( vHV$4vvQ^H_vvv*.1K1NN*- E 2666'' 444 = ==>>>'i9ahvFV9a9a9abbb  76  S S S L8Q88 9 9 9  w0Qa0Q0Q R R R R R R R R R SsC/D E0E  E)__name__ __module__ __qualname____doc__rrrrrrmrorIrrr4r7r9 __classcell__)rs@rrrs..,o7%7%7%r,=,=,=\-c-C-C----*;;; 333333 SSSSSSSrr)rPyQt6.QtWidgetsrrrrrrr r r r PyQt6.QtCorer rg PyQt6.QtGuirlogurur core.databaser core.configrgui.schedule_editor_dialogrrrrrsF  ++++++'''''';;;;;;}S}S}S}S}Sg}S}S}S}S}Sr