MakeMake The Dwarf Planet is a feed agregator.

Sortie de Crème CRM en version 2.8

by GuieA_7,Benoît Sibaud,Ysabeau 🧶 from Linuxfr.org

Le 7 avril 2026 est sortie la version 2.8 du logiciel de gestion de la relation client Crème CRM (sous licence AGPL-3.0).

Icone de Crème CRM

Au programme notamment, de nombreuses améliorations autour des droits, l’épinglage de fiches et des totaux calculés dans les vues en liste. Les nouveautés sont détaillées dans la suite de la dépêche.

Sommaire

Description du logiciel

Crème CRM est un logiciel de gestion de la relation client, généralement appelé CRM (pour Customer Relationship Management). Il dispose évidemment des fonctionnalités basiques d’un tel logiciel :

  • un annuaire, dans lequel on enregistre contacts et sociétés : il peut s’agir de clients, bien sûr, mais aussi de partenaires, prospects, fournisseurs, adhérents, etc. ;
  • un calendrier pour gérer ses rendez‐vous, appels téléphoniques, conférences, etc. ; chaque utilisateur peut avoir plusieurs calendriers, publics ou privés ;
  • les opportunités d’affaires, gérant tout l’historique des ventes ;
  • les actions commerciales, avec leurs objectifs à remplir ;
  • les documents (fichiers) et les classeurs.

Crème CRM dispose en outre de nombreux modules optionnels le rendant très polyvalent :

  • campagnes de courriels ;
  • devis, bons de commande, factures et avoirs ;
  • tickets, génération des rapports et graphiques…

L’objectif de Crème CRM est de fournir un logiciel libre de gestion de la relation client pouvant convenir à la plupart des besoins, simples ou complexes. À cet effet, il propose quelques concepts puissants qui se combinent entre eux (entités, relations, filtres, vues, propriétés, blocs), et il est très configurable (bien des problèmes pouvant se résoudre par l’interface de configuration) ; la contrepartie est qu’il faudra sûrement passer quelques minutes dans l’interface de configuration graphique pour avoir quelque chose qui vous convienne vraiment (la configuration par défaut ne pouvant être optimale pour tout le monde). De plus, afin de satisfaire les besoins les plus particuliers, son code est conçu pour être facilement étendu, tel un cadriciel (framework).

Du côté de la technique, Crème CRM est codé notamment avec Python/Django et fonctionne avec les bases de données MySQL, SQLite et PostgreSQL.

Principales nouveautés de la version 2.8

Voici les changements les plus notables de cette version :

Meilleure synchronisation avec les sorties de Django

C’est une version plus petite qu’à l’accoutumée (Creme 2.7 est sortie le 2 septembre 2025 et nous sortons une version par an). Cela nous permet de nous caler enfin sur les cycles de sortie de Django (dont les versions LTS—gérée pendant 3 ans—sortent en avril une fois tous les 2 ans) et donc éviter d’avoir des périodes où une version de Crème CRM est encore gérée mais pas la version de Django sous-jacente.

Améliorations des droits

Les utilisateurs peuvent avoir plusieurs rôles. Il arrive que des personnes aient plusieurs casquettes, et finissent par posséder plusieurs utilisateurs, se connectant avec le bon utilisateur en fonction des tâches à effectuer. Mais c’est un peu contraignant de devoir à chaque fois se déconnecter puis se reconnecter (et ça peut aussi être gênant d’avoir plusieurs utilisateurs pour une seule identité). Un utilisateur peut désormais posséder plusieurs rôles, et peut passer de l’un à l’autre sans devoir se déconnecter. Voir ce lien pour plus de détails.

Sélection d’un de ses rôles dans me menu principal

Les rôles peuvent désormais être désactivés. De manière générale, on essaie d’ajouter, au fur et à mesure des versions, la possibilité pour les différents objets que les utilisateurs peuvent supprimer de pouvoir d’abord passer par un état “désactivé”. Cela permet de tester un certain temps si un objet ne manque pas au final ; s’il y a un souci on peut revenir en arrière. C’est donc au tour des rôles d’avoir une telle fonctionnalité.

