<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AxiaCore Blog &#187; Codigo Fuente</title>
	<atom:link href="http://axiacore.com/blog/tag/codigo-fuente/feed/" rel="self" type="application/rss+xml" />
	<link>http://axiacore.com/blog</link>
	<description>Implementamos tecnologia y es asi como lo hacemos</description>
	<lastBuildDate>Fri, 29 Jan 2010 17:22:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Paginacion en Django estilo Digg</title>
		<link>http://axiacore.com/blog/2010/01/paginacion-en-django-estilo-digg/</link>
		<comments>http://axiacore.com/blog/2010/01/paginacion-en-django-estilo-digg/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 17:20:57 +0000</pubDate>
		<dc:creator>Camilo Nova</dc:creator>
				<category><![CDATA[AxiaCore]]></category>
		<category><![CDATA[Codigo Fuente]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://axiacore.com/blog/?p=800</guid>
		<description><![CDATA[La Paginación en django es excelente, permite una flexibilidad importante para solucionar muchos problemas que se presentan al paginar resultados, por ejemplo el problema del cacheo, que se presenta al realizar una consulta que pide todos los datos sabiendo que solo vamos a mostrar unos pocos.
Gracias a la excelente documentación podemos encontrar toda la información [...]]]></description>
			<content:encoded><![CDATA[<p>La Paginación en django es excelente, permite una flexibilidad importante para solucionar muchos problemas que se presentan al paginar resultados, por ejemplo el problema del cacheo, que se presenta al realizar una consulta que pide todos los datos sabiendo que solo vamos a mostrar unos pocos.</p>
<p>Gracias a la excelente documentación podemos encontrar toda la información aquí: <a href="http://docs.djangoproject.com/en/1.1/topics/pagination/#topics-pagination">http://docs.djangoproject.com/en/1.1/topics/pagination/#topics-pagination</a></p>
<p>Sin embargo, cuando se trabajan volúmenes grandes de información, digamos mas de 50 paginas, se hace dispendioso pasar entre paginas hasta llegar a la que buscamos, por eso es muy útil tener una paginación al estilo Digg que muestra algunas paginas adicionales y no solo el enlace a la anterior y la siguiente.</p>
<p>Tomando como base este excelente trabajo: <a href="http://krisje8.com/blog/2009/jul/02/django-pagination-template-tag-digg-style/ ">http://krisje8.com/blog/2009/jul/02/django-pagination-template-tag-digg-style/ </a>realice algunas modificaciones para que muestre &#8216;&#8230;&#8217; entre las paginas iniciales y la pagina actual, para darle una mejor ubicación al usuario sobre donde se encuentra.</p>
<p>Tenemos el siguiente <a href="http://docs.djangoproject.com/en/dev/howto/custom-template-tags/">template_tag</a>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#! /usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf8 -*-</span>
<span style="color: #808080; font-style: italic;"># render_paginator.py</span>
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">template</span> <span style="color: #ff7700;font-weight:bold;">import</span> Library
&nbsp;
register = Library<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> render_paginator<span style="color: black;">&#40;</span>context, first_last_amount=<span style="color: #ff4500;">2</span>, before_after_amount=<span style="color: #ff4500;">4</span><span style="color: black;">&#41;</span>:
    page_obj = context<span style="color: black;">&#91;</span><span style="color: #483d8b;">'page_obj'</span><span style="color: black;">&#93;</span>
    paginator = context<span style="color: black;">&#91;</span><span style="color: #483d8b;">'paginator'</span><span style="color: black;">&#93;</span>
    page_numbers = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Pages before current page</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> page_obj.<span style="color: black;">number</span> <span style="color: #66cc66;">&gt;</span> first_last_amount + before_after_amount:
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, first_last_amount + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
            page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
&nbsp;
        page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>page_obj.<span style="color: black;">number</span> - before_after_amount, page_obj.<span style="color: black;">number</span><span style="color: black;">&#41;</span>:
            page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, page_obj.<span style="color: black;">number</span><span style="color: black;">&#41;</span>:
            page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Current page and pages after current page</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> page_obj.<span style="color: black;">number</span> + first_last_amount + before_after_amount <span style="color: #66cc66;">&lt;</span> paginator.<span style="color: black;">num_pages</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>page_obj.<span style="color: black;">number</span>, page_obj.<span style="color: black;">number</span> + before_after_amount + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
            page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
&nbsp;
        page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>paginator.<span style="color: black;">num_pages</span> - first_last_amount + <span style="color: #ff4500;">1</span>, paginator.<span style="color: black;">num_pages</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
            page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>page_obj.<span style="color: black;">number</span>, paginator.<span style="color: black;">num_pages</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
            page_numbers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#123;</span>
        <span style="color: #483d8b;">'paginator'</span>: paginator,
        <span style="color: #483d8b;">'page_obj'</span>: page_obj,
        <span style="color: #483d8b;">'page_numbers'</span>: page_numbers
    <span style="color: black;">&#125;</span>
&nbsp;
register.<span style="color: black;">inclusion_tag</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'layout/pagination.html'</span>, takes_context=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>render_paginator<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Con la siguiente plantilla:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">{% if page_obj.has_previous %}
  &lt;a href=&quot;?page={{ page_obj.previous_page_number }}&quot;&gt;Previous&lt;/a&gt;
{% endif %}
{% for page in page_numbers %}
  {% if page %}
    {% ifequal page page_obj.number %}
      &lt;b&gt;{{ page }}&lt;/b&gt;
    {% else %}
      &lt;a href=&quot;?page={{ page }}&quot;&gt;{{ page }}&lt;/a&gt;
    {% endifequal %}
  {% else %}
    ...
  {% endif %}
{% endfor %}
{% if page_obj.has_next %}
  &lt;a href=&quot;?page={{ page_obj.next_page_number }}&quot;&gt;Next&lt;/a&gt;
{% endif %}</pre></td></tr></table></div>

<p>Para usarlo se coloca el siguiente codigo en cualquiera de las plantillas que queramos paginar:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">    {% if is_paginated %}
      {% load render_paginator %}
      {% render_paginator 2 3 %}
    {% endif %}</pre></td></tr></table></div>

<p>Lo que genera un código como:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">Previous  1  2  ... 5  6  7  8  9  10  11  ... 25  26  Next</pre></td></tr></table></div>

<p>Lo mejor de todo es que no necesita ningún componente adicional ni interfiere con la paginación por defecto que traen las vistas genéricas en django.</p>
]]></content:encoded>
			<wfw:commentRss>http://axiacore.com/blog/2010/01/paginacion-en-django-estilo-digg/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cambiar el QuerySet de un ForeingKey de un modelo en Django</title>
		<link>http://axiacore.com/blog/2009/01/cambiar-el-queryset-de-un-foreingkey-de-un-modelo-en-django/</link>
		<comments>http://axiacore.com/blog/2009/01/cambiar-el-queryset-de-un-foreingkey-de-un-modelo-en-django/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:07:05 +0000</pubDate>
		<dc:creator>Camilo Nova</dc:creator>
				<category><![CDATA[AxiaCore]]></category>
		<category><![CDATA[Codigo Fuente]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://axiacore.com/blog/?p=628</guid>
		<description><![CDATA[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&#40;forms.Form&#41;:
    def __init__&#40;self, *args, **kwargs&#41;:
     [...]]]></description>
			<content:encoded><![CDATA[<p>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:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">class</span> MyModelForm<span style="color: black;">&#40;</span>forms.<span style="color: black;">Form</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>MyModelForm, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">fields</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;myFKField&quot;</span><span style="color: black;">&#93;</span>.<span style="color: black;">queryset</span> = MyModel.<span style="color: black;">objects</span>.<span style="color: #008000;">all</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://axiacore.com/blog/2009/01/cambiar-el-queryset-de-un-foreingkey-de-un-modelo-en-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adicionar o Sustraer Dias en Python</title>
		<link>http://axiacore.com/blog/2009/01/adicionar-o-sustraer-dias-en-python/</link>
		<comments>http://axiacore.com/blog/2009/01/adicionar-o-sustraer-dias-en-python/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 20:22:02 +0000</pubDate>
		<dc:creator>Camilo Nova</dc:creator>
				<category><![CDATA[AxiaCore]]></category>
		<category><![CDATA[Codigo Fuente]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://axiacore.com/blog/?p=624</guid>
		<description><![CDATA[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&#40;&#41;+timedelta&#40;days=dias&#41;
#Sustraer
d=date.today&#40;&#41;-timedelta&#40;days=dias&#41;

La operación respeta los días al cambiar de mes y funciona perfecto.
]]></description>
			<content:encoded><![CDATA[<p>Para agregar o sustraer días a una fecha determinada en python lo mejor es hacerlo así:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">datetime</span> <span style="color: #ff7700;font-weight:bold;">import</span> date, timedelta
<span style="color: #808080; font-style: italic;">#Agregar</span>
d=date.<span style="color: black;">today</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>+timedelta<span style="color: black;">&#40;</span>days=dias<span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#Sustraer</span>
d=date.<span style="color: black;">today</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>-timedelta<span style="color: black;">&#40;</span>days=dias<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>La operación respeta los días al cambiar de mes y funciona perfecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://axiacore.com/blog/2009/01/adicionar-o-sustraer-dias-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desarrollo Agil de Software</title>
		<link>http://axiacore.com/blog/2008/12/desarrollo-agil-de-software/</link>
		<comments>http://axiacore.com/blog/2008/12/desarrollo-agil-de-software/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 13:53:21 +0000</pubDate>
		<dc:creator>Camilo Nova</dc:creator>
				<category><![CDATA[AxiaCore]]></category>
		<category><![CDATA[Codigo Fuente]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://axiacore.com/blog/?p=551</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://axiacore.com/blog/2008/12/desarrollo-agil-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir numeros y decimales a letras Python</title>
		<link>http://axiacore.com/blog/2008/10/convertir-numeros-y-decimales-a-letras-python/</link>
		<comments>http://axiacore.com/blog/2008/10/convertir-numeros-y-decimales-a-letras-python/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 17:43:07 +0000</pubDate>
		<dc:creator>Camilo Nova</dc:creator>
				<category><![CDATA[AxiaCore]]></category>
		<category><![CDATA[Codigo Fuente]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://axiacore.com/blog/?p=470</guid>
		<description><![CDATA[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 = &#40;
   '',
   'UN ',
   'DOS ',
   'TRES ',
   'CUATRO ',
   'CINCO ',
   'SEIS ',
   [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de un post anterior sobre <a href="http://axiacore.com/blog/2008/09/convertir-numeros-a-letras-python/">convertir numeros a letras en python</a> me ha llegado una modificacion de Ulfang que les presento a continuacion:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">UNIDADES = <span style="color: black;">&#40;</span>
   <span style="color: #483d8b;">''</span>,
   <span style="color: #483d8b;">'UN '</span>,
   <span style="color: #483d8b;">'DOS '</span>,
   <span style="color: #483d8b;">'TRES '</span>,
   <span style="color: #483d8b;">'CUATRO '</span>,
   <span style="color: #483d8b;">'CINCO '</span>,
   <span style="color: #483d8b;">'SEIS '</span>,
   <span style="color: #483d8b;">'SIETE '</span>,
   <span style="color: #483d8b;">'OCHO '</span>,
   <span style="color: #483d8b;">'NUEVE '</span>,
   <span style="color: #483d8b;">'DIEZ '</span>,
   <span style="color: #483d8b;">'ONCE '</span>,
   <span style="color: #483d8b;">'DOCE '</span>,
   <span style="color: #483d8b;">'TRECE '</span>,
   <span style="color: #483d8b;">'CATORCE '</span>,
   <span style="color: #483d8b;">'QUINCE '</span>,
   <span style="color: #483d8b;">'DIECISEIS '</span>,
   <span style="color: #483d8b;">'DIECISIETE '</span>,
   <span style="color: #483d8b;">'DIECIOCHO '</span>,
   <span style="color: #483d8b;">'DIECINUEVE '</span>,
   <span style="color: #483d8b;">'VEINTE '</span>
<span style="color: black;">&#41;</span>
DECENAS = <span style="color: black;">&#40;</span>
   <span style="color: #483d8b;">'VENTI'</span>,
   <span style="color: #483d8b;">'TREINTA '</span>,
   <span style="color: #483d8b;">'CUARENTA '</span>,
   <span style="color: #483d8b;">'CINCUENTA '</span>,
   <span style="color: #483d8b;">'SESENTA '</span>,
   <span style="color: #483d8b;">'SETENTA '</span>,
   <span style="color: #483d8b;">'OCHENTA '</span>,
   <span style="color: #483d8b;">'NOVENTA '</span>,
   <span style="color: #483d8b;">'CIEN '</span>
<span style="color: black;">&#41;</span>
CENTENAS = <span style="color: black;">&#40;</span>
   <span style="color: #483d8b;">'CIENTO '</span>,
   <span style="color: #483d8b;">'DOSCIENTOS '</span>,
   <span style="color: #483d8b;">'TRESCIENTOS '</span>,
   <span style="color: #483d8b;">'CUATROCIENTOS '</span>,
   <span style="color: #483d8b;">'QUINIENTOS '</span>,
   <span style="color: #483d8b;">'SEISCIENTOS '</span>,
   <span style="color: #483d8b;">'SETECIENTOS '</span>,
   <span style="color: #483d8b;">'OCHOCIENTOS '</span>,
   <span style="color: #483d8b;">'NOVECIENTOS '</span>
<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> toWord<span style="color: black;">&#40;</span>number_in, pesos=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>:
&nbsp;
   <span style="color: #483d8b;">&quot;&quot;&quot;
   Converts a number into string representation
   &quot;&quot;&quot;</span>
   converted = <span style="color: #483d8b;">''</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">type</span><span style="color: black;">&#40;</span>number_in<span style="color: black;">&#41;</span>  <span style="color: #483d8b;">'str'</span>:
       number = <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>number_in<span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">else</span>:
       number = number_in
&nbsp;
   number = number.<span style="color: black;">replace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;,&quot;</span>,<span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">try</span>:
       number_int, number_dec = number.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;.&quot;</span><span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ValueError</span>:
       number_int = number
       number_dec = <span style="color: #483d8b;">&quot;&quot;</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span> <span style="color: #66cc66;">&amp;</span>lt<span style="color: #66cc66;">;</span> __convertStr<span style="color: black;">&#40;</span>number_int<span style="color: black;">&#41;</span>  <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
           converted += <span style="color: #483d8b;">'%sMILLONES '</span> <span style="color: #66cc66;">%</span> __convertNumber<span style="color: black;">&#40;</span>millones<span style="color: black;">&#41;</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>miles<span style="color: black;">&#41;</span>:
       <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>miles == <span style="color: #483d8b;">'001'</span><span style="color: black;">&#41;</span>:
           converted += <span style="color: #483d8b;">'MIL '</span>
       <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>miles<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&amp;</span>gt<span style="color: #66cc66;">;</span> <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
           converted += <span style="color: #483d8b;">'%sMIL '</span> <span style="color: #66cc66;">%</span> __convertNumber<span style="color: black;">&#40;</span>miles<span style="color: black;">&#41;</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>cientos<span style="color: black;">&#41;</span>:
       <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>cientos == <span style="color: #483d8b;">'001'</span><span style="color: black;">&#41;</span>:
           converted += <span style="color: #483d8b;">'UN'</span>
       <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>cientos<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&amp;</span>gt<span style="color: #66cc66;">;</span> <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
           converted += <span style="color: #483d8b;">'%s'</span> <span style="color: #66cc66;">%</span> __convertNumber<span style="color: black;">&#40;</span>cientos<span style="color: black;">&#41;</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">if</span> pesos:
       <span style="color: #ff7700;font-weight:bold;">if</span> number_dec == <span style="color: #483d8b;">&quot;&quot;</span>:
           number_dec = <span style="color: #483d8b;">&quot;00&quot;</span>
       converted += <span style="color: #483d8b;">'PESOS '</span> + number_dec + <span style="color: #483d8b;">&quot;/100 M.N.&quot;</span>
   <span style="color: #ff7700;font-weight:bold;">else</span>:
       <span style="color: #ff7700;font-weight:bold;">if</span> number_dec  <span style="color: #483d8b;">&quot;&quot;</span>:
           converted +=  <span style="color: #483d8b;">'PUNTO '</span> + toWord<span style="color: black;">&#40;</span>number_dec,<span style="color: #008000;">False</span><span style="color: black;">&#41;</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">return</span> converted.<span style="color: black;">title</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> __convertNumber<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
   <span style="color: #483d8b;">&quot;&quot;&quot;
   Max length must be 3 digits
   &quot;&quot;&quot;</span>
   output = <span style="color: #483d8b;">''</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>n == <span style="color: #483d8b;">'100'</span><span style="color: black;">&#41;</span>:
       output = <span style="color: #483d8b;">&quot;CIEN &quot;</span>
   <span style="color: #ff7700;font-weight:bold;">elif</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">!</span>= <span style="color: #483d8b;">'0'</span><span style="color: black;">&#41;</span>:
       output = CENTENAS<span style="color: black;">&#91;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
&nbsp;
   k = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>k  <span style="color: #ff4500;">30</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">&amp;</span>amp<span style="color: #66cc66;">;</span> <span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">!</span>= <span style="color: #483d8b;">'0'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
           output += <span style="color: #483d8b;">'%sY %s'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>DECENAS<span style="color: black;">&#91;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>, UNIDADES<span style="color: black;">&#91;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
       <span style="color: #ff7700;font-weight:bold;">else</span>:
           output += <span style="color: #483d8b;">'%s%s'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>DECENAS<span style="color: black;">&#91;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>, UNIDADES<span style="color: black;">&#91;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">return</span> output
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> __convertStr<span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>:
   <span style="color: #483d8b;">&quot;&quot;&quot;Convert string to either int or float.&quot;&quot;&quot;</span>
   <span style="color: #ff7700;font-weight:bold;">try</span>:
       ret = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ValueError</span>:
       <span style="color: #808080; font-style: italic;">#Try float.</span>
       ret = <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">return</span> ret</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://axiacore.com/blog/2008/10/convertir-numeros-y-decimales-a-letras-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
