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
Beispiel #3
0
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
Beispiel #5
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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