Name: Admin

Web Site: http://www.asinox.net

Bio: A Sabanalamarino guy With Computers and System's Studies, 3D Art and Animation, Web Developer, Media, Teacher of Tech's, self-taught person, Web Standards, CSS +, CodeIgniter PHP Framework, Wordpress Theme Developer, Dreamweaver, Python, Django Framework, Fireworks expert,and more skills about Internet and Media.

Posts by Admin:

    Django Registration y perfil de usuario

    August 15th, 2010

    Django registration ha cambiado totalmente la forma en la que podemos registrar un usuario y a la vez extender el modelo User de Django con campos extras o mejor dicho agregar mas campos para tener un perfil de usuario mas definido.

    La nueva version de django registration ahora utiliza Django Signals para agregar mas campos o mejor dicho extenders el modelo User, y aqui un pequeño tutorial de como extender nuestro modelo User via Django Registration.

    Django a la hora de registrar un usuario permite que el email del usuario sera opcional, o mejor dicho no es unico, algo que realmente no se por que, si todos sabemos que en este tiempo un email es como un id para un usuario, deberia ser unico, sin permitile cambios, asi que lo primero que haremos es un extender nuestro formulario de registro donde especifiquemos como unico el email del usuario, django registration viene con una funcion (formulario) para esto, el unico problema es que no es el formulario por defecto que se utliza al momento que hacemos uso de el registro de usuario via Django Registration, hay que implementarlo.

    Preparando formulario de registro (forms.py):

    En mi proyecto real, tengo una aplicacion llamada “accounts”, y accounts tiene los siguientes archivos:

    • forms.py
    • models.py
    • views.py
    • urls.py
    • __init__.py

    Debemos suponer que la instalacion de Django Registration ya se ha hecho.

    Luego de nuestra instalacion, lo primero que debemos hacer es crear nuestro formulario para registrar nuestros usuarios:

    #forms.py

    from django import forms
    from registration.forms import RegistrationFormUniqueEmail #importamos RegistrationFormUniqueEmail desde django registration
    from aplicacion.accounts.models import Perfil
    class RegistroPerfilForm(RegistrationFormUniqueEmail): #extendemos desde RegistrationFormUniqueEmail (pasandolo como parametro)
        nombre = forms.CharField(required=True)
        apellidos = forms.CharField(required=True)
    

    Esto es todo con relacion a nuestro formulario con nuevos campos, en nuestro formulario RegistroPerfilForm tenemos dos nuevos campos, que realmente existen en el modelo User de Django, pero por mala suerte Django Registration o mejor dicho, Django no permite crear un usuario donde podamos especificar el nombre y apellidos sin extender el modelo.

    Preparando el template (registration_form.html):

    Django registration necesita un template para nuestro formulario de registro, este template debe estar en:

    templates/registration/registration_form.html

    Mas en la documentacion de Django-Registration.

    #registration_form.html

    {% extends 'base.html' %}
    {% block titulo %} Registro de usuario {% endblock %}
    {% block contenido%}
    

    Registro de usuario

    {{ form.as_p }}
    {% endblock %}

    Preparando URL:

    En nuestro urls.py (en mi caso lo estoy haciendo en el urls.py que esta en mi app “accounts”), solo debemos decirle a Django Registration que formulario usara para el registro.

    #urls.py

    from django.conf.urls.defaults import *
    from django.views.generic.simple import direct_to_template
    from django.contrib.auth import views as auth_views
    from registration.views import activate
    from registration.views import register
    from aplicacion.accounts.forms import RegistroPerfilForm
    import regBackend #importamos regBackend el cual utilizaremos mas tarde con los signals
    urlpatterns = patterns('',
                           url(r'^registro/$',
                               register,{'backend': 'registration.backends.default.DefaultBackend','form_class' : RegistroPerfilForm},
                               name='registration_register'),
    )
    

    Y desde nuestra aplicacion accounts importamos el formulario RegistroPerfilForm, y se lo pasamos como referencia en el url ‘form_class’: RegistroPerfilForm.
    Facil no?
    Ya sin duda podemos registrar usuarios, pero lo que no podemos hasta el momento es enviar la data nueva con los datos extendidos como son nombre y apellidos, para esta operacion tenemos que hacer uso de los Signals de Django.

    Usando Signals

    Si quieren saber mas sobre los signals en django, leer la documentacion oficial.

    Vamos a crear un nuevo archivo en nuestra aplicacion “accounts”, regBackend.py, y es aqui el contenido de regBackend.py (el nombre puede ser cualquiera, no exactamente regBackend.py)
    #regBackend.py

    from forms import RegistroPerfilForm
    from django.contrib.auth.models import User
    from registration.signals import user_registered
    def datosPrefil(sender, user,request, **kwargs):
        form = RegistroPerfilForm(request.POST)
        usuario = User.objects.get(username__exact =form.data['username'])
        usuario.first_name = form.data['nombre']
        usuario.last_name = form.data['apellidos']
        usuario.save()
        return usuario
    user_registered.connect(datosPerfil)
    

    Con esto deberiamos estar registrando usuarios con campos extras.

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    No Comments "

    Count() filtro con annotate() en django

    August 14th, 2010

    Muchas veces queremos contar registros, ya sean visitas, usuarios registrados, usuarios de x sexo, etc., django provee funciones para estas tareas, aggregación annotate(), el cual aplica un filtro al modelo donde queremos tener la informacion, indicamos el campo con el cual se va a proceder a contar ( Count() ), o mucho mas alla, talvez un Avg, Max, Min, Count.

    #views.py
    from django.db.models import Count
    from hay_vacantes.accounts.models import Perfil
    #contador de ....
    def contador():
        cantidad= Perfil.objects.values('tipo').annotate(Count('tipo')).filter(tipo=1)
        return render_to_response('cantidad.html',{'cantidad':cantidad},
                                  context_instance=RequestContext(request))
    

    y en nuestro template html

    #template html
    {% for c in cantidad %}
       Cantidad de tipos {{ c.tipo__count }}
    {% endfor %}
    

    Mas informacion en la pagina oficial de Django

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    No Comments "

    Excluyendo campos en django admin, dependiendo del nivel de usuario

    August 12th, 2010

    Unas de las cosas que hace mas interesante a Django, es su panel de adminitracion, el cual posee un nivel de permisos muy poderoso para los diferentes usuarios que pueden tener acceso al panel administrativo de un website. Ciertas veces, hay campos en una aplicacion, los cuales no queremos que un usuario con un nivel menor a Super Admin, pueda tocarlos, digamos como un campo “publicar”, y es aqui la forma de excluir campos segun el nivel de usuario, y es posible tambien hacerlo para x usuario.

    #admin.py

    from django.contrib import admin
    from myproject.editoriales.models import Editorial
    from django.contrib.auth.models import User
    class EditorialAdmin(admin.ModelAdmin):
        prepopulated_fields = {'slug': ['titulo']}
        .....
        ....
    def add_view(self, request, form_url='', extra_context=None):
          if not request.user.is_superuser:
                self.exclude=('activa','enable_comments', )
          return super(EditorialAdmin, self).add_view(request, form_url='', extra_context=None)
    def change_view(self, request, form_url='', extra_context=None):
          if not request.user.is_superuser:
                self.exclude=('activa','enable_comments', )
          return super(EditorialAdmin, self).add_view(request, form_url='', extra_context=None)
    VN:F [1.9.3_1094]
    Rating: 10.0/10 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: +1 (from 1 vote)

    No Comments "

    Cinco cosas que deberiamos saber para desarrollar aplicaciones para Iphone

    August 4th, 2010

    Cinco cosas que deberiamos saber antes de empezar a desarrollar aplicaciones para Iphone:

    1. Necesitamos un Mac OS X ( mac mini o mac book o mac pro, la de tu preferencia), en caso de estar utilizando windows o linux una maquina virtual corriendo Mac OS X
    2. Para publicar tu aplicacion en apple necesitamos tener una licencia para desarrollo ($99 dolares si no es empresarial)
    3. El SDK es de libre descarga, puedes utilizarlo sin problemas, y probar tu trabajo en el Iphone simulator sin ningun costo adicional, en caso de que quieras probar tu aplicacion en un Iphone/IpodTouch/Ipad, debes tener una licencia de desarrollador (o pasar tu aparato por el iphone jailbreak)
    4. Para probar tu aplicacion, realmente es recomendable tener un Iphone/IpodTouch/Ipad, es recomendable comprar uno de estos si realmente vamos a dedicarnos a programar para estos lindos aparatos y es que el Iphone Simulator no es suficiente para todas las pruebas, como el manejo de memoria, etc.
    5. El lenguaje de programacion es Objective – C y es muy similar a C/C++, aun para los desarrolladores Java no es tan dificil entender el nuevo lenguaje, esta conversion puede suceder muy rapido.
    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: +1 (from 1 vote)

    No Comments "

    Consultas para el WSA Mobile

    July 9th, 2010

    Este viernes 9 de julio 2010, estaremos iniciando las consultas de las mejores prácticas de contenido móvil en Republica Dominicana. La cita es en Alianza ONG, de 9am a 5pm. Las consultas se realizarán para escoger los 8 nominados de República Dominicana para el World Summit Awards Mobile Content 2010.

    ¿Qué es el World Summit Award Mobile Content?

    Es el Premio de la Cumbre de la Sociedad de la Información es una iniciativa global para seleccionar y promover el mejor contenido y creatividad en sitios Web publicados en Internet en todo el mundo. Involucra a representantes de numerosos países en cada continente y tiene por objetivo la búsqueda de la reducción de la brecha digital.

    El premio pone énfasis en la diversidad e identidad cultural, la creación de contenido informativo variado y la digitalización de material educativo, científico y cultural.

    Es una iniciativa de la Academia Europea de Medio Digitales ( European Academy of Digital Media – EADiM) y se lleva a cabo en marco y con la cooperación del evento de la Cumbre Mundial de la Sociedad de la Información organizado por las Naciones Unidas (United Nations’ World Summit on the Information Society – WSIS – 2003-2009).

    Todas las actividades son conducidas y coordinadas por la oficina central en el International Center for New Media (ICNM) en Ginebra.

    ¿Cómo funciona el premio del World Summit Award?

    El premio está abierto a nivel mundial para productores de contenido en Internet de todos los países miembros de las Naciones Unidas. Incluye 8 categorías que reflejan la importancia de inclusión digital de los países en desarrollo a la Sociedad de la Información para sectores tales como: salud, política, ciencia, educación, negocios y entretenimiento.

    El contenido a premiar, por lo tanto, reconoce los principales temas sociales de la vida diaria en el que las personas tienen, no solo, el derecho y la oportunidad de comunicarse, sino también, el acceso a utilizar las mejores aplicaciones que les permitan incrementar su conocimiento y lograr el desarrollo de sus respectivas naciones.

    Las categorías consideradas son:

    • e-Educación: para contenido relacionado a escuelas, universidades y colegios que apoyen la creación de comunidades virtuales en esa área.
    • e-Cultura: para contenido que preserve y presente los activos culturas de una manera clara e informativa con el uso de tecnología de información y comunicación.
    • e-Ciencias: para contenido que promueva la colaboración global e ciencias y que provea medidas de promoción y demostración de los procesos científicos para hacerlos más accesibles a la ciudadanía.
    • e-Gobierno: para contenido que permita “empoderar” a los ciudadanos y el servicio público al fortalecer su interacción con el uso de tecnología de información y comunicación.
    • e-Salud: para contenido relacionado al uso de tecnología de información y comunicación e Internet para el manejo de temas de salud y sistemas relacionados al mismo (conservación del medio ambiente).
    • e-Negocios: para contenido que soporta y optimiza los procesos de negocio al proveer medio sistemas seguros y confiables en Internet.
    • e-Entretenimiento: para contenido que provea productos y servicios digitalizados en el área de entretenimiento y con énfasis en la diversidad cultural y el multi-linguismo.
    • e-Inclusión: para contenido que suporte la integración de tecnología de información y comunicación en países en desarrollo y que les permita incorporarse a la Sociedad de la Información reduciendo la brecha digital.

    Aristas Relacionadas:

    Fuente : http://www.arturolopezvalerio.com/2010/07/consultas-para-el-wsa-mobile.html

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    1 Comment "

    …entrar en negocio paga ganarse un cliente en Santo Domingo

    June 5th, 2010

    El gran problema de cotizar un website (cualqueir trabajo) en Santo Domingo es que los clientes siempre quieren que se “entre en negocio”, y eso significa rebajarle al precio original y sin importan que tanto tu rebajes, en Santo Domingo el cliente siempre quiere mas rebaja.

    Pero ese cliente se olvida de que tu tienes que hacer un trabajo, tener alguna ganancia con dicho trabajo, hacerlo de calidad, entre otras cosas., ellos olvidan que el precio de un trabajo lo debe poner la persona quien lo hace, y no ellos, los clientes siempre quieren ponerle precio a “tu” trabajo.

    Al final cuando logras aceptar el trabajo con el precio mas minimo, donde tu no estas ganando nada, ello entonces quieren miles de cosas que no estaban planificadas, quieren un trabajo de calidad, quieren que el trabajo este a tiempo o antes de tiempo, si te pasas un dia o varios, es la de “cain”, pues quien menos paga es quien mas “jode”.

    Yo he decidido para bien o para mal, no darle rebaja a nadie, recuerdo que una cliente me dijo: que no sabia negociar, y es que para los clientes saber negociar es que tu le digas que “SI” a sus pedidos de rebajas, y que aceptes que ellos le pongan precio a tu trabajo…y si, entonces, yo no se negociar, pues ya, jamas, estoy por dejarme caer por debajo, (en Santo Domingo esas personas que hacen trabajo por debajo de los precios son los que tienen el mercado dañado y a los cliente acostumbrados a rebajar siempre).

    VN:F [1.9.3_1094]
    Rating: 10.0/10 (2 votes cast)
    VN:F [1.9.3_1094]
    Rating: +2 (from 2 votes)

    8 Comments "

    Instalando Django por primera vez

    June 4th, 2010

    Antes de empezar con nuestra instalacion de Django, tenemos que tener los siguientes paquetes descargados:

    1. Django Framework
    2. Python 2.5 / 2.6 (Django aun no trabaja con Python 3.0), o [lo que recomiendo] activepython ya que trae algunas librerias extras e inmediatamente el interprete de python estara disponible en todo el sistema.
    3. WAMP (en mi caso, para MySQL), se podria suponer que usted sabe instalar WAMP

    Instalando Python 2.5 (o ActivePython)

    Suponiendo que ya hemos descargado (Python 2.6.5 Windows installer) desde el website de python (python.org), el siguiente paso es abrir el ejecutable y seleccionar un directorio donde instalar python, algunas personas lo instalan en el C:, yo prefiero instalarlo en mi ambiente de desarrollo (C:/wamp/bin/Python2.x.x)

    Instalado Python, ya podemos descargar (si es que aun no esta descargado) Django.

    Ahora que tenemos descargado Django, tenemos que probar si realmente Python esta funcionando como debe ser:

    1. Tenemos que abrir el CMD (DOS)
    2. Estando en DOS llamamos el prompt de python: python [enter], y si todo va bien deberiamos ver:

    Y ahora si podemos instalar Django Framework:

    1. Descomprimir el archivo Django-1.2.1.tar.gz (a la fecha de hoy es la version mas actual y estable), Use WinRAR en windows para descomprimir
    2. Ir dentro del directorio Django-1.2.1 / Django-1.2.1
    3. Estando dentro deberiamos ver los siguientes directorios y archivos:
    4. Y para finalizar, si aun estamos dentro del interprete de Python Presionamos “Control + Z” y damos Enter.
    5. Ahora nuestro siguiente paso es ir dentro del direcctorio que descomprimimos (Django-1.2.0.tar.gz) via DOS y escribir lo siguiente: python setup.py install
    6. Instalacion finalizada :)

    Nuestro siguiente paso será nuestro primer projecto con Django, eso, el proximo viernes, pero si la desesperacion llama: Aqui el tutorial oficinal de como inicializarse con Django

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    14 Comments "

    Soporte HTML5 y CSS3 para Dreamweaver CS5

    May 29th, 2010

    Adobe acaba de anunciar que ha dado soporte de HTML5 y CSS3 para Dreamweaver CS5, este soporte es adquirido via una extension, algunos detalles sobre el nuevo soporte de HTML5 y CSS según Adobe:

    La extesion provee un soporte inicial para HTML5 y CSS3 en Adobe Dreamweaver CS5, y ayuda a la facil creacion de paginas HTML5 y estilos basados en CSS3. Esta tambien provee una actualizacion y Webkit, asi como una mejora para el Design View y el Live View Rendering.

    Mientras se finaliza en su totalidad HTML5 y CSS3, la extension provee soporte para los features actualmente implementados.

    Algunas de las mejoras de Dreamweaver CS5 con esta extension:

    1. Introduce el panel de multi pantallas en modo Preview, permitiendo el Live View Display en 3 diferentes pantallas (tamaños, sizes), con Media Query Support (Window->MultiScreen Preview)
    2. Tambien agrega la captura de codigo para libreria de tags para HTML5 (code hinting) , atributos y propiedades.
    3. Actualiza la captura de codigo (code hinting) para nuevos atributos y valores en los actuales HTML tags.
    4. Agrega captura de codigo para CS3 en las siguiente especificaciones: 2D/3D Transformations; Animations; Background and Border; Basic User Interface; Line Layout; Marquee; Media Queries; MultiColumn; Ruby; Text; and Transitions.
    5. Agrega Live View Support para el tag de HTML5 <video></video> (este requiere tener instalado QuickTime)
    6. Mejora la renderizacion para CSS3 en Live View.
    7. Agrega templates de HTML5 al momento de crear un documento nuevo.
    8. Agrega mejor renderizacion para nuevos tags en Design View.

    Descargar HTML5 Pack

    Nota: a mi no me gustan los acentos.

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    2 Comments "

    Google Wave ya esta abierto

    May 19th, 2010

    Gran noticia, ya Google Wave , esta abierto para todo el mundo, a disfrutarlo
    Google Wave – http://wave.google.com

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    No Comments "

    IE6 criptonita pura

    May 15th, 2010

    VN:F [1.9.3_1094]
    Rating: 0.0/10 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

    No Comments "