1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
#!/usr/bin/python
import os, sys
import cgi
from PythonCard import util
DATA_FILE = ["..", "..", "addresses", "data.txt"]
FIELD_ORDER = ['Name', 'Company', 'Street', 'State', 'Zip',
'Phone1', 'Phone2', 'Phone3', 'Phone4', 'Notes']
class Document:
def __init__(self, filename):
self.current = -1
#self.fieldNames = self.getFieldNames()
if filename is None:
self.records = []
else:
self.filename = filename
self.openFile(filename)
def openFile(self, filename):
self.records = []
self.filename = filename
try:
if os.path.exists(filename):
addresses = util.readAndEvalFile(filename)
for c in addresses:
self.records.append(c)
if self.current == -1 and len(self.records) > 0:
#self.displayRecord(0)
pass
except:
pass
def findRecords(self, fields, value):
results = []
for record in self.records:
for field in fields:
if record[field].lower().find(value) != -1:
results.append(record)
continue
return results
# probably want to stick this in a table
def printRecord(record):
#keys = record.keys()
#keys.sort()
#for k in keys:
for k in FIELD_ORDER:
# on the off chance the field doesn't exist in the record
# use try/except
try:
s = record[k]
if s == '':
# skip empty fields
continue
s = s.replace('\n\n', '<P>')
s = s.replace('\n', '<BR>')
print "<b>%s:</b> %s<br>" % (k, s)
except:
pass
print "<hr>"
path = os.sep.join(DATA_FILE)
document = Document(path)
form = cgi.FieldStorage()
name = form['name'].value
results = document.findRecords(['Name'], name)
print "Content-type: text/html\r\n\r\n",
print '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'
print "<html><body>"
# change this so the CGI is also the form
print "Search for %s<hr>" % name
#print "Path: %s<br>" % os.path.abspath(path)
#print "exists: %s<br>" % str(os.path.exists(path))
for record in results:
printRecord(record)
#print "</pre>"
print "</body></html>"
|