ó C…#Wc@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZdd lmZmZdd lmZdd lmZdd lmZdd lmZeadefd„ƒYZd„Zd„Z eeed„Z!d„Z"eeed„Z#d„Z$eeed„Z%d„Z&d„Z'd„Z(d„Z)d„Z*dS(s0 Gather Date and Time information from the user iÿÿÿÿN(trun(t InstallEngine(tINSTALL_LOGGER_NAME(tSystemConfiguration(t_tSCI_HELP(tLOG_LEVEL_INPUT(t BaseScreent UIMessage(t EditField(t ErrorWindow(tListItem(t WindowAreatDateTimeScreencBs'eZdZedƒZedƒZedƒZedƒZedƒZedƒZ edƒZ edƒZ e d edƒfZ d Zd ZeeƒZeeƒZeeƒZeeƒZee ƒZeeeeeeƒd Zd Zd „Zd„Zd„Zdd„Zd„Zd„ZRS(se Allow user to select year, month, day, hour, and minute to be used to set system clock. s Date and TimesYear:sMonth:sDay:sHour:sMinute:s(YYYY)sŸEdit the date and time as necessary. Time shown is the system clock time in UTC and will be interpreted as such on installation. The time is in 24 hour format.s/%s/date_time.txtiiicCsMtdkr"tjtdƒantt|ƒj|ƒtjd}tj |}t d|dtj ƒ|_ t d|dtj dƒ|_ tjd}tj tjtjd}t d|d|ƒ|_tj |j jd|_ttjƒ|_|j|jd}|j|}t d|d|ƒ|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%t&|_'t&|_(d|_)d|_*d|_+d|_,d|_-d|_.d|_/t0j1ƒj2|_2|j2j3dt4dt&ƒd|_5d|j5_6dS(Ns .sysconfigiiit class_typetnot_found_is_err(7tLOGGERtNonetloggingt getLoggerRtsuperR t__init__t YEAR_DIGITStMAX_LENR t ITEM_OFFSETt list_areatyear_edit_areat TWO_DIGITSt edit_areatcolumnst info_offsettlent YEAR_FORMATt info_widtht win_size_xterr_areat year_edittyear_errt year_listt month_editt month_errt month_listtday_edittday_errtday_listt hour_editthour_errt hour_listt minute_editt minute_errt minute_listtTruet year_is_validtmonth_is_validtdate_range_loct saved_yeart saved_montht saved_dayt saved_hourt saved_minutetsaved_days_in_monthRt get_instancetdoctget_descendantsRtsct time_offset(tselftmain_wintyear_edit_widtht list_widthtother_edit_widthtother_edit_offsett err_offsett err_width((s date_time.pyRQsZ                               cCs d}||jjtj|ƒ7}tjjƒ}tjtd|j |j |j |j |j ƒt|j ƒ|_t|j ƒ|_t|j ƒ|_t|j ƒ|_t|j ƒ|_tj|j |j ƒd|_tjd|j|j|j|j|jƒtjd|jƒ|d7}||j_||j_t|jd|jdtƒ|_t|jd|jdtjƒ|_ t!|j"d|j dt#d |jd t$d|jƒ|_%t&|j%_'|jj(tj)||j*ƒ|d7}||j_||j_t|jd|jdtƒ|_+t|jd|jdtj,ƒ|_-t!|j.d|j-dt/d |j+d t0d|jd d ƒ|_1t&|j1_'t&|j1_2|jj(d ||j*ƒ|d7}||j_||j_t|jd|jdtƒ|_3t|jd|jdtj4ƒ|_5t!|j.d|j5dt6d |j3d t7d|jd d ƒ|_8t&|j8_'t&|j8_2||j1j9d<|j%|j1j9d<|j8|j1j9d<||j%j9d<|j1|j%j9d<|j8|j%j9d<||j8j9d<|j%|j8j9d<|j1|j8j9d<||j*f|_:|j;|jƒ|d7}||j_||j_t|jd|jdtƒ|_<t|jd|jdtj=ƒ|_>t!|j.d|j>dt?d |j<d t@d|jd d ƒ|_At&|jA_'t&|jA_2|jj(d||j*ƒ|d7}||j_||j_t|jd|jdtƒ|_Bt|jd|jdtjCƒ|_Dt!|j.d|jDdtEd |jBd tFd|jd d ƒ|_Gt&|jG_'t&|jG_2|jj(d||j*ƒ|jHjIƒ|jjJ|j ƒdS(sK Prepare the editable fields for day, month, year, hour and minute is9Current date (year-month-day hour:minute): %s-%s-%s %s:%ss3starting year month day hour minute:_%s_%s_%s_%s_%ssstarting days_in_month: %stwindowtcenteredttexttvalidatet error_winton_exitt numeric_padt0s(1-12)t date_timeR$R*R's(0-23)s(0-59)N(Kt center_wint add_paragraphR t PARAGRAPHtdatetimetnowRtlogRtyeartmonthtdaythourtminutetstrR7R8R9R:R;tcalendart monthrangeR<tdebugR#ty_locRR tFalseR%R t YEAR_TEXTR&R Rt year_validt year_on_exitR$R3tclear_on_entertadd_textR RR(t MONTH_TEXTR)Rt month_validt month_on_exitR't right_justifyR+tDAY_TEXTR,t day_validt day_on_exitR*tvalidate_kwargsR6tupdate_day_rangeR.t HOUR_TEXTR/t hour_validt hour_on_exitR-R1t MINUTE_TEXTR2t minute_validtminute_on_exitR0RCt do_updatetactivate_object(RBRbRW((s date_time.pyt_showˆsÜ                                                     cCs8|jjƒ}|jjƒ}|jjƒ}|jjƒ}|jjƒ}tjd|ƒtjd|ƒtjd|ƒtjd|ƒtjd|ƒt}|jj ƒs¹t }n|jj ƒsÑt }n|jj ƒsét }n|jj ƒst }n|jj ƒst }n|r4t t dƒƒ‚ndS(sVerify each of the edit fieldss year_value=%ssmonth_value=%ss day_value=%ss hour_value=%ssminute_value=%ss$Invalid date/time. See errors above.N( R$tget_textR'R*R-R0RRaRct run_on_exitR3RR(RBt year_valuet month_valuet day_valuet hour_valuet minute_valuethad_err((s date_time.pyRMs.     icCs?|jjd||jd|jd|jdƒ||_dS(s  Update the day range displayed. The max number of days can vary depending on the month, so calling functions can update appropriately. s(1-%d)iiiN(RSRhR6R"R<(RBtmaxday((s date_time.pyRq(s   cCs^|jjƒ|_|jjƒ|_|jjƒ|_|jjƒ|_|j jƒ|_ dS(s,Save current user input for return to screenN( R$R{R7R'R8R*R9R-R:R0R;(RB((s date_time.pyton_change_screen4s cCsõtjt|jjƒƒt|jjƒƒt|jjƒƒt|jjƒƒt|jjƒƒƒ}|tjjƒ}t j d|ƒ||j _ tjjƒ|}d|j dƒg}t|dt didd6ƒ}|jjƒ|j _dS( sSet the date/times delta time=%ss /usr/bin/dates %m%d%H%M%ytloggertenvtCtLC_ALLN(RVtintR$R{R'R*R-R0RWRRaR@RAtstrftimeRtstdouttstript timestamp(RBt saved_timet userdeltatinstall_datetimetcmdtp((s date_time.pyt on_continue<s (t__name__t __module__t__doc__Rt HEADER_TEXTRdRiRmRrRuR RURt HELP_DATARRRtYEAR_LENt MONTH_LENtDAY_LENtHOUR_LENt MINUTE_LENtmaxRRRRzRMRqR„R“(((s date_time.pyR 1s2              7 †  cCsÓ|jstjdƒdSt|jƒƒ}|dkr<dS|dkr­|jsbtjdƒdS|jƒ}tjd|ƒt|ƒdkr­tjt|ƒdƒd Snt j j ƒ}tj|j |ƒd S( s¯ Get the number of days in the month. Assumes non-None month and year field. Returns 31 if month field is zero or not valid and 28 if Feb, but year not valid. sget_days_in_month returning 31iiisget_days_in_month returning 28is cur_year %sii( R5RRaR‰R{R4RR_R`RVRWRY(R'R$RRt month_numtcur_yearRW((s date_time.pytget_days_in_monthMs        cCs§tjdƒt|||ƒ}tjd|ƒ|j|ƒ|jƒsLdSt|jƒƒ}||kr£|jjtj ƒ|j t |ƒƒtjd|ƒndS(sà Update the day range max with number of days in month. If days in day_edit field is greater than number of days in month, modify value in day_edit field to number days in month. schecking day ranges%s days in monthNsupdating day to %s( RRaR¡RqR{R‰ttextboxt do_commandR t CMD_MV_BOLtset_textR^(R'R*R$RRt days_in_monthtcur_day((s date_time.pytcheck_day_rangejs    cCs?|rt|_n|jƒ}|s(tStjjƒ}tjtd|ƒ|j ƒskt t dƒƒ‚n|d|j dƒdkr­tj d|ƒt t dƒƒ‚nt|ƒdkr|d|j dƒdkrtj d|ƒt t dƒƒ‚n|r;t|_t|ƒd kr;t||||ƒq;ntS( s+Check validity of year as each char enteredsvalidating year, text=%s=sYear must be numericis%Ys"year doesn't start with 2, text=%ssYear out of rangeisyear out of range=%si(RcR4R{R3RVRWRRXRtisdigitRRRŠRaRR¨(R$R'R*RRtyear_strRW((s date_time.pyRe~s(   / cCsa|jƒ}tjd|ƒt|ƒt|ƒdkr]tjdtƒttdƒƒ‚ntS(sCheck year when exiting fieldsyear_on_exit, =%s=ison exit year out of range=%ssYear out of range( R{RRaReRtinputRRR3(R$Rª((s date_time.pyRfœs  cCs|rt|_n|jƒ}tjtd|ƒ|s;tS|jƒs\tt dƒƒ‚ntj dt |ƒ|ƒt |ƒdkrÖt |ƒdks«t |ƒdkrÖtjtd|ƒtt dƒƒ‚qÖn|rt|_t |ƒdkrt ||||ƒqntS( s,Check validity of month as each char enteredsvalidating month, text=%s=sMonth must be numericslen = %s, text=%s ii ismonth out of range, =%ssMonth out of range(RcR5R{RRXRR3R©RRRaRR‰R¨(R'R*R$RRt month_str((s date_time.pyRj¨s$   $ cCsh|jƒ}tjd|ƒt|ƒ| s?t|ƒdkrdtjd|ƒttdƒƒ‚ntS(sCheck month when exiting fieldsmonth_on_exit, =%s=ison exit month out of range=%ssMonth out of range(R{RRaRjR‰RRR3(R'R¬((s date_time.pyRkÄs  cCsö|jƒ}tjtd|ƒ|s)tS|jƒsJttdƒƒ‚ntjtdt|ƒ|ƒ|dks~|dkr‚tSt |||ƒ}t|ƒdkròt |ƒ|ksÊt |ƒdkròtj d|ƒttdƒƒ‚qòntS( s*Check validity of day as each char enteredsvalidating day, text=%s=sDay must be numericslen = %s, text=%s iisday out of range, =%ssDay out of rangeN( R{RRXRR3R©RRRRR¡R‰Ra(R*R'R$RRtday_strR¦((s date_time.pyRnÐs  $cCsh|jƒ}tjd|ƒt|ƒ| s?t|ƒdkrdtjd|ƒttdƒƒ‚ntS(sCheck day when exiting fieldsday_on_exit, =%s=ison exit day out of range=%ssDay out of range(R{RRaRnR‰RRR3(R*R­((s date_time.pyRoés  cCs”|jƒ}tjtd|ƒ|rG|jƒ rGttdƒƒ‚nt|ƒdkrt|ƒdkrtj d|ƒttdƒƒ‚nt S(s+Check validity of hour as each char enteredsvalidating hour, text=%s=sHour must be numericiishour out of range, =%ssHour out of range( R{RRXRR©RRRR‰RaR3(R-thour_str((s date_time.pyRsõs $cCsE|jƒ}tjd|ƒ|s7ttdƒƒ‚nt|ƒtS(sCheck hour when exiting fieldshour_on_exit, =%s=sHour out of range(R{RRaRRRsR3(R-R®((s date_time.pyRts   cCs„|jƒ}tjtd|ƒ|rG|jƒ rGttdƒƒ‚nt|ƒdkr€t|ƒdkr€ttdƒƒ‚nt S(s-Check validity of minute as each char enteredsvalidating minute, text=%s=sMinute must be numericii;sMinute out of range( R{RRXRR©RRRR‰R3(R0t minute_str((s date_time.pyRvs $cCsE|jƒ}tjd|ƒ|s7ttdƒƒ‚nt|ƒtS(sCheck minute when exiting fieldsminute_on_exit, =%s=sMinute out of range(R{RRaRRRvR3(R0R¯((s date_time.pyRws   (+R–R_RVRtsolaris_installRtsolaris_install.engineRtsolaris_install.loggerRt!solaris_install.sysconfig.sc_specRtsolaris_install.sysconfig.utilRRtsolaris_install.terminaluiRt&solaris_install.terminalui.base_screenRRt%solaris_install.terminalui.edit_fieldR t'solaris_install.terminalui.error_windowR t$solaris_install.terminalui.list_itemR t&solaris_install.terminalui.window_areaR RRR R¡R¨ReRfRjRkRnRoRsRtRvRw(((s date_time.pyts:   ÿ