Deprecated: Constant E_STRICT is deprecated since 8.4, the error level was removed in /home/hybird/newwwwcreme/forum/inc/class_error.php on line 64
Personnalisation Creme
Les avertissements suivants se sont produits :
Warning [2] Undefined variable $unreadreports - Line: 21 - File: global.php(961) : eval()'d code PHP 8.5.12 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 21 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$bottomlinks_forumteam - Line: 2 - File: global.php(1047) : eval()'d code PHP 8.5.12 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(1047) : eval()'d code 2 errorHandler->error_callback
/global.php 1047 eval
/showthread.php 28 require_once
Warning [2] Undefined array key 0 - Line: 1636 - File: showthread.php PHP 8.5.12 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php 1636 errorHandler->error_callback
/showthread.php 912 buildtree




Personnalisation Creme
#15
Vous trouverez une utilisation de contribute_to_model() dans le fichier creme/creme_core/models/auth.py (même si cette utilisation disparaîtra lorsque nous passeront a Django1.5 - mais c'est une autre histoire - la fonction en elle-même restera). Version simplifiée :

Code :
class UserProfile(Model):
    is_team = BooleanField(verbose_name=_(u'Is a team ?'), default=False)

    class Meta:
        abstract = True

contribute_to_model(UserProfile, User)

Il suffit de créer un modèle abstrait, et ses champs seront ajoutés à la classe qu'on veuxt modifier. On peut aussi passer la liste des champs qu'on veut supprimer. Mais comme je l'ai dit dans mon précédant post, cela ne marche malheureusement pas encore avec les ManyToManyField (je n'ai pas pris le temps de me pencher sur la question).

Sinon faire un ManyToManyField vers un nouveau modèle, que vous enregistrez dans creme_config (voir la documentation de création de module dans doc/) afin que les utilisateurs puissent créer de nouveaux choix disponibles, est bien la bonne façon de faire.

Reste la création/modification de table.
- Si vous désactivez 'south', la commande syncdb est celle de base de Django : elle crée les tables qui n'existe pas encore, mais ne touche pas aux tables existantes (voir mon commentaire précédant). Du coup si vous supprimez votre base à chaque fois, vos modifications de modèle seront bien prise en compte (mais vous perdez vos données évidement).
- Si activez 'south', la commande syncdb ignorera toutes les apps ayant un répertoire 'migrations', c'est à dire la plupart des apps Creme ; vous devez alors passer par les commandes schemamigration et migrate (en autres). Je vous encourage à lire la documentation de south dont je parlais dans mon message précédant.

Mon conseil : désactiver south pendant la phase de développement et développer en Tests Driven; l'avantage est que dans les test unitaires, les changement de modèles sont pris en compte entre chaque lancement des tests (donc pas besoin de casser la base à la main à chaque fois). Puis avant la mise en production activer south, et générer les migrations afin d'être prêt pour les changements ultérieurs proprement.
  Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)