SlideShare una empresa de Scribd logo
GOOGLE APPS ENGINE
Proyecto: Sistema escolar administrativo
1 Aplicacion de Google Apps:SAE
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 script
Tutoriales
Paginas
Google engine code
http://mir.aculo.us/
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 HTML
Una pagina índex que es la principal de la aplicación como bienvenida
una principal que es donde esta el formulario de inscripción
Una datos que muestra los datos para verificar que estén correctos
Una pagina de inscripción donde se envían los datos ala cuenta de correos
Una pagina de búsqueda
1 carpeta donde se encuentra el css y java script
Se muestra en el orden mencionado
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
Aplicacion de Google Apps:SAE5
EXPLICACION DE LAS FUNCIONES Y ELABORACION DEL
CODIGO Y LOS ARCHIVOS NECESARIOS
Aplicacion de Google Apps:SAE6
Creación de un Documento .YAML
application: proyecto-web
version: 1
runtime: python
api_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
Aplicacion de Google Apps:SAE7
Explicación del código
application: proyecto-web
version: 1
runtime: python
api_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”
Aplicacion de Google Apps:SAE8
Explicación del código
import os
import datetime
import copy
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.ext import search
from google.appengine.ext.webapp import template
from 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
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***
Aplicacion de Google Apps:SAE10
Explicación del código
classclass 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.
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
Aplicacion de Google Apps:SAE12
Explicación del código
defdef 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="rafaellopezgtz@gmail.com",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 modulo
from google.appengine.api import mail
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.
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
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
Aplicacion de Google Apps:SAE16
HTML
Aplicacion de Google Apps:SAE17
INTEGRANTES
Rafael López Gutiérrez
Blanca Alicia Rodríguez Rivas
Alejandro Josafat Loera Ramírez
Marco Antonio Carcini Mora
Jesús Alejandro Beltrán Reyna

Más contenido relacionado

PDF
Tutorial de cakePHP itst
PPT
Workflows en Plone
DOCX
Elementos de eclipse
PPTX
Developing for Office 2007
PDF
Taller desarrollo web
PDF
56874982 curso-de-delphi-7
PPT
Programacion de aplicaciones Web con ASP.NET
PPTX
Trabajar con bases de datos desde ASP.NET
Tutorial de cakePHP itst
Workflows en Plone
Elementos de eclipse
Developing for Office 2007
Taller desarrollo web
56874982 curso-de-delphi-7
Programacion de aplicaciones Web con ASP.NET
Trabajar con bases de datos desde ASP.NET

Destacado (20)

PPTX
SQL Server 2014 Mejoras del DB Engine
PPT
Formacion SEO: Posicionamiento en buscadores
PDF
Cómo generar ingresos con tu sitio Web (AdSense)
PDF
Search Engine Optimization
PPT
Del SEO a las Redes Sociales
ODP
Ferran calpe b4_lag
ODP
Presentacion Blender
PPTX
Them's the Rules - Using a Rules Engine to Wrangle Complexity
PPTX
KRITAL AUDIO ENGINE
PDF
MARKETING 2.0 Y REDES SOCIALES EN LA EMPRESA
PDF
Ad Vice: Ten Tips for Fledgling Digital Marketers
PPTX
anna university automobile engineering unit 1
PPTX
Blueprint to Search Engine Success
PDF
AUTOMOBILE BASICS
PDF
11 Things to Look For in a Hotel Booking Engine Provider
PDF
Hardware and Software Architectures for the CELL BROADBAND ENGINE processor
PPTX
Chapter 1 engine components and classification
PDF
Cifras de incidentes de compañías aéreas durante el año 2012
PPT
Six stroke-engine-presenation
PPT
The Endocrine System - Chapter 13
SQL Server 2014 Mejoras del DB Engine
Formacion SEO: Posicionamiento en buscadores
Cómo generar ingresos con tu sitio Web (AdSense)
Search Engine Optimization
Del SEO a las Redes Sociales
Ferran calpe b4_lag
Presentacion Blender
Them's the Rules - Using a Rules Engine to Wrangle Complexity
KRITAL AUDIO ENGINE
MARKETING 2.0 Y REDES SOCIALES EN LA EMPRESA
Ad Vice: Ten Tips for Fledgling Digital Marketers
anna university automobile engineering unit 1
Blueprint to Search Engine Success
AUTOMOBILE BASICS
11 Things to Look For in a Hotel Booking Engine Provider
Hardware and Software Architectures for the CELL BROADBAND ENGINE processor
Chapter 1 engine components and classification
Cifras de incidentes de compañías aéreas durante el año 2012
Six stroke-engine-presenation
The Endocrine System - Chapter 13
Publicidad

Similar a Google apps engine (20)

