IUT alternants : projet Django / Python à rendre le 12 février minuit au plus tard
by Olivier Pons from Olivier Pons
A rendre le dimanche 12 février 2023 minuit au plus tard
Projet individuel
Comment le rendre
Faites un fichier README.txt et déposez-le ici
Dans le fichier README.txt, précisez :
- le sujet choisi
- l’adresse de votre site
- un nom d’utilisateur
- un mot de passe
- (et plusieurs nom/mot de passe, s’il y a plusieurs niveaux de droits (administrateur/visiteur etc.))
- si vous avez utilisé des librairies spécifiques que je vous ai autorisées, merci de le re-préciser
Sujet
Ce que vous voulez tant que c’est dans le cadre de ce que l’on a vu. Vous avez tout le Web comme inspiration !
N’oubliez pas de me donner le nom et le mot de passe pour se connecter !
Si vous gérez des profils différents (admin / user ou autre), donnez moi les noms et mots de passe de différents profils !
Fonctionnalités obligatoires
- Nouveaux modèles
- Nouvelles relations à mettre en oeuvre : ForeignKey, ManyToMany, OneToOne
- Au moins un formulaire
- Connexion + déconnexion (vu en cours)
- Visualisation de tout dans l’interface d’administration
Sujets possibles
- Site de partage de photos
- Site de cocktails (cf ci-dessus)
- e-rated : site d’appréciations (selon des sujets, à définir)
- Ask-a-question : site où l’on pose des questions sur des sujets divers, et des gens répondent
- Write-a-book-together : site où l’on se connecte et où on peut écrire un livre à plusieurs
- Wedding-couple-site : site où l’on uploade + partage des photos de mariage + livre de commandes
- Playing-cards-collection : site où on scanne + échange des cartes (Magic the gathering)
- Polls-and-surveys : site de création de sondages (= QCM, exemple très beau ici : quipoquiz)
- Poems-generator : faire un cadavre exquis qui génère des poèmes + possibilité pour les utilisateurs de les noter / d’ajouter des mots
- The-future-of-post-it : faire un carnet de choses à faire pour les utilisateurs, qui envoie des mails de rappels de ces choses à des dates données
- Gift-ideas : un site où l’on va faire des idées de cadeaux / suggérer des idées de cadeaux + les noter (les meilleurs ressortent en premier)
- Le-bon-recoin : refaire le bon coin en plus simple
- Suggest-crawlers : site de suggestions : on clique sur un mot, il en suggère plein d’autres avec + définitions / liens de sites pour chacuns
- Tv-fans : site de présentations + notes d’émissions télé
- Faire le jeu SokoBan vu en cours, avec la possibilité de login, enregistrement. Pour les appels JSON supplémentaires, lorsque l’utilisateur choisit un tableau, s’en souvenir (= AJAX) et lorsqu’il se reconnecte, le remettre directement. Puis enregistrer son score lorsqu’il a terminé un niveau + montrer les meilleurs scores.
Pour les sujets qui suivent, ils sont possibles mais plutôt complexes et demandent plus d’investissement. Si vous êtes motivés, demandez-moi plus d’informations, je vous expliquerai les difficultés que vous allez rencontrer.
- Turn-by-turn : faire un jeu multijoueurs en tour par tour (jeu de cartes, de poker, ou de plateau etc)
- Chat-with-someone : site de chat/discussion
- A-maze-ing : site où l’on peut se ballader dans un labyrinthe et essayer d’en trouver la sortie
Sujet imposé si vous n’avez pas d’idée
Cocktails : on se connecte, on a une liste d’éléments (récupérés en JSON) disponibles, on coche ceux qui nous intéressent, on valide, c’est envoyé, et le retour en JSON affiche les cocktails qu’il est possible de faire avec ce que l’on a coché.
Ce que vous devez rendre
Idéalement
- Une URL github / ou / gitlab.
- Une URL vers un site Web (utilisez Alwaysdata, ou PythonAnywhere, par exemple)
Si vous n’avez pas le choix
Les fichiers source de votre projet
Pour favoriser votre organisation
Utilisez ce que l’on a vu en cours (Google boilerplate)
Librairies autorisées
- Bootstrap (utilisez éventuellement le boilerplate ici vu ensemble)
- jQuery
- jQueryUI
- toastr
- jQuery Mobile
- Google maps JavaScript API
- Vegas JS
- Openstreet maps JavaScript API
- Select 2 (select dynamique qui fait des appels AJAX)
- bulma.io
React autorisé
Note pour ceux qui connaissent / font / du React : la librairie est autorisée, mais il me faut le code d’origine, et non pas le code minifié / de production.
Interdiction d’utiliser une librairie JavaScript qui ne vienne pas des sites autorisés précédemment
Retard
Après la date et heure limite
Passé ce délai ce sera 1 pt par 2 heures de retard (mon robot qui analyse les mails prend en compte la date de réception du mail, tout est fait automatiquement).
Pour ceux qui essaient vraiment d’aller jusqu’à la dernière minute, toute heure entamée est comptée comme une heure complète.
Exemple : un point en moins si je le reçois un jour après à la minute près, soit date limite plus 00:01 minute.
N’oubliez pas de me donner le nom et le mot de passe pour se connecter !
Copier-coller
- Copie sur une autre personne (« je se savais pas comment implémenter telle ou telle fonctionnalité dont j’avais besoin pour aller plus loin, je l’ai copiée sur un autre ») :
- si la personne est clairement nommée : note pour la fonctionnalité divisée par 2 (uniquement la moitié du travail a été faite) ;
- 0 aux deux personnes sinon ;
- Si je m’aperçois que vous avez bêtement copié collé des sources Internet, je vous convoquerai pour vous demander de m’expliquer la fonctionnalité, et :
- si vous ne savez pas m’expliquer le code alors 0 ;
- si vous savez m’expliquer tout le code alors votre note totale sera divisée par vous + le nombre de contributeurs à ce projet, ce qui se rapprochera certainement de 0 aussi.
Voici un exemple de ce que vous pouvez faire, si vous choisissez le projet cocktails.
PDFs
Nombres décimaux et Python
by ascendances from ascendances
Python, comme de nombreux autres langages ainsi que des implémentations matérielles, suit la norme IEEE 754 pour manipuler les nombres à virgule (le type float en Python). Cette norme définit les tailles possibles de mémoire allouée pour contenir le nombre. La taille étant fixe, certains nombres ne sont pas représentables et la valeur enregistrée peut être légèrement erronée.
Cette situation n’est donc pas spécifique à Python. L’écart entre la valeur saisie et la valeur en mémoire est visible avec un interpréteur Python :
$ python3 -q >>> 1.9999999999999943e+71 1.9999999999999942e+71
ou un calcul qui devrait valoir 0 si les mathématiques étaient une science exacte :
$ python3 -q >>> 0.1 + 0.1 + 0.1 - 0.3 5.551115123125783e-17
Ce type d’erreur ne se rencontre pas uniquement dans les domaines spatial ou scientifique. Par exemple, des calculs de TVA et TTC peuvent produire des erreurs visibles pour l’utilisateur.
Pour éviter ces erreurs, il est possible d’utiliser la bibliothèque decimal incluse dans la bibliothèque standard :
$ python3 -q
>>> from decimal import Decimal
>>> decimal.Decimal('1.9999999999999943e+71')
Decimal('1.9999999999999943E+71')
>>> Decimal(1) / Decimal(10) + \
... Decimal(1) / Decimal(10) + \
... Decimal(1) / Decimal(10) - \
... Decimal(3) / Decimal(10)
Decimal('0.0')
Un autre moyen est de faire des calculs en n’utilisant que des entiers et faire des conversions au dernier moment. Dans le cas de la TVA, cela signifie de ne travailler qu’en centimes et de ne convertir en euro que lors de l’affichage à l’utilisateur (avec l’arrondi adapté, limité à deux décimales).
Références
- pour plus de détails sur IEEE 754, la page wikipedia francophone
- l’exemple de calcul provient de la documentation du module
decimal - l’article ayant inspiré cet article
Dernières contributions à des logiciels libres par l'équipe Yaal Coop (automne 2022)
by Éloi Rivard <eloi@yaal.coop> from Yaal
pytest-httpserver
Serveur HTTP pour pytest
- Exemples de code pour la connection HTTPS
- Fixtures de serveurs n'écoutant exclusivement qu'en IPV6 ou en IPV4
- Implémentation de
BaseHTTPServer.__repr__
dnserver
Serveur DNS simpliste pour le développement
- Exemples d'enregistrements SRV
- Mise à jour à chaud des zones
- Initialisation de la classe DNSServer sans zone
canaille
Serveur OpenID Connect simpliste, basé sur OpenLDAP
- Support basique de WebFinger
- Implémentation de l'enregistrement dynamique des clients
- Support de Python 3.11
- Corrections sur l'intégration continue de Gitlab
- Instructions de configuration d'apparmor dans la documentation
- Divers réusinages
- Correction du traîtement de
software_statementdu RFC7591 - Génération dynamique des métadonnées OAuth2/OIDC du serveur
- Correction de la désactivation du pré-consentement des clients
- L'option de configuration
FROM_ADDRdevient facultative - L'option de configuration
JWT.ISSdevient facultative - Les utilisateurs peuvent choisir leur langage favori
- Rajout d'un lien vers le dépôt dans la documentation
- Les utilisateurs peuvent choisir leur nom d'affichage
- Mise à jour vers authlib 1.2
- Implémentation du point d'accès de modification des clients RFC7592
- Correction du bouton de suppression des groupes
- Correction du bug généré par des requêtes POST sur la page d'administration des clients
ZEO
Serveur de base de données pour ZODB
nextcloud-oidc-login
Plugin OpenID Connect pour nextcloud
- Mise à jour vers OpenID-Connect-PHP 0.9.10
- Documentation pour le paramètre
oidc_login_disable_registration - Amélioration de la documentation dans le README
authlib
Bibliothèque python de gestion des identités et des accès
- Implémentation de RFC7592 permettant la configuration dynamique de clients OpenID Connect
- Support de Python 3.11
- Suppression des références à une fonction inutilisée
aioimaplib
Bibliothèque python asyncio IMAP4rev1
MessagePack
Format de sérialisation binaire efficace (bibliothèque python)
simple-svelte-autocomplete
Composant svelte de suggestion d'éléments dans une liste déroulante
dnspython
outils DNS pour Python
- Nettoyage de code : test et commentaire obsolètes
Last FOSS contributions from the Yaal Coop team (automn 2022)
by Éloi Rivard <eloi@yaal.coop> from Yaal
pytest-httpserver
Http server for pytest to test http clients
- HTTPS client code samples
- IPV6-only and IPV4-only server fixtures
BaseHTTPServer.__repr__implementation
dnserver
Simple development DNS server
canaille
Simplistic OpenID Connect provider over OpenLDAP
- Basic WebFinger support
- Dynamic Client Registration support
- Python 3.11 support
- Gitlab CI fixes
- Apparmor configuration instructions
- Miscellaneous refactoring
- Fixed RFC7591
software_statementclaim handling - Dynamic OAuth2/OIDC metadata generation
- Fixed client preconsent disabling
FROM_ADDRconfiguration parameter is optionalJWT.ISSconfiguration parameter is optional- Users can chose their favorite language
- Added a link to the repository in the documentation
- Users can choose their favourite display name
- Upgrade to authlib 1.2
- Implemented RFC7592 OAuth Client Registration Management
- Fixed the group deletion button
- Fixed a bug related to POST requests on the client administration pages
ZEO
ZODB Client-Server framework
nextcloud-oidc-login
Nextcloud login via a single OpenID Connect 1.0 provider
- Updated OpenID-Connect-PHP to 0.9.10
oidc_login_disable_registrationparameter documentation- README documentation improvements
authlib
Identity and Access management library for python
- Implemented RFC7592 Dynamic Client Registration Management Protocol
- Python 3.11 support
- Unused method removal
aioimaplib
Python asyncio IMAP4rev1 client library
MessagePack
Efficient binary serialization format (python implementation)
simple-svelte-autocomplete
Simple Autocomplete / typeahead component for Svelte
dnspython
DNS toolkit for Python
PyConFR 23 - La conférence francophone de Python est de retour en 2023
by Melcore from Zeste de savoir - Billets
Rendez-vous du 16 au 19 février 2023PyConFR 2023 - Conférences et ateliers autour de Python
by Melcore from Human coders
Exposition organisé·e par l’Afpy l’Université Bordeaux-Talence Conférence annuelle des pythonistes francophones 🐍 🇫🇷 https://pycon.fr/2023/ Du jeudi 16 février au dimanche 19 février 2023

