google apps engine

17
GOOGLE APPS ENGINE Proyecto: Sistema escolar administrativo 1 Aplicacion de Google Apps:SAE

Upload: blanca-rodriguez

Post on 24-Jan-2015

1.686 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Google apps engine

GOOGLE APPS ENGINE

Proyecto: Sistema escolar administrativo

1 Aplicacion de Google Apps:SAE

Page 2: Google apps engine

Google App :Proyecto-Web

2 Aplicacion de Google Apps:SAE

Nuestro aplicación esta hecha en el lenguaje Python y fue realizada para la infraestructura de Google

-los recursos que utilizamos para su realización fueron-Google engine launcher -EasyEclipse for Python Utilizamos 1 servidor para las imágenes-http://tudescarga.net/upload/

Libros que nos sirvieron fueron-Java 2 autor: Francisco Ceballos-Dominando java scriptTutoriales

Paginas Google engine codehttp://mir.aculo.us/

Page 3: Google apps engine

Aplicacion de Google Apps:SAE3

Descripción de la aplicación

La aplicación tiene como objetivo inscribir a personas en especial alumnos que quieras llevar la clase de programación web o lenguaje de programación se pueden agregar mas clases dependiendo también puedes hacer una búsqueda para verificar quienes están inscritos también envía un correo atreves de una cuenta de Gmail envía la confirmación de que la solicitud fue aprobada

Funcionamiento de la aplicación

Consta de paginas HTMLConsta de paginas HTMLUna pagina índex que es la principal de la aplicación como bienvenidauna principal que es donde esta el formulario de inscripción Una datos que muestra los datos para verificar que estén correctosUna pagina de inscripción donde se envían los datos ala cuenta de correosUna pagina de búsqueda 1 carpeta donde se encuentra el css y java script

Se muestra en el orden mencionado

Page 4: Google apps engine

Aplicacion de Google Apps:SAE4

Tipos de archivos utilizados

Utilizamos CSS ,Java Script , python,

También consta de código realizado en python la función del código hace que interactúen las paginas HTML .Así como también hace que se realice la búsqueda que se envié el correo que guarde la información

CSS Que le da un estilo mas definido a los formularios

Java script que hace que funcione el relog de la pagina principal le añade funciones que el HTML no puede se uso un prototipo que hace que el formulario le añada la función de detectar cuando no es introducido al campo el valor correspondiente

Page 5: Google apps engine

Aplicacion de Google Apps:SAE5

EXPLICACION DE LAS FUNCIONES Y ELABORACION DEL CODIGO Y LOS ARCHIVOS NECESARIOS

Page 6: Google apps engine

Aplicacion de Google Apps:SAE6

Creación de un Documento .YAML

application: proyecto-web

version: 1runtime: pythonapi_version: 1

handlers:- url: /stylesheets static_dir: stylesheets- url: /.* script: codigo.py

Una aplicación creada con Python App Engine debe incluir un archivo de configuración denominado app.yaml que especifique la manera en la que las rutas de URL se corresponden con los controladores de solicitudes y con los archivos estáticos. También debe contener información sobre el código de la aplicación como, Nombre de la aplicación y el identificador de la última versión. Es como el directorio de la aplicación se crea en un block de notas con la extensión .yaml

Page 7: Google apps engine

Aplicacion de Google Apps:SAE7

Explicación del código

application: proyecto-web

version: 1runtime: pythonapi_version: 1

handlers:- url: /stylesheets static_dir: stylesheets- url: /.* script: codigo.py

En application lleva el nombre la aplicación lo demás todos los .yaml en handlers va Una lista de patrones URL y descripciones de cómo se deben procesar. También va el nombre de como se llamara el código nuestro código se llama “codigo.py”

Page 8: Google apps engine

Aplicacion de Google Apps:SAE8

Explicación del código

import osimport datetimeimport copyfrom google.appengine.ext import webappfrom google.appengine.ext.webapp.util import run_wsgi_appfrom google.appengine.ext import dbfrom google.appengine.ext import searchfrom google.appengine.ext.webapp import templatefrom google.appengine.api import mail

Tenemos que importar librerías y módulos necesarios así como también los módulos de google appengine y python

