def vistaevento(id): evento = get_evento(id) if evento.aprobado == 1 or has_permission(current_user, evento): formulario = AgregarComentario() titulo = "Evento - " + evento.nombre lista_comentarios = listar_comentarios(id) if formulario.is_submitted(): if formulario.validate_on_submit(): flash('Comentario añadido!', 'success') formulario.mostrar_datos() comentario = Comentario(contenido=formulario.contenido.data, usuarioId=current_user.usuarioId, eventoId=id) try: db.session.add(comentario) db.session.commit() except SQLAlchemyError as e: db.rollback() enviarMail(os.getenv('ADMIN_MAIL'), 'SQLAlchemy error', 'error', e=e) return redirect(url_for('vistaevento', id=id)) else: flash('Comentario no añadido. Reintente', 'danger') return render_template('ver_evento.html', id=id, evento=evento, titulo=titulo, formulario=formulario, lista_comentarios=lista_comentarios) else: return redirect(url_for('index'))
def crearevento(): formulario = CrearEvento() titulo = "Nuevo Evento" if formulario.validate_on_submit(): f = formulario.imagen.data filename = secure_filename(formulario.nombreevento.data + str(randint(1, 100))) f.save(os.path.join('static/images/', filename)) flash('Evento creado con exito! (Debera ser aprobado por un administrador antes de ' 'ser mostrado en la pagina)', 'success') formulario.mostrar_datos() print("Imagen: " + str(filename)) evento = Evento(nombre=formulario.nombreevento.data, fecha=formulario.fechaevento.data, hora=formulario.hora.data, lugar=formulario.lugarevento.data, tipo=formulario.opciones.data, imagen=filename, descripcion=formulario.descripcion.data, usuarioId=current_user.usuarioId) try: db.session.add(evento) db.session.commit() except SQLAlchemyError as e: db.rollback() enviarMail(os.getenv('ADMIN_MAIL'), 'SQLAlchemy error', 'error', e=e) return redirect(url_for('miseventos')) return render_template('crear_evento.html', titulo=titulo, formulario=formulario, destino="crearevento")
def generalException(e): print(e) write_log(e) mail.enviarMail(os.getenv('ADMIN_MAIL'), 'Unexpected error', 'error', e=e) if request.accept_mimetypes.accept_json and not request.accept_mimetypes.accept_html: response = jsonify({'error': 'Unexpected error ' + str(e)}) return response return render_template('errores/500.html'), 500
def badgateway(e): print(e) write_log(e) mail.enviarMail(os.getenv('ADMIN_MAIL'), 'Bad Gateway 502 error', 'error', e=e) if request.accept_mimetypes.accept_json and not request.accept_mimetypes.accept_html: response = jsonify({'error': 'Bad Gateway'}) response.status_code = 400 return response return render_template('errores/500.html'), 502
def internal_server_error(e): print(e) write_log(e) mail.enviarMail(os.getenv('ADMIN_MAIL'), '500. Internal server error', 'error', e=e) if request.accept_mimetypes.accept_json and not request.accept_mimetypes.accept_html: # Responder con JSON response = jsonify({'error': 'internal server error'}) response.status_code = 500 return response return render_template('errores/500.html'), 500
def eliminarEventoById(id): evento = get_evento(id) if current_user.is_admin() or current_user.is_owner(evento): try: db.session.delete(evento) db.session.commit() except SQLAlchemyError as e: db.rollback() enviarMail(os.getenv('ADMIN_MAIL'), 'SQLAlchemy error', 'error', e=e) return redirect(url_for('aprobareventos')) else: return redirect(url_for('index'))
def aprobarEventoById(id): if current_user.is_admin(): evento = get_evento(id) evento.aprobado = 1 db.session.commit() enviarMail(evento.usuario.email, 'Evento aprobado!', 'evento_aprobado', evento=evento) return redirect(url_for('aprobareventos')) else: return redirect(url_for('index'))
def apiAprobarEvento(id): evento = get_evento(id) evento.aprobado = 1 db.session.add(evento) db.session.commit() enviarMail(evento.usuario.email, 'Evento aprobado!', 'evento_aprobado', evento=evento) return jsonify(evento.to_json()), 201
def eliminarComentarioById(id): comentario = get_comentario(id) if current_user.is_admin() or current_user.is_owner(comentario) or current_user.is_owner(comentario.evento): try: db.session.delete(comentario) db.session.commit() except SQLAlchemyError as e: db.rollback() enviarMail(os.getenv('ADMIN_MAIL'), 'SQLAlchemy error', 'error', e=e) flash('Comentario eliminado!', 'success') return redirect(url_for('vistaevento', id=comentario.eventoId)) else: return redirect(url_for('index'))
def ingresar(): titulo = "Ingresar" formulario = Registro() login = Login() if formulario.submit1.data is True and formulario.validate_on_submit(): if validarExistente(formulario.email.data): flash('Cuenta creada con exito!', 'success') flash('Pronto recibiras un email de bienvenida!', 'success') formulario.mostrar_datos() usuario = Usuario(formulario.nombre.data, formulario.apellido.data, formulario.email.data, formulario.contrasenia.data) try: db.session.add(usuario) db.session.commit() enviarMail(formulario.email.data, 'Bienvenido a Trap Eventos!', 'cuenta_creada', formulario=formulario) login_user(usuario, False) except SQLAlchemyError as e: db.rollback() enviarMail(os.getenv('ADMIN_MAIL'), 'SQLAlchemy error', 'error', e=e) return redirect(url_for('index')) else: flash('Existe una cuenta registrada con el email ingresado.', 'danger') if login.submit2.data is True and login.validate_on_submit(): usuario = db.session.query(Usuario).filter(Usuario.email == login.emailLogin.data).first() if usuario is not None and usuario.verificar_pass(login.contraseniaLogin.data): login_user(usuario, login.remember_me.data) flash('Welcome back, ' + usuario.nombre + '!', 'success') return redirect(url_for('index')) else: flash('Su usuario y contraseña no coinciden, reintente.', 'danger') if not current_user.is_authenticated: return render_template('registro.html', titulo=titulo, formulario=formulario, login=login) else: return redirect(url_for('index'))
def end_day(self): self.day_total() dayDataBase.actualize(self.sheet) if enviarMail(str(date.today()), self.redactar_mail()): dayDataBase.reset_json() sys.exit()