Je souhaite créer un produit.
Dedans, il y a entre autres une ZClass maclasse et Zope a créé tout seul le script python suivant auquel il a donné l'ID maclasse_ad.


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
 
# Add a new instance of the ZClass
request = context.REQUEST
instance = container.maclasse.createInObjectManager(request['id'], request)
 
# *****************************************************************
# Perform any initialization of the new instance here.
# For example, to update a property sheet named "Basic" from the
# form values, uncomment the following line of code:
# instance.propertysheets.Basic.manage_editProperties(request)
# *****************************************************************
 
if redirect:
    # redirect to the management view of the instance's container
    request.RESPONSE.redirect(instance.aq_parent.absolute_url() + '/manage_main')
else:
    # If we aren't supposed to redirect (ie, we are called from a script)
    # then just return the ZClass instance to the caller
    return instance

Lorsque j'appelle ce script, j'ai l'erreur suivante :

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
 
Traceback (innermost last):
 
    * Module ZPublisher.Publish, line 121, in publish
    * Module Zope2.App.startup, line 240, in commit
    * Module transaction._manager, line 96, in commit
    * Module transaction._transaction, line 380, in commit
    * Module transaction._transaction, line 378, in commit
    * Module transaction._transaction, line 433, in _commitResources
    * Module ZODB.Connection, line 484, in commit
    * Module ZODB.Connection, line 526, in _commit
    * Module ZODB.Connection, line 553, in _store_objects
    * Module ZODB.serialize, line 407, in serialize
    * Module ZODB.serialize, line 416, in _dump
    * Module copy_reg, line 70, in _reduce_ex
 
TypeError: default __new__ takes no parameters
Apparemment, c'est la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
instance = container.maclasse.createInObjectManager(request['id'], request)
qui pose problème, et plus exactement les arguments entre ().

Pourquoi ?
Le code créé par Zope lui-même n'est pas bon ?
J'ai Zope 2.9.3.