Commentaires
L'article PyConFR 2023 - Conférences et ateliers autour de Python a été posté dans la catégorie Python de Human Coders News
Sortie de Python 3.11
by entwanne from Zeste de savoir - Articles
Il court il court, le serpentUn zeste de Python
by entwanne from Zeste de savoir - Tutoriels
Débuter avec PythonVérification de la syntaxe de certains fichiers de configuration
by ascendances from ascendances
Certains logiciels fournissent aussi la possibilité de vérifier la syntaxe des fichiers de configuration qu’ils utilisent. Cela permet d’éviter des erreurs ou interruptions de service dûes à une erreur dans le fichier. Voici trois exemples :
1. Apache
Apache2 fournit apachectl. Si la syntaxe des sites actifs est correcte, la sortie sera :
# apachectl -t Syntax OK
Avec un fichier de configuration incorrect nommé conte.conf contenant
<VirtualHost a.oree.du.bois:80>
ServerName le.grand.mechant.loup.example
CustomLog /il/etait/une/fois combined
RencontreChaperonRouge on
</VirtualHost>
la sortie sera
# apachectl -t [Sun Sep 18 22:18:32.305781 2022] [core:error] [pid 14382:tid 139846731306112] (EAI 2)Name or service not known: AH00547: Could not resolve host name a.oree.du.bois -- ignoring! AH00526: Syntax error on line 4 of /etc/apache2/sites-enabled/conte.conf: Invalid command 'RencontreChaperonRouge', perhaps misspelled or defined by a module not included in the server configuration Action '-t' failed. The Apache error log may have more information.
Attention, les vérifications d’apachectl ne sont pas exhaustives et une erreur peut encore survenir lors du redémarrage du serveur Apache. Ici le chemin vers le fichier n’existe pas mais n’a pas été détecté. Si apachectl -t détecte une erreur, il y a un problème. S’il n’en détecte pas, il n’y a peut-être pas de problème.
(test réalisé avec Apache/2.4.38)
2. OpenSSH
La commande sshd -t exécutée avec des droits root permet de vérifier la validité de la configuration du serveur openSSH (le fichier /etc/ssh/sshd_config sous Debian).
Si le fichier est correct, alors rien n’est affiché et la valeur de sortie est 0.
Avec un fichier sshd_config commençant par :
PetitPotDeBeurre on Tartiflette off
La sortie sera :
# sshd -t [sudo] password for stephane: /etc/ssh/sshd_config: line 1: Bad configuration option: PetitPotDeBeurre /etc/ssh/sshd_config: line 2: Bad configuration option: Tartiflette /etc/ssh/sshd_config: terminating, 2 bad configuration options
avec une valeur de sortie de 255.
(test réalisé avec OpenSSH_7.9p1, OpenSSL 1.1.1d)
3. Sudo
Si une erreur est faite dans le fichier /etc/sudoers qui empêche sa relecture par l’exécutable sudo, il devient impossible d’utiliser la commande sudo. visudo permet d’éviter ce désagrément.
Supposons que l’utilisateur ait ajouté à la ligne 12,
Hello MereGrand
puis enregistre le fichier :
% sudo visudo /etc/sudoers:12:25: erreur de syntaxe Hello MereGrand ^ Et maintenant ?
Lorsque le fichier est incorrect, trois choix sont possibles :
- remodifier le fichier
- quitter sans enregistrer
- quitter en enregistrant (une déception pourrait arriver peu de temps après)
L’éditeur par défaut utilisé par visudo est vi. Cela est modifiable en paramétrant des variables d’environnement comme $EDITOR. (En réalité, c’est plus compliqué: il y a deux autres variables d’environnement possibles et deux variables de configuration de sudo permettent de modifier de comportement des éditeurs par défaut. man sudo si vous pensez que cette complexité a un intérêt dans votre cas.)
(testé avec visudo version 1.9.5p2, version de la grammaire de visudo : 48)
Faim de loup, fin d’article
Ces outils sont pratiques pour éviter de mettre un service en panne ou s’enfermer dehors. Ils sont complémentaires de vérificateur générique de syntaxe JSON, YAML, etc.