Aqui está uma solução, na forma de um programa em Python e um template html para solicitar, ao usuário, além de seu nome também o nome do verbo. Primeiro o programa em Python:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
dados = MySQLdb.connect(host="192.168.1.104",
port=3306,
user="root",
passwd="artista",
db="conjuga")
cobra = dados.cursor()
msg_conjugado = ''
verbo = ''
import urllib2
from flask import Flask, render_template, request
from flask.ext.wtf import Form
from wtforms import TextField, SubmitField
app = Flask(__name__)
app.secret_key = 'chave secretissima'
@app.route('/', methods=['GET', 'POST'])
def dados():
formulario = Formulario()
if request.method == 'GET':
return render_template('formulario.html', formulario = formulario)
elif request.method == 'POST':
verbo = request.form['verbo']
msg_conjugado = ''
frequencia_bd = 0
conjugado = ['', '', '', '', '', '']
pessoas = ['Eu', 'Tu', 'Ele', u'Nós', u'Vós', 'Eles']
conjuga_ar = ['o', 'as', 'a', 'amos', 'ais', 'am']
conjuga_er = ['o', 'es', 'e', 'emos', 'eis', 'em']
conjuga_ir = ['o', 'es', 'e', 'imos', 'is', 'em']
endereco_web = 'http://pt.wiktionary.org/wiki/' + verbo
req_web = urllib2.Request(endereco_web, headers={'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0"})
try:
conteudo_web = urllib2.urlopen(req_web)
conteudo_web = conteudo_web.read()
except urllib2.HTTPError, erro:
conteudo_web = erro.read()
# pesquisa se o verbo e regular
conteudo_web = conteudo_web.decode('utf-8').encode('ascii', 'replace')
# conteudo_web_mini = conteudo_web[:70] # usado apenas com o template teste.html
verbo_existe = str("Verbo regular da " in conteudo_web)
if ("Verbo regular da " in conteudo_web):
existe = cobra.execute(('SELECT verbo FROM verbo WHERE verbo = %s'), (verbo))
if existe > 0:
cobra.execute(('SELECT frequencia FROM verbo WHERE verbo=%s'), (verbo))
frequencia_bd = cobra.fetchone()
frequencia_bd = frequencia_bd[0]
cobra.execute('UPDATE verbo SET frequencia = %s WHERE verbo = %s', (frequencia_bd + 1, verbo))
# dados.commit()
else:
cobra.execute('INSERT INTO verbo (verbo, frequencia, regular) VALUES(%s, %s, %s)', (verbo, 1, 1))
dados.commit()
termina_em = verbo[-2:]
if termina_em == 'ar':
for i in range(6):
conjugado[i] = pessoas[i]+' '+verbo[:-2]+conjuga_ar[i]
elif termina_em == 'er':
for i in range(6):
conjugado[i] = pessoas[i]+' '+verbo[:-2]+conjuga_er[i]
elif termina_em == 'ir':
for i in range(6):
conjugado[i] = pessoas[i]+' '+verbo[:-2]+conjuga_ir[i]
for i in range(6):
msg_conjugado = msg_conjugado + conjugado[i] + '
'
texto = u'Olá, ' + request.form['nome'] + ' ' + request.form['sobrenome'] + '! ' + '
' + u'O verbo que você informou é: ' + verbo + '
' + msg_conjugado
return texto
class Formulario(Form):
nome = TextField("Nome")
sobrenome = TextField("Sobrenome")
verbo = TextField("Verbo")
enviar = SubmitField("Enviar")
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0')
Note que, na classe Formulario, simplesmente foi feita a modificação necessária para que ela inclua um campo para o Verbo. O restante do programa foi feito com código reaproveitado de nossas versões anteriores e, em caso de dúvida, você pode consultar os capítulos 12 e 13. Em especial, note o que retornamos no final da condição elif:
texto = u'Olá, ' + request.form['nome'] + ' ' + request.form['sobrenome'] + '! ' + '
' + u'O verbo que você informou é: ' + verbo + '
' + msg_conjugado
return texto
Tudo isto poderia, também ser substituído por algo como:
return render_template('resposta.html', variavel1 = variavel1 etc.)
Que tal melhorar usar esta solução e também melhorar o visual de sua página caprichando no arquivo estilo.css?