Les rôles gèrent maintenant les types de fiches qu’on peut lister, et 2 permissions spéciales peuvent être données : administration des utilisateurs & des rôles (il fallait être super-utilisateur pour les administrer dans les versions précédentes).

Épinglage de fiche

Vous pouvez désormais épingler les fiches auxquelles vous accédez souvent, pour aller dans leur vue détaillée.

Bouton d’épinglage dans l’entête d’une fiche

Vous pouvez accéder aux dernières fiches épinglées dans l’entrée de menu « Accès rapide » ; cette entrée remplace l’entrée qui proposait uniquement les fiches visitées récemment, et propose ces dernières ainsi que les fiches épinglées :

Entrée « Accès rapide » dans le menu

Totaux calculés dans les vues en liste

Certaines colonnes de vue en liste affichent désormais des totaux calculés sur toutes les fiches de cette liste :

  • la somme et la moyenne des totaux (avec et sans TVA) des Factures/Devis/Avoirs/Bons de commande.
  • la somme et la moyenne des chiffres d’affaires estimé & final des opportunités d’affaire.

Amélioration des champs personnalisés

Les champs personnalisés (les champs de fiches ajoutés par les utilisateurs) peuvent posséder :

– une description ; celle-ci est utilisée notamment dans les formulaires afin de donner plus de détails aux utilisateurs sur le sens dudit champ.
– une valeur par défaut, utilisée à la création de nouvelles fiches ; voir ce lien pour plus de détails.

Quelques autres améliorations notables

  • L’éditeur de texte HTML (utilisé pour les corps HTML d’e-mail par exemple) a subi une grosse mise-à-jour (l’interface est bien plus légère et moderne maintenant), et est utilisé à plus d’endroits.
  • On peut désormais télécharger plusieurs Documents, Factures ou Devis en une fois sous forme d’archive zip.

Le futur

La prochaine version devrait être la 3.0, et se concentrera sur une grosse revisite de l’interface graphique. À l’année prochaine !

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Sur Lyon − Meetup le lundi 18 mai

by grewn0uille from AFPy discuss

Hello tout le monde,

Le prochain meetup sur Lyon a lieu le lundi 18 mai à 19h.

Rendez-vous chez Lowit (métro Part-Dieu) où Emmanuel nous parlera de microcontrôleurs et de MicroPython !

Excursion dans le monde des microcontrôleurs
May 18, 2026 7:00 PM (Europe/Paris) → May 18, 2026 9:00 PM (Europe/Paris)
https://www.meetup.com/fr-fr/python-afpy-lyon/events/314642594/

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Configuration emacs « minimale » en 2026

by mdk from AFPy discuss

C’est la suite de mon sujet de 2021 : Emacs : aujourd'hui j'essaye lsp-mode.

En 2026 je migre de jedi qui n’est plus maintenu à zuban. J’en profite pour migrer de lsp-mode à eglot qui est devenu natif.

Déjà, à quoi ça ressemble :

Le paquet Debian que j’utilise est emacs-pgtk.

Ensuite, la config « minimale » (72 lignes) :

