MakeMake The Dwarf Planet is a feed agregator.

CDI Dev Odoo / Python - Coopérative Commown à Strasbourg

by Adrien-Commown from Linuxfr.org

Notre coopérative :

Commown est une coopérative (SCIC) qui soutient le mouvement naissant de l’électronique responsable par la location longue durée d’appareils électroniques aussi éthiques et écologiques que possible.

Plus qu’une simple coopérative de location, Commown :

  • Fait du lobbying d’intérêt général aux côtés d’autres associations du domaine comme Halte à l’Obsolescence Programmée, voir cet article;
  • Soutient les producteurs responsables : achats, soutien de marketing, relai de services, financement de R&D ;
  • Crée et gère des biens communs comme notre logiciel libre de gestion des locations de longue durée publié sur notre GitHub
  • Sensibilise ses bénéficiaires à l’emprise des GAFAM et au respect de la vie privée sur internet et dans la téléphonie mobile.

Vos missions :

Au siège de Commown à Strasbourg, vous rejoindrez l’équipe Outils informatiques et vous contribuerez :

  • Au développement du système de gestion et à l’amélioration des outils internes
  • À la consolidation des systèmes en production et à la sûreté des données

Ainsi, vous pourrez travailler sur :

  • Le développement et la maintenance du logiciel de gestion de toute l’activité de Commown : l’ERP Open Source Odoo, version communautaire, muni de nombreux modules développés et maintenus par l’OCA (Odoo Community Association)
  • Intégration de modules OCA pour nos besoins fonctionnels par encore ou mal couverts : assemblage, logistique, réparation…
  • Développement de nouveaux modules pour nos besoins spécifiques (ergonomie, interaction avec d’autres services, extension de nos activités…)
  • Maintenance fonctionnelle et corrective de nos modules actuels
  • Migration vers les nouvelles versions Odoo (tous les 3 ans environ)
  • La spécification des besoins internes (ceux de nos équipes) ou externes (ceux des bénéficiaires de nos services). Ceci requiert l’apprentissage de domaines fonctionnels extrêmement variés, de la vente en ligne à la logistique en passant par la comptabilité, le support, la gestion de parcs d’appareils etc.
  • La maintenance corrective et évolutive des outils liés à Odoo : CI, serveurs de test et de production, outils de sauvegarde, outils de déploiement, etc.
  • La gestion de notre intranet et des outils informatiques mis à disposition de nos équipes (gestionnaire de mot de passe, nextcloud, etc.), en fonction de votre expérience acquise au sein de Commown et de vos appétences

Nous recherchons une personne qui :

  • À un intérêt marqué pour ce type de projet : écologique, éthique, coopératif, bien commun (logiciel libre)
  • S’intègre facilement dans une équipe et communique bien avec les autres
  • À une bonne capacité d’abstraction et de modélisation de connaissances variées
  • Aime comprendre de manière approfondie les sujets techniques
  • Favorise la logique et la connaissance dans la résolution de problèmes
  • Aime aller au bout des choses : rendre des travaux terminés, fonctionnels, bien testés et documentés, pensés pour la maintenance future
  • Sait apprendre en permanence, par la veille, la lecture, la réflexion méthodologique
  • Cherche un emploi en phase avec ses valeurs

Compétences idéales

  • Bonne connaissance du fonctionnement du web (protocoles, back et front)
  • Connaissance théorique et pratique du langage python et de sa librairie standard
  • Pratique fluide de git ou mercurial dans un contexte de travail collectif
  • Maîtrise élémentaire du shell posix
  • Notions et un peu d’expérience pratique de l’administration-système sous Linux
  • Idéalement expérience d’interaction avec des communautés du logiciel libre

Modalités

NB 1 : Nous avons conscience que le père Noël n’existe pas, si vous n’avez pas toutes les compétences de notre liste, mais que notre projet vous motive, postulez !

NB 2 : Nous mettons tout en place pour que le monde de l’électronique ne reste pas majoritairement masculin et que les femmes se sentent à l’aise chez nous.

NB 3 : Lieux de travail : Strasbourg, full distanciel possible à terme

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Retours sur les meetups en mixité choisie

by grewn0uille from AFPy discuss

Au cours de la saison de meetups dernière, on avait organisé des meetups en mixité choisie sur Lyon.

