Firebase es una plataforma para el desarrollo de aplicaciones web y aplicaciones móviles lanzada en 2011 y adquirida por Google en 2014.
Es una plataforma ubicada en la nube, integrada con Google Cloud Platform, que usa un conjunto de herramientas para la creación y sincronización de proyectos que serán dotados de alta calidad, haciendo posible el crecimiento del número de usuarios y dando resultado también a la obtención de una mayor monetización.
Los desarrolladores tendrán una serie de ventajas al usar esta plataforma:
En nuestro ejemplo, tenemos una web dónde nuestro objetivo será enviar un email a los correos que esten almacenado en firebase. Con este objetivo se ha almacenado una serie de subastas con la siguiente estructura:
ref{
"FechaLimite": "01-01-2020",
"Acceso_subasta": ["1938web@gmail.com"],
"Activa": true,
"Categoria": "Subasta Arte",
"Descripcion": "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
}
El primer paso es installar la librerira firebase-admin. Para ello utilizaremos el siguiente comando: pip install firebase-admin
A partir de este momento se podrá acceder al contenido almacenado en esta base de datos. Esta información está almacenada en documentos Json que podremos recuperar con el método que muestro a continuación.
class Subasta(SecuredResource):
def get(self,subasta):
try
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
# Use a service account
filename = os.path.join( 'clave/clave.json')
cred = credentials.Certificate(filename)
cred = credentials.Certificate(filename)
try:
firebase_admin.initialize_app(cred)
backend_cnx = firestore.client()
except:
backend_cnx = firestore.client()
# Don't use cookies
db = backend_cnx
# Project ID is determined by the GCLOUD_PROJECT environment variable
subasta = 'WpZxR21fgLOtUOHeIt2b'
doc_ref = db.collection(u'subastas').document(subasta)
doc = doc_ref.get()
# print(u'Document data: {}'.format(doc.to_dict()))
enviar_email = SendEMail()
for i in doc.to_dict()['acceso_subasta']:
enviar_email.send_email_puja_nueva(i,doc.to_dict() )
except:
print('Error conexion')
class SendEMail():
def send_email_puja_nueva(self, para, subasta):
import smtplib
import datetime
gmail_user = '1938web@gmail.com'
gmail_password = ''
from_address = gmail_user
to_address = para
today = datetime.date.today()
today = today.strftime('%Y-%m-%d')
asunto = "Subasta: La subasta " + subasta['titulo'][0] + 'tiene una nueva puja. '
mensaje= 'La subasta:' + subasta['titulo'][0] + 'tiene una nueva puja. Actualmente, la puja más alta tiene un valor de '
+ subasta['puja_ganadora'][0]
message = """From: %s\nTo: %s\nSubject: %s\n\n%s
""" % (from_address, ", ".join(to_address), asunto, mensaje)
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(from_address, to_address, message)
server.close()
Si analizamos el código, lo que observamos en el siguiente fragmento es cómo se obtienen las credenciales json del documento clave.json.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
# Use a service account
filename = os.path.join( 'clave/clave.json')
cred = credentials.Certificate(filename)
cred = credentials.Certificate(filename)
try:
firebase_admin.initialize_app(cred)
backend_cnx = firestore.client()
except:
backend_cnx = firestore.client()
Para obtener este documento, haz click en esta dirección: https://console.cloud.google.com/projectselector/apis/api/firebasedatabase.googleapis.com/overview?hl=es Una vez obtenemos el acceso, directamente obtenemos la información de la base de datos.
db = backend_cnx
# Project ID is determined by the GCLOUD_PROJECT environment variable
subasta = 'WpZxR21fgLOtUOHeIt2b'
doc_ref = db.collection(u'subastas').document(subasta)
doc = doc_ref.get()
# print(u'Document data: {}'.format(doc.to_dict()))
enviar_email = SendEMail()
for i in doc.to_dict()['acceso_subasta']:
enviar_email.send_email_puja_nueva(i,doc.to_dict() )