Hello tout le monde.

J'en vois déjà certains venir avec "encore un qui galère à caster des valeurs!", mais réjouissez-vous ça va plus loin qu'un "int('bah je veux un entier moi')".

Je suis en phase de test de code que j'ai écrit pour faire des extractions de la base de donénes. Dans ces tests (classe SaintImportTest dans un fichier test.py), je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
self.campaign = Campaign(id_campaign='Test Campaign',
                         label='This a test for a campaign...')
 
self.campaign.save()
ce qui me donne cette magnifique erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
======================================================================
ERROR: test_write_tab_files (cid.tests.SaintImportTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/devel/Bureau/cidmanager/cid/tests.py", line 47, in setUp
    self.campaign.save()
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/base.py", line 460, in save
    self.save_base(using=using, force_insert=force_insert, force_update=force_update)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/base.py", line 543, in save_base
    for f in meta.local_fields if not isinstance(f, AutoField)]
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 28, in inner
    return func(*args, **kwargs)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/related.py", line 876, in get_db_prep_save
    connection=connection)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 28, in inner
    return func(*args, **kwargs)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 28, in inner
    return func(*args, **kwargs)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 276, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 53, in inner
    return func(*args, **kwargs)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 53, in inner
    return func(*args, **kwargs)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 271, in get_db_prep_value
    value = self.get_prep_value(value)
  File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 479, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: 'admin'
La classe Campaign étend une class Auditable qui contient entre autres les attributs suivants:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
user_created = models.ForeignKey(User,verbose_name='created by',default=get_user('admin'),related_name='user_created')
user_modified = models.ForeignKey(User,null=True,blank=True,verbose_name='modified by',related_name='user_modified')
En supprimant les deux attributs ci-dessus d'où provient notre 'admin', j'évite le problème mais en production je ne pourrait pas les supprimer, donc au revoir les tests sur la prod...

J'ai essayé de créé un admin user mais cela n'a rien changé au deal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
admin = User.objects.create_superuser('admin',
                                      'toto@titi.com',
                                      'admpwd')
 
admin.save()
 
client = Client()
client.login(username='admin', password='admpwd')
Est-ce que quelqu'un a une idée pour faire en sorte que cela fonctionne avec les attributs???

D'avance merci!
Quentin