@tut-tuuut et Morgane, qui ont participé à l’orga et aux évènèments, ont écrit un article pour le calendrier de l’avant de Paris Web pour en parler : Rencontres en non-mixité choisie : retour d’expérience et mise en perspective — 24 jours de web

2 messages - 2 participant(e)s

Lire le sujet en entier

Lire la suite…

Livrer un environnement Python

by gUI from Linuxfr.org

Bonjour,

Si je développe un truc en Python, je peux faire les choses proprement en me faisant un environnement virtuel (j'aime bcp venv). Ensuite avec un pip freeze j'ai ma liste des packages.

Bon, mais si quelqu'un désire utiliser mon travail, il va devoir se recréer un environnement virtuel, y faire son pip install, le sourcer puis ensuite exécuter mon code.

Est-ce qu'il existerait un truc plus immédiat, à la appimage, où tu peux tout empaqueter prêt à l'emploi ?

Merci !

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

uv : guide complet du nouveau gestionnaire de packages Python rapide et ambitieux

by Camille Roux from Human coders

Découvrez pourquoi et comment adopter uv, le gestionnaire de packages révolutionnaire qui transforme l’écosystème Python. Ce guide détaillé vous présente ses fonctionnalités innovantes, ses avantages, et ses usages pour optimiser vos projets Python.


Commentaires
L'article uv : guide complet du nouveau gestionnaire de packages Python rapide et ambitieux a été posté dans la catégorie Python de Human Coders News

Lire la suite…

Boîte à outils SCIM en Python

by Éloi Rivard <eloi@yaal.coop> from Yaal

Nos copains d’IndieHosters proposent à leurs utilisateurs un catalogue de services étoffé. Leur métier est de gérer toute l’infrastructure autour de ces services, et un des enjeux importants du métier est la gestion des utilisateurs.

Lorsqu’un nouveau compte utilisateur est créé auprès d’un serveur d’identité, généralement le jeton d'accès que l’utilisateur transmet aux services contient les informations nécessaires à la création du compte utilisateur auprès de ces services. Prenons un exemple avec le serveur d’identité Keycloak et le service d’hébergement de fichiers Nextcloud :

  • je crée mon compte utilisateur auprès de Keycloak (par exemple, en remplissant un formulaire d’inscription),
  • je tente d’accéder à Nextcloud, mais je n’ai pas de session ouverte, je suis donc redirigé vers Keycloak,
  • je m’identifie, Keycloak génère un jeton contenant mes informations personnelles,
  • ce jeton est transmis à Nextcloud,
  • Nextcloud lit mes informations personnelles dans le jeton. Si mon compte utilisateur n’existait pas sur Nextcloud, alors il est créé. Sinon, mes informations personnelles sont mises à jour dans Nextcloud.
  • Nextcloud m’autorise enfin l’accès aux fichiers.

C’est très pratique, mais ça ne couvre pas tous les cas de figure :

  • Comment faire pour partager un document avec un utilisateur qui ne s’est jamais encore connecté à un service ? Pour le moment il est nécessaire d’attendre la première connexion d’un utilisateur avant que son compte ne soit créé sur Nextcloud.
  • Un utilisateur édite une information le concernant sur le serveur d’identité, par exemple son nom d’affichage. Comment faire pour diffuser l'information instantanément auprès des services (par exemple un compte mail ou un chat qui identifie l'utilisateur par ce même Keycloak) ?Actuellement, les mises à jour d’informations personnelles ne sont répandues sur Nextcloud que lorsque les utilisateurs s’y connectent.
  • Comment supprimer ou désactiver un compte utilisateur auprès de tous les services ?

Pour effectuer toutes ces opérations, on utilise un protocole de provisionnement. Provisionner consiste grossièrement à diffuser des modification sur un objet entre plusieurs services. De nos jours, le protocole de provisionnement souvent utilisé dans l’industrie est SCIM. IndieHosters a préparé une page web d’explications sur le protocole que l’on vous invite à consulter.

IndieHosters a obtenu un financement auprès de NLNet pour développer SCIM dans l’écosystème des outils qu’ils utilisent, et ont fait appel à Yaal Coop pour une partie des travaux. Nous avions plusieurs mission :

  • Fournir un outil en ligne de commandes qui permette de communiquer avec un serveur SCIM, et de tester la conformité d’un serveur SCIM vis-à-vis de la norme. Ce projet a donné lieu à plusieurs sous-projets:
    • scim2-models, une bibliothèque Python de sérialisation et validation de ressources SCIM. Elle est basée sur Pydantic et fournit des objets natifs qui représentent des ressources SCIM et qui implémente une partie de la norme. Elle a pour but de servir de brique de base à des serveurs ou des clients SCIM.
    • scim2-client, une bibliothèque Python de fabrication et d’analyse pythonique de requêtes SCIM. Elle s’appuie sur scim2-models et sur httpx pour créer des requêtes SCIM, et analyser les réponses des serveurs.
    • scim2-server, un prototype de serveur SCIM développé par CONTACT Software utilisant scim2-models, et co-maintenu par Yaal Coop.
    • scim2-tester, une bibliothèque Python de test de conformité aux normes SCIM. Elle s’appuie sur scim2-client pour envoyer diverses requêtes à un serveur SCIM et observer son comportement en réponse.
    • scim2-cli, un outil en ligne de commandes qui s’appuie sur scim2-client et scim2-tester et qui fournit une interface pour effectuer des opérations simples sur un serveur SCIM.
  • Proposer l’adoption de SCIM comme protocole officiel de provisionnement dans le protocole de messagerie instantanée Matrix. Nous avons rédigé une proposition d’évolution de la norme (MSC4098), pour lesquelles les discussions sont en cours. À l’heure actuelle la proposition est toujours à l’étude, mais le principal argument contre est que le provisionnement est hors du périmètre fonctionnel que cherche à couvrir Matrix.
  • Conjointement à la proposition d’évolution de la norme, nous avons proposé une implémentation de SCIM dans synapse, le serveur Matrix le plus utilisé actuellement. L’implémentation se base sur scim2-models.

SCIM nous apparaît comme une norme d'avenir pour le provisionnement et espérons que les bibliothèques que nous avons construites aideront son développement, grâce à de nouveaux outils Python et, à terme, sans ce limiter à ce langage. Le provisionnement de services est une technique utile aux petit fournisseurs se services en ligne, comme ceux du collectif CHATONS. Ils font généralement fonctionner ensemble des services hétérogènes, et des normes telles que SCIM aident ces services à communiquer entre eux. Nous espérons qu'à terme nos travaux permettront d'avoir un impact sur la qualité de service de ces petits fournisseurs, et ainsi aider leur développement.

Lire la suite…

Python SCIM toolbox

by Éloi Rivard <eloi@yaal.coop> from Yaal

Our friends from IndieHosters provide a rich catalog of services to their users. They are specialized in infrastructure management of those services, and one of the major aspects of their work is the management of user accounts.

When a new user account is created against an identity server, most of the time the access token that the users provide to the services contains information about the user. This information is generally enough to create the users account on the service provider. Let us study an example with the Keycloak identity provider and a the Nextcloud file management service.

  • the users create their account against Keycloak (for instance by filling a subscription form),
  • they try to access Nextcloud, but they have no open session, so they get redirected to Keycloak,
  • they log in, Keycloak generates a token containing their personal information,
  • this token is forwarded to Nextcloud,
  • Nextcloud reads the personal information from the token. If the user account does not exist on Nextcloud, then it is created. Otherwise, the personal information is updated on Nextcloud.
  • Nextcloud finally gives access to the user.

This is convenient, but this does not cover all the use cases:

  • How to share a document with users that never logged in yet? For the moment it is needed to wait for a first user login on Nextcloud before its Nextcloud account is created.
  • Users edit their personal information on the identity server (for instance, their display name). How to instantly spread the modification on all the services? Currently, personal information are only updated when users log-in anew on the services.
  • How to delete or deactivate user accounts on all the services, once they have been created?

To achieve all those operations, it is needed to use a provisioning protocol. Provisioning is the action of forwarding objects (often user and groups) modifications between several services. These days, the industry standard is SCIM. IndieHosters started a nice presentation webpage about SCIM.

They obtained a NLNet grant to develop SCIM in the ecosystem of their tools, and hired Yaal Coop for a part of the project. We had several missions:

  • Provide a command line interface that would allow to easily communicate with a SCIM server, and test the conformity of a SCIM server towards the specifications. This project gave birth to several sub-projects:
    • scim2-models, a SCIM resources validation and serialization Python library. It relies on Pydantic, provides native objects that implement the SCIM specification. It aims to be used as a building block for SCIM server and client applications.
    • scim2-client, a Python library that creates and validates SCIM network requests. It uses httpx to handle the network part.
    • scim2-server, a SCIM server prototype that uses scim2-models developped by CONTACT Software, and co-maintained by Yaal Coop.
    • scim2-tester, a SCIM compliance testing Python library. It uses scim2-client to send various requests to a SCIM server, and check if it behaves as expected by the SCIM specifications.
    • scim2-cli, a command line utility that uses scim2-client and scim2-tester, and provides an interface to perform various operations on SCIM servers.
  • Discuss the adoption of SCIM as the official provisioning protocol for the instant messaging protocol Matrix. We redacted an evolution request for the protocol (MSC4098), for which discussions are still opened. To this day the proposition has not been adopted, the main argument against is that provisioning is out of scope of the Matrix protocol.
  • In parallel, we developed a SCIM implementation in synapse, the most famous Matrix server currently. The implementation uses scim2-models.

SCIM appears to us a future standard for provisioning and we hope that the libraries developed will help its development, thanks to new Python tools and eventually without limiting this language. Provisioning is an useful technique for alternative online service providers, such as the ones in the CHATONS collective. They deploy heterogeneous sets of services, and specifications such as SCIM help those services to communicate. We hope that in the long run our work will have an impact on the quality of service of those little providers, and help them grow.

Lire la suite…

Surveiller si fichier modifié par d'autres programmes

by bul from AFPy discuss

bonjour à tou[te]s

petit souci dans le script :

#!/usr/bin/python -Bu
# -*- coding: utf-8 -*-
import gi,sys
gi.require_version("Gtk","4.0")
from gi.repository import Gtk,Gio
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
class call():
	def back(a,b,c,evt,*_):
		print("*"+str(evt)+"*")
class ecran(Gtk.ApplicationWindow):
	def __init__(self,app,*args,**kwargs):
		Gtk.ApplicationWindow.__init__(self,application=app)
		btn=Gtk.Button(label=	"surveillance de "+sys.argv[0]+
								"\ncliquer pour quitter")
		btn.connect("clicked",self.quitter)
		self.set_child(btn)
		self.present()
		**#======== *mis ici, ça ne donne rien* ========**
**		fich=Gio.File.new_for_path(sys.argv[0])**
**		mon=fich.monitor_file(Gio.FileMonitorFlags.NONE,None)**
**		mon.connect("changed",call.back)**
**		#================**
	def quitter(self,*_):
		self.close()
app=Gtk.Application()
app.connect('activate',ecran)
**"""**
**#======== *mis ici, ça baigne* ========**
**fich=Gio.File.new_for_path(sys.argv[0])**
**mon=fich.monitor_file(Gio.FileMonitorFlags.NONE,None)**
**mon.connect("changed",call.back)**
**#================**
**"""**
app.run(sys.argv)

je tente de surveiller si un fichier est modifié par un autre programme
( pour le test, le script lui-même )
si je place le contrôle dans le corps du programme,
aucune réaction, alors qu’au lancement, ça marche
dans mon application j’ai besoin de mettre cette
surveillance “en dynamique”, au fur et à mesure
on peut faire comment ?
merci d’avance

6 messages - 2 participant(e)s

Lire le sujet en entier

Lire la suite…

Stage - Développement web (Gap)

by camille_monchicourt from AFPy discuss

Le Parc national des Écrins recherche un·e stagiaire en développement web (Python, #Flask, django, #Javascript, #Typescript, #PostgreSQL, #PostGIS, #OpenSource : [STAGE] Développement web (Python, javascript, PostGIS) | Parc national des Ecrins

Celui-ci fera une analyse comparative des différentes solutions technologiques et travaillera ensuite sur la modernisation et l’homogénéisation des outils d’inventaire du patrimoine bâti et géologique, ainsi que le suivi des constats de prédation.

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Sur Lyon − Meetup le 19 décembre

by grewn0uille from AFPy discuss

Hello tout le monde,

Meetup de fin d’année le jeudi 19 décembre, dans les locaux de Lowit (métro Part-Dieu) !

Comme l’an dernier, on vous propose un format Lightning Talks :christmas_tree:

Si vous souhaitez parler de quelque chose, d’une bibliothèque, d’un outil, d’un projet… N’hésitez pas à me contacter pour que je rajoute sur la liste des sujets :slight_smile:

Lightning Talks de Noël 🎄

2024-12-19 19:00 (Europe/Paris) → 2024-12-19 21:30 (Europe/Paris)

4 messages - 2 participant(e)s

Lire le sujet en entier

Lire la suite…