def actualizar_habilidades(idPersonaje, idHabilidadPersonaje): personaje = Personaje.query.get_or_404(idPersonaje) or None habilidad = HabilidadPersonaje.query.get_or_404( idHabilidadPersonaje) or None if g.usuario_actual.idUsuario != personaje.usuario_id: abort(403) if personaje is None: return peticion_erronea('El personaje no existe.') datos = request.get_json() or {} if not ('valorBase' in datos or 'pap' in datos or 'extra' in datos or 'habilidadUsada' in datos): return peticion_erronea( 'Debe incluir algunos de estos campos: valorBase, pap, extra o habilidadUsada.' ) if habilidad is None: return peticion_erronea( 'El personaje aún no ha aprendido esta habilidad.') else: habilidad.from_dict(datos) Firebase.firebase_actualizar_habilidad(datos) respuesta = jsonify(habilidad.to_dict()) respuesta.status_code = 201 respuesta.headers['Location'] = url_for( 'api.obtener_habilidad_personaje', idPersonaje=habilidad.personaje_id, idHabilidadPersonaje=habilidad.idHabilidadPersonaje) return respuesta
def aprender_habilidades(idPersonaje, idHabilidad): personaje = Personaje.query.get_or_404(idPersonaje) if g.usuario_actual.idUsuario != personaje.usuario_id: abort(403) if personaje is None: return peticion_erronea('El personaje no existe.') if not HabilidadBase.query.filter_by(idHabilidad=idHabilidad).first(): return peticion_erronea('La habilidad no existe.') datos = request.get_json() or {} if 'valorBase' not in datos or 'pap' not in datos or 'extra' not in datos or 'habilidadUsada' not in datos: return peticion_erronea( 'Debe incluir los campos valorBase, pap, extra y habilidadUsada.') datos['personaje_id'] = idPersonaje datos['habilidad_id'] = idHabilidad habilidad = HabilidadPersonaje() if habilidad.conocer_habilidad(datos): return peticion_erronea( 'El personaje ya ha aprendido esta habilidad anteriormente.') else: datos['idHabilidadPersonaje'] = Firebase.firebase_crear_habilidad( datos) habilidad.from_dict(datos) print(habilidad) db.session.add(habilidad) db.session.commit() respuesta = jsonify(habilidad.to_dict()) respuesta.status_code = 201 respuesta.headers['Location'] = url_for( 'api.obtener_habilidad_personaje', idPersonaje=habilidad.personaje_id, idHabilidadPersonaje=habilidad.idHabilidadPersonaje) return respuesta
def actualizar_usuario(idUsuario): if g.usuario_actual.idUsuario != idUsuario: abort(403) usuario = Usuario.query.get_or_404(idUsuario) datos = request.get_json() or {} if 'idUsuario' in datos: return peticion_erronea('No se puede cambiar el id del Usuario.') if 'correo' in datos and datos['correo'] != usuario.correo and \ Usuario.query.filter_by(correo=datos['correo']).first(): return peticion_erronea( 'Por favor, use otra dirección de correo electrónico.') if 'alias' in datos and datos['alias'] != usuario.alias and \ Usuario.query.filter_by(alias=datos['alias']).first(): return peticion_erronea('Por favor, use otro alias.') usuario.from_dict(datos, nuevo_usuario=False) Firebase.firebase_actualizar_usuario(usuario) db.session.commit() return jsonify(usuario.to_dict())
def obtener_habilidad_personaje(idPersonaje, idHabilidadPersonaje): personaje = Personaje.query.get_or_404(idPersonaje) habilidad = HabilidadPersonaje.query.get_or_404( idHabilidadPersonaje) or None if g.usuario_actual.idUsuario != personaje.usuario_id: abort(403) if personaje is None: return peticion_erronea('El personaje no existe.') if habilidad is None: return peticion_erronea( 'El personaje aún no ha aprendido esta habilidad.') else: respuesta = jsonify(habilidad.to_dict()) respuesta.status_code = 201 respuesta.headers['Location'] = url_for( 'api.obtener_habilidad_personaje', idPersonaje=habilidad.personaje_id, idHabilidadPersonaje=habilidad.idHabilidadPersonaje) return respuesta
def crear_usuario(): datos = request.get_json() or {} if 'correo' not in datos or 'alias' not in datos or 'contrasena' not in datos: return peticion_erronea( 'Debe incluir los campos correo electrónico, contraseña y alias.') if Usuario.query.filter_by(correo=datos['correo']).first(): return peticion_erronea( 'Ya hay un usuario con esa dirección correo de correo electrónico, por favor utilice una dirección de correo electrónico diferente.' ) datos['idUsuario'] = Firebase.firebase_crear_usuario(datos) usuario = Usuario() usuario.from_dict(datos, nuevo_usuario=True) db.session.add(usuario) db.session.commit() respuesta = jsonify(usuario.to_dict()) respuesta.status_code = 201 respuesta.headers['Location'] = url_for('api.obtener_usuario', idUsuario=usuario.idUsuario) return respuesta
def actualizar_personaje(idPersonaje): personaje = Personaje.query.get_or_404(idPersonaje) if g.usuario_actual.idUsuario != personaje.usuario_id: abort(403) datos = request.get_json() or {} if 'idPersonaje' in datos: return peticion_erronea('No se puede cambiar el id del Personaje.') personaje.from_dict(datos, personaje.usuario_id) Firebase.firebase_actualizar_personaje(personaje) db.session.commit() return jsonify(personaje.to_dict())
def crear_personaje(): datos = request.get_json() or {} if 'nombre' not in datos: return peticion_erronea('Debe incluir el campo nombre.') if Personaje.query.filter_by(nombre=datos['nombre'], idUsuario=g.usuario_actual.idUsuario).first(): return peticion_erronea( 'El usuario ya tiene un personaje con este nombre.') datos['idPersonaje'] = Firebase.firebase_crear_personaje(datos) personaje = Personaje() personaje.from_dict(datos, g.usuario_actual.idUsuario) db.session.add(personaje) db.session.commit() Firebase.firebase_actualizar_usuario_personajes( Usuario.query.get_or_404(g.usuario_actual.idUsuario).personajes) respuesta = jsonify(personaje.to_dict()) respuesta.status_code = 201 respuesta.headers['Location'] = url_for('api.obtener_personaje', idPersonaje=personaje.idPersonaje) return respuesta
def actualizar_combate(idCombate): combate = Combate.query.get_or_404(idCombate) datos = request.get_json() or {} if 'idCombate' in datos: return peticion_erronea('No se puede cambiar el id de la combate.') combate.from_dict(datos) Firebase.firebase_actualizar_combate(combate, g.usuario_actual.nombre) db.session.commit() respuesta = jsonify(combate.to_dict()) respuesta.status_code = 201 respuesta.headers['Location'] = url_for('api.obtener_combate', idCombate=idCombate) return respuesta
def crear_combate(): datos = request.get_json() or None if 'nombre' not in datos or 'descripcion' not in datos: return peticion_erronea('Debe incluir los campos "nombre" y "descripcion".') combate = Combate() datos['master_id'] = g.usuario_actual.idUsuario datos['idCombate'] = Firebase.firebase_crear_combate(datos, g.usuario_actual.nombre) combate.from_dict(datos) db.session.add(combate) db.session.commit() respuesta = jsonify(datos) respuesta.status_code = 201 respuesta.headers['Location'] = url_for('api.obtener_combate', idCombate=combate.idCombate) return respuesta
def crear_combatiente(): datos = request.get_json() or None if 'nombre' not in datos or 'iniciativa' not in datos or 'reflejos' not in datos or 'velocidadArma' not in datos: return peticion_erronea( 'Debe incluir los campos Nombre, Iniciativa, Reflejos y velocidadArma.' ) combatiente = Combatiente() datos['idCombatiente'] = Firebase.firebase_crear_combatiente(datos) combatiente.from_dict(datos) db.session.add(combatiente) db.session.commit() respuesta = jsonify(datos) respuesta.status_code = 201 respuesta.headers['Location'] = url_for( 'api.obtener_combatiente', idCombatiente=combatiente.idCombatiente) return respuesta