Re: [Python-es] migraciones con multiples bases de datos en django

2022-07-06 Por tema Pau Cervera
Sí, yo al final entendí también que des de django consideran esta la forma
correcta. Para mi tiene sentido. En cualquier caso, me lo dejé documentado
para mi yo futuro y por si le interesara a alguien :P
https://self.paudirac.com/blog/legacy-databases-in-django/

¡Gracias!,

-
Pau

Python..., what else?


On Mon, May 9, 2022 at 1:38 PM Juan Ignacio  wrote:

> Tengo el mismo  problema y, por lo que he podido ver, no hay forma facil
> de resolverlo. Yo por el momento tengo una receta en un Makefile para
> migrar, donde especifico para cada app, la base de datos a usar. Los
> routers no se usan, como tu dices, en estos casos. Ademas, por lo que vi en
> su dia, los de Django insisten en que esta es la manera correcta y no
> tienen planes de cambiarlo.
>
> On Fri, 6 May 2022 at 12:14, Pau Cervera  wrote:
>
>> Buenas,
>>
>> Tengo una duda sobre cómo maneja Django las migraciones con múltiples
>> bases de datos.En mi caso tengo dos DATABASES en el  settings
>>
>> DATABASES = {
>> 'default': {
>> 'ENGINE': 'django.db.backends.mysql',
>> 'NAME': 'producto',
>> },
>> 'legacy': {
>> 'ENGINE': 'django.db.backends.mysql',
>> 'NAME': 'legacy-schema',
>> }
>> }
>>
>> la DB default está manejada por django desde siempre y la legacy tiene
>> modelos generados vía inspecdb en una django application que también se
>> llama legacy. En un principio la BD legacy era de sólo lectura, con lo que
>> tener los modelos con managed = False (cómo los genera inspectdb) ya estaba
>> bien.
>>
>> Con este sistema, y aunque el managed = False, django genera entradas en
>> la tabla django_migrations para legacy (pués está instalada) aunque no
>> genera tablas (el comando sqlmigrate sale con SQL vacío), cosa que está
>> bien porqué están en otra BD.
>>
>> El problema que tengo ahora es que quiero empezar a gestionar los modelos
>> de legacy des de Django. Esto supone cambiar los managed = False por
>> managed = True y a partir de ahí cambiar los modelos. Por ejemplo, añadir
>> una columna a una tabla.
>>
>> A priori esto genera una migración de cambio de metadatos de managed =
>> False a managed = True y después una migración normal que añade la columna
>> al schema.
>>
>> Para gestionar a qué BD pertenecen las tablas tengo un custom database
>> router cómo este:
>>
>> class LegacyRouter:
>> route_app_labels = {'legacy',}
>> legacy_database = 'legacy'
>>
>> def db_for_read(self, model, **hints):
>> if model._meta.app_label in self.route_app_labels:
>> return self.legacy_database
>> return None
>>
>> def db_for_write(self, model, **hints):
>> if model._meta.app_label in self.route_app_labels:
>> return self.legacy_database
>> return None
>>
>> def allow_relation(self, obj1, obj2, **hints):
>> return None
>>
>> def allow_migrate(self, db, app_label, model_name=None, **hints):
>> is_legacy_db = db == self.legacy_database
>> is_legacy_app = app_label in self.route_app_labels
>> if is_legacy_db:
>> return is_legacy_app
>> else:
>> return not is_legacy_app
>>
>> De esta forma, si ejecuto las migraciones con
>>
>> python manage.py migrate
>>
>> se migran las tablas que no son de la BD legacy y no son de la aplicación
>> legacy. Pero además se incluyen migraciones (con SQL vacío) de los modelos
>> de legacy.
>>
>> De la misma forma, si migro los modelos de legacy con
>>
>> python manage.py migrate --database=legacy
>>
>> se migran los modelos de legacy, pero además, se añaden entradas para
>> todas las migraciones de las otras aplicaciones instaladas (sin SQL, con lo
>> que no se crean/modifican tablas que no tocan).
>>
>> En ambos casos, python manage.py showmigrations y python manage.py
>> showmigrations --database=legacy muestran todas las aplicaciones.
>>
>> Creo que esto es comportamiento esperado, pero ¿hay forma de que no
>> salgan los modelos en las bases de datos que no los necesitan? ¿Estoy
>> haciendo algo mal?
>>
>> ¡Muchas gracias!
>>
>> -
>> Pau
>>
>> Python..., what else?
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>
>
> --
> Juan Ignacio Rodríguez de León
> Móvil (Spain): 605 890514 (Add +34 for International calls)
> Mobile (UK):  07898648972 (Replace first 0 with +44 for International
> calls)
> E-Mail: euriba...@gmail.com
> http://www.pythoncanarias.es/
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


