17 feb 2013

[HOW TO] Paginate a Django formset

Last month I needed to paginate a Django model formset and I couldn't find the way to do it, but I found posts asking the same question without an answer, so here is my solution:

In the forms.py file: 

class MyForm(ModelForm):
    class Meta:
        model = MyModel
        fields = ('description',)
In the views.py file:

FormSet = modelformset_factory(MyModel, form=MyForm, extra=0)
if request.method == 'POST':
    formset = FormSet(request.POST, request.FILES)
    if formset.is_valid():
        formset.save()
    return HttpResponse('Formset submited!')
else:
    query = MyModel.objects.filter(condition)
    paginator = Paginator(query, 10) # Show 10 forms per page
    page = request.GET.get('page')
    try:
        objects = paginator.page(page)
    except PageNotAnInteger:
        objects = paginator.page(1)
    except EmptyPage:
        objects = paginator.page(paginator.num_pages)
    page_query = MyModel.objects.filter(id__in=[object.id for object in objects])
    formset = FormSet(queryset=page_query)
    context = {'objects': objects, 'formset': formset}
    return render_to_response('template.html', context,
                              context_instance=RequestContext(request))

You need to create the formset with the objects in the present page, otherwise, when you try to do formset = FormSet(request.POST, request.FILES) in the POST method, Django raises a MultiValueDictKeyError error.

In the template.html file:

{% extends "base.html" %}
{% block content %}

Paginated formset

{% if objects %}
{% csrf_token %} {{ formset.management_form }} {% for form in formset.forms %} {{ form.id }}

Name: {{ form.instance.name }}

{{ form.as_p }}
{% endfor %}
{% else %}

There are no objects.

{% endif %} {% endblock %}

14 feb 2013

Sprint Django en Córdoba (23 de Febrero)


El fin de semana del 23 al 24 de este mes se realizan en varias ciudades del mundo sprints de Django, como "una excusa para que la gente centre toda su atención, por un tiempo determinado, en mejorar Django."

Cito el mail del evento de la lista de PyAr:

La idea es que nos juntemos y entre todos aprendamos entre otras cosas cómo es el flujo de trabajo para implementar o proponer un feature o bugfix en Django. No hace falta experiencia previa al respecto, solo llevar ganas y tu portátil, no llevar miedos ni vergüenzas. Planeamos armar una charla introductoria cortísima para entrar en calor y nivelar aspectos básicos. ¡Los esperamos!

El evento se va a realizar en las oficinas de Machinalis, Paraguay 70 (ver mapa), el 23 de Febrero, desde las 10 a.m. hasta las 18 p.m.

Se pueden anotar desde la página del evento en Lanyrd.

Para más información sobre los sprints de Django, pueden visitar el sitio del framework.

28 nov 2012

Premios PortalProgramas 2012 al software libre

 

Hace 2 días inició el período de nominaciones de la 4º edición de los premios PortalProgramas, una iniciativa que tiene como objetivo promover, motivar y promocionar el desarrollo de software libre.

Se puede nominar cualquier proyecto de software libre, eligiendo entre las categorías:

  • Mejor software libre para móvil
  • Mejor blog de software libre
  • Software libre más popular
  • Más revolucionario
  • Mayor potencial de crecimiento
  • Esencial para la Web
  • Esencial para la tecnología
  • Esencial para la comunicación
  • Esencial para redes de comunicación
  • Esencial para empresas

El 17 de diciembre finalizan las nominaciones, y se da lugar a los usuarios para que voten. El ganador en la categoría software libre con mayor potencial recibirá una ayuda económica de 300 euros.

Toda la información necesaria se encuentra en la página de los premios.

5 nov 2012

Hackers & Developers Magazine - Número 0


Hoy se publicó la primera entrega de Hackers & Developers Magazine, una revista digital de distribución mensual sobre software libre, hacking y programación en la que participo.

La revista se encuentra bajo licencia Creative Commons, y se puede descargar de forma gratuita desde su web oficial, o también pueden leerla en línea desde Issuu.

El contenido de este mes es:
  • Y ahora ¿qué Framework PHP usaré?
  • Creando una capa de abstracción con PHP y mysqli
  • ¿Por qué Python?
  • Empezando con Google App Engine
  • The Hitchhiker Pythonits's Guide to the Galaxy
  • GNU/Linux & Servers: Tricks & Tips
  • Contribuyendo en el equipo de traducción al español de GNOME
  • ¿La crisis del software?
  • Las cuentas claras y el proceso de desarrollo concreto
  • La Web Semántica y sus Ontología
  • U!

