def new_item(category):
if request.method == 'GET':
return render('newitem.html', category=category)
elif request.method == 'POST':
name = request.form['name']
highlight = request.form['highlight']
url = request.form['url']
if valid_item(name, url, highlight):
user_id = login_session['user_id']
item = Item(name=name, highlight=highlight, url=url, user_id=user_id, category_id=category.id)
session.add(item)
session.commit()
flash("Newed item %s!" % item.name)
return redirect(url_for('show_item', category_id=category.id, item_id=item.id))
else:
error = "Complete info please!"
return render('newitem.html', category=category, name=name, highlight=highlight, url=url,
error=error)
python类form()的实例源码
def edit_item(category, item):
if request.method == 'GET':
return render('edititem.html', category=category, item=item, name=item.name, highlight=item.highlight,
url=item.url)
elif request.method == 'POST':
name = request.form['name']
highlight = request.form['highlight']
url = request.form['url']
if valid_item(name, url, highlight):
item.name = name
item.highlight = highlight
item.url = url
session.commit()
flash("Edited item %s!" % item.name)
return redirect(url_for('show_item', category_id=category.id, item_id=item.id))
else:
error = "Complete info please!"
return render('edititem.html', category=category, item=item, name=name, highlight=highlight,
url=url, error=error)
def new_category():
if request.method == 'GET':
return render('newcategory.html')
elif request.method == 'POST':
name = request.form['name']
description = request.form['description']
if valid_category(name, description):
user_id = login_session['user_id']
category = Category(name=name, description=description, user_id=user_id)
session.add(category)
session.commit()
flash("Newed category %s!" % category.name)
return redirect(url_for("show_items", category_id=category.id))
else:
error = "Complete info please!"
return render('newcategory.html', name=name, description=description, error=error)
def edit_category(category):
if request.method == 'GET':
return render('editcategory.html', category=category, name=category.name,
description=category.description)
elif request.method == 'POST':
name = request.form['name']
description = request.form['description']
if valid_category(name, description):
category.name = name
category.description = description
session.commit()
flash("Edited category %s!" % category.name)
return redirect(url_for("show_items", category_id=category.id))
else:
error = "Complete info please!"
return render('editcategory.html', category=category, name=name, description=description, error=error)
def log_request(req: 'flask_request',res:str)->None:
with open('einstein.log','a') as log:
#print(req,res,file=log)
print(req.form,req.remote_addr,req.user_agent,res,file=log,sep='|')
###/ için gelen talepler /einstein'a yönlendirilecekler.
##@app.route('/')
##def hello() ->'302': #http 302 döndürüyoruz ve redirect i?lemi gerçekle?tiriyoruz.
## return redirect('/einstein')
# @ ile yap?lan tan?mlama function decorators olarak geçmektedir
#decorator ile bir fonksiyon kodunu de?i?tirmeden çal??ma zaman? davran???n? düzenleyebiliriz
#app.route ile /einstien root klasörüne gelen talepleri kar??lamaktay?z.
#asl?nda yukar?da yap?lan 302 yönlendirmesi yerine @app.route'u birden fazla da kullanabiliriz.
def customer_edit(customer_id):
try:
customer = Customer[customer_id]
except ObjectNotFound:
abort(404)
form = CustomerForm(request.form, obj=customer)
if form.validate_on_submit():
customer.email = form.email.data
customer.password = form.password.data
customer.name = form.name.data
customer.country = form.country.data
customer.address = form.address.data
return redirect(url_for('customer_show', customer_id=customer.id))
return render_template('customer/edit.html', form=form)
def dbinsert():
srv = request.form['srv']
database = request.form['database']
id = request.form['id']
name = request.form['name']
age = request.form['age']
health = request.form['health']
couch=selectdb(srv)
db = couch[database]
doc = ({'name': name,'age':age,'health': health})
db.save(doc)
return "hit kom vi "+ srv + " database " + database + " name: " + name + " age "+ age + " health: "+ health
#------------------------------------
def tail():
if request.method == 'POST':
fi = request.form['file']
if os.path.isfile(fi):
n = int(request.form['n'])
le = io.open(fi, 'r', encoding='utf-8')
taildata = le.read()[-n:]
le.close()
else:
taildata = "No such file."
return render_template('tail.html',taildata=taildata)
def wladd():
if request.method == 'POST':
addr = request.form['addr'].lstrip().rstrip()
f = io.open('static/whitelist.txt', 'a', encoding="utf-8")
f.write(addr.decode('utf-8') + u'\r\n')
f.close()
return render_template('wladd.html')
def unsub():
if request.method == 'POST':
addr = request.form['addr'].lstrip().rstrip()
f = io.open('unsubscribers.txt', 'a', encoding="utf-8")
f.write(addr.decode('utf-8') + u'\r\n')
f.close()
f = io.open('static/whitelist.txt', 'r', encoding="utf-8")
lines = f.readlines()
f.close()
f = io.open('static/whitelist.txt', 'w', encoding="utf-8")
for line in lines:
if addr not in line:
f.write(line.decode('utf-8'))
f.close()
return render_template('unsubscribed.html',addr=addr)
def get(self):
if ENGINE.check_name(request.form['name']) == True:
return error_payload('Name already registered.')
else:
return success_payload(None, 'Name available to register.')
def post(self):
if ENGINE.add_name(request.form['name'], request.form['n'], request.form['e']) == True:
return success_payload(None, 'Name successfully registered.')
else:
return error_payload('Unavailable to register name.')
# GET does not require auth and just downloads packages. no data returns the DHT on IPFS or the whole SQL_Engine thing.
# POST required last secret. Secret is then flushed so auth is required again before POSTing again
def get(self):
# checks if the user can create a new package entry
# if so, returns a new secret
# user then must post the signed package to this endpoint
if not ENGINE.check_package(request.form['owner'], request.form['package']):
# try to pull the users public key
query = ENGINE.get_key(request.form['owner'])
# in doing so, check if the user exists
if query == None:
return error_payload('Owner does not exist.')
# construct the user's public key
user_public_key = rsa.PublicKey(int(query[0]), int(query[1]))
# create a new secret
secret = random_string(53)
# sign and store it in the db so no plain text instance exists in the universe
server_signed_secret = str(rsa.encrypt(secret.encode('utf8'), KEY[0]))
query = ENGINE.set_secret(request.form['owner'], server_signed_secret)
# sign and send secret to user
user_signed_secret = rsa.encrypt(secret.encode('utf8'), user_public_key)
return success_payload(str(user_signed_secret), 'Package available to register.')
else:
return error_payload('Package already exists.')
def post(self):
payload = {
'owner' : request.form['owner'],
'package' : request.form['package'],
'data' : request.form['data']
}
owner = request.form['owner']
package = request.form['package']
data = request.form['data']
b = ENGINE.get_named_secret(owner)
print(b)
secret = rsa.decrypt(eval(b), KEY[1])
# data is a python tuple of the templated solidity at index 0 and an example payload at index 1
# compilation of this code should return true
# if there are errors, don't commit it to the db
# otherwise, commit it
raw_data = decrypt(secret, eval(data))
package_data = json.loads(raw_data.decode('utf8'))
'''
payload = {
'tsol' : open(code_path[0]).read(),
'example' : example
}
'''
# assert that the code compiles with the provided example
tsol.compile(StringIO(package_data['tsol']), package_data['example'])
template = pickle.dumps(package_data['tsol'])
example = pickle.dumps(package_data['example'])
if ENGINE.add_package(owner, package, template, example) == True:
return success_payload(None, 'Package successfully uploaded.')
return error_payload('Problem uploading package. Try again.')
def get(self):
data = ENGINE.get_package(request.form['owner'], request.form['package'])
if data == None or data == False:
return error_payload('Could not find package.')
return success_payload(data, 'Package successfully pulled.')
def githubpr():
payload = json.loads(request.form['payload'])
spoonybard.engine.queue_change(GithubChange(payload))
return payload
def post(self):
dockletRequest.post('/cloud/account/add/', request.form)
return redirect('/cloud/')
def post(self):
dockletRequest.post('/cloud/account/modify/', request.form)
return redirect('/cloud/')
def post(self):
data = {"number":request.form["number"],"reason":request.form["reason"]}
result = dockletRequest.post('/beans/apply/',data)
success = result.get("success")
if success == "true":
return redirect("/beans/application/")
else:
return self.render(self.template_path, message = result.get("message"))