lots more functionality, very usable, very ugly

This commit is contained in:
Andrew Davidson 2012-02-28 13:40:55 -08:00
parent a577e52f1a
commit b17db63a92

View file

@ -1,103 +1,153 @@
import web #!/usr/bin/env python
from web import form
import string
db = web.database(dbn='mysql', user='mysecrets', pw='horsebatteries', import random
db='mysecrets') import web
from web import form
urls = (
'/secret/api/(.*)', 'api', db = web.database(dbn='mysql', user='mysecrets', pw='horsebatteries',
'/secret/(.*)', 'index' db='mysecrets')
)
urls = (
app = web.application(urls, globals()) '/secret/api/(.*)', 'api',
'/secret/(.*)', 'index'
render = web.template.render('templates/') )
create = form.Form( app = web.application(urls, globals())
form.Textbox('base_url', description="domain"),
form.Textbox('username'), render = web.template.render('templates/')
form.Password('password'),
) create = form.Form(
form.Textbox('base_url', description="domain"),
form.Textbox('username'),
class index: form.Password('password'),
def GET(self, method): )
if method == 'get':
if web.input(): def mkpass(size=10):
i = web.input() validChars = string.ascii_letters + string.digits
selected = db.select('passwords', where='`base_url`="'+i.base_url+'"') validChars = validChars.strip("oO0")
if len(selected) > 0: return string.join([random.choice(validChars) for x in range(size)],"")
pairs = '<ul>'
for p in selected: def get_pair_from_url(base_url):
pairs += '<li>'+p.username+', '+p.password+'</li>' return db.select('passwords', where='base_url LIKE "%'+base_url+'%"')
pairs += '</ul>'
def get_generated_from_url(base_url):
else: gen = db.select('generated', where='base_url LIKE "%'+base_url+'%"')
pairs = "<p>Sorry buddy, you're outta luck</p>"
while not len(gen) > 0:
body = '<h1>'+i.base_url+'</h1>\n'+pairs db.insert('generated', base_url = base_url, password = mkpass())
gen = db.select('generated', where='base_url LIKE "%'+base_url+'%"')
return render.page(i.base_url, body)
return gen
else:
return render.page('get','<p>need input.</p>')
class index:
if method == 'new': def GET(self, method):
f = create() if method == 'get':
if web.input():
body = '<h1>Create</h1>\n<form class="form" method="get" \ i = web.input()
action="/secret/create">\n'+\ selected = get_pair_from_url(i.base_url)
f.render()+ '\n<input type="submit" name="submit" id="submit"/></form>'
if len(selected) > 0:
return render.page('create',body) pairs = '<ul>'
for p in selected:
pairs += '<li>'+p.username+', '+p.password+'</li>'
if method == 'create': pairs += '</ul>'
i = web.input()
n = db.insert('passwords', username=i.username, password=i.password, \ else:
base_url=i.base_url) pairs = "<p>Sorry buddy, you're outta luck</p>"
body = '<h1>'+i.base_url+'</h1><p>'+i.username+', '+i.password+'</p>' body = '<h1>'+i.base_url+'</h1>\n'+pairs
return render.page('Created', body) return render.page(i.base_url, body)
else:
else: return render.page('get','<p>need input.</p>')
return render.page('mySecrets', '<p>These are mySecrets. There is nothing for you here.</p>')
if method == 'new':
class api:
def GET(self, method): i = web.input()
if method == "list":
tmp = '' f = create()
for pair in db.select('passwords'):
tmp += pair['base_url']+','+pair['username']+','+pair['password']+'\n' body = []
return tmp body.append('<h1>'+i.base_url+'</h1>\n')
if method == "get": selected = get_pair_from_url(i.base_url)
i = web.input() generated = get_generated_from_url(i.base_url)
base_url = i.base_url
pairs = db.select('passwords', where='`base_url`="'+base_url+'"') if selected:
body.append('<p>Existing: \n')
tmp = '' for pair in selected:
for pair in pairs: body.append('('+pair.username+', '+pair.password+')\n')
tmp += pair.username+','+pair.password+'\n' body.append('</p>')
return tmp body.append('<p>Generated: ' + generated[0].password + '</p>')
else: body.append('<form class="form" method="get" action="/secret/create">\n'+ \
return 'mySecrets API ' + method f.render()+ '\n<input type="submit" name="submit" id="submit"/></form>')
def POST(self, method): return render.page('create',''.join(body))
i = web.input()
n = db.insert('passwords', username=i.username, password=i.password, \
base_url=i.base_url) if method == 'create':
i = web.input()
body = '<h1>'+i.base_url+'</h1><p>'+i.username+', '+i.password+'</p>' n = db.insert('passwords', username=i.username, password=i.password, \
base_url=i.base_url)
return render.page('Created', body)
selected = get_pair_from_url(i.base_url)
if __name__ == "__main__": body = '<h1>'+i.base_url+'</h1><p>'+selected[0].username+', '+selected[0].password+'</p>'
app.run()
return render.page('Created', body)
if method == 'generate':
i = web.input()
body = '<h1>'+i.base_url+'</h1>\n<p> '+get_generated_from_url(i.base_url)[0].password+'</p>'
return render.page('Generated', body)
else:
return render.page('mySecrets', '<p>These are mySecrets. There is nothing for you here.</p>')
class api:
def GET(self, method):
if method == "list":
tmp = ''
for pair in db.select('passwords'):
tmp += pair['base_url']+','+pair['username']+','+pair['password']+'\n'
return tmp
if method == "get":
i = web.input()
base_url = i.base_url
pairs = db.select('passwords', where='`base_url`="'+base_url+'"')
tmp = ''
for pair in pairs:
tmp += pair.username+','+pair.password+'\n'
return tmp
else:
return 'mySecrets API ' + method
def POST(self, method):
i = web.input()
n = db.insert('passwords', username=i.username, password=i.password, \
base_url=i.base_url)
body = '<h1>'+i.base_url+'</h1><p>'+i.username+', '+i.password+'</p>'
return render.page('Created', body)
if __name__ == "__main__":
web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
app.run()