⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pyforms.py

📁 python web programming 部分
💻 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>&nbsp;</td><td>&nbsp;</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">&nbsp;</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&nbsp;""" % 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>&nbsp;</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>&nbsp;</td><td>&nbsp;</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 + -