(require 'use-package)
(require 'package)
(package-initialize)

(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
                         ("melpa" . "https://melpa.org/packages/")))

(when (not package-archive-contents)
  (package-refresh-contents))

(use-package yasnippet
  :ensure t
  :config
  (yas-global-mode 1))

(use-package yasnippet-snippets
  :ensure t)

(use-package company
  :ensure t
  :hook
  (python-mode . company-mode))

(use-package envrc
  :ensure t
  :init (envrc-global-mode))

(use-package eglot
  :hook (python-mode . eglot-ensure)
  :config
  (add-to-list 'eglot-stay-out-of 'flymake)
  (add-to-list 'eglot-server-programs '((python-mode) . ("zuban" "server"))))

(use-package python
  :custom
  (python-indent-guess-indent-offset nil))

(use-package flycheck
  :ensure t
  :config
  (global-flycheck-mode t))

(use-package blacken
  :ensure t
  :commands (blacken-mode)
  :hook (python-mode . blacken-mode)
  :config
  (setq blacken-only-if-project-is-blackened t))

(use-package python-isort
  :ensure t
  :hook ((python-mode) . python-isort-on-save-mode)
  :config
  (setq python-isort-arguments '("--stdout" "--atomic" "-" "--profile=black")))

(use-package whitespace
  :diminish (whitespace-mode global-whitespace-mode whitespace-newline-mode)
  :hook ((python-mode) . whitespace-mode)
  :config
  (setq show-trailing-whitespace t)
  (setq whitespace-line-column 88)
  (setq whitespace-style '(face empty tabs lines-tail trailing)))

(use-package spacemacs-theme
  :ensure t
  :defer t
  :init
  (load-theme 'spacemacs-light t))

(global-font-lock-mode t)
(column-number-mode t)
(show-paren-mode t)

Le fichier se place dans ~/.emacs.d/init.el. La première fois qu’emacs démarre il télécharge tous les paquets décrits dans la config, donc le premier démarrage est long, c’est normal.

Maintenant pour qu’eglot puisse trouver zuban, pour que flycheck puisse trouver pylint, et pour que blacken-mode puisse trouver black le mieux c’est … un venv !

Et pour que le venv du projet soit chargé automatiquement par emacs j’utilise direnv, ça fait double usage : mes venv sont aussi activés automatiquement dans le shell !

Pour configurer direnv il faut un fichier .envrc à la racine du projet qui contient :

VIRTUAL_ENV=.venv
layout python3

Si c’est votre première utilisation de direnv il faut rajouter eval "$(direnv hook bash)" dans ~/.bashrc.
Il vous fera executer direnv allow pour l’autoriser à bosser, et hop, le venv est crée tout seul, et activé automatiquement par bash et emacs.

Faites-vous un alias ou une commande nommé venv pour gagner du temps sur la création de ce .envrc.

Il faut installer deux-trois trucs dans le venv :

pip install --upgrade zuban black mypy pylint

puis démarrer emacs :

emacs test.py

Pour ceux qui n’ont jamais lancé emacs avant, tapez Ctrl-h puis t, ça vous ouvrira le tuto interactif.

Ohhh, et j’ai configuré blacken-mode pour ne passer black à la sauvegarde que s’il trouve [tool.black] dans pyproject.toml, ça m’évite d’avoir emacs qui réecrit des fichiers dans des projets qui n’utilisent pas black, c’est la ligne blacken-only-if-project-is-blackened dans la config.

Quelques raccourcis importants :

  • M-. : c’est pour aller a la définition de quelque chose.
  • M-x eglot-rename pour renommer une variable (et toutes ses occurrences).
  • C-c ! n pour sauter a la prochaine erreur.

Ma configuration complète est ici : https://git.afpy.org/mdk/dotfiles/src/branch/main/.emacs.d/init.el, elle est plus longue : j’enlève les menus, le message d’accueil, la décoration de la fenêtre, j’ajoute du confort, et j’ai de la configuration C, rust, org-mode, je configure emacs en mode serveur (et j’utilise emacsclient), etc…

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

lsdisplay / lsgpu — lister écrans et GPUs depuis le terminal dans l'esprit de lspci, lscpu, lsusb: v.0.1.0 appel à tests

by géhème from Linuxfr.org

Le problème

On a lsusb, lspci, lscpu… mais rien pour les écrans ou les GPUs.
Pour savoir quel écran est branché sur quelle sortie, c'est la danse du
xrandr | grep connected, cat /sys/class/drm/card*/edid | edid-decode,
nvidia-smi

J'ai écrit deux outils pour régler ça.

lsdisplay

Liste les écrans connectés avec fabricant, modèle, numéro de série,
résolution, fréquence, diagonale, et dessine un schéma ASCII du layout :

$ lsdisplay

CONNECTED DISPLAYS
==================

  DP-4         1440x2560+0+0           27"  75Hz  Iiyama PL2792Q    DisplayPort  S/N:1152031921274   rot=left [PRIMARY]
  HDMI-A-2     1440x2560+1441+0        27"  75Hz  Iiyama PL2792Q    HDMI         S/N:1152032422031   rot=left
  HDMI-A-5     5376x3024+0+2561        65"  60Hz  Samsung QN800D    HDMI         S/N:94:e6:ba:dd:9a:7a

Total: 3 display(s) connected

LAYOUT
======

  +--------------+ +--------------+
  |              | |              |
  |     DP-4*    | |   HDMI-A-2   |
  |              | |              |
  +--------------+ +--------------+

  +------------------------------+
  |                              |
  |          HDMI-A-5            |
  |                              |
  +------------------------------+

Fonctionnalités :

  • Parse les EDID directement depuis /sys/class/drm (pas de dépendance externe)
  • Fonctionne sur X11 et Wayland (KDE, Sway, wlroots)
  • Mode --json pour le scripting
  • Mode --scan pour découvrir les Smart TV Samsung sur le réseau
  • Fichier d'overrides pour corriger les EDID buggés (Samsung, je te regarde…)
  • Python 3.6+, zéro dépendance

lsgpu

Liste les GPUs avec stats NVIDIA, mapping écran par sortie :

$ lsgpu

GRAPHICS CARDS
==============

  card0: NVIDIA GA107 [GeForce RTX 3050 6GB]
         Driver: nvidia | VRAM: 6 GB | GPU:0% MEM:2077/6144MB 37°C 16.7W
    ├─ DP-4: connected ← Iiyama PL2792Q 27"
    ├─ HDMI-A-2: connected ← Iiyama PL2792Q 27"


  card1: Intel Arrow Lake-S [Intel Graphics]
         Driver: i915
    ├─ HDMI-A-5: connected ← Samsung TQ65QN800DTXXC 65"

Total: 2 GPU(s), 3 output(s) connected

Fonctionnalités :

  • Stats NVIDIA (utilisation, température, puissance, mémoire)
  • Stats AMD via sysfs
  • Mode --watch avec sparklines en temps réel
  • Liste des processus utilisant le GPU
  • Python 3.6+, zéro dépendance Python

Installation

sudo cp lsdisplay.py /usr/local/bin/lsdisplay
sudo chmod +x /usr/local/bin/lsdisplay

Paquet .deb disponible aussi. Un seul fichier Python, pas de pip, pas de venv.

Appel à testeurs

C'est une v0.1.0 — testé sur ma config (GPU NVIDIA + Intel, KDE Wayland,
3 écrans dont 2 Samsung TV). J'aimerais des retours sur :

  • Configs AMD (j'ai le code mais pas le matos pour tester)
  • Wayland hors KDE (Sway, GNOME, Hyprland)
  • Écrans avec EDID exotiques
  • Suggestions d'affichage ou de fonctionnalités

Liens

Licence : GPL-2.0

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Fonctionnement de Jupyter Lab/Notebook

by uneTanche from Linuxfr.org

Bonjour à tous,

Contexte:

Je cherche une alternative à mathlab simulink pour la mise au point d'algorithmes de contrôle et la modélisation de systèmes.

Après quelques essais (scilab xcos, modelica, octave …), c'est python qui a retenu mon attention et en particulier les notebook Jupyter et la bibliothèque control.

Ça fait quelques jours que je fais un essai sur la modélisation d'une régulation pour un générateur de courant mais certaines subtilités m'échappe.

En particulier, lorsque je veux modifier un paramètre dans une "cellule code" et la rejouer. Si cette dernière contient une courbe générer avec matplotlib, soit la courbe ne s'affiche pas, ou bien pas correctement, ou toutes les autres courbes s'en retrouve modifiées…

Matplotlib propose bien des exemples d'utilisation, mais comme mes essais, ils ne semblent fonctionner que si l'on exécute le "notebook" une seule fois.

Question:

L'utilisation de Jupyter notebook est-elle réservée à la documentation final du processus et non aux essais ? Ou bien je passe à côté de quelque chose ?

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Fusion de comptes

by mapommBL from AFPy discuss

Bonjour,

suite à recréation d’un compte github, j’ai été obligé (?) de me recréer un compte sur votre site.

Serait-il possible de regrouper mon ancien compte mapomm??? avec mon nouveau compte mapommBL et ne laisser que mon compte mapommBL ?

Merci d’avance

7 messages - 3 participant(e)s

Lire le sujet en entier

Lire la suite…

[PYTHON] Besoin d'aide sur un exercice

by konzum from AFPy discuss

Je débute en programmation et je me suis heurté a une incompréhension sur la correction d’un exercice :

nombres = input("tapez votre suite de nombre séparé par des virgule")

liste = nombres.split(",")

liste_entier = []

for nombre in liste:

    nombre_entier = int(nombre)

    liste_entier.append(nombre_entier)

print("liste: ", liste_entier)

somme = 0

for nombre in liste_entier:

    somme += nombre

print("somme : ", somme)

moyenne = somme / len(liste_entier)

print("moyenne: ", moyenne)

nombre_superieur_moyenne = 0

for nombre in liste_entier:

    if nombre > moyenne:

        nombre_superieur_moyenne += 1

print("nombre suprieur: ", nombre_superieur_moyenne)

Ca peut paraitre évident pour certain mais je ne comprend pas pourquoi, à la ligne 4 ( for nombre in liste:) il y a ce “nombre” qui sort de nul part , alors que ma variable plus haut est “nombres”. J’ai cherché, pensant que “nombre” était peut être déjà connu par le logiciel, mais je ne trouve rien a ce sujet.

Je n’arrive pas à passer outre cette incompréhension, et cella me retarde dans mon apprentissage, si une personne avais l’amabilité de prendre un petit peu de son temps pour m’expliquer cela j’en serait comblé. Merci d’avance et je vous souhaite une agréable journée

6 messages - 2 participant(e)s

Lire le sujet en entier

Lire la suite…

Retours d'expérience de frameworks web et d'orchestration de workflows - lundi 27 avril 2026

by luc_sorel-giffo from AFPy discuss

  • Django Ninja : votre API nette et sans bavure ? - par Quentin Caron (profil LinkedIn), lead dev Python et expert technique chez Néosoft

Vous aimez Django mais vous avez préféré un autre framework pour écrire votre API ? Ce retour d’expérience sur Django Ninja vous fera peut-être changer d’avis. Après un tour d’horizon des frameworks web API Python permettant de planter le décor, découvrez les caractéristiques du framework, les difficultés rencontrées en 10 semaines d’utilisation et les contournements possibles pour devenir un véritable ninja des APIs.

  • Comparaison de 4 orchestrateurs de workflows open-source : airflow, argo, temporal.io, windmill par Jesshuan Diné (profil LinkedIn), ingénieur data et IA chez Crédit Mutuel Arkéa

Nos métiers intègrent de plus en plus de traitements d’ingestion et de remaniement de la donnée. J’ai eu besoin de faire un benchmark pour comparer différents frameworks d’orchestration open-source qui répondaient à mes besoins. Après une brève présentation des candidats et de leur différence de paradigmes, je vous présenterai la méthodologie que j’ai suivi pour les comparer (notamment concernant la performance de l’infrastructure) et les résultats.
Au menu :

  • une infra kubernetes
  • des workflows CPU-intensifs
  • une stack d’observabilité

Merci à Néosoft Rennes pour l’accueil du meetup :folded_hands:

Publication à relayer sur les réseaux si vous le souhaitez :

Inscription gratuite mais nécessaire sur :

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…