Una aplicación webapp consta de tres partes:una o varias clases RequestHandler que procesan solicitudes y generan respuestas,una instancia de WSGIApplication que dirige las solicitudes entrantes a los controladores en función de su URL,una rutina principal que ejecuta WSGIApplication con un adaptador de CGI.

Los frameworks de Webapp nos facilitan el trabajo ya que los CGI son laboriosos y lo que hace los webapp es gestionar la información para no para hacer mas fácil la programación

También importamos las plantillas de Django, y módulos como e-mail, búsqueda

Page 9: Google apps engine

Aplicacion de Google Apps:SAE9

Explicación del código

class Menu(webapp.RequestHandler): def get(self): template_values = {} path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, template_values))

Como necesitamos hacer que interactué la aplicación creamos una clase llamada menú o también se le puede llamar mainpage hace que se integre índex.html y después self.response.out.write… hace que se muestre

Como necesitamos hacer que interactué la aplicación creamos una clase llamada menú o también se le puede llamar mainpage hace que se integre índex.html y después self.response.out.write… hace que se muestre

class Índex(webapp.RequestHandler): def get(self): template_values = {} path = os.path.join(os.path.dirname(__file__), 'principal.html') self.response.out.write(template.render(path, template_values))***Esta class hace visualizar el formulario de inscripciónEsta class hace visualizar el formulario de inscripción***

Page 10: Google apps engine

Aplicacion de Google Apps:SAE10

Explicación del código

class class EstudianteEstudiante(search.SearchableModel): matricula = db.StringProperty() apellidos = db.StringProperty() nombres = db.StringProperty() fechaDeNacimiento = db.DateProperty() direccion = db.StringProperty() telefono = db.StringProperty() ciudad = db.StringProperty() nivel = db.StringProperty() fecha = db.DateTimeProperty(auto_now_add=True) correo = db.StringProperty()

Como necesitamos que se guarde la información usamos Almacenamiento de datos Los objetos de datos incluidos en el almacén de datos de App Engine se denominan entidades. Las entidades disponen de una o varias propiedades, es decir, valores con denominación de uno de varios tipos de datos compatibles, incluidos números enteros, valores de punto flotante, cadenas, datos, datos binarios, etc.

Como necesitamos que se guarde la información usamos Almacenamiento de datos Los objetos de datos incluidos en el almacén de datos de App Engine se denominan entidades. Las entidades disponen de una o varias propiedades, es decir, valores con denominación de uno de varios tipos de datos compatibles, incluidos números enteros, valores de punto flotante, cadenas, datos, datos binarios, etc.

La clase Model se proporciona a través del módulo

google.appengine.ext.db.

Page 11: Google apps engine

Aplicacion de Google Apps:SAE11

Explicación del código

classclass DatosPrincipales(webapp.RequestHandler): def post(self): template_values = { 'txtMatricula': self.request.get('txtMatricula'), 'txtApellidos': self.request.get('txtApellidos').upper(), 'txtNombres': self.request.get('txtNombres').upper(), 'txtFechaDeNacimiento': self.request.get('txtFechaDeNacimiento'), 'txtDireccion': self.request.get('txtDireccion').upper(), 'txtTelefono': self.request.get('txtTelefono'), 'txtCiudad': self.request.get('txtCiudad').upper(), 'txtCorreo': self.request.get('txtCorreo').lower(), 'cmbTipo': self.request.get('cmbTipo'), } path = os.path.join(os.path.dirname(__file__), 'datos.htmldatos.html') self.response.out.write(template.render(path, template_values))

En esta class lo que hace es recibir lo que se escribe en el formulario del HTML ejemplo si tu escribes 1451428 se guarda en txtMatricula es como si fueran los contenedores de los campos del HTML Principal para eso usamos el método POST porque se envía por la forma estándar después se mostraran el HTML datos

En esta class lo que hace es recibir lo que se escribe en el formulario del HTML ejemplo si tu escribes 1451428 se guarda en txtMatricula es como si fueran los contenedores de los campos del HTML Principal para eso usamos el método POST porque se envía por la forma estándar después se mostraran el HTML datos

Page 12: Google apps engine

Aplicacion de Google Apps:SAE12

Explicación del código

