Aplicaciones Híbridas con Ionic 2 Framework

Hoy vamos a conocer un poco acerca de un framework de desarrollo que ando probando (pero que tiene algo de tiempo ya). Ionic Framework es una herramienta gratuita para el desarrollo de aplicaciones híbridas basadas en HTML5 y JS, el cual esta construido bajo Saas y optimizado al máximo con AngularJS. Cuenta con una documentación muy completa (docs) y con una comunidad amplia, así que recursos y personas dispuestas a ayudarte no te van a faltar.

El proceso de instalación es muy sencillo, debes tener instalado, si no lo tienes o no sabes hacerlo, te dejo una guía npm una vez instalado simplemente ejecutas

npm install -g cordova ionic

Ya con eso tienes instalado ionic 2, vamos a crear un primer proyecto en blanco (se pueden usar templates de proyectos creados), para crearlo usamos el comando

ionic start ionictestblog blank

ionic es el comando que ejecutas para decirle al CLI que debe hacer, en este caso start que es para iniciar un proyecto ionictestblog no es mas que el nombre del proyecto, en mi caso le coloque así por que es lo que haremos un blog, que consuma vía API los posts y que permita enviar posts usando la misma API, para el backend de este blog usaremos mi framework favorito Django y para crear el API, usaremos Django-Rest-Framework, que también lo explicare en posts siguientes. y por ultimo el comando blank le indica al CLI que debe ejecutar un proyecto en blanco, es decir, con las configuraciones básicas del framework.

Una vez creado el proyecto podemos comenzar con la magia de la programación, yo voy a comenzar a hacer una serie de posts sobre una app que ando creando y que usare como ejemplo para facilitarles el camino en la creación de las suyas. Para compilar el proyecto, dependiendo de la plataforma en la que estés puedes usar uno u otro comando es de destacar que puedes compilar para IOS y Android

Android
ionic platform add android
ionic build android
ionic run android

he creado el repositorio en github para que tengas todo el codigo de la app que realizaremos en este mini howTo https://github.com/rootweiller/ionictestblog

Happy Hacking 🙂

DetailView Django

Para entender un poco lo que es la Class Based View (CBV) podemos decir que:

A view is a callable which takes a request and returns a response. This can be more than just a function, and Django provides an example of some classes which can be used as views. These allow you to structure your views and reuse code by harnessing inheritance and mixins. There are also some generic views for simple tasks which we’ll get to later, but you may want to design your own structure of reusable views which suits your use case

Ahora bien, el DetailView de forma sencilla te la explico así:


from django.views.generic import DetailView
from .models import ModeloImportado
class DetailModeloimportado(DetailView):
template_name = 'detailview.html'
model = ModeloImportado
context_object_name = 'postdetail'
def get_context_data(self, **kwargs):
context = super(DetailModeloimportado, self).get_context_data(**kwargs)
context['postall'] = self.model.objects.all().order_by('-p_datecreated')
return context

 

Respetar las identaciones del código, a mi me fallan al momento de escribir este post.

Con esto simplemente en el views.py le diremos a Django que nos muestre de manera detallada cada uno de los objectos del modelo, ahora haremos unos cambios en el urls.py


url(r'^post/(?P[0-9]+)/$', DetailModeloimportado.as_view(), name='postall'),

Ahora en el template simplemente debemos colocarla el para que desde el enlace podamos navegar a través de los objectos del modelo.



Y en el detailview.html simplemente llamamos de la siguiente forma:


{{ postdetail.p_title }}

Como puedes ver en el detailview.html llamamos {{ postdetail.p_title }} el postdetail lo definimos en context_object_name = ‘postdetail’ en el views.py

DJANGO + LDAP

Saludos, muchos quieren conectar su aplicación hecha con Django a un servidor LDAP usando el backend de Django es bastante simple, comencemos con un ejemplo sencillo, luego vamos ampliando los conocimientos y haciendo muchas más cosas con él.

Es necesario, previamente haber instalado python-ldap, en entornos basados en Debian/Ubuntu para poder instalarlo se debe ejecutar lo siguiente:
apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev

Luego hay que instalar django-auth-ldap, para ello desde nuestro entorno virtual ejecutamos
pip install django-auth-ldap

En primer lugar modificamos nuestro settings.py y agregamos lo siguiente.
import ldap

AUTHENTICATION_BACKENDS = (
‘django_auth_ldap.backend.LDAPBackend’,
‘django.contrib.auth.backends.ModelBackend’,
)

AUTH_LDAP_SERVER_URI = ‘ldap://ldapserver’

AUTH_LDAP_BIND_DN = “cn=Users,dc=domain,dc=com”
AUTH_LDAP_BIND_PASSWORD = “password”
AUTH_LDAP_USER_DN_TEMPLATE = “cn=%(user)s,ou=People,dc=domain,dc=com”

AUTH_LDAP_CONNECTION_OPTIONS = {
ldap.OPT_REFERRALS: 0
}

Explicamos un poco las lineas:

AUTH_LDAP_SERVER_URI: Es la ruta al servidor LDAP, si esta en el local, colocar (localhost)
AUTH_LDAP_BIND_DN: Es el rootdn del servidor LDAP
AUTH_LDAP_BIND_PASSWORD: Lógicamente es el password del usuario “Manager” o root del LDAP, o uno que tenga permisos para revisar todo el roster.
AUTH_LDAP_USER_DN_TEMPLATE: Es la ruta donde está el roster del LDAP, nótese, que con cn=%(user)s" estamos buscando todos los usuarios dentro de ou=People

Con está configuración puedes hacer el login de tu aplicación contra el servidor LDAP, si deseas mostrar en el template datos referentes a los usuarios simplemente debemos ejecutar en el settings.py lo siguiente:
AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "email": "mail", "username": "sn"}

Con esto estamos mostrando que la variable first_name del auth_user va a ser equivalente a givenName del LDAP, email será mail y username será el sn.

Todo va a depender de como este organizado tu directorio en el servidor LDAP.

Espero que les ayude, como siempre agradezco sus comentarios y/o sugerencias.