#!/usr/bin/python import smtplib import cgi import template import string import robstring FromAddress = "webmanager@affedis.com" ToAddress = "webmaster@affedis.com" SMTPTo = "webmaster@affedis.com" SMTPFrom = "webmanager@affedis.com" msg_top = "From: " + FromAddress + "\nTo: " + ToAddress + "\nSubject: Order\n\n" msg_cc = "" tmsg = "Transcriptions\n--------------\n\n" mbmsg = "Music Books\n-----------\n\n" fmsg = "Flamenco CD's\n-------------\n\n" fields = cgi.FieldStorage() print "Content-type: text/html\n\n" TWarning = "" MBWarning = "" FWarning = "" TopWarning = "" CCError = "" valid = 1 lines = 0 if not(fields.has_key("order")): output = template.Template("orderform.html") else: if fields.has_key("address"): address = str(fields["address"].value) else: address = "" valid = 0 TopWarning = "You have not entered an address
" if fields.has_key("name"): name = str(fields["name"].value) else: name = "" valid = 0 TopWarning = TopWarning + "You have not entered a name
" if fields.has_key("email"): email = str(fields["email"].value) else: email = "" TopWarning = TopWarning + "You have not entered an email address
" if fields.has_key("phone"): phone = str(fields["phone"].value) else: phone = "" TopWarning = TopWarning + "You have not entered a phone number
" msg_top = msg_top + "Name : " + name + "\n" msg_top = msg_top + "Email : " + email + "\n" msg_top = msg_top + "Phone : " + email + "\n\n" msg_top = msg_top + "Address\n-------\n" + address + "\n\n" # ####################################################################### # # vaidate transcriptions orders for i in range(1,10): if fields.has_key("TArtist" + str(i)) and fields.has_key("TTitle" + str(i)) and fields.has_key("TPrice" + str(i)) and fields.has_key("TQuantity" + str(i)) and fields.has_key("TTotal" + str(i)): # completed order line # do some validation ? # Artist & Title can be pretty much anythin not blank # price, quantity & total must be numeric if not(robstring.isnumeric(str(fields["TPrice" + str(i)].value))): valid = 0 TWarning = TWarning + "Line " + str(i) + " : Price must be a number.
\n" if not(robstring.isnumeric(str(fields["TQuantity" + str(i)].value))): valid = 0 TWarning = TWarning + "Line " + str(i) + " : Quantity must be a number.
\n" if not(robstring.isnumeric(str(fields["TTotal" + str(i)].value))): valid = 0 TWarning = TWarning + "Line " + str(i) + " : Total must be a number.
\n" tmsg = tmsg + "Artist : " + str(fields[ "TArtist" + str(i)].value) + "\n" tmsg = tmsg + "Title : " + str(fields[ "TTitle" + str(i)].value) + "\n" tmsg = tmsg + "Price : " + str(fields[ "TPrice" + str(i)].value) + "\n" tmsg = tmsg + "Quantity : " + str(fields[ "TQuantity" + str(i)].value) + "\n" tmsg = tmsg + "Total : " + str(fields[ "TTotal" + str(i)].value) + "\n\n" lines = lines + 1 elif not(fields.has_key("TArtist" + str(i)) and fields.has_key("TTitle" + str(i)) and fields.has_key("TPrice" + str(i)) and fields.has_key("TQuantity" + str(i)) and fields.has_key("TTotal" + str(i))): # no entries blank line pass else: # some entries are blank valid = 0 TWarning = TWarning + "Missing " if not(fields.has_key("TArtist" + str(i))): TWarning = TWarning + "Artist, " if not(fields.has_key("TTitle" + str(i))): TWarning = TWarning + "Title, " if not(fields.has_key("TPrice" + str(i))): TWarning = TWarning + "Price, " if not(fields.has_key("TQuantity" + str(i))): TWarning = TWarning + "Quantity, " if not(fields.has_key("TTotal" + str(i))): TWarning = TWarning + "Total" TWarning = TWarning + " in line " + str(i) + "
" # if tmsg != "": # if fields.has_key("TTotalPrice"): # tmsg = tmsg + "Total Price : " + str(fields["TTotalPrice"].value) + "\n" # if fields.has_key("TTotalQuantiy"): # tmsg = tmsg + "Total Quantity : " + str(fields["TTotalQuantity"].value) + "\n" # if fields.has_key("TTotalTotal"): # tmsg = tmsg + "Total Total : " + str(fields["TTotalTotal"].value) + "\n" # ####################################################################### # # validate music book orders for i in range(1,7): if fields.has_key("MBTitle" + str(i)) and fields.has_key("MBPrice" + str(i)) and fields.has_key("MBQuantity" + str(i)) and fields.has_key("MBTotal" + str(i)): # completed order line # do some validation ? # Title can be pretty much anythin not blank # price, quantity & total must be numeric if not(robstring.isnumeric(str(fields["MBPrice" + str(i)].value))): valid = 0 MBWarning = MBWarning + "Line " + str(i) + " : Price must be a number.
\n" if not(robstring.isnumeric(str(fields["MBQuantity" + str(i)].value))): valid = 0 MBWarning = MBWarning + "Line " + str(i) + " : Quantity must be a number.
\n" if not(robstring.isnumeric(str(fields["MBTotal" + str(i)].value))): valid = 0 MBWarning = MBWarning + "Line " + str(i) + " : Total must be a number.
\n" mbmsg = mbmsg + "Title : " + str(fields[ "MBTitle" + str(i)].value) + "\n" mbmsg = mbmsg + "Price : " + str(fields[ "MBPrice" + str(i)].value) + "\n" mbmsg = mbmsg + "Quantity : " + str(fields[ "MBQuantity" + str(i)].value) + "\n" mbmsg = mbmsg + "Total : " + str(fields[ "MBTotal" + str(i)].value) + "\n\n" lines = lines + 1 elif not(fields.has_key("MBTitle" + str(i)) and fields.has_key("MBPrice" + str(i)) and fields.has_key("MBQuantity" + str(i)) and fields.has_key("MBTotal" + str(i))): # no entries blank line pass else: # some entries are blank valid = 0 MBWarning = MBWarning + "Missing " if not(fields.has_key("MBTitle" + str(i))): MBWarning = MBWarning + "Title, " if not(fields.has_key("MBPrice" + str(i))): MBWarning = MBWarning + "Price, " if not(fields.has_key("TQuantity" + str(i))): MBWarning = MBWarning + "Quantity, " if not(fields.has_key("MBTotal" + str(i))): MBWarning = MBWarning + "Total" MBWarning = MBWarning + " in line " + str(i) + "
" # ####################################################################### # # validate flamenco cd orders for i in range(1,7): if fields.has_key("FTitle" + str(i)) and fields.has_key("FPrice" + str(i)) and fields.has_key("FQuantity" + str(i)) and fields.has_key("FTotal" + str(i)): # completed order line # do some validation ? # Title can be pretty much anythin not blank # price, quantity & total must be numeric if not(robstring.isnumeric(str(fields["FPrice" + str(i)].value))): valid = 0 FWarning = FWarning + "Line " + str(i) + " : Price must be a number.
\n" if not(robstring.isnumeric(str(fields["FQuantity" + str(i)].value))): valid = 0 FWarning = FWarning + "Line " + str(i) + " : Quantity must be a number.
\n" if not(robstring.isnumeric(str(fields["FTotal" + str(i)].value))): valid = 0 FWarning = FWarning + "Line " + str(i) + " : Total must be a number.
\n" fmsg = fmsg + "Title : " + str(fields[ "FTitle" + str(i)].value) + "\n" fmsg = fmsg + "Price : " + str(fields[ "FPrice" + str(i)].value) + "\n" fmsg = fmsg + "Quantity : " + str(fields[ "FQuantity" + str(i)].value) + "\n" fmsg = fmsg + "Total : " + str(fields[ "FTotal" + str(i)].value) + "\n\n" lines = lines + 1 elif not(fields.has_key("FTitle" + str(i)) and fields.has_key("FPrice" + str(i)) and fields.has_key("FQuantity" + str(i)) and fields.has_key("FTotal" + str(i))): # no entries blank line pass else: # some entries are blank valid = 0 MBWarning = FWarning + "Missing " if not(fields.has_key("FTitle" + str(i))): FWarning = FWarning + "Title, " if not(fields.has_key("MBPrice" + str(i))): FWarning = FWarning + "Price, " if not(fields.has_key("TQuantity" + str(i))): FWarning = FWarning + "Quantity, " if not(fields.has_key("MBTotal" + str(i))): FWarning = FWarning + "Total" FWarning = FWarning + " in line " + str(i) + "
" if fields.has_key("GrandTotal"): gtotal = str(fields["GrandTotal"].value) if fields.has_key("cardno"): cardno = str(fields["cardno"].value) if len(cardno) == 16: msg_cc = msg_cc + "Card No : " + cardno + "\n" else: CCError = CCError + "Card number may be invalid (wrong length) please confirm before proceeding
" valid = 1 else: cardno = "" valid = 0 CCError = CCError + "No Credit Card number entered" if fields["cardtype"].value == "visa": msg_cc = msg_cc + "Card Type : VISA\n" elif fields["cardtype"].value == "master": msg_cc = msg_cc + "Card Type : MasterCard\n" if fields.has_key("month"): month = str(fields["month"].value) if int(month) > 12 or int(month) < 1 or len(month) > 2: CCError = CCError + "Invalid Month
" valid = 0 else: msg_cc = msg_cc + "Expiry : " + month + "/" else: month = "" valid = 0 CCError = CCError + "You must enter a valid expiry date
" if fields.has_key("year"): year = str(fields["year"].value) if int(year) < 01 or len(year) > 2: CCError = CCError + "Invalid Year
" valid = 0 else: msg_cc = msg_cc + year + "\n\n" else: year = "" valid = 0 CCError = CCError + "You must enter a valid expiry date
" if valid != 0 and lines > 0: msg = msg_top + msg_cc + tmsg + "\n\n" + mbmsg + "\n\n" + fmsg SMTP = smtplib.SMTP() SMTP.connect("localhost") SMTP.sendmail(SMTPFrom,[SMTPTo],msg) SMTP.quit() #re direct to thanks page after sending email output = template.Template("thanks.html") else: output = template.Template("orderform.html") ############################## #t_fields = array( for i in range(1,10): if fields.has_key("TArtist[i]"): tartist[i] = fields["TArtist"].value output.set_variable("valuetartist[i]",tartist[i]) no_data = "" if lines == 0: no_data = "

No items specified" output.set_variable("order_error","There are errors with the details you have entered " + no_data); output.set_variable("valueaddress",address) output.set_variable("valuename",name) output.set_variable("valueemail",email) output.set_variable("valuephone",phone) # output.set_variable("user_total",gtotal) output.set_variable("valuecardno",cardno) output.set_variable("valuemonth",month) output.set_variable("valueyear",year) if TopWarning != "": output.set_variable("TopError",TopWarning) if TWarning != "": output.set_variable("TError",TWarning) if MBWarning != "": output.set_variable("MBError",MBWarning) if FWarning != "": output.set_variable("FError",FWarning) if CCError != "": output.set_variable("CCError",CCError) print output.get_block("")