Connaissez-vous le temps de reboot de vos machines ?
by vcaron from Bearstech
[Django] Détecter une migration manquante via les tests unitaires
by jtremesay from Linuxfr.org
Django a un chouette système de migrations pour répercuter sur la db les changements effectués sur les modèles.
Mais des fois, oups, on oublie de déclarer les nouvelles migrations.
Avec ce simple test case, vous pouvez détecter le problème via les tests unitaires et ainsi vous assurez que votre CI/CD ne déploit jamais du code où les modèles ne sont plus synchronisés par rapport à la db.
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# Version 2, December 2004
#
# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
#
# Everyone is permitted to copy and distribute verbatim or modified
# copies of this license document, and changing it is allowed as long
# as the name is changed.
#
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
# 0. You just DO WHAT THE FUCK YOU WANT TO.
from django.core.management import call_command
from django.test import TestCase
class MissingMigrationTestCase(TestCase):
def test_is_a_migration_missing(self):
try:
call_command("makemigrations", "--check", "--verbosity=0")
except SystemExit:
self.fail("You have updated the models but forget to create a migration.")
Démo :
$ ./manage.py test tests.windfit.models.test_missing_migration.MissingMigrationTestCase.test_is_a_migration_missing
Found 1 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
F
======================================================================
FAIL: test_is_a_migration_missing (tests.windfit.models.test_missing_migration.MissingMigrationTestCase.test_is_a_migration_missing)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/jtremesay/projects/webfit/tests/windfit/models/test_missing_migration.py", line 8, in test_is_a_migration_missing
call_command("makemigrations", "--check", "--verbosity=0")
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jtremesay/projects/webfit/.direnv/python-3.13/lib/python3.13/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/home/jtremesay/projects/webfit/.direnv/python-3.13/lib/python3.13/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
File "/home/jtremesay/projects/webfit/.direnv/python-3.13/lib/python3.13/site-packages/django/core/management/base.py", line 107, in wrapper
res = handle_func(*args, **kwargs)
File "/home/jtremesay/projects/webfit/.direnv/python-3.13/lib/python3.13/site-packages/django/core/management/commands/makemigrations.py", line 261, in handle
sys.exit(1)
~~~~~~~~^^^
SystemExit: 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jtremesay/projects/webfit/tests/windfit/models/test_missing_migration.py", line 10, in test_is_a_migration_missing
self.fail("You have updated the models but forget to create a migration.")
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: You have updated the models but forget to create a migration.
----------------------------------------------------------------------
Ran 1 test in 0.246s
FAILED (failures=1)
Destroying test database for alias 'default'...
Commentaires : voir le flux Atom ouvrir dans le navigateur
Automatiser le nettoyage des branches Git avec un alias : Guide pratique
by Olivier Pons from Olivier Pons
Automatiser le nettoyage des branches Git avec un alias : Guide pratique
Travailler avec Git implique souvent de gérer de nombreuses branches, locales et distantes. Au fil du temps, il est courant que des branches distantes soient supprimées, laissant des branches locales obsolètes. Pour simplifier le nettoyage de ces branches, vous pouvez créer un alias Git qui automatise ce processus. Dans cet article, nous vous expliquons comment faire, ainsi que les avantages et les inconvénients de cette méthode.
Créer un alias Git pour nettoyer les branches locales
Voici la commande pour créer un alias Git nommé prune-all qui nettoie automatiquement les branches locales obsolètes :
git config --global alias.prune-all '!git fetch --prune && git branch -vv | grep ": gone]" | sed "s/^[[:space:]]*\([^[:space:]]*\).*/\1/" | xargs -r git branch -d'
Une fois cet alias configuré, vous pouvez simplement exécuter :
git prune-all
Cette commande va :
- Mettre à jour les références locales et supprimer les branches distantes supprimées (
git fetch --prune). - Identifier les branches locales qui n’ont plus de branche distante associée (
git branch -vv | grep ": gone]"). - Extraire les noms de ces branches (
sed). - Supprimer les branches locales (
xargs -r git branch -d).
Pourquoi utiliser cet alias ?
Cet alias offre plusieurs avantages :
- Gain de temps : Plus besoin d’exécuter manuellement plusieurs commandes pour nettoyer les branches locales.
- Automatisation : Le processus est entièrement automatisé, ce qui réduit les erreurs humaines.
- Propreté du dépôt : Vous gardez votre dépôt local propre et synchronisé avec le dépôt distant.
Les précautions à prendre
Bien que cet alias soit très utile, il est important de comprendre ses limites et les risques potentiels :
- Utilisation de
git branch -d: L’alias utilisegit branch -dpour supprimer les branches locales. Cela signifie que Git refusera de supprimer une branche si elle contient des commits non fusionnés. C’est une sécurité pour éviter de perdre du travail. - Risque de suppression accidentelle : Si vous utilisez
git branch -D(avec unDmajuscule) à la place de-d, les branches seront supprimées de force, même si elles contiennent des commits non fusionnés. Soyez prudent si vous modifiez l’alias pour utiliser-D. - Vérification manuelle : Avant d’exécuter l’alias, il peut être utile de vérifier les branches qui seront supprimées en exécutant :
git fetch --prune && git branch -vv | grep ": gone]"
Quand utiliser cet alias ?
Cet alias est particulièrement utile dans les situations suivantes :
- Vous travaillez sur un projet avec de nombreuses branches, et vous voulez garder votre dépôt local propre.
- Vous collaborez avec une équipe et les branches distantes sont fréquemment supprimées après fusion.
- Vous voulez automatiser une tâche répétitive pour gagner du temps.
Conclusion
Créer un alias Git pour nettoyer les branches locales est une excellente façon d’automatiser une tâche fastidieuse et de garder votre dépôt propre. En utilisant git branch -d, vous ajoutez une couche de sécurité pour éviter de perdre du travail non fusionné. Cependant, soyez conscient des risques si vous décidez d’utiliser git branch -D à la place.
N’hésitez pas à essayer cet alias et à l’adapter à vos besoins. Bonne gestion de branches !
Vous avez des questions ou des suggestions ? Laissez un commentaire ci-dessous !
De l'art avec du python
by Mindiell from AFPy discuss
C’est tout simple et vachement bien pensé ;o)
2 messages - 2 participant(e)s
Écran Noir (Black Screen) – un outil simple mais utile
by Olivier Pons from Olivier Pons
Écran Noir (Black Screen) – Un outil simple mais utile
J’ai récemment ajouté une fonctionnalité simple mais pratique à mon site : une page « Écran Noir » accessible à l’adresse olivierpons.fr/black-screen.
Qu’est-ce que c’est ?
Il s’agit simplement d’une page web complètement noire, sans aucun élément d’interface ou contenu visible. Elle a été conçue pour afficher un écran noir pur qui occupe la totalité de votre navigateur.
À quoi ça sert ?
Cette page peut être utilisée dans plusieurs situations pratiques :
- Présentations et conférences : Pour faire une pause entre deux diapositives ou temporairement masquer votre écran.
- Économie d’énergie : Un écran noir consomme moins d’énergie sur les écrans OLED/AMOLED.
- Réduction de la luminosité : Dans un environnement sombre, quand vous avez besoin d’une source de lumière minimale.
- Tests d’affichage : Pour vérifier les fuites de lumière ou la qualité du noir sur votre écran.
- Méditation ou concentration : Éliminer les distractions visuelles pendant une session de concentration.
Comment ça fonctionne ?
Techniquement, c’est une simple page HTML statique avec un fond noir qui occupe 100% de l’écran et désactive le défilement. Elle est servie directement par Nginx sans passer par WordPress.
Cette solution a été implémentée avec l’aide de Claude, l’assistant IA d’Anthropic, qui m’a guidé dans la configuration Nginx et la création du fichier HTML approprié.
N’hésitez pas à l’utiliser quand vous en avez besoin, c’est un petit outil sans prétention mais qui peut s’avérer étonnamment utile !
Comment j'ai testé FLOZz Daily Mix avec Nextcloud Music (Docker), Pytest, Nox et GitHub Actions
by FLOZz from Linuxfr.org
https://blog.flozz.fr/2025/02/23/comment-jai-teste-flozz-daily-mix-avec-nextcloud-music-docker-pytest-nox-et-github-actions/Commentaires : voir le flux Atom ouvrir dans le navigateur
Problème pour demarrer un code avec Python
by Cavok from AFPy discuss
Bonjour, j’essaie de faire un suivi d’objet avec une webcam, et je recopie un code ,cependant quand j’essaie d’installer cv2 d’open cv, je n’obtiens que des erreurs…
étant débutant en python, je pense que quelque chose m’échappe,
je vous mets ce que j’ai à ma disposition (le forum dit que je peux n’en mettre qu’un seul, aussi j’ai regroupé 2 images )
Merci pour vos conseils
38 messages - 7 participant(e)s
Tkinter et scrollbar
by vev from Linuxfr.org
Je suis content de mon code et je cherche à mettre plus d'équipes dorénavant.
Du coup, j'aurais besoin de rajouter une scrollbar sur la fenêtre principale; quelqu'un saurait faire?
https://framagit.org/vev/elo-lvgsports
"Elo LVGsports.py"
ps: pour faire marcher le code sur gnu/linux il faut changer le \ en / ligne 299
ps2: vous pouvez rajouter des joueurs dans le fichier "joueurs.json"
exemple avec 24 joueurs nommés 0001, 0002 etc..
{"0001": ["1500", "0", "0", "0", "aucun enregistrement"], "0002": ["1500", "0", "0", "0", "aucun enregistrement"], "0003": ["1500", "0", "0", "0", "aucun enregistrement"], "0004": ["1500", "0", "0", "0", "aucun enregistrement"], "0005": ["1500", "0", "0", "0", "aucun enregistrement"], "0006": ["1500", "0", "0", "0", "aucun enregistrement"], "0007": ["1500", "0", "0", "0", "aucun enregistrement"], "0008": ["1500", "0", "0", "0", "aucun enregistrement"], "0009": ["1500", "0", "0", "0", "aucun enregistrement"], "0010": ["1500", "0", "0", "0", "aucun enregistrement"], "0011": ["1500", "0", "0", "0", "aucun enregistrement"], "0012": ["1500", "0", "0", "0", "aucun enregistrement"], "0013": ["1500", "0", "0", "0", "aucun enregistrement"], "0014": ["1500", "0", "0", "0", "aucun enregistrement"], "0015": ["1500", "0", "0", "0", "aucun enregistrement"], "0016": ["1500", "0", "0", "0", "aucun enregistrement"], "0017": ["1500", "0", "0", "0", "aucun enregistrement"], "0018": ["1500", "0", "0", "0", "aucun enregistrement"], "0019": ["1500", "0", "0", "0", "aucun enregistrement"], "0020": ["1500", "0", "0", "0", "aucun enregistrement"],"0021": ["1500", "0", "0", "0", "aucun enregistrement"], "0022": ["1500", "0", "0", "0", "aucun enregistrement"], "0023": ["1500", "0", "0", "0", "aucun enregistrement"], "0024": ["1500", "0", "0", "0", "aucun enregistrement"]}
Commentaires : voir le flux Atom ouvrir dans le navigateur
Mettre en lien une scène 3D Blender et une interface GTK | wxPython grâce à UPBGE
by phroy from AFPy discuss
Bonjour,
Une petite démo sur la possibilité d’avoir une fenêtre externe (GUI) pour interagir avec une scène 3D Blender grâce au moteur de jeu UPBGE.
J’utilise GTK3+ pour GNU/Linux et wxPython pour Windows. C’est tout à fait possible avec PySide, Kyvi, … tant que c’est en Python.
Le code est sur La Forge. C’est un projet de Lecteur 3D pour l’analyse cinématique des mécanismes (que j’utilise avec mes élèves en lycée).
5 messages - 3 participant(e)s