[Python-es] migraciones con multiples bases de datos en django

2022-05-06 Por tema Pau Cervera
Buenas,

Tengo una duda sobre cómo maneja Django las migraciones con múltiples
bases de datos.En mi caso tengo dos DATABASES en el  settings

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'producto',
},
'legacy': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'legacy-schema',
}
}

la DB default está manejada por django desde siempre y la legacy tiene
modelos generados vía inspecdb en una django application que también se
llama legacy. En un principio la BD legacy era de sólo lectura, con lo que
tener los modelos con managed = False (cómo los genera inspectdb) ya estaba
bien.

Con este sistema, y aunque el managed = False, django genera entradas en la
tabla django_migrations para legacy (pués está instalada) aunque no genera
tablas (el comando sqlmigrate sale con SQL vacío), cosa que está bien
porqué están en otra BD.

El problema que tengo ahora es que quiero empezar a gestionar los modelos
de legacy des de Django. Esto supone cambiar los managed = False por
managed = True y a partir de ahí cambiar los modelos. Por ejemplo, añadir
una columna a una tabla.

A priori esto genera una migración de cambio de metadatos de managed =
False a managed = True y después una migración normal que añade la columna
al schema.

Para gestionar a qué BD pertenecen las tablas tengo un custom database
router cómo este:

class LegacyRouter:
route_app_labels = {'legacy',}
legacy_database = 'legacy'

def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return self.legacy_database
return None

def db_for_write(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return self.legacy_database
return None

def allow_relation(self, obj1, obj2, **hints):
return None

def allow_migrate(self, db, app_label, model_name=None, **hints):
is_legacy_db = db == self.legacy_database
is_legacy_app = app_label in self.route_app_labels
if is_legacy_db:
return is_legacy_app
else:
return not is_legacy_app

De esta forma, si ejecuto las migraciones con

python manage.py migrate

se migran las tablas que no son de la BD legacy y no son de la aplicación
legacy. Pero además se incluyen migraciones (con SQL vacío) de los modelos
de legacy.

De la misma forma, si migro los modelos de legacy con

python manage.py migrate --database=legacy

se migran los modelos de legacy, pero además, se añaden entradas para todas
las migraciones de las otras aplicaciones instaladas (sin SQL, con lo que
no se crean/modifican tablas que no tocan).

En ambos casos, python manage.py showmigrations y python manage.py
showmigrations --database=legacy muestran todas las aplicaciones.

Creo que esto es comportamiento esperado, pero ¿hay forma de que no salgan
los modelos en las bases de datos que no los necesitan? ¿Estoy haciendo
algo mal?

¡Muchas gracias!

-
Pau

Python..., what else?
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


[Python-es] librería para integrar django con ADFS y Azure AD

2020-03-02 Por tema Pau Cervera
Buenas,

¿Alguna recomendación para integrar via oauth2 con ADFS o Azure AD una
aplicación hecha en django?

He encontrado [django-auth-adfs] y el más genérico [python-social-auth].

[django-auth-adffs] https://django-auth-adfs.readthedocs.io/en/latest/
[python-social-auth] https://python-social-auth.readthedocs.io/en/latest/

Saludos,

-
Pau

Python..., what else?
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Programa para diseñar la base de datos

2019-05-03 Por tema Pau Cervera
Buenas,

Django adopta una aproximación en la que se define la capa de persistencia
a partir de classes de python y luego el mismo framework genera, a partir
de estas definiciones de classes, el schema de la base de datos . Django
incluye también tooling para aplicarlo.

Es más, el tooling está diseñado para que el modelo vaya evolucionando y a
partir de él se puedan ir generando las nuevas tablas o se modifiquen las
que ya existen e incluye soporte para añadir datos en caso necesario.
Django llama a estos flujos migrations [1].

El flujo general es diseñar modelo de objetos -> crear migración -> aplicar
migración.

Los paquetes de terceros de django y los de aplicaciones de soporte (p.ej.:
django.contrib.auth) usan también este sistema, así que si vas a usar
django, lo suyo es aprender cómo funciona su propio ORM.

El tutorial de django [2] explica esto paso a paso.

[1] https://docs.djangoproject.com/en/2.2/topics/migrations/
[2] https://docs.djangoproject.com/en/2.2/intro/tutorial01/

Saludos,

-
Pau

Python..., what else?


On Fri, May 3, 2019 at 4:58 AM Gonzalo V  wrote:

> Hola amigos.
> Alguien conoce algún programa para diseñar la base de datos antes de
> comenzar un proyecto en django - python?
>
> Saludos,
> Gonzalo
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] Pregunta sobre error de sintaxis.