26 oct 2012

3 eventos relacionados a videojuegos



Bueno, recibí un par de mails relacionados al desarrollo de videojuegos (nota: "un par" = 3) entre ayer y hoy, así que aprovecho para publicarlos todos en su solo post:


31 ago 2012

Thunderbird 15 rocks!


Amo Thunderbird. Lo utilizo desde hace varios años para poder administrar mis varias cuentas de correo a la vez (son más de un par), nunca me trajo ninguna clase de problema (hasta diría que nunca se me buggeó, pero no estoy segura), es rápido, es confiable, es libre, tiene una política de servicio que me encanta (la de Mozilla)... Es una de mis aplicaciones preferidas.

En fin, esta mañana hice mis actualizaciones, como siempre, y me encontré con cambios bastante sarpados en la nueva versión de Thunderbird, que ahora, entre otras cosas:

  • Agrega Ubuntu One a Thunderbird Filelink. (Filelink soluciona el problema de la limitación en el tamaño de los archivos adjuntos que tienen muchos servidores de e-mail, soportando servicios de almacenamiento online. Cuando el archivo es demasiado grande, Thunderbird permite subirlo a uno de dichos servicios y reemplaza el attachment con el link correspondiente.)
  • Añade soporte para chat usando IRC, Facebook, XMPP, Twitter, y Google Talk (y a la vez facilita la búsqueda de e-mails y conversaciones pasadas).
  • Implementa Do Not Track en Search the Web, que se añadió algunos meses atrás.

Justo cuando pensaba que Thunderbird no podía serme más útil. Todavía no puedo decidirme por cuál de estas tres nuevas features me parece más fantástica.

Así que, si utilizan otro cliente de correo, o no utilizan ninguno y sospechan que usarlo les podría facilitar alguna tarea (piensen que ahora pueden integrar e-mail, chats y Ubuntu One en una sola aplicación)... ya saben: Thunderbird ♥.

Información más completa sobre estas nuevas features acá.

22 ago 2012

PyDay Córdoba 2012


El 15 de septiembre, entre las 8 y las 19 hs., en la Facultad de Matemática, Astronomía y Física de la Universidad Nacional de Córdoba se va a realizar el PyDay Córdoba 2012, un evento organizado por PyAr, que dura un día en el cual se dan pequeños cursos y charlas relacionadas al lenguaje de programación Python.

Para asistir al PyDay lo único que necesitás es registrarte previamente vía web, la entrada es libre y gratuita.

El evento está dirigido a cualquier persona interesada en compartir información y aprender sobre el lenguaje de programación Python. Por eso, todo aquél que quiera asistir para compartir sus experiencias, iniciarse en Python (¡o en programación!) o simplemente conocer gente del rubro es bienvenido a participar.

Más información sobre el evento (cómo llegar, la lista de asistentes, etc.) se encuentra en la página del evento.

7 ago 2012

Mass Effect 3 ending and alternative theory


This post is full of massive spoilers about the game, please DO NOT continue to read unless you've finished the game. "I don't care if I get spoiled" is NOT an option! Mass Effect 1 is an amazing game, and although ME2 and ME3 are not nearly as good as it, the saga is definitely worth playing.

26 jun 2012

Cosas "lindas" que hacerle a tu Android


Empecé a usar Android hace algunos meses, con la adquisición de mi primer smartphone, un Milestone 2 (A953). La primera cosa que noté usando el OS fueron los permisos ridículos que requieren la mayoría de las aplicaciones de Google Play, y más tarde empezaron a ponerme nerviosa varias otras cosas, como el lag que solía experimentar y lo molesto que era tener un montón de aplicaciones instaladas (y ocupando espacio en el menú) que nunca en mi vida pensaba utilizar.

18 jun 2012

Rise of Nightmares (Kinect) [review]


Rise of Nightmares es el primer juego que finalizo en Kinect, y es por lejos el más divertido que jugué. No es que haya jugado muchos: también probé Kinect Adventures y Child of Eden, el primero fue entretenido durante un par de horas y al segundo no le dediqué más de 30 minutos de juego.

Si bien GameSpot le da a Rise of Nightmares 5.5 puntos sobre 10, yo me inclino más por apreciar la jugabilidad y la forma en que este título aprovecha la tecnología brindada por Kinect, muy diferentes a las de los otros juegos que probé.