Implementamos tecnologia y es asi como lo hacemos

Cambiar el QuerySet de un ForeingKey de un modelo en Django

Enero 21, 2009 - 12:07 pm - Posted by Camilo Nova

Es posible declarar tipos ForeignKey en un modelo de datos de Django, pero puede que necesitemos filtrar los valores de esta relación, para efectuar tal cambio necesitamos recurrir al Form que muestra ese modelo y modificar el método __init__ de la siguiente manera:

1
2
3
4
class MyModelForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        self.fields["myFKField"].queryset = MyModel.objects.all()

Esto permite cambiar los datos que son mostrados por el campo en el Form por unos filtrados que nosotros queramos, existe tambien la posibilidad de trabajar con limit_choices_to de ForeignKey pero esta solución me funciono de inmediato.

Etiquetas:, , | Comente »

Adicionar o Sustraer Dias en Python

Enero 20, 2009 - 3:22 pm - Posted by Camilo Nova

Para agregar o sustraer días a una fecha determinada en python lo mejor es hacerlo así:

1
2
3
4
5
from datetime import date, timedelta
#Agregar
d=date.today()+timedelta(days=dias)
#Sustraer
d=date.today()-timedelta(days=dias)

La operación respeta los días al cambiar de mes y funciona perfecto.

Etiquetas:, | Comente »

Desarrollo Agil de Software

Diciembre 2, 2008 - 8:53 am - Posted by Camilo Nova

Llego al final aquella epoca dorada en la cual uno destinaba 6 meses para desarrollar un proyecto de software, con muchos recursos y tareas repetitivas, junto con un elevado costo.

Hoy en dia los frameworks son mas agiles y permiten una produccion mucho mayor de funcionalidad con menos codigo fuente, esta tendencia provoca que los desarrollos tomen mucho menos tiempo y recursos, lo que implica a su vez que los costos sean menores y que esta industria cada vez sea mas agil.

Yo sigo sorprendido con django, es muy poco el codigo que se debe escribir, basicamente la tarea es de arquitectura y no de codificación, por ahora estoy desarrollando una aplicacion muy sencilla y me ha tomado una tercera parte de lo que me hubiera costado realizarlo en java, creo que he acertado en la tendencia de lenguajes de programacion y esta vez python sigue ganando la batalla.

Etiquetas:, , , , , | Comente »

Convertir numeros y decimales a letras Python

Octubre 16, 2008 - 12:43 pm - Posted by Camilo Nova

Luego de un post anterior sobre convertir numeros a letras en python me ha llegado una modificacion de Ulfang que les presento a continuacion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
UNIDADES = (
   '',
   'UN ',
   'DOS ',
   'TRES ',
   'CUATRO ',
   'CINCO ',
   'SEIS ',
   'SIETE ',
   'OCHO ',
   'NUEVE ',
   'DIEZ ',
   'ONCE ',
   'DOCE ',
   'TRECE ',
   'CATORCE ',
   'QUINCE ',
   'DIECISEIS ',
   'DIECISIETE ',
   'DIECIOCHO ',
   'DIECINUEVE ',
   'VEINTE '
)
DECENAS = (
   'VENTI',
   'TREINTA ',
   'CUARENTA ',
   'CINCUENTA ',
   'SESENTA ',
   'SETENTA ',
   'OCHENTA ',
   'NOVENTA ',
   'CIEN '
)
CENTENAS = (
   'CIENTO ',
   'DOSCIENTOS ',
   'TRESCIENTOS ',
   'CUATROCIENTOS ',
   'QUINIENTOS ',
   'SEISCIENTOS ',
   'SETECIENTOS ',
   'OCHOCIENTOS ',
   'NOVECIENTOS '
)
 
