Fix bug 1987:

添加安装完成后的动作(重启/关机/待机)

    修改:      interface/ri_data.py
	修改:      interface/ri_inst_cli.py
	修改:      interface/ri_install.py
	修改:      main/setup
	修改:      text/ri_main.py
	修改:      text/ri_newt.py

Signed-off-by: sysadmin <zhihuipeng@linx-info.com>
This commit is contained in:
sysadmin
2014-08-19 10:23:13 +08:00
parent 3594ab8f9c
commit 918bf64ea5
6 changed files with 95 additions and 16 deletions

View File

@@ -735,6 +735,8 @@ def init_from_xml():
Service.init_from_xml(n)
elif n.nodeName == 'stategrid':
StateGrid.init_from_xml(n)
elif n.nodeName == 'finishstate':
FinishState.init_from_xml(n)
def init_from_xml_and_os():
''' init all classes in this module from file and os '''
@@ -767,6 +769,7 @@ def to_xml():
Network.to_xml(xmldoc, root)
Group.to_xml(xmldoc, root)
Service.to_xml(xmldoc, root)
FinishState.to_xml(xmldoc, root)
PrettyPrint(xmldoc, f)
f.close()
@@ -794,3 +797,25 @@ p_node - xml node (parent node)'''
p_node.appendChild(stgd)
class FinishState():
''' decide reboot or shutdown or keep current status when finishing
OS install, flag include three value: reboot, shutdown, nothing'''
flag = ''
@staticmethod
def init_from_xml(node):
''' init finish state flag from xml node '''
#FinishState.flag = node.firstChild.data.encode('ascii')
for k in node.attributes.keys():
setattr(FinishState, k, node.attributes[k].value.encode('ascii'))
@staticmethod
def to_xml(doc, p_node):
''' write reboot or not flag into xml
doc - xml document instance
p_node - xml node (parent node)'''
std = doc.createElement('finishstate')
for ft in ('flag',):
to_xml_attr(doc, std, FinishState, ft)
p_node.appendChild(std)

View File

@@ -19,6 +19,8 @@
import ri_progress,re,os
from ri_oper import language, Rate
from snack import *
import ri_data
def set_task(task_name):
ri_progress.i_operation = task_name
@@ -36,36 +38,47 @@ def set_task_over():
# if re.match('instmode=',i):
# instmode = i.split('=')[1]
# break
try:
instmode = os.environ["instmode"]
except:
instmode = 'Text'
#try:
# instmode = os.environ["instmode"]
#except:
# instmode = 'Text'
screen = SnackScreen()
screen.drawRootText(0, 0, 'Rocky Security OS Install')
screen.pushHelpLine(' ')
g = GridForm(screen, 'Rocky Install', 1, 3)
txt1 = Label('Automated Install Rocky OS successfully, and the OS will reboot in 10 seconds ......')
txt2 = Label('Install Rocky OS successfully, do you want to reboot ?')
txt2 = Label('Automated Install Rocky OS successfully, and the OS will shutdown in 10 seconds ......')
txt3 = Label('Install Rocky OS successfully, do you want to reboot ?')
elabel = Label('')
bb = ButtonBar(screen, (('Ok','ok'),('Cancel','cancel')))
g.add(elabel, 0, 1)
if instmode == 'Auto' or instmode == 'StateGrid':
#if instmode == 'Auto' or instmode == 'StateGrid':
if ri_data.FinishState.flag.strip() == 'reboot':
g.add(txt1, 0, 1)
g.setTimer(10000)
g.runOnce()
screen.finish()
return True
else:
g.add(txt2, 0, 0)
#return True
return 'reboot'
elif ri_data.FinishState.flag.strip() == 'shutdown':
g.add(txt2, 0, 1)
g.setTimer(10000)
g.runOnce()
screen.finish()
#return True
return 'shutdown'
elif ri_data.FinishState.flag.strip() == 'nothing':
g.add(txt3, 0, 0)
g.add(bb, 0, 2)
res = g.run()
screen.refresh()
if bb.buttonPressed(res) == 'ok':
screen.finish()
return True
#return True
return 'reboot'
else:
screen.finish()
return False
return 'nothing'
def root_destroy():
pass

View File

@@ -34,10 +34,16 @@ import partition_data as p_d
def install_over(ret):
if ri_oper.Rate.value == 100 and ret == 0:
if display.set_task_over():
ret_set_task_over = display.set_task_over()
if ret_set_task_over == 'reboot':
print "reboot ..."
os.system("reboot")
else:
elif ret_set_task_over == 'shutdown':
print "shutdown ..."
#os.system("shutdown -h now")
os.system("eject")
os.system("echo b >/proc/sysrq-trigger")
elif ret_set_task_over == 'nothing':
display.root_destroy()
def show_progress():