def def envia_mail(e): para="%s %s <%s>" % (e.nombres,e.apellidos,e.correo) cuerpo = """ COMO ESTAS QUERIDO ALUMNO : %s

APROBADA :

TU SOLICITUD PARA QUE ASISTAS A LA CLASE QUE SELECCIONASTES A SIDO APROBADA PUEDES ASISTIR LA FECHA PROGRAMADA

NOTA: No olvides presentarte un dia antes para que verifiques la hora y el grupo asignado

ATENTAMENTE:Cordinador de Materia """ % (e.nombres) mail.send_mail(sender="[email protected]",to=para,subject="cordinacion",body=cuerpo)

La función mail.send_mail() envía un mensaje de correo electrónico desde la aplicación. La dirección From: puede ser tanto la dirección de correo electrónico de un administrador registrado

La función mail.send_mail() envía un mensaje de correo electrónico desde la aplicación. La dirección From: puede ser tanto la dirección de correo electrónico de un administrador registrado

Se importa el modulofrom google.appengine.api import mail

Page 13: Google apps engine

Aplicacion de Google Apps:SAE13

Explicación del código

class Guardar(webapp.RequestHandler): def post(self): estudiante = Estudiante() estudiante.matricula = self.request.get('txtMatricula') estudiante.apellidos = self.request.get('txtApellidos').upper() estudiante.nombres = self.request.get('txtNombres').upper() fecha = self.request.get('txtFechaDeNacimiento') f = fecha.split('/') estudiante.fechaDeNacimiento = datetime.date(int(f[2]),int(f[1]),int(f[0])) estudiante.direccion = self.request.get('txtDireccion').upper() estudiante.telefono = self.request.get('txtTelefono') estudiante.ciudad = self.request.get('txtCiudad').upper() estudiante.nivel = self.request.get('cmbTipo') estudiante.escuela = self.request.get('txtEscuela').upper() estudiante.correo = self.request.get('txtCorreo') estudiante.put() envia_mail(estudiante) template_values = { 'txtApellidos': self.request.get('txtApellidos').upper(), 'txtNombres': self.request.get('txtNombres').upper(), 'txtCorreo': self.request.get('txtCorreo').lower(), 'tieneCorreo': (estudiante.correo != '') } path = os.path.join(os.path.dirname(__file__), 'preinscribir.html') self.response.out.write(template.render(path, template_values))

En esta clase lo que hace es guardarnos los datos usa el método post Cada consulta del almacén de datos utiliza un índice, una tabla que contiene los resultados de la consulta en el orden deseado

En esta clase lo que hace es guardarnos los datos usa el método post Cada consulta del almacén de datos utiliza un índice, una tabla que contiene los resultados de la consulta en el orden deseado

La clase Model se proporciona a través del módulo

google.appengine.ext.db.

Page 14: Google apps engine

Aplicacion de Google Apps:SAE14

Explicación del código

class Buscar(webapp.RequestHandler): def get(self): txtFullText = self.request.get('txtFullText').upper() if txtFullText <> '': estudiantes = Estudiante.all().search(txtFullText) template_values = { 'estudiantes': estudiantes } else: template_values = {} path = os.path.join(os.path.dirname(__file__), 'buscar.html') self.response.out.write(template.render(path, template_values))

En esta class lo que hace es buscar los datos que ingresamos en el formulario hace una búsqueda a estudiantes dependiendo del valor que le damos de búsqueda al campo txtfulltext que aparece en el html

En esta class lo que hace es buscar los datos que ingresamos en el formulario hace una búsqueda a estudiantes dependiendo del valor que le damos de búsqueda al campo txtfulltext que aparece en el html

Page 15: Google apps engine

Aplicacion de Google Apps:SAE15

Explicación del código

application = webapp.WSGIApplication( [('/', Menu), ('/index', Index), ('/principal', DatosPrincipales), '/buscar', Buscar), ('/preinscribir', Guardar)], debug=True)def main(): run_wsgi_app(application)

if __name__ == "__main__": main()

En nuestro objeto application debemos también indicar los nuevos controladores

En nuestro objeto application debemos también indicar los nuevos controladores

Page 16: Google apps engine

Aplicacion de Google Apps:SAE16

HTML

Page 17: Google apps engine

Aplicacion de Google Apps:SAE17

INTEGRANTES

Rafael López GutiérrezBlanca Alicia Rodríguez Rivas Alejandro Josafat Loera RamírezMarco Antonio Carcini MoraJesús Alejandro Beltrán Reyna