2012-01-03 Por tema Pau Cervera
A mi tampoco me gusta constantes enteras. Entiendo que una constante es
un valor (un objeto) que no varía. Un literal es la representación de un
objeto como expresión. En el caso de un entero quizá no tenga tanta
importancía, pero hay literales que no son constantes.

-
Pau

Python..., what else?


2012/1/3 Chema Cortes pych...@gmail.com

 El día 3 de enero de 2012 10:38, Juan Luis Cano Rodríguez
 juanlu...@gmail.com escribió:
  No me disgusta. ¡Gracias!

 Creo que hay una Ley de Murphy que dice que todas las constantes de
 una expresión deben ser consideradas variables.

 Yo lo dejaría como Literal entero puesto que son conceptos
 diferentes. Por ejemplo la constante '-1' no es un literal entero.
 Está  compuesto del literal entero '1' al que se le aplica el operador
 unario  '-'.




 --
 Hyperreals *R: http://ch3m4.org/blog
 Quarks, bits y otras criaturas infinitesimales
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Cómo aprender desde cero

2011-10-24 Por tema Pau Cervera
Si estás empezando, pero mirando a 3, lo que vigilaría es con el print[1],
usalo como función, no como sentencia.

[1]
http://stackoverflow.com/questions/1053849/why-print-statement-is-not-pythonic

-
Pau

Python..., what else?


2011/10/24 Chema Cortes pych...@gmail.com

 El día 24 de octubre de 2011 10:48, Carlos Agulló Calvo
 cm.agu...@gmail.com escribió:
  Me ha surgido una duda nueva,
  con esto de que ya existe pyhon 3 ¿empiezo con él o empiezo con python 2?

 La idea general es que todo lo que aprendas con una versión te va a
 servir para más adelante. Empieza con python2.7 y ya te irás dando
 cuenta de qué cosas evitar cuando veas la etiqueta deprecated en la
 documentación, generalmente porque hay un nuevo modo más simple. Si
 empiezas con python3, encontrarás mucho código antiguo que puede que
 no entiendas el motivo de porqué se complicó tanto el programador.


 --
 Hyperreals *R: http://ch3m4.org/blog
 Quarks, bits y otras criaturas infinitesimales
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] High-Resolution Mandelbrot in Obfuscated Python

2011-10-19 Por tema Pau Cervera
Genial. :D

-
Pau

Python..., what else?