def toWord(number_in, pesos=True):
 
   """
   Converts a number into string representation
   """
   converted = ''
 
   if type(number_in)  'str':
       number = str(number_in)
   else:
       number = number_in
 
   number = number.replace(",","")
   try:
       number_int, number_dec = number.split(".")
   except ValueError:
       number_int = number
       number_dec = ""
 
   if not (0 < __convertStr(number_int)  0):
           converted += '%sMILLONES ' % __convertNumber(millones)
 
   if(miles):
       if(miles == '001'):
           converted += 'MIL '
       elif(int(miles) > 0):
           converted += '%sMIL ' % __convertNumber(miles)
 
   if(cientos):
       if(cientos == '001'):
           converted += 'UN'
       elif(int(cientos) > 0):
           converted += '%s' % __convertNumber(cientos)
 
   if pesos:
       if number_dec == "":
           number_dec = "00"
       converted += 'PESOS ' + number_dec + "/100 M.N."
   else:
       if number_dec  "":
           converted +=  'PUNTO ' + toWord(number_dec,False)
 
   return converted.title()
 
def __convertNumber(n):
   """
   Max length must be 3 digits
   """
   output = ''
 
   if(n == '100'):
       output = "CIEN "
   elif(n[0] != '0'):
       output = CENTENAS[int(n[0])-1]
 
   k = int(n[1:])
   if(k  30) & (n[2] != '0')):
           output += '%sY %s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
       else:
           output += '%s%s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
 
   return output
 
def __convertStr(s):
   """Convert string to either int or float."""
   try:
       ret = int(s)
   except ValueError:
       #Try float.
       ret = float(s)
   return ret

Etiquetas:, | Comente »

Convertir Numeros a Letras Python

Septiembre 11, 2008 - 3:54 pm - Posted by Camilo Nova

Ahora como pueden ver en mi evidente cambio a Python he reescrito el código que convierte de números a letras en esto (70 lineas de codigo menos que en Java y mas facil de entender):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
UNIDADES = (
    '',
    'UN ',
    'DOS ',
    'TRES ',
    'CUATRO ',
    'CINCO ',
    'SEIS ',
    'SIETE ',
    'OCHO ',
    'NUEVE ',
    'DIEZ ',
    'ONCE ',
    'DOCE ',
    'TRECE ',
    'CATORCE ',
    'QUINCE ',
    'DIECISEIS ',
    'DIECISIETE ',
    'DIECIOCHO ',
    'DIECINUEVE ',
    'VEINTE '
)
DECENAS = (
    'VENTI',
    'TREINTA ',
    'CUARENTA ',
    'CINCUENTA ',
    'SESENTA ',
    'SETENTA ',
    'OCHENTA ',
    'NOVENTA ',
    'CIEN '
)
CENTENAS = (
    'CIENTO ',
    'DOSCIENTOS ',
    'TRESCIENTOS ',
    'CUATROCIENTOS ',
    'QUINIENTOS ',
    'SEISCIENTOS ',
    'SETECIENTOS ',
    'OCHOCIENTOS ',
    'NOVECIENTOS '
)
 
def toWord(number):
 
    """
    Converts a number into string representation
    """
    converted = ''
 
    if not (0 < number < 999999999):
 
        return 'No es posible convertir el numero a letras'
 
    number_str = str(number).zfill(9)
    millones = number_str[:3]
    miles = number_str[3:6]
    cientos = number_str[6:]
 
    if(millones):
        if(millones == '001'):
            converted += 'UN MILLON '
        elif(int(millones) > 0):
            converted += '%sMILLONES ' % __convertNumber(millones)
 
    if(miles):
        if(miles == '001'):
            converted += 'MIL '
        elif(int(miles) > 0):
            converted += '%sMIL ' % __convertNumber(miles)
 
    if(cientos):
        if(cientos == '001'):
            converted += 'UN '
        elif(int(cientos) > 0):
            converted += '%s ' % __convertNumber(cientos)
 
    converted += 'PESOS'
 
    return converted.title()
 
def __convertNumber(n):
    """
    Max length must be 3 digits
    """
    output = ''
 
    if(n == '100'):
        output = "CIEN "
    elif(n[0] != '0'):
        output = CENTENAS[int(n[0])-1]
 
    k = int(n[1:])
    if(k <= 20):
        output += UNIDADES[k]
    else:
        if((k > 30) & (n[2] != '0')):
            output += '%sY %s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
        else:
            output += '%s%s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
 
    return output

Etiquetas:, | 15 Comentarios »

Exportar Datos Django

Septiembre 2, 2008 - 4:52 pm - Posted by Camilo Nova

