forked from github/server
Parteiboerse Skript
This commit is contained in:
parent
75771acbe1
commit
d5993b273d
|
@ -0,0 +1,109 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import smtplib
|
||||
import MySQLdb
|
||||
import cgi
|
||||
import re
|
||||
|
||||
# specify the filename of the template file
|
||||
scripturl='http://eressea.upb.de/~enno/cgi-bin/standin.py'
|
||||
TemplateFile = "vinyambar.html"
|
||||
DefaultTitle = "Vinyambar Parteibörse"
|
||||
dbname = "vinyambar"
|
||||
From = "accounts@vinyambar.de"
|
||||
Errors = ""
|
||||
db = MySQLdb.connect(db=dbname)
|
||||
smtpserver='localhost'
|
||||
|
||||
# define a new function called Display
|
||||
# it takes one parameter - a string to Display
|
||||
def Display(Content, Title=DefaultTitle):
|
||||
TemplateHandle = open(TemplateFile, "r") # open in read only mode
|
||||
# read the entire file as a string
|
||||
TemplateInput = TemplateHandle.read()
|
||||
TemplateHandle.close() # close the file
|
||||
|
||||
# for key in Form.keys():
|
||||
# Content=Content+"<br>"+str(key)+"="+str(Form[key])
|
||||
|
||||
# this defines an exception string in case our
|
||||
# template file is messed up
|
||||
BadTemplateException = "There was a problem with the HTML template."
|
||||
|
||||
SubResult = re.subn("<!-- INSERT TITLE HERE -->", Title, TemplateInput)
|
||||
SubResult = re.subn("<!-- INSERT CONTENT HERE -->", Content, SubResult[0])
|
||||
if SubResult[1] == 0:
|
||||
raise BadTemplateException
|
||||
|
||||
print "Content-Type: text/html\n\n"
|
||||
print SubResult[0]
|
||||
return
|
||||
|
||||
def ShowPage():
|
||||
cursor=db.cursor()
|
||||
maxturn = {}
|
||||
games = cursor.execute("SELECT max(lastturn), game from subscriptions GROUP by game")
|
||||
while games>0:
|
||||
games=games-1
|
||||
lastturn, game = cursor.fetchone()
|
||||
maxturn[game] = lastturn
|
||||
output='<p>Um eine der folgenden Parteien zu übernehmen, musst du zuerst ein <a href="register.php">Spielerkonto anlegen</a>. Wenn Du eines hast, markiere die Partei, die Du übernehmen willst, und trage Kundennummer und Kundenpasswort ein.'
|
||||
query = "SELECT g.id, g.name, s.faction, s.lastturn, s.id, s.race, s.info from games g, subscriptions s where s.game=g.id and s.status='CANCELLED'"
|
||||
results = cursor.execute(query)
|
||||
output=output+'<form action="'+scripturl+'" method=post><div align=center><table bgcolor="#e0e0e0" width=80% border>\n'
|
||||
output=output+'<tr><th>Rasse</th><th>Spiel</th><th>NMRs</th><th>Informationen</th><th>Markieren</th></tr>'
|
||||
while results>0:
|
||||
results=results-1
|
||||
gid, game, faction, lastturn, sid, race, info = cursor.fetchone()
|
||||
if info==None:
|
||||
info='Keine Informationen'
|
||||
output=output+'<tr><td>'+ race + '</td><td><nobr>'+ game + '</nobr></td><td>' + str(int(maxturn[gid]-lastturn)) + '</td><td>' + info + '</td>'
|
||||
output=output+'<td><input type="checkbox" name="accept_' + str(int(sid)) + '"> übernehmen</td></tr>\n'
|
||||
|
||||
output=output+'</table>'
|
||||
output=output+'<p><table><tr><td>Kundennummer:</td><td><input name="user" size="4"></tr><tr><td>Passwort:</td><td><input name="pass" type="password" width="40"></td>'
|
||||
output=output+'<tr><td><input name="save" type="submit" value="Abschicken"></td></tr></table>'
|
||||
output=output+'</form></div>'
|
||||
Display(output)
|
||||
return
|
||||
|
||||
Form = cgi.FieldStorage()
|
||||
|
||||
custid=None
|
||||
password=None
|
||||
if Form.has_key("user"):
|
||||
custid = int(Form["user"].value)
|
||||
|
||||
if Form.has_key("pass"):
|
||||
password = Form["pass"].value
|
||||
|
||||
if (password!=None) & (custid!=None):
|
||||
cursor=db.cursor()
|
||||
output=""
|
||||
if cursor.execute("select email, id from users where password='"+password+"' and id="+str(int(custid)))==1:
|
||||
email, custid = cursor.fetchone()
|
||||
c = cursor.execute("SELECT id, faction from subscriptions where status='CANCELLED'")
|
||||
while c>0:
|
||||
c=c-1
|
||||
sid, faction = cursor.fetchone()
|
||||
if Form.has_key("accept_"+str(int(sid))):
|
||||
update = db.cursor()
|
||||
update.execute("UPDATE subscriptions set user=" + str(int(custid)) + ", status='ACTIVE' where id=" + str(int(sid)))
|
||||
output=output+"Die Partei " + faction + " wurde Dir überschrieben. Eine Email mit dem Passwort und weiteren Hinweisen ist unterwegs zu Dir.<br>"
|
||||
Msg="From: "+From+"\nTo: "+email+"\nSubject: Vinambar Parteiuebernahme\n\n"
|
||||
Msg=Msg+"Das Passwort für deine neue Vinyambar-Partei "+faction+" lautet\n"
|
||||
Msg=Msg+" "+password+"\n"
|
||||
Msg=Msg+"\nUm den Report der letzten Woche zu erhalten, schicke eine Mail mit dem Betreff\n"
|
||||
Msg=Msg+"ERESSEA REPORT "+faction+" \""+password+"\" an die Adresse "
|
||||
Msg=Msg+"eressea@eressea.amber.kn-bremen.de"
|
||||
|
||||
server=smtplib.SMTP(smtpserver)
|
||||
server.sendmail(From, email, Msg)
|
||||
server.close()
|
||||
else:
|
||||
output="<font color=red>Fehler in Passwort oder Kundennummer<br></font>"
|
||||
Display(output)
|
||||
else:
|
||||
ShowPage()
|
||||
|
||||
db.close()
|
Loading…
Reference in New Issue