2013-10-02 1 views
1

J'ai écrit une nouvelle classe d'utilisateurs basée sur BasicUser et PropertyManager. Maintenant, je peux ajouter et modifier des propriétés. Mais quand je redémarre le serveur, ils sont partis.Les propriétés de Zope disparaissent

Des idées où je pourrais trouver la cause de ce comportement? Thread sont un certain nombre de propriétés définies dans la classe (_properties)

Ceux-ci ne sont pas affectés.

+0

Vous devriez vraiment ajouter le code, cela aidera à affiner le problème. –

+0

Le code utilisé n'a rien de spécial: j'ai ajouté la propriété using manage_addProperty et l'ai modifiée avec manage_changeProperties. Cela fonctionne bien tant que je ne redémarre pas. – Rastaf

+0

Encore plus de raisons d'afficher le code, y compris la classe. –

Répondre

1

La classe de base manquante était "Persistant". J'ai supposé que ce devait être une classe de base de PropertyManager mais ce n'est pas le cas.

1

Les données qui disparaissent lorsque vous redémarrez le serveur ont presque toujours pour effet que les modifications ne sont pas correctement écrites dans la base de données. Cela se produit généralement à cause de la modification d'une liste ou d'un dictionnaire et de la persistance de l'objet sur le disque. Il existe plusieurs façons de contourner ce problème. Dans le cas de propriétés, vous devez utiliser les méthodes d'objet pour mettre à jour et ajouter des propriétés. Ils sont appelés manage_addProperty, manage_editProperties, manage_delProperties et manage_changeProperties.

Vous trouverez des exemples d'utilisation au bas de this page dans le Zope2 Book.

+0

J'utilise manage_addProperty et manage_changeProperties. Cela fonctionne bien tant que le serveur fonctionne. – Rastaf

+0

Silly moi. J'ai dû ajouter Persistent aux classes de base. BasicUser ne l'a pas, mais l'utilisateur (de AccesControl) le fait. Merci Lennart, tu m'as indiqué la bonne direction avec ta réponse. – Rastaf

Questions connexes