def get(self): """ Gestiona las peticiones de tipo get (DAME-QUIERO) al recurso Alumnos /alumnos Devuelve una lista con todos los alumnos de la base de datos. /alumnos?dni=<dni del alumno> Devuelve todos los datos de un alumno en concreto. /alumnos/asignaturas?dni=<dniAlumno> Devuelve todas las asignaturas en la que está matriculado el estudiante. /alumnos/profesores?dni=<dniAlumno> Devuelve una lista con todos los profesores que imparten clase a ese alumno """ #Si no se pasa como parámetro nada, se está pidiendo una lista simplificada de todos los alumnos de la base de datos. ''' http://localhost:8080/alumnos ''' if(self.request.get('dni')==''): print ("GET ALL ALUMNOS #######################") #Se está pidiendo que se devuelvan todos los alumnos listaAlumnos = GestorAlumnos.getAlumnos() #Una vez que tenemos la lista de aĺumnos convertimos los datos a JSON para enviarlos salida="" for alumno in listaAlumnos: salida+= str(json.dumps(alumno.__dict__)) #print "Imprimiendo lista de alumnos" obj = jsonpickle.encode(listaAlumnos) #print str(obj) #Los enviamos self.response.write(obj) #En otro caso, se está pasando el dni del que se quiere toda su información al completo. else: print ("GET UN ALUMNO #######################") #Recuperamos el alumno pedido. alumno = GestorAlumnos.getAlumno(self.request.get('dni')) if(alumno!='Elemento no encontrado'): print "FECHA NACIMIENTO" #Tenemos que hacer esto para que no haya problemas al codificar con JSON el tipo de dato fecha nacimiento alumno.fecha_nac=str(alumno.fecha_nac) print alumno.fecha_nac #Si se trata de un error entonces se envía el error que nos devuelve el GestorAlumnos directamente #Enviamos el resultado en formato JSON self.response.write(jsonpickle.encode(alumno))
def modAlumnoCompleto(id_alumno): ''' Función que modifica los atributos de un alumno dado su identificación, usando la función modAlumnoCompleto de la APIDB curl -d "nombre=Pedro&apellidos=Torrssr&dni=234242&direccion=Calle Duqesa&locia=Granada&fecha_nacimiento=1988-12-4&telefono=23287282" -i -X POST localhost:8002/alumnos/1 ''' if v: print 'Calling GestorAlumnos.modAlumnoCompleto()' print "Petición: " print request.form print 'aqui' imagen = request.form.get('imagen') print imagen salida= ""; if imagen != None: print 'Calling with image' salida = GestorAlumnos.modAlumnoCompleto( id_alumno, request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1'), request.form['imagen']) else: print 'Calling without image' salida = GestorAlumnos.modAlumnoCompleto( id_alumno, request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1')) if v: print "SALIDA: "+str(salida) if salida == 'OK': return 'OK' else: return salida
def modAlumnoCompleto(id_alumno): ''' Función que modifica los atributos de un alumno dado su identificación, usando la función modAlumnoCompleto de la APIDB curl -d "nombre=Pedro&apellidos=Torrssr&dni=234242&direccion=Calle Duqesa&locia=Granada&fecha_nacimiento=1988-12-4&telefono=23287282" -i -X POST localhost:8002/alumnos/1 ''' if v: print 'Calling GestorAlumnos.modAlumnoCompleto()' print "Petición: " print request.form print 'aqui' imagen = request.form.get('imagen') print imagen salida = "" if imagen != None: print 'Calling with image' salida = GestorAlumnos.modAlumnoCompleto( id_alumno, request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1'), request.form['imagen']) else: print 'Calling without image' salida = GestorAlumnos.modAlumnoCompleto( id_alumno, request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1')) if v: print "SALIDA: " + str(salida) if salida == 'OK': return 'OK' else: return salida
def delete(self): """ Función para eliminar un alumno Puede llamarse, pasándole parámetros desde terminal así: #curl -d "dni=456320" -X DELETE -G http://localhost:8002/alumnos """ print "LLAMADA EN MAIN"+self.request.get('dni')+"yeah" #self.response.write("eliminando\n") #self.response.write("dni: "+self.request.get('dni')+"\n") self.response.write(GestorAlumnos.delAlumno(self.request.get('dni')))
def getAlumno(id_alumno): ''' Devuelve todos los datos de un alumno buscado por su id en caso de existir en la base de datos. curl -i -X GET localhost:8002/alumnos/11223344A ''' #Si no tiene el número correcto de caracteres el identificador. if len(id_alumno) != 9: abort(400) salida=GestorAlumnos.getAlumno(id_alumno) if salida=="Elemento no encontrado": #Enviamos el error de NotFound abort(404) else: print "Aquí: " print str(salida.fecha_nac) return jsonpickle.encode(GestorAlumnos.getAlumno(id_alumno))
def postAlumno(): ''' Método que inserta un nuevo alumno en el sistema. curl -d "nombre=Juan&dni=45601218Z&direccion=Calle arabl&localidad=Jerez de la frontera&provincia=Granada&fecha_nac=1988-2-6&telefono=677164459" -i -X POST localhost:8002/alumnos ''' if 'dni' in request.form: #Presente el DNI al menos podemos grabar el alumno en el sistema. #Se devuelve la salida de control de salida = GestorAlumnos.nuevoAlumno(request.form['nombre'], request.form['dni'], request.form['direccion'], request.form['localidad'], request.form['provincia'], request.form['fecha_nac'], request.form['telefono']) if salida == 'OK': return 'OK' else: abort(404) else: abort(404)
def getAlumno(id_alumno): ''' Devuelve todos los datos de un alumno buscado por su id en caso de existir en la base de datos. curl -i -X GET localhost:8002/alumnos/11223344A ''' if v: print 'Calling GestorAlumnos.getAlumno(' + id_alumno + ')' #Si no tiene el número correcto de caracteres el identificador. #if len(id_alumno) != 9: # abort(400) salida = GestorAlumnos.getAlumno(id_alumno) if salida == "Elemento no encontrado": #Enviamos el error de NotFound abort(404) else: #return jsonpickle.encode(GestorAlumnos.getAlumno(id_alumno), unpicklable=False) return jsonpickle.encode(salida, unpicklable=False)
def getAlumno(id_alumno): ''' Devuelve todos los datos de un alumno buscado por su id en caso de existir en la base de datos. curl -i -X GET localhost:8002/alumnos/11223344A ''' if v: print 'Calling GestorAlumnos.getAlumno('+id_alumno+')' #Si no tiene el número correcto de caracteres el identificador. #if len(id_alumno) != 9: # abort(400) salida=GestorAlumnos.getAlumno(id_alumno) if salida=="Elemento no encontrado": #Enviamos el error de NotFound abort(404) else: #return jsonpickle.encode(GestorAlumnos.getAlumno(id_alumno), unpicklable=False) return jsonpickle.encode(salida, unpicklable=False)
def delAlumno(id_alumno): ''' curl -i -X DELETE localhost:8080/alumnos/11223344A Si el alumno no se encuentra se devuelve: "Elemento no encontrado". Si la solicitud se realiza con un identificador de alumno que no cumple con ciertos requisitos como la longitud = 9, se devuelve el error 400 - Bad request, que significa que la solicitud contiene sintaxis errónea y no debería repetirse. Si la solicitud tiene la sintaxis correcta pero no existe el recurso el error es el 404 - Not found, significa recurso no encontrado, identificia que el servidor no ha encontrado el recurso solicitado. ''' #if len(id_alumno) != 9: # abort(400) salida = GestorAlumnos.delAlumno(id_alumno) if salida=="Elemento no encontrado": abort(404) else: return 'Elemento eliminado'
def post(self): """ Función para añadir un nuevo alumno a la base de datos. """ print ("post in alumnos") print self.request.get('nombre') print self.request.get('dni') #Grabamos los datos en la base de datos: salida=GestorAlumnos.nuevoAlumno(self.request.get('nombre'), self.request.get('dni')) #Recogemos los atributos de la petición y los imprimimos #self.response.write("nombre: "+self.request.get('nombre')+"\n") #self.response.write("dni: "+self.request.get('dni')+"\n") ''' Salida: nombre: JuanAntonio dni: 456320 ''' self.response.write(salida)
def delAlumno(id_alumno): ''' curl -i -X DELETE localhost:8080/alumnos/11223344A Si el alumno no se encuentra se devuelve: "Elemento no encontrado". Si la solicitud se realiza con un identificador de alumno que no cumple con ciertos requisitos como la longitud = 9, se devuelve el error 400 - Bad request, que significa que la solicitud contiene sintaxis errónea y no debería repetirse. Si la solicitud tiene la sintaxis correcta pero no existe el recurso el error es el 404 - Not found, significa recurso no encontrado, identificia que el servidor no ha encontrado el recurso solicitado. ''' #if len(id_alumno) != 9: # abort(400) salida = GestorAlumnos.delAlumno(id_alumno) if salida == "Elemento no encontrado": abort(404) else: return 'Elemento eliminado'
def getClasesAlumnos(id_alumno): ''' Devuelve las clases a en las que está matriculado el alumno, como 1AESO o 2CBACH. curl -i -X GET localhost:8002/alumnos/1/clases ''' return jsonpickle.encode(GestorAlumnos.getClases(id_alumno))
def getAsignaturasAlumno(id_alumno): ''' curl -i -X GET localhost:8002/alumnos/1/asignaturas ''' return jsonpickle.encode(GestorAlumnos.getAsignaturas(id_alumno))
def getProfesoresAlumno(id_alumno): ''' Devuelve todos los profesores que imparten clase a ese alumno. curl -i -X GET localhost:8002/alumnos/1/profesores ''' return jsonpickle.encode(GestorAlumnos.getProfesores(id_alumno))
def getAlumnos(): ''' Devuelve una lista de todos los estudiantes. curl -i -X GET localhost:8002/alumnos ''' return jsonpickle.encode(GestorAlumnos.getAlumnos())
def getAlumnos(): return jsonpickle.encode(GestorAlumnos.getAlumnos())
def postAlumno(): ''' Método que inserta un nuevo alumno en el sistema. curl -d "nombre=Juan&apellidos=Fernandez&dni=45601218&direccion=Calle arabl&localidad=Jerez de la frontera&provincia=Granada&fecha_nacimiento=1988-2-6&telefono=677164459" -i -X POST localhost:8002/alumnos ''' if v: print nombreMicroservicio print 'Recurso: /alumnos , metodo: POST' print "Petición: " print request.form print 'aqui' imagen = request.form.get('imagen') #print imagen salida= ""; if imagen != None: print 'Calling with image' salida = GestorAlumnos.nuevoAlumno(request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1'), request.form['imagen']) else: print 'Calling without image' salida = GestorAlumnos.nuevoAlumno(request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1')) if salida['status'] == 'OK': #Una vez insertada la asignatura en el SBD llamamos al servicio SCE para que actualice su sistema (### DISPARADOR ###) #Conformamos la dirección: module = modules.get_current_module_name() url = "http://%s/" % modules.get_hostname(module="sce") #Añadimos el servicio al que queremos conectarnos. url+="alumnos" #Creamos un diccionario con los datos. datos = { "idAlumno": salida['idAlumno'], "nombreAlumno": request.form['nombre']+' '+request.form['apellidos'], } form_data = urllib.urlencode(datos) result=urlfetch.fetch(url=url, payload=form_data, method=urlfetch.POST) print 'yeahhhhhhhhhhhhhhhhhhhhhhhhhh'; print result.content json = jsonpickle.decode(result.content) if json['status']!='OK': salida['status']='SCE ERROR' if v: print ' Return: '+str(salida) return jsonpickle.encode(salida)
def postAlumno(): ''' Método que inserta un nuevo alumno en el sistema. curl -d "nombre=Juan&apellidos=Fernandez&dni=45601218&direccion=Calle arabl&localidad=Jerez de la frontera&provincia=Granada&fecha_nacimiento=1988-2-6&telefono=677164459" -i -X POST localhost:8002/alumnos ''' if v: print nombreMicroservicio print 'Recurso: /alumnos , metodo: POST' print "Petición: " print request.form print 'aqui' imagen = request.form.get('imagen') #print imagen salida = "" if imagen != None: print 'Calling with image' salida = GestorAlumnos.nuevoAlumno( request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1'), request.form['imagen']) else: print 'Calling without image' salida = GestorAlumnos.nuevoAlumno( request.form['nombre'].encode('latin-1'), request.form['apellidos'].encode('latin-1'), request.form['dni'].encode('latin-1'), request.form['direccion'].encode('latin-1'), request.form['localidad'].encode('latin-1'), request.form['provincia'].encode('latin-1'), request.form['fecha_nacimiento'].encode('latin-1'), request.form['telefono'].encode('latin-1')) if salida['status'] == 'OK': #Una vez insertada la asignatura en el SBD llamamos al servicio SCE para que actualice su sistema (### DISPARADOR ###) #Conformamos la dirección: module = modules.get_current_module_name() url = "http://%s/" % modules.get_hostname(module="sce") #Añadimos el servicio al que queremos conectarnos. url += "alumnos" #Creamos un diccionario con los datos. datos = { "idAlumno": salida['idAlumno'], "nombreAlumno": request.form['nombre'] + ' ' + request.form['apellidos'], } form_data = urllib.urlencode(datos) result = urlfetch.fetch(url=url, payload=form_data, method=urlfetch.POST) print 'yeahhhhhhhhhhhhhhhhhhhhhhhhhh' print result.content json = jsonpickle.decode(result.content) if json['status'] != 'OK': salida['status'] = 'SCE ERROR' if v: print ' Return: ' + str(salida) return jsonpickle.encode(salida)
def getProfesoresAlumno(id_alumno): ''' curl -i -X GET localhost:8080/alumnos/1/profesores ''' return jsonpickle.encode(GestorAlumnos.getProfesores(id_alumno))