Viewing file: api.py (34.87 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
from flask import Flask, request from requests import put, get from flask_restful import reqparse,Resource, Api from flaskext.mysql import MySQL from flask_cors import CORS from flask import jsonify from flask import send_file,send_from_directory from json import loads from PIL import Image from functools import update_wrapper from datetime import timedelta from io import BytesIO import base64 from werkzeug.datastructures import FileStorage import sys import os,time import werkzeug from os import walk import pickle import json import datetime import unicodedata import socket from email.MIMEMultipart import MIMEMultipart import email.utils from email.mime.text import MIMEText import smtplib from flask_mail import Mail from flask_mail import Message from smtplib import SMTPException reload(sys) sys.setdefaultencoding("utf-8")
#UPLOAD_FOLDER = 'C:/Bitnami/wampstack-5.4.31-0/apache2/htdocs/imagenesGregoryteam/assets/galeria/' #FOLDER_INICIO = 'C:/Bitnami/wampstack-5.4.31-0/apache2/htdocs/imagenesGregoryteam/assets/fotos_inicio/' #FOLDER_CONFIG= 'C:/Bitnami/wampstack-5.4.31-0/apache2/htdocs/imagenesGregoryteam/assets/fotos_aplicacion/' #PUBLICIDAD_FOLDER= 'C:/Bitnami/wampstack-5.4.31-0/apache2/htdocs/imagenesGregoryteam/assets/publicidad/' #FOLDER_NOTICIAS= 'C:/Bitnami/wampstack-5.4.31-0/apache2/htdocs/imagenesGregoryteam/assets/fotos_aplicacion/noticias/' PUBLICIDAD_FOLDER= '/var/www/html/imagenesGregoryteam/assets/publicidad/' UPLOAD_FOLDER = '/var/www/html/imagenesGregoryteam/assets/galeria/' FOLDER_INICIO = '/var/www/html/imagenesGregoryteam/assets/fotos_inicio/' FOLDER_CONFIG= '/var/www/html/imagenesGregoryteam/assets/fotos_aplicacion/' FOLDER_NOTICIAS='/var/www/html/imagenesGregoryteam/assets/fotos_aplicacion/noticias/' ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
mysql = MySQL() app = Flask(__name__) #configuration flask to Mail app.config['MAIL_SERVER'] = 'smtp.gmail.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USERNAME'] = 'gregoryteamsuport@gmail.com' app.config['MAIL_PASSWORD'] = 'gregoryteam99' app.config['MAIL_USE_TLS'] = False app.config['MAIL_USE_SSL'] = True app.config['MAIL_DEFAULT_SENDER'] = 'gregoryteamsuport@gmail.com'
mail = Mail(app)
# MySQL configurations #app.config['MYSQL_DATABASE_USER'] = 'root' #app.config['MYSQL_DATABASE_PASSWORD'] = '123456' # config server app.config['MYSQL_DATABASE_USER'] = 'db_user' app.config['MYSQL_DATABASE_PASSWORD'] = 'pacman'
app.config['MYSQL_DATABASE_DB'] = 'gregoryteam' app.config['MYSQL_DATABASE_HOST'] = 'localhost' app.config['BUNDLE_ERRORS'] = True app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER app.config['FOLDER_INICIO'] = FOLDER_INICIO app.config['FOLDER_CONFIG'] = FOLDER_CONFIG app.config['FOLDER_NOTICIAS'] = FOLDER_NOTICIAS app.config['FOLDER_PUBLICIDAD'] = PUBLICIDAD_FOLDER mysql.init_app(app)
cors = CORS(app, resources={r"*": {"origins": "*"}})
api = Api(app)
class ReporteAlumnoResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("select YEAR(fecha_registracion), MONTH(fecha_registracion),count(*) from clientes GROUP BY 1,2") data = cursor.fetchall()
items_list=[]; for item in data: i = { 'anio':item[0], 'mes':item[1], 'cantidad':item[2] } items_list.append(i)
return {'StatusCode':'200','alumnos':items_list}
except Exception as e: return {'error': str(e)} class ClienteResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT id_cliente,nombre,localidad,telefono,mail,mensaje,fecha_registracion from clientes order by 7 desc ") data = cursor.fetchall()
items_list=[]; for item in data: i = { 'numero':item[0], 'nombre':item[1], 'localidad':item[2], 'telefono':item[3], 'mail':item[4], 'mensaje':item[5], 'fecha':datetime.datetime.strptime(str(item[6]), '%Y-%m-%d %H:%M:%S').strftime('%d/%m/%y'), } items_list.append(i)
return {'StatusCode':'200','Clientes':items_list}
except Exception as e: return {'error': str(e)} def post(self): args = request.get_json(force=True) #post modificado con gaby anda bastante bien pero copiar el metodo de post desde el angular conn = mysql.connect() cursor = conn.cursor() insert_query = \ "INSERT INTO clientes(nombre, localidad, telefono, mail, mensaje) VALUES('%s', '%s', '%s', '%s', '%s')" \ % ( args['nombre'], args['zona'], args['telefono'], args['mail'], args['mensaje']) cursor.execute(insert_query) data = cursor.fetchall() """route to test email by flask mail.""" msj = "Nueva alta de usuarios" recipients = ["gregoryteam1@gmail.com"] msg_object = Message("NUEVO USUARIO CREADO EN EL SISTEMA GREGORYTEAM", recipients) msg_object.html = "<b>NOMBRE:</b> "+ args['nombre']+ " <br> <b>TELEFONO:</b> "+args['telefono'] + "<br> <b>CORREO:</b> " +args['mail'] + "<br> <b>MENSAJE:</b> " + args['mensaje'] #try: #mail.send(msg_object) #except SMTPException, e: #print e #pass if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'User creation success'} else: return {'StatusCode':'1000','Message': str(data[0])} def put(self): data = request.get_json() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "UPDATE clientes SET nombre='%s', localidad='%s', telefono='%s', mail='%s', mensaje='%s' WHERE id_cliente='%s' " \ % (data['nombre'], data['zona'], data['telefono'], data['mail'],data['mensaje'],data['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'MODIFICACION EXITOSA'} else: return {'StatusCode':'1000','Message': str(data[0])} def delete(self): parser = reqparse.RequestParser() parser.add_argument('numero',type=str) args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "DELETE FROM clientes WHERE id_cliente='%s' " \ % (args['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'BORRADO EXITOSO'} else: return {'StatusCode':'1000','Message': str(data[0])} def options(self): print(self); return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class NoticiasResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT a.id_noticias, a.noticia, a.titulo, b.categoria, a.fecha, a.foto,a.fotos2, a.fotos3, a.link from noticias a left join categorias_deportes b on b.id_categoria=a.id_categoria order by a.fecha desc;") data = cursor.fetchall() items_list=[];
for item in data: i = { 'id_noticias':item[0], 'noticia':item[1], 'titulo':item[2], 'categoria':item[3], 'fecha':str(item[4]), 'foto1': str(item[5]), 'foto2': str(item[6]), 'foto3': str(item[7]), 'encuesta': str(item[8]) } items_list.append(i)
return jsonify({'StatusCode':'200','Noticias':items_list})
except Exception as e: return {'error': str(e)} def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('noticia', type=str, location='args') parser.add_argument('titulo', type=str, location='args') parser.add_argument('categoria', type=str, location='args') parser.add_argument('encuesta', type=str, location='args') parser.add_argument('foto', type=str, location='args') parser.add_argument('foto2', type=str, location='args') parser.add_argument('foto3', type=str, location='args') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "INSERT INTO noticias(noticia,titulo,id_categoria,foto,fotos2,fotos3,link) VALUES('%s', '%s', '%s','%s', '%s', '%s','%s')" \ % (args['noticia'], args['titulo'], args['categoria'],args['foto'], args['foto2'], args['foto3'],args['encuesta']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'Publicidad creada'} else: return {'StatusCode':'1000','Message': str(data[0])} def put(self): data = request.get_json() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "UPDATE noticias SET noticia='%s', titulo='%s', id_categoria='%s', fecha='%s', foto='%s' ,fotos2='%s' ,fotos3='%s' ,link='%s' WHERE id_noticias='%s' " \ % (data['noticia'], data['titulo'], data['categoria'], data['fecha'],data['foto'],data['foto2'],data['foto3'],data['encuesta'],data['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'MODIFICACION EXITOSA'} else: return {'StatusCode':'1000','Message': str(data[0])} def delete(self): parser = reqparse.RequestParser() parser.add_argument('numero',type=str) parser.add_argument('path') parser.add_argument('foto') parser.add_argument('foto2') parser.add_argument('foto3') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() try: if (args['foto'] != 'None') and (args['foto'] != '') and (args['foto'] is not None): os.remove(args['path'] + args['foto']) if args['foto2'] != 'None' and (args['foto2'] != '') and (args['foto2'] is not None): os.remove(args['path'] + args['foto2']) if args['foto3'] != 'None' and (args['foto3'] != '') and (args['foto3'] is not None): os.remove(args['path'] + args['foto3']) except Exception as e: print {'error': str(e)} insert_query = \ "DELETE FROM noticias WHERE id_noticias='%s' " \ % (args['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'BORRADO EXITOSO'} else: return {'StatusCode':'1000','Message': str(data[0])} def options(self): print(self); return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class EnviarMails(Resource): def get(self): s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587) s.starttls() s.login('airealman@hotmail.com', 'casimasplus9') msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = "prueba" # setup the parameters of the message msg['From']='airealman@hotmail.com' msg['To']='matidigi99@gmail.com' msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) try: s.sendmail('airealman@hotmail.com','matidigi99@gmail.com',msg) finally: s.quit()
class CronogramaDetaill(Resource): def get(self): try: parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('id', type=str, location='args') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() cursor.execute("select a.id_cronograma, a.participacion, a.evento, a.lugar, b.categoria, a.fecha_evento, a.fecha_subida, a.link from cronogramas a left join categorias_deportes b on b.id_categoria=a.id_categoria where a.id_cronograma= '%s';" \ % (args['id'].lstrip(":"))) data = cursor.fetchall() items=[]; for item in data: i = { 'id_cronograma':str(item[0]), 'participacion':str(item[1]), 'evento':str(item[2]), 'lugar':str(item[3]), 'categoria':item[4], 'fecha_evento':str(item[5]), 'fecha_subida': str(item[6]), 'link': str(item[7]) } items.append(i)
return jsonify({'StatusCode':'200','DetalleCronograma':items}) except Exception as e: return {'error': str(e)} class AlumnoDetaill(Resource): def get(self): try: parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('id', type=str, location='args') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() cursor.execute("select id_cliente, nombre, localidad, telefono, mail, mensaje, fecha_registrazion from clientes where id_cliente= '%s';" \ % (args['id'].lstrip(":"))) data = cursor.fetchall() items=[]; for item in data: i = { 'id_cliente':str(item[0]), 'nombre':str(item[1]), 'localidad':str(item[2]), 'telefono':item[3], 'mail':str(item[4]), 'mensaje': str(item[5]), 'fecha_registrazion': str(item[6]) } items.append(i)
return jsonify({'StatusCode':'200','DetalleAlumno':items}) except Exception as e: return {'error': str(e)} class NoticiaDetaill(Resource): def get(self): try: parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('id', type=str, location='args') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() cursor.execute("select a.id_noticias,a.noticia, a.titulo, b.categoria, a.fecha, a.foto, a.fotos2, a.fotos3,a.link from noticias a left join categorias_deportes b on b.id_categoria=a.id_categoria where id_noticias= '%s';" \ % (args['id'].lstrip(":"))) data = cursor.fetchall() items=[]; for item in data: i = { 'id_noticias':str(item[0]), 'noticia':str(item[1]), 'titulo':str(item[2]), 'categoria':item[3], 'encuesta': str(item[8]), 'fecha':str(item[4]), 'foto1': str(item[5]), 'foto2': str(item[6]), 'foto3': str(item[7]), } items.append(i)
return jsonify({'StatusCode':'200','DetalleNoticia':items}) except Exception as e: return {'error': str(e)} class ImagenesResource(Resource): def get(self): try: images=[] for (path, ficheros, archivos) in walk(app.config['UPLOAD_FOLDER']): for archivo in archivos: images.append({'foto':str(archivo),'fecha': "{}".format(datetime.datetime.strptime(time.ctime(os.path.getctime(os.path.join(path,archivo))),"%a %b %d %H:%M:%S %Y")) }) return jsonify({'StatusCode':'200','Imagenes':images}) #send_from_directory(app.config['UPLOAD_FOLDER'],archivo) except Exception as e: return {'error': str(e)}
class ImagenesInicioResource(Resource): def get(self): try: images=[] for (path, ficheros, archivos) in walk(FOLDER_INICIO): for archivo in archivos: images.append({'foto':str(archivo),'fecha': "{}".format(datetime.datetime.strptime(time.ctime(os.path.getctime(os.path.join(path,archivo))),"%a %b %d %H:%M:%S %Y")) }) return jsonify({'StatusCode':'200','Imagenes':images}) #send_from_directory(app.config['UPLOAD_FOLDER'],archivo) except Exception as e: return {'error': str(e)} class ImagenesConfigResource(Resource): def get(self): try: images=[] for (path, ficheros, archivos) in walk(FOLDER_CONFIG): for archivo in archivos: images.append({'foto':str(archivo),'fecha': "{}".format(datetime.datetime.strptime(time.ctime(os.path.getctime(os.path.join(path,archivo))),"%a %b %d %H:%M:%S %Y")) }) return jsonify({'StatusCode':'200','Imagenes':images}) #send_from_directory(app.config['UPLOAD_FOLDER'],archivo) except Exception as e: return {'error': str(e)} class PublicidadResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT foto_sponsors,link from sponsors where estado='ACTIVO'") data = cursor.fetchall() items_list=[];
for item in data: i = { 'foto':item[0], 'link':item[1], } items_list.append(i)
return jsonify({'StatusCode':'200','Marcas':items_list})
except Exception as e: return {'error': str(e)} class PublicidadABMResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT id_sponsors,foto_sponsors,link,estado from sponsors") data = cursor.fetchall() items_list=[];
for item in data: i = { 'id_sponsors':item[0], 'foto':item[1], 'link':item[2], 'estado':item[3] } items_list.append(i)
return jsonify({'StatusCode':'200','Marcas':items_list})
except Exception as e: return {'error': str(e)} def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('foto_sponsors', type=str, location='args') parser.add_argument('estado', type=str, location='args') parser.add_argument('link', type=str, location='args') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "INSERT INTO sponsors(foto_sponsors, estado, link) VALUES('%s', '%s', '%s')" \ % (args['foto_sponsors'], args['estado'], args['link']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'Publicidad creada'} else: return {'StatusCode':'1000','Message': str(data[0])} def put(self): data = request.get_json() conn = mysql.connect() cursor = conn.cursor()
insert_query = \ "UPDATE sponsors SET foto_sponsors='%s', estado='%s', link='%s' WHERE id_sponsors='%s' " \ % (data['foto_sponsors'], data['estado'], data['link'],data['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'MODIFICACION EXITOSA'} else: return {'StatusCode':'1000','Message': str(data[0])} def delete(self): parser = reqparse.RequestParser() parser.add_argument('numero',type=str) parser.add_argument('path') parser.add_argument('foto') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() try: if (args['foto'] != 'None') and (args['foto'] != '') and (args['foto'] is not None): os.remove(args['path'] + args['foto']) except Exception as e: print {'error': str(e)} insert_query = \ "DELETE FROM sponsors WHERE id_sponsors='%s' " \ % (args['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'BORRADO EXITOSO'} else: return {'StatusCode':'1000','Message': str(data[0])} def options(self): print(self); return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class BorrarImagen(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument('nombre') parser.add_argument('path') args = parser.parse_args() data = request.get_json() os.remove(args['path'] + args['nombre']) # check if file exists or not if os.path.exists(args['path'] + args['nombre']) is False: return True class UploadImagenes(Resource): def post (self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('imagen', type=werkzeug.datastructures.FileStorage, location='files') args = parser.parse_args() file=args['imagen'] try: file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename)) img = Image.open(os.path.join(app.config['UPLOAD_FOLDER'], file.filename)) img.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename), quality=30, optimize=True) return {'StatusCode':'200','Mensaje':'Archivo guardado'} except Exception as e: return {'error': str(e)} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def options (self): return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class UploadImagenesInicio(Resource): def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('imagen', type=werkzeug.datastructures.FileStorage, location='files') args = parser.parse_args() file=args['imagen'] try: file.save(os.path.join(app.config['FOLDER_INICIO'], file.filename)) img = Image.open(os.path.join(app.config['FOLDER_INICIO'], file.filename)) #img = img.resize((1800,1024)) #img.save(os.path.join(app.config['FOLDER_INICIO'], file.filename), "JPEG", quality=30) img.save(os.path.join(app.config['FOLDER_INICIO'], file.filename), quality=30, optimize=True) return True except Exception as e: return {'error': str(e)}
def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def options (self): return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' }
class UploadImagenesConfig(Resource): def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('imagen', type=werkzeug.datastructures.FileStorage, location='files') args = parser.parse_args() file=args['imagen'] try: file.save(os.path.join(app.config['FOLDER_CONFIG'], file.filename)) img = Image.open(os.path.join(app.config['FOLDER_CONFIG'], file.filename)) img.save(os.path.join(app.config['FOLDER_CONFIG'], file.filename), quality=30, optimize=True) return True except Exception as e: return {'error': str(e)} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def options (self): return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class UploadImagenesNotiFoto(Resource): def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('imagen', type=werkzeug.datastructures.FileStorage, location='files') args = parser.parse_args() file=args['imagen'] try: file.save(os.path.join(app.config['FOLDER_NOTICIAS'], file.filename)) img = Image.open(os.path.join(app.config['FOLDER_NOTICIAS'], file.filename)) img.save(os.path.join(app.config['FOLDER_NOTICIAS'], file.filename), quality=30, optimize=True) return {'StatusCode':'200','Mensaje':'Archivo guardado'} except Exception as e: return {'error': str(e)} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def options (self): return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class UploadImagenesPublicidadFoto(Resource): def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('imagen', type=werkzeug.datastructures.FileStorage, location='files') args = parser.parse_args() file=args['imagen'] try: file.save(os.path.join(app.config['FOLDER_PUBLICIDAD'], file.filename)) img = Image.open(os.path.join(app.config['FOLDER_PUBLICIDAD'], file.filename)) img.save(os.path.join(app.config['FOLDER_PUBLICIDAD'], file.filename), quality=30, optimize=True) return {'StatusCode':'200','Mensaje':'Archivo guardado'} except Exception as e: return {'error': str(e)} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def options (self): return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } class CronogramaResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT a.id_cronograma, a.participacion, a.evento, a.lugar, b.categoria, a.fecha_evento, a.fecha_subida, a.link from cronogramas a left join categorias_deportes b on b.id_categoria=a.id_categoria order by 6 asc;") data = cursor.fetchall() items_list=[]; for item in data: i = { 'id_cronograma':item[0], 'participacion':item[1], 'evento':item[2], 'lugar':item[3], 'categoria':item[4], 'fecha_evento':str(item[5]), 'fecha_subida':str(item[6]), 'link':str(item[7]), } items_list.append(i) return {'StatusCode':'200','Cronograma':items_list} except Exception as e: return {'error': str(e)} def post(self): args = request.get_json(force=True) conn = mysql.connect() cursor = conn.cursor() insert_query = \ "INSERT INTO cronogramas(evento, participacion, lugar, id_categoria, fecha_evento , link ) VALUES('%s', '%s', '%s', '%s', '%s', '%s')" \ % (args['evento'], args['participacion'], args['lugar'], args['categoria'], args['fecha_evento'],args['link']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'Cronograma creado'} else: return {'StatusCode':'1000','Message': str(data[0])} def put(self): data = request.get_json() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "UPDATE cronogramas SET participacion='%s', evento='%s', lugar='%s', id_categoria='%s', fecha_evento='%s' ,link='%s' WHERE id_cronograma='%s' " \ % (data['participacion'], data['evento'], data['lugar'], data['categoria'],data['fecha_evento'],data['link'],data['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'MODIFICACION EXITOSA'} else: return {'StatusCode':'1000','Message': str(data[0])} def delete(self): parser = reqparse.RequestParser() parser.add_argument('numero',type=str) args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "DELETE FROM cronogramas WHERE id_cronograma='%s' " \ % (args['numero']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'BORRADO EXITOSO'} else: return {'StatusCode':'1000','Message': str(data[0])} def options(self): print(self); return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' }
class CategoriasResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT id_categoria,categoria from categorias_deportes") data = cursor.fetchall()
items_list=[]; for item in data: i = { 'id_categoria':item[0], 'categoria':item[1], } items_list.append(i)
return {'StatusCode':'200','Categorias':items_list}
except Exception as e: return {'error': str(e)} class UsuariosResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT username from tbl_usrs") data = cursor.fetchall()
items_list=[]; for item in data: i = { 'username':item[0], } items_list.append(i)
return {'StatusCode':'200','Usuarios':items_list}
except Exception as e: return {'error': str(e)} class StaffResource(Resource): def get(self): try: conn = mysql.connect() cursor = conn.cursor() cursor.execute("SELECT nombre,foto from profesores") data = cursor.fetchall() cursor.execute("select a.nombre,c.medalla from profesores a left join medallas c on c.id_profesor=a.id_profesor order by c.fecha asc ") dataMedalla = cursor.fetchall() cursor.execute("select a.nombre,b.caracteristica from profesores a left join caracteristicas b on b.id_profesor=a.id_profesor order by a.nombre,b.ordenamiento asc") dataCaracteristicas = cursor.fetchall() items_list=[]; medalla_list=[]; caracteristicas_list=[]; for item in data: medalla_list=[]; caracteristicas_list=[]; for item_medalla in dataMedalla: if item_medalla[0] == item[0]: j = {'medalla': self.elimina_tildes(item_medalla[1])} medalla_list.append(j) for item_caracteristicas in dataCaracteristicas: if item_caracteristicas[0]==item[0]: m = {'caracteristica':self.elimina_tildes(item_caracteristicas[1])} caracteristicas_list.append(m) i = { 'profesor':item[0], 'foto':item[1], 'Medallas':medalla_list, 'Caracteristicas':caracteristicas_list } items_list.append(i) return {'StatusCode':'200','Staff':items_list}
except Exception as e: return {'error': str(e)} def elimina_tildes(self,s): return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
class UsuarioPagina(Resource): def post(self): parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('latitud', type=float, location='args') parser.add_argument('longitud', type=float, location='args') args = parser.parse_args() conn = mysql.connect() cursor = conn.cursor() insert_query = \ "INSERT INTO localizacion(latitud, longitud) VALUES('%f', '%f')" \ % (args['latitud'], args['longitud']) cursor.execute(insert_query) data = cursor.fetchall() if len(data) is 0: conn.commit() return {'StatusCode':'200','Message': 'usuario registrado'} else: return {'StatusCode':'1000','Message': str(data[0])}
class Directorio(Resource): def get(self): try: PATH_DIRECTORIO = 'C:/Users/matias/Desktop/horacio/fotos actuales_original/assets/galeria/' PATH_DIRECTORIO_SALIDA = 'C:/Users/matias/Desktop/horacio/fotos nuevas reducidas/galeria/' dirs = os.listdir( PATH_DIRECTORIO ) for item in dirs: if os.path.isfile(PATH_DIRECTORIO+item): img = Image.open(PATH_DIRECTORIO+item) img.save(os.path.join(PATH_DIRECTORIO_SALIDA+item), quality=30, optimize=True) return {'StatusCode':'200','Message':'archivos copiados'} except Exception as e: return {'error': str(e)} class index(Resource): def get(self): return {'hello': 'world'} def options(self): print('entra'); return {'Allow' : 'PUT' }, 200, \ { 'Access-Control-Allow-Origin': '*', \ 'Access-Control-Allow-Methods' : 'PUT,GET,POST' } api.add_resource(index, '/') api.add_resource(ClienteResource, '/cliente') api.add_resource(UsuariosResource, '/usuarios') api.add_resource(NoticiaDetaill, '/detaill_new') api.add_resource(CronogramaDetaill, '/detaill_cronograma') api.add_resource(AlumnoDetaill, '/detaill_alumno') api.add_resource(EnviarMails, '/mandarMail') api.add_resource(CronogramaResource, '/cronograma') api.add_resource(StaffResource, '/staff') api.add_resource(NoticiasResource, '/noticias') api.add_resource(ImagenesResource, '/imagenes') api.add_resource(PublicidadResource, '/publicidad') api.add_resource(UploadImagenes, '/upload_file') api.add_resource(UploadImagenesInicio, '/upload_file_inicio') api.add_resource(UploadImagenesConfig, '/upload_file_config') api.add_resource(UploadImagenesNotiFoto, '/upload_noticia_foto') api.add_resource(UploadImagenesPublicidadFoto, '/upload_publicidad_foto') api.add_resource(BorrarImagen, '/borrarImagen') api.add_resource(UsuarioPagina, '/userGeopos') api.add_resource(CategoriasResource, '/categorias') api.add_resource(ImagenesConfigResource, '/imagenesConfig') api.add_resource(ImagenesInicioResource, '/imagenesInicio') api.add_resource(PublicidadABMResource, '/publi_abm') api.add_resource(ReporteAlumnoResource, '/repoAlumnos') api.add_resource(Directorio,'/directorio') if __name__ == '__main__': import sys sys.path.insert(0,'/var/www/html/imagenesGregoryteam/') app.run(debug=True)
|