Personnalisation Creme
#21
Je vais regarder cela avec attention, je vous tiendrai au courant.

Autre chose, j'aimerais réordonner un peu la liste des items dans le formulaire de création/édition des contacts (et organisations). Ça doit être tout simple, mais je ne comprends pas tout à fait le mécanisme d'agencement des champs. Exemple : passer la date de naissance avant la description.
  Répondre
#22
Dans Django, l'ordre des champs d'un ModelForm est d'abord donné par l'ordre de déclarations des champs dans le modèle correspondant. Ensuite on peut modifier cet ordre grâce à l'attribut fields de la classe Meta du formulaire ; c'est un tuple contenant le nom des champs, par exemple

Code :
class Meta:
    model = MyModel
    fields = ('name', 'description')

Mais dans Creme il y a une surcouche à ceci, qui permet de regrouper les champs par blocs ; c'est fait avec l'attribut blocks qui est une instance de FieldBlockManager (regardez creme/creme_core/forms/base.py) . Les groupes sont chacun décrits par un tuple contenant 3 éléments : l'identifiant du bloc, son nom affiché pour l'utilisateur, et la liste des champs. Par exemple on voit dans le formulaire de Contacts :
('coordinates', _(u'Coordinates'), ['skype', 'phone', 'mobile', 'fax', 'email', 'url_site'])

La liste des champs peut aussi avoir une valeur particulière, '*', qui est le joker qui représente tous les champs non utilisés dans les autres blocs.

Je viens de vérifier et l'attribut Meta.fields n'est pas compatible avec un FieldBlockManager ; c'est dommage et il faudra peut-être y remédier à terme. Du coup, les choix les plus accessibles sont :
- changer l'ordre dans le modèle Contact (un peu invasif, pas très propre mais simple à faire).
- écraser la valeur de blocks dans ContactForm avec une nouvelle instance de FieldBlockManager dans lequel vous reprécisez tous les champs dans l'ordre que vous souhaitez (copier les groupes existants, mais précisez les champs pour le groupe "general" qui utilise le joker). Cette technique a aussi des défauts, car ne pas utiliser le joker pose des problèmes, notamment le fait les CustomFields n’apparaîtront pas dans le formulaire, et le fait que vous puissiez oublier facilement des champs.
- vous pouvez aussi ajouter un nouveau groupe contenant les champs qui vous intéresse de réordonner, mais peut-être qu'avoir un nouveau bloc ne vous plait pas. Attention à modifier le fichier creme/persons/templates/persons/add_contact_form.html, ou mieux le surcharger, en créant un fichier
creme/templates/persons/add_contact_form.html, afin de prendre en compte le nouveau groupe.
  Répondre
#23
J'ai opté pour de nouveaux blocs, ça fonctionne parfaitement.

Merci pour vos précieux conseils.

Maintenant, je vais plancher sur la génération de documents en PDF via LaTeX.
  Répondre


Atteindre :


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