2011/10/5 Oswaldo lis...@soft-com.es

 Un ejemplo de ofuscación, ascii art, y ademas funciona 

 http://preshing.com/20110926/**high-resolution-mandelbrot-in-**
 obfuscated-pythonhttp://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python
 


 --
 Oswaldo
 __**_
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/**mailman/listinfo/python-eshttp://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.**com/http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Sitio Preguntas y Respuestas para Python en español

2011-02-08 Por tema Pau Cervera
A mi también me funciona. Sólo tube que editar mi perfil y pedirle que me
mandara los emails cuando alguien posteara una pregunta. No sé si funcionará
todo, pero si quieres que probemos algo, nos lo pides y a ver qué podemos
hacer.

Gracias y saludos!,

-
Pau

Python..., what else?
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Sitio Preguntas y Respuestas para Python en español

2011-02-04 Por tema Pau Cervera
Buenas,

a mi me parece también muy bien la iniciativa, porqué en teoría las
respuestas correctas ascienden hasta la primera, pero en según qué
preguntas, aquí en la lista uno daría su opinión, y allí se autocensura, por
ser opinión y no respuesta. Creo que se gana mucho, pero se pierde esta
parte más social.

Y, quizá, sea un sentimental, ya son muchos años leyendo/escribiendo aquí.
:)

Pero me parece cojonudo, vamos. Ya estoy allí.

Saludos,

-
Pau

Python..., what else?
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Sitio Preguntas y Respuestas para Python en español

2011-02-04 Por tema Pau Cervera
http://python.majibu.org/

-
Pau

Python..., what else?


2011/2/4 Jorge Gant erjo...@gmail.com

 Parece una choreara y quedaré mal pero acabo de darme de alta en la lista y
 me perdí el enlace de la página de joe. Podéis ponerlo de nuevo? Gracias



 El 04/02/2011, a las 15:03, Chema Alonso fe...@nimiux.org escribió:

  On Thu, Feb 03, 2011 at 10:19:16PM +0100, joe di castro wrote:
  Había un problema con recaptcha, debería estar solucionado...
 
  El problema más tonto del mundo...
 
  Había dado de alta el dominio en recaptcha como .com en vez de .org
 
  Siento las molestias
 
  joe
 
  El jue, 03-02-2011 a las 17:22 +0100, Jose . escribió:
  Bueno, ya estoy en ello... a ver si al final se animáis a usarlo...
 
  ...
 Saludos
 joe di castro
 
 
 
 
 
 
  ___
  Python-es mailing list
  Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 
  Me he registrado en el sitio sin problemas, todo ha funcionado
  correctamente.
 
  Enhorabuena y muchas gracias por tu iniciativa y por tu trabajo.
 
  Un cordial saludo.
  ___
  Python-es mailing list
  Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿ __setattr__() no se invoca para reescribir un par (key,value) en un diccionario dentro de una clase?

2011-01-31 Por tema Pau Cervera
Yo diría que es porqué estás haciendo un get de d, y ya cuando lo tienes
haces una asignación al índice 'a' de ese objeto.

-
Pau

Python..., what else?


2011/1/31 Jose Caballero jcaballero@gmail.com

 Hola,

 perdón por el subject, es un poco críptico. Intento explicarlo...

 Sea una clase C como la siguiente

 --
 class C:
 def __init__(self):
 self.x = 0
 self.d = {'a':'A','b':'B'}
 def __setattr__(self, var, value):
 print 'invoking __setattr__ ', var, value
 self.__dict__[var] = value
 --

 Si ahora escribimos un código como

 obj = C()

 Se genera el siguiente output

 invoking __setattr__  x 0
 invoking __setattr__  d {'a': 'A', 'b': 'B'}

 Que corresponde a las dos asignaciones que aparecen en el __init__()
 Perfecto.

 --

 Si además hacemos algo como

 obj.x = 1

 obtenemos una nueva línea en el output

 invoking __setattr__  x 1

 --

 Sin embargo no veo una línea similar si ahora escribo

 obj.d['a']='AA'

 ¿Por qué?









 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿ __setattr__() no se invoca para reescribir un par (key,value) en un diccionario dentro de una clase?

2011-01-31 Por tema Pau Cervera
Eso mismo quería decir yo. Si en lugar de eso haces un set,

obj.d = hola,

volverá a pasar por el setter.
Quizá esto http://users.rcn.com/python/download/Descriptor.htm te resulte
interesante. También recuerdo que había una presentación de alguien, en
texto plano, sobre metaclasses y descriptores, pero no lo encuentro.

-
Pau

Python..., what else?


2011/1/31 Daniel Garcia d...@danigm.net

 On Mon, Jan 31, 2011 at 04:25:51PM -0500, Jose Caballero wrote:
  Hola,
 
  perdón por el subject, es un poco críptico. Intento explicarlo...
 
  Sea una clase C como la siguiente
 
  --
  class C:
  def __init__(self):
  self.x = 0
  self.d = {'a':'A','b':'B'}
  def __setattr__(self, var, value):
  print 'invoking __setattr__ ', var, value
  self.__dict__[var] = value
  --
 
  Si ahora escribimos un código como
 
  obj = C()
 
  Se genera el siguiente output
 
  invoking __setattr__  x 0
  invoking __setattr__  d {'a': 'A', 'b': 'B'}
 
  Que corresponde a las dos asignaciones que aparecen en el __init__()
  Perfecto.
 
  --
 
  Si además hacemos algo como
 
  obj.x = 1
 
  obtenemos una nueva línea en el output
 
  invoking __setattr__  x 1
 
  --
 
  Sin embargo no veo una línea similar si ahora escribo
 
  obj.d['a']='AA'
 
  ¿Por qué?

 Al hacer obj.d['a'] = 'AA' no se está llamando al setattr porque no
 estás añadiendo un atributo al objeto, sino un elemento al
 diccionario d.

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] dudas con regexp

2011-01-25 Por tema Pau Cervera
El if será false siempre porque comparas un string con un match object.
Entiendo que la regex está bien, cambia el if:

if re.match(r'\[\d+\%\]', lines):

-
Pau

Python..., what else?


2011/1/26 Tony Peña emperor...@gmail.com

 hola por aqui de nuevo ahora con las dudas para numeros en expresiones
 regulares

 result que quisiera coger los numeros que estan dentro de un fichero que
 parseo en un formato

 [0%]
 .
 .
 .
 [25%]
 .
 .
 .
 [100%]

 y el codigo para probar me salta el print no coincido con el patron para
 que funciones, lo probe tambien con re.search y tampoco

for line in open(stdout, 'r').xreadlines():
 lines = line.strip('\r\n')

 if lines == re.match(r'\[\d+\%\]', lines):
 print lines
 else:
 pass

 gracias por adelantado

 Tony

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Ejercicio Bolsas de caramelos

2011-01-13 Por tema Pau Cervera
Nos cuesta un poco entender la pregunta así formulada. Aunque sea sobre
caramelos, la pregunta nos la tienes que dar un poco masticada. Porqué sino
la respuesta podría ser difícil de digerir:

class Caramelo(object):
_count = {}

def __new__(cls):
if cls in Caramelo._count:
Caramelo._count[cls] += 1
else:
Caramelo._count[cls] = 1
return object.__new__(cls)

@classmethod
def count(cls):
if cls in Caramelo._count:
return Caramelo._count[cls]
else:
return 0

def __mul__(self, other):
Caramelo._count[self.__class__] += other - 1
return self

def __rmul__(self, other):
return self.__mul__(other)

def __lmul__(self, other):
return self.__mul__(other)

class RegalizRojo(Caramelo):
pass

class RegalizNegro(Caramelo):
pass

bolsa_a = [RegalizRojo(), RegalizRojo(), 2 * RegalizNegro()]
bolsa_b = [4 * RegalizRojo(), RegalizNegro()]

print RegalizRojo.count(), RegalizNegro.count()

-
Pau

Python..., what else?


2011/1/13 lasizoillo lasizoi...@gmail.com

 El día 13 de enero de 2011 16:57, pixu kideak pixukid...@gmail.com
 escribió:
  Bueno pues para resolver el problema había pensado lo siguiente:
  Contar en memoria con todos los datos ( todas las bolsas existentes y
 éstas
  con los caramelos que contienen y sus cantidades )
  Recorrer secuencialmente todas las bolsas viendo si tienen el caramelo
 que
  me interesa. En caso afirmativo contabilizar esa cantidad en el contador
 y
  así hasta recorrer todas las bolsas.
  Simplemente quería saber si existía alguna forma divina pero viendo que
  las Bolsas no guardan ninguna lógica en su composición; creo que toca
  recorrerlas todas viendo si contienen el caramelo o no :-)
  Saludos y gracias ;-)

 Vale, ahora entiendo el problema ;-)

 Si que hay solución y por supuesto no es nada divina. En algunos casos
 será mejor y en otros peor. Puedes mantener una especie de inventario
 de todos los caramelos. Bastaría con un diccionario en el que la clave
 es el caramelo y el valor el número de unidades en las bolsas
 registradas.

 Ese dato se puede ir llenando cada vez que registras una bolsa de
 caramelo. Pero también deberías actualizarlo al eliminar bolsas de
 caramelos. Por lo cual, estas haciendo más trabajo cada vez que dás de
 alta/baja una bolsa de caramelos y los contadores de cada tipo de
 caramelo ocupan espacio (no creo que importe mucho, pero hay que ser
 precisos). La ventaja es que se podrían hacer las consultas de los
 caramelos en O(1).

 Saludos:

 Javi

 
  2011/1/13 lasizoillo lasizoi...@gmail.com
 
  El día 13 de enero de 2011 13:38, pixu kideak pixukid...@gmail.com
  escribió:
  
   Me han planteado un problemilla para realizarlo con Python pero no
 tengo
   muy
   claro por dónde atacar para resolverlo de manera eficiente.
 
  Sería un buen punto de partida la forma ineficiente por dos motivos:
   * El primero porque muestras que te has esforzado en intentarlo y
  tienes afán de superación en vez de más cara que espalda como muestran
  algunos que quieren que les hagan los deberes.
 
   El problema es el siguiente:
   Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un
   nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos
   diferentes
   (RegalizRojo, RegalizNegro, Chicle,Tiburón ...).
   El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en
   otra
   Lo que deseo realizar es, que el usuario pueda introducir cualquier
 tipo
   de
   caramelo y le muestre todas las unidades que se necesitan de ese tipo.
 
   * El segundo porque la redacción en lenguaje natural no compila en
  nuestras mentes. Seguramente un código ineficiente nos ayudaría a
  comprender el enunciado del problema. Unos tests o casos de prueba
  serían maravillosos. Ahora mismo las unidades que responden a la gran
  pregunta, creo que son 42. Lo que no se es cual es la gran pregunta de
  la vida, el universo y todo lo demás (incluyendo este problema ;-)
 
  Saludos:
 
  Javi
  ___
  Python-es mailing list
  Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 
 
  ___
  Python-es mailing list
  Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 
 
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Felices fiestas a todos los pythónicos

2010-12-23 Por tema Pau Cervera
 for i in range(10): print ' ' * (10 - i), 'A' * i * 2
...

-
Pau

Python..., what else?


2010/12/23 Jhonlier Suarez Molina jhonlier12...@hlg.jovenclub.cu

 Muchas felicidades a los de la lista por todas estas fechas que vienen.
 Qué Python siga popularizándose!
 Mi abrazo desde Cuba
 Jhonlier


 __ Información de ESET NOD32 Antivirus, versión de la base de
 firmas de virus 5726 (20101222) __

 ESET NOD32 Antivirus ha comprobado este mensaje.

 http://www.eset.com



 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Estadísticas Web

2010-12-16 Por tema Pau Cervera
2010/12/16 Antonio Óscar Balmaseda antonioost...@gmail.com

 Hola a todos,

 ¿alguien sabe de algún manual o website donde encontrar información acerca
 de cómo escribir estadísticas web en python (para django)? Por más que
 googleo, no doy con ninguna solución sencilla.


¿Qué tipo de estadísticas? ¿Qué necesitas, algo para hacer los cálculos?,
¿algo para mostrarlos en gráficas?, ¿una herramienta para hacer un crawler?

-
Pau

Python..., what else?
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Estadísticas Web

2010-12-16 Por tema Pau Cervera


 Pues necesito calcular Unique Monthly Visitors y por día, los enlaces más
 visitados, la hora local de los visitantes... Para las gráficas suelo usar
 el Rrdtool, que hasta ahora me ha funcionado muy bien :)


Estoy tonto, para django. Pássate por 
https://groups.google.com/group/django-es?hl=es.

-
Pau

Python..., what else?
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Insertar y obtener datos en una tabla al mismo tiempo

2010-12-09 Por tema Pau Cervera
Transactions? [1]

[1] http://www.postgresql.org/docs/8.3/static/tutorial-transactions.html

-
Pau

Python..., what else?


2010/12/9 (p...@vel) pdlo...@uci.cu

 Tal vez no sea un problema para la lista de python 100%, pero como deben
 haber tantos desarrolladores profesionales aqui tal vez hayan chocado con el
 siguiente problema.

 Tengo una tabla en postgres puede ser en cualquier SGBD
 Ahora, al insertar un nuevo record me hace falta el id del record
 insertado, pero el problema es que si hago una funcion para que me devuelva
 el ultimo id insertado tengo el problema de que otro usuario haya insertado
 despues que yo, y entonces yo cojo un id que no es el que yo inserte. Alguna
 idea de como se pueda resolver este problema

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] fichero y linea en blanco

2010-12-07 Por tema Pau Cervera
Buenas,

no será que le falta una coma al print?

 f = open('c:/py/test.txt')
 for line in f.readlines():
... if len(line)  1:
... print line,
...
linea uno
linea dos
linea tres, siguiente en blanco
linea cinco
liniea final



-
Pau

Python..., what else?


2010/12/7 Jhonatan Sneider Salguero Villa sney2...@gmail.com



 El 7 de diciembre de 2010 09:43, (p...@vel) pdlo...@uci.cu escribió:

 Tengo el siguiente problema, estoy leyendo un fichero pero quiero que al
 leer una linea en blanco no haga nada, estaba probando el codigo de abajo
 pero me imprime la linea en blanco cada vez que la encuentra

 f = open('/home/pavel/Escritorio/char/file.txt')
 for line in f.readlines():
 if len(line)==1: # if line=='\n'
 continue
 else:
 print
 line[0]+line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+
 +line[24]+line[32]
 f.close()

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

 el problema es que una linea en blanco puede estar llena con espacios y
 por lo tanto medir mas de 1,
 prueba usar el método strip sin argumentos para eliminar todos los espacios
 de la linea,
 si solo contiene espacios en blanco la expresión se evaluara como falsa:

 if not line.strip():
 continue

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] fichero y linea en blanco

2010-12-07 Por tema Pau Cervera
Perdón, se me ha ido la olla. :)
Hazle caso a Johnatan. El condicional funciona porqué un empty sring es
False en python.

Si quieres sacarles el newline y hacerlo todo de una tirada:

 f = open('c:/py/test.txt')
 for line in map(lambda x: x.strip(), f.readlines()):
... if len(line)  0:
... print line
...
linea uno
linea dos
linea tres, siguiente en blanco
linea cinco
liniea final



-
Pau

Python..., what else?


2010/12/7 Pau Cervera pau.cerv...@gmail.com

 Buenas,

 no será que le falta una coma al print?

  f = open('c:/py/test.txt')
  for line in f.readlines():
 ... if len(line)  1:
 ... print line,
 ...
 linea uno
 linea dos
 linea tres, siguiente en blanco
 linea cinco
 liniea final
 


 -
 Pau

 Python..., what else?


 2010/12/7 Jhonatan Sneider Salguero Villa sney2...@gmail.com



 El 7 de diciembre de 2010 09:43, (p...@vel) pdlo...@uci.cu escribió:

  Tengo el siguiente problema, estoy leyendo un fichero pero quiero que
 al leer una linea en blanco no haga nada, estaba probando el codigo de abajo
 pero me imprime la linea en blanco cada vez que la encuentra

 f = open('/home/pavel/Escritorio/char/file.txt')
 for line in f.readlines():
 if len(line)==1: # if line=='\n'
 continue
 else:
 print
 line[0]+line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+
 +line[24]+line[32]
 f.close()

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

 el problema es que una linea en blanco puede estar llena con espacios y
 por lo tanto medir mas de 1,
 prueba usar el método strip sin argumentos para eliminar todos los
 espacios de la linea,
 si solo contiene espacios en blanco la expresión se evaluara como falsa:

 if not line.strip():
 continue

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/



___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Contar en lista

2010-11-11 Por tema Pau Cervera
Bueno, lo ortodoxo sería

 def length(lista):
... if lista[1:] == lista: return 0
... else: return 1 + length(lista[1:])

-
Pau

Python..., what else?


2010/11/11 lasizoillo lasizoi...@gmail.com

 El día 11 de noviembre de 2010 15:39, lopz lowlife...@gmail.com
 escribió:
  Yo diría que preguntar está bien, aunque esta pregunte debería tener
  una respuesta hasta en el peor libro, manual, etc sobre python (eso
  quiere decir que ni eso está leyento)
  Ahora.. lo que si no debería haber es más de 4, 5 (exagerando)
  respuestas con lo mismo, ya que el que responde luego de que le hayan
  respondido con lo mismo no tiene mucho sentido.. más aún sabiendo y
  leyendo que estás repitiendo lo mismo.
 
  Lo ideal sería responder con otras formas de saber la longitud de una
  list en python.. como yo no sé otra forma..
 

 Como gastar la broma de usar PyObject_Length a través de ctypes?

 Seguramente se pueda hacer una barrabasada de esas y sea más
 ludico-festivo y didáctico que responder obviedades. Luego igual
 pruebo ;-)

 Saludos:

 Javi
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] (sin asunto)

2010-04-19 Por tema Pau Cervera
¿?

-
Pau

Python..., what else?


On Mon, Apr 19, 2010 at 9:09 PM, sergio villegas echeverria 
sergiovillegasechever...@yahoo.com wrote:

 what is my password in mail python?

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Consejo para aprender a programar

2010-04-08 Por tema Pau Cervera
Yo os habéis dejado una de importante: lee la lista! :)

No, ahora en serio: algunos hemos aprendido muchas cosas de discusiones de
esta lista, aunque no fueran respuestas a nuestras preguntas. Es un gran
recurso. También puedes subscribirte a la lista oficial e ir siguiendo los
hilos que te interesen, de la misma forma que harías con un planet.

-
Pau

Python..., what else?


2010/4/8 Medardo Rodriguez (Merchise Group) med@gmail.com

 On 4/7/10, Angel Giovanni Cortes Solorzano giovanni@gmail.com wrote:
  Hola a todos, esta es la primera vez que me inscribo a una lista de
 correo y
  que escribo a una. Mi consulta es la siguiente, más que consulta pido un
  consejo.

 Programar puede ir desde un hobby hasta una carrera universitaria
 compleja; todo depende de lo que quieras. También es soporte de otras
 profesiones, creo que varias carreras deben saber un poco de
 programación.

 Si es un hobby para ti, lo que tienes que hacer es revisar mucho
 código hecho por otros del nivel hasta donde quieras llegar, te
 recomiendo compartir todo lo que hagas para que te los demás lo vean y
 te vayan corrigiendo el camino (programa para Software Libre).

 Si te vas a lanzar como profesional, no te queda más remedio que
 estudiar mucho, ya sea en una escuela o por tu cuenta. En este caso
 hay autores que no te puedes perder: Donald Knuth, Grady Booch,
 Bertrand Meyer, Barbara Liskov, ... y muchos etcéteras.

 Tienes que aprender teorías de muchas cosas: algoritmos, bases de
 datos, compiladores, lenguajes de programación, ... muchos paradigmas:
 Programación Orientada a Objetos, Programación Funcional, Programación
 Manipulada por Eventos, Teoría de Tipos (o contratos, o invariantes, o
 restricciones), ...

 Muchos se aprenden un lenguaje como el Python, pero no saben definir
 el concepto de clase, mucho menos el de metaclase o mixin, ... casi
 nunca llegan a saber lo que es una clausura.

 Razonar bien es lo más importante; defino *Programación* como la
 traducción del razonamiento humano a un modelo que puede ser ejecutado
 por una máquina.

 Saludos
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] HTMLgen + extjs + python

2010-03-22 Por tema Pau Cervera
Una primera búsqueda en google me apunta a este ejemplo de como integrar
ExtJS con django:

http://www.extjs.com/learn/Tutorial:Using_Django_Poll_Tutorial_with_Ext



Pero entiendo que no agregas el framework ExtJS a Python, no creas páginas
des de Python y no haces peticiones a los archivos.

-
Pau

Python..., what else?


2010/3/20 Manuel A. Estevez Fernandez stvz...@gmail.com

 Buen día

 Alguien tiene documentación o conoce documentación al respecto para crear
 las páginas desde python agregarle el frame work de extjs, y desde este
 hacerle peticiones a los archivos de python

 Saludos

 --
 Atentamente

 ISC. Manuel Alejandro Estevez Fernandez


 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/