ODP
Taller de introducción a Google App Engine
PDF
Mi Primera Aplicacion en Google App Engine
ODP
Python Gae django
PDF
Presentacion web2py
PPTX
Curso Cloud Computing, Parte 2: Google App Engine
PPT
Google App Engine1
PDF
Cursos verano explora
PPTX
Proyect Evenge. Event manager
PDF
PPTX
Project Scope by Google Apps
PPT
Foro de Innovación Tecnologica, Universidad de Galileo - dokshor - Ciudad de ...
PPT
Encuentro Linux 2011
PPTX
Herramienta tecnologica
PDF
Mi primera app con GAE y GWT
DOC
Guia para estudiantes del Posgrado en desarrollo de aplicaciones web.
PDF
Mi primera App con GAE
PDF
Programacion web 0
PDF
Neo Humano - GTUG Labs (12-12-2009)
KEY
App Engine
KEY
Introducción a Flask
Taller de introducción a Google App Engine
Mi Primera Aplicacion en Google App Engine
Python Gae django
Presentacion web2py
Curso Cloud Computing, Parte 2: Google App Engine
Google App Engine1
Cursos verano explora
Proyect Evenge. Event manager
Project Scope by Google Apps
Foro de Innovación Tecnologica, Universidad de Galileo - dokshor - Ciudad de ...
Encuentro Linux 2011
Herramienta tecnologica
Mi primera app con GAE y GWT
Guia para estudiantes del Posgrado en desarrollo de aplicaciones web.
Mi primera App con GAE
Programacion web 0
Neo Humano - GTUG Labs (12-12-2009)
App Engine
Introducción a Flask
Publicidad

Más de Blanca Rodríguez (20)

PPTX
Proyecto final
PPTX
Adaptativos
PPTX
Interfaz Gráfica
PPTX
PPTX
PPTX
PPTX
DOCX
PPT
Palíndromo.ppt
PPT
Palíndromo.ppt
PPTX
PPTX
PPTX
PPTX
PPT
Código intermedio
PPTX
Levenshtein (2)
PPTX
Levenshtein (2)
PPTX
LENGUAJES DE PROGRAMACIÓN
PPTX
LENGUAJES DE PROGRAMACIÓN
Proyecto final
Adaptativos
Interfaz Gráfica
Palíndromo.ppt
Palíndromo.ppt
Código intermedio
Levenshtein (2)
Levenshtein (2)
LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN

Último (20)

DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
DOCX
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
capacitación de aire acondicionado Bgh r 410
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
El uso de las TIC en la vida cotidiana..
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Taller tecnológico Michelle lobo Velasquez
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PPT
Protocolos de seguridad y mecanismos encriptación
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Mecanismos-de-Propagacion de ondas electromagneticas
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
Propuesta BKP servidores con Acronis1.pptx
capacitación de aire acondicionado Bgh r 410
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
Curso de generación de energía mediante sistemas solares
El uso de las TIC en la vida cotidiana..
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Taller tecnológico Michelle lobo Velasquez
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Protocolos de seguridad y mecanismos encriptación
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD

Google apps engine

  • 1. GOOGLE APPS ENGINE Proyecto: Sistema escolar administrativo 1 Aplicacion de Google Apps:SAE
  • 2. 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 script Tutoriales Paginas Google engine code http://mir.aculo.us/
  • 3. 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 HTML Una pagina índex que es la principal de la aplicación como bienvenida una principal que es donde esta el formulario de inscripción Una datos que muestra los datos para verificar que estén correctos Una pagina de inscripción donde se envían los datos ala cuenta de correos Una pagina de búsqueda 1 carpeta donde se encuentra el css y java script Se muestra en el orden mencionado
  • 4. 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
  • 5. Aplicacion de Google Apps:SAE5 EXPLICACION DE LAS FUNCIONES Y ELABORACION DEL CODIGO Y LOS ARCHIVOS NECESARIOS
  • 6. Aplicacion de Google Apps:SAE6 Creación de un Documento .YAML application: proyecto-web version: 1 runtime: python api_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
  • 7. Aplicacion de Google Apps:SAE7 Explicación del código application: proyecto-web version: 1 runtime: python api_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”
  • 8. Aplicacion de Google Apps:SAE8 Explicación del código import os import datetime import copy from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext import db from google.appengine.ext import search from google.appengine.ext.webapp import template from 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
  • 9. 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***
  • 10. Aplicacion de Google Apps:SAE10 Explicación del código classclass 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.
  • 11. 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
  • 12. Aplicacion de Google Apps:SAE12 Explicación del código defdef 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="rafaellopezgtz@gmail.com",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 modulo from google.appengine.api import mail
  • 13. 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.
  • 14. 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
  • 15. 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
  • 16. Aplicacion de Google Apps:SAE16 HTML
  • 17. Aplicacion de Google Apps:SAE17 INTEGRANTES Rafael López Gutiérrez Blanca Alicia Rodríguez Rivas Alejandro Josafat Loera Ramírez Marco Antonio Carcini Mora Jesús Alejandro Beltrán Reyna