📄 pyforms.py
字号:
#! D:/Python20/python
#
# XXX Need to honour required entries, preferably client-side
#
import string
from dtuple import TupleDescriptor, DatabaseTuple
DT = TupleDescriptor((['FieldName'],['Description'],['Type'],['Size'],['Options']))
def FieldVal(nm, R):
if R == None:
return ""
else:
return string.rstrip(str(R[nm]))
def TextIn(name, size, value):
return """<INPUT TYPE="TEXT" NAME="%s" SIZE="40" MAXLENGTH="%s" VALUE="%s">""" \
% (name, size, value)
def PwdIn(name, size, value):
return """<INPUT TYPE="PASSWORD" NAME="%s" SIZE="40" MAXLENGTH="%s" VALUE="%s">""" \
% (name, size, value)
def HiddenIn(name, size, value):
return """<INPUT TYPE="HIDDEN" NAME="%s" VALUE="%s">""" \
% (name, value)
def TextArea(name, size, value):
return """<TEXTAREA NAME="%s" ROWS="%d" cols="%d" WRAP="VIRTUAL">%s</TEXTAREA>""" \
% (name, size[0], size[1], value)
def xFormBuild(Flist, Action, KeyNames, KeyVals, R=None):
result = "dir of Record: " + str(dir(R)) + "<HR>"
for ff in Flist:
f = DatabaseTuple(DT, ff)
result += f.Type + ":<BR>" + f.FieldName + "<HR>"
return result
def FormBuild(Flist, Action, KeyNames, KeyVals, R=None):
if R == None:
op = "New"
else:
op="Update"
op = op+Action
result = '''
<form name="EditAgent" method="POST" OnSubmit="return doit">
<input type="hidden" name="#Flist#" value="%s">
<input type="hidden" name="#KeyNames#" value="%s">
<input type="hidden" name="#KeyVals#" value="%s">
<input type="hidden" name="page" value="%s"
<table border="0" cellpadding="0" cellspacing="2">
<tr>
''' % (repr(Flist), KeyNames, KeyVals, op)
for ff in Flist:
f = DatabaseTuple(DT, ff)
if f.Type == "REM":
result = """%s
<td> </td><td> </td><td width="350"><font size="%s"><p>%s</font></td>
""" % (result, f.Size, f.Description)
elif f.Type[0] == "H":
result = """%s
<td align="right" valign="top"><font size="-2"><p><b>
%s</b></font></td>
<td valign="top"> </td>
<td>
%s%s</td>
""" % (result, f.Description, FieldVal(f.FieldName, R), HiddenIn(f.FieldName, f.Size, FieldVal(f.FieldName, R)))
else:
result = """%s<td align="right" valign="top"><font size="-2"><p><b>
%s</b></font></td>
<td valign="top">""" % (result, f.Description)
if "R" in f.Options:
result = """%s<font color="red">*</font>""" % result
else:
result = """%s """ % result
result = """%s</td>
<td>
""" % result
if f.Type in ["T","N"]:
result = """%s%s
""" % (result, TextIn(f.FieldName, f.Size, FieldVal(f.FieldName, R)))
elif f.Type == "P":
result = """%s%s
</td>
</tr>
<tr>
<td align="right" valign="top"><font size="-2"><b>Confirm %s</b></font></td>
<td> </td>
<td>%s
""" % (result, PwdIn(f.FieldName, f.Size, FieldVal(f.FieldName, R)),
f.Description, PwdIn(f.FieldName+"+", f.Size, FieldVal(f.FieldName, R)))
elif f.Type == "Y":
if FieldVal(f.FieldName, R) == "True":
c1, c2 = "CHECKED", ""
else:
c2, c1 = "CHECKED", ""
result = """%s<P><input TYPE="radio" NAME="%s" %s value="ON"> Yes
<input TYPE="radio" NAME="%s" %s value="OFF"> No
""" % (result, f.FieldName, c1, f.FieldName, c2)
elif f.Type == "M":
result = """%s%s
""" % (result, TextArea(f.FieldName, f.Size, FieldVal(f.FieldName, R)))
elif f.Type in ["KSA","KNA"]:
if R == None:
result = """%s%s
""" % (result, TextIn(f.FieldName, f.Size, FieldVal(f.FieldName, R)))
else:
result = """%s<p><font size="+1"><b>%s</b></font></p>
""" % (result, FieldVal(f.FieldName, R))
elif f.Type in ["KSS", "KNS"]:
if R == None:
result = """%s<p><font size="+1"><b>To be assigned</b></font></p>
""" % result
else:
result = """%s<p><font size="+1"><b><%=FieldVal(f(3),nr,R)%></b></font></p>
""" % (FieldVal(f.FieldName, R),)
else:
result = """%s<b>This field not editable: Its type is unknown</b>
""" % result
result = """%s</td>
""" % result
result = """%s</tr>
<tr>""" % result
result = """%s<td> </td><td> </td>
<td>
""" % result
if R == None:
result = """%s<input TYPE="submit" NAME="Submit" VALUE="Create" OnClick="doit=true">
""" % result
else:
result = """%s<input TYPE="submit" NAME="Submit" VALUE="Update" OnClick="doit=true">
<input TYPE="submit" NAME="Submit" VALUE="Delete" OnClick="doit=confirm('Do you REALLY want to delete this record?')">
""" % result
result = """%s </td>
</tr>
</table>
</form>
""" % result
return result
if __name__ == '__main__':
Flist = (
["Comment1", "Web Page Details", "REM", "+2", ""],
["Name", "Page Name", "KSA", 20, "R"],
["Fixed", "Fixed Value", "H", 20, ""],
["Password", "Your Password", "P", 12, "R"],
["PageSet", "Page Set Name", "T", 20, "R"],
["Num", "Page Number", "N", 5, ""],
["LinkText", "Link Text", "T", 30, ""],
["Answer", "Does it Work?", "Y", None, "R"],
["Content", "Page Content", "M", (20, 40), "R"]
)
print """Conetent-Type: text/hml\n\n
<HTML>
<HEAD>
<TITLE>Forms Library Test Output</TITLE>
</HEAD>
<BODY>
<H4>Forms Library Test Output</H4>
%s
</BODY>
</HTML>
""" % (FormBuild(Flist, "StdPage.asp", "name", "VALUE"), )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -