# -*- coding: utf-8 -*- import os import sys import re import sqlite3 import random from cgi import parse_qs, escape sys.path.insert(0, os.path.dirname(__file__)) def application(environ, start_response): _inscritos = sqlite3.connect('inscritos.db') inscritos = _inscritos.cursor() inscritos.execute("CREATE TABLE IF NOT EXISTS ticket (dt text, email text unique, name text, phone text, nasc text, city text, uf text)") _sorteados = sqlite3.connect('sorteados.db') sorteados = _sorteados.cursor() sorteados.execute("CREATE TABLE IF NOT EXISTS ticket (dt text, email text unique, name text, phone text, nasc text, city text, uf text)") g = parse_qs(environ['QUERY_STRING']) op = g.get('op', [''])[0] length = int(environ.get('CONTENT_LENGTH', '0')) p = parse_qs(environ['wsgi.input'].read(length)) response = "OK" if op == 'a': email = p.get('email', [''])[0] # email = re.sub("@", "", email) phone = p.get('phone', [''])[0] phone = re.sub("[^\d]+", "", phone) if len(email) > 0: phone = str(int(phone))[0:11].rjust(11, '0').strip() nasc = escape(p.get('nasc', [''])[0]).strip() name = escape(p.get('name', [''])[0]).strip() city = escape(p.get('city', [''])[0]).strip() uf = escape(p.get('uf', [''])[0]).strip() try: inscritos.execute("INSERT INTO ticket VALUES (CURRENT_TIMESTAMP, '" + email + "','" + name + "','" + phone + "','" + nasc +"','" + city +"','" + uf + "')") response = u"Inscrição realizada com sucesso!" _inscritos.commit() except: return # response = u"Já está inscrito!" elif op == 'd': email = g.get('email', [''])[0] if len(email) > 0: inscritos.execute("DELETE FROM ticket WHERE email = '" + email + "'") _inscritos.commit() elif op == 's': phone = g.get('phone', [''])[0].strip() name = escape(g.get('name', [''])[0]).strip() city = escape(g.get('city', [''])[0]).strip() uf = escape(g.get('uf', [''])[0]).strip() sorteados.execute("INSERT INTO ticket VALUES (CURRENT_TIMESTAMP, '" + phone + "','" + name + "','" + city +"','" + uf + "')") _sorteados.commit() elif op == '!': # https://wsgi.readthedocs.io/en/latest/specifications/simple_authentication.html # sorteados.execute('SELECT * FROM ticket ORDER BY dt DESC LIMIT 10') # rows = sorteados.fetchall() # # sorteado = """ # # # # # # %s # # %s # # %s # # %s # # %s # # # # """ % sorteado # sorteados = "" # for row in rows: # sorteados += """ # # # %(dt)s # %(phone)s # %(name)s # %(city)s # %(uf)s # # # """ % { # Fill the above html template in # 'dt': row[0], # 'phone': row[1], # 'name': row[2], # 'city': row[3], # 'uf': row[4] # } inscritos.execute('SELECT * FROM ticket') rows = inscritos.fetchall() inscritos = "" for row in rows: inscritos += """ %(dt)s %(email)s %(name)s %(nasc)s %(phone)s %(city)s %(uf)s """ % { # Fill the above html template in 'dt': row[0], 'email': row[1], 'name': row[2], 'phone': row[3], 'nasc': row[4], 'city': row[5], 'uf': row[6] } # try: # sorteado = random.choice(rows) f = open("lista.html","r") html = f.read().decode('utf-8') response = html % { # Fill the above html template in 'phone': 1, #sorteado[1], 'name': 1, #sorteado[2], 'city': 1, #sorteado[3], 'uf': 1, #sorteado[4], 'inscritos': inscritos, 'sorteados': sorteados # or '' } # except: # response = "Nenhum inscrito" else: f = open("form.html","r") response = f.read().decode('utf-8') _inscritos.close() # _sorteados.close() start_response('200 OK', [('Content-Type', 'text/html')]) return [response.encode('utf-8')]