Existe una forma muy facil de exportar e importar datos en django, es muy util para cuando se necesita informacion de pruebas que tenga que ser insertada en la aplicacion al momento de hacer un ‘deploy’

Para exportar los datos de tu aplicacion simplemente haces:

python manage.py dumpdata –indent=4 –settings=archivo_settings > salida.json

Para importar los datos basta con

python manage.py loaddata salida.json

Me ha parecido excelente que django tenga esta posibilidad, cada dia me gusta mas…

Enlaces:

[1] http://docs.djangoproject.com/en/dev/howto/initial-data/

Etiquetas:, | Comente »

Desarrolladores Django

Agosto 28, 2008 - 5:38 pm - Posted by Camilo Nova

He encontrado un sitio [1] bastante interesante donde se muestran las personas que trabajamos con Django y Python, el sitio esta desarrollado, por supuesto, en Django, y me ha parecido muy bien logrado.

Enlaces:

[1] http://djangopeople.net/axiacore/

Etiquetas:, , | 2 Comentarios »

Entornos de Desarrollo

Julio 25, 2008 - 10:11 am - Posted by Camilo Nova

Mientras el tiempo que dure programando en JAVA, Eclipse me pareció la mejor pieza de software jamas construida, daba una especie de placer programar con este IDE, la facilidad de encontrar el autocompletado del código, la compilación al instante y muchas otras cosas que cualquier programador espera de un entorno de desarrollo venían con eclipse.

Ahora que me oriento al desarrollo con Django [1], veo que hay algunos que son nostálgicos y quieren utilizar eclipse, pero con Python. Para estas personas, hay un proyecto bastante interesante en [2] el cual junta en un solo paquete eclipse y todas las herramientas que permiten trabajar con Django, es un ahorro en tiempo de configuracion y puesta a punto bastante importante, y pues creo que hace felices a muchas personas que no quieren dejar de utilizar Eclipse.

Yo en lo personal prefiero utilizar la shell de Unix y el editor Scribes [3], alguno tiene una configuracion que recomendar?

Enlaces:

[1] http://www.djangoproject.com

[2] http://www.easyeclipse.org/site/distributions/python.html

[3] http://scribes.sourceforge.net/

Etiquetas:, , , | Comente »

Pasando de J2EE a Django

Julio 1, 2008 - 9:46 am - Posted by Camilo Nova

Encontré esta presentación y me parece muy buena para mostrar porque pasar de J2EE a Django.


Slides from J2EE to Django Presentations at Cambrdge Python Group from PK Shiu on Vimeo.

Etiquetas:, | Comente »

RequestContext en Django

Junio 24, 2008 - 5:35 pm - Posted by Camilo Nova

Hace varias semanas tenia un problema porque las variables de sesión, en el caso de Django, la variable que contenía toda la información del usuario no la podía ver desde una pagina distinta a la que usaba las vistas predeterminadas de Django.

El problema radicaba en que no estaba usando el RequestContext que explicitamente es recomendado usar cuando uno lee “bien” la documentación, hoy gracias a Diego Sanabria en Campus Party, me doy cuenta de mi error.

En la vista estaba devolviendo lo siguiente:

return render_to_response(’front_page.html’, { “links” : links })

Y la solución es devolver esto:

return render_to_response(’front_page.html’, { “links” : links }, context_instance=RequestContext(request) )

Que usa el RequestContext correctamente y mantiene el valor de las variables, como la de usuario a lo largo de las vistas.

Etiquetas:, , , | Comente »

AxiaCore Blog

Publicidad

Traductor

Feed RSS

Etiquetas

Nosotros Leemos

Comentarios Recientes:

  • ullike: HP Compaq 6720s & Jaunty: seguí las instrucciones pero me da un ruido insoportable. cambié todos opciones...
  • carolina: quiero saber mashacerca de ustedes
  • Guillermo Arboleda Cano: Me gustaría obtener más información de los avances del proyecto Epymes, resultado de la...
  • Achuapa: Yo tengo el mismo problema el audio se desfasa por lo menos 8 segundos y el procesador se va a tope :(
  • Camilo Nova: Claro, con gusto, espero poder ayudar mas

Enlaces Recientes:

Archivo

Admin