From b829b11791d969dcc7da0ef2a92c6400041bd78a Mon Sep 17 00:00:00 2001 From: "AzureAD\\SylvainDUVERNAY" Date: Sun, 12 Apr 2026 14:41:12 +0200 Subject: [PATCH] Trade Finance - Commit --- .gitignore | 2 + deployment/README.md | 5 ++ deployment/runbooks/vps-onboarding.md | 57 +++++++++++++++++++ deployment/vps/46.202.173.47-quickstart.md | 39 +++++++++++++ deployment/vps/vps-TradonDev.md | 3 + modules/trade_finance/constraint_type.py | 22 ++++--- .../view/constraint_type_form.xml | 4 +- .../view/constraint_type_tree.xml | 2 +- 8 files changed, 123 insertions(+), 11 deletions(-) create mode 100644 .gitignore create mode 100644 deployment/README.md create mode 100644 deployment/runbooks/vps-onboarding.md create mode 100644 deployment/vps/46.202.173.47-quickstart.md create mode 100644 deployment/vps/vps-TradonDev.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5462ba0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +deployment/vps-TradonDev_Instructions.md +deployment/vps/46.202.173.47-credentials.md diff --git a/deployment/README.md b/deployment/README.md new file mode 100644 index 0000000..3e45cc9 --- /dev/null +++ b/deployment/README.md @@ -0,0 +1,5 @@ +# Deployment Notes + +- Runbook onboarding SSH: `deployment/runbooks/vps-onboarding.md` +- VPS 46.202.173.47 credentials: `deployment/vps/46.202.173.47-credentials.md` +- VPS 46.202.173.47 quickstart: `deployment/vps/46.202.173.47-quickstart.md` diff --git a/deployment/runbooks/vps-onboarding.md b/deployment/runbooks/vps-onboarding.md new file mode 100644 index 0000000..83bcf15 --- /dev/null +++ b/deployment/runbooks/vps-onboarding.md @@ -0,0 +1,57 @@ +# Procedure - Ajouter un nouveau VPS (SSH) + +Date de reference: 2026-04-07 + +## 1) Preparation locale (Windows) + +1. Creer le dossier SSH local si absent: +`New-Item -ItemType Directory -Force $env:USERPROFILE\.ssh` + +2. Generer une cle dediee VPS: +`ssh-keygen -t ed25519 -C "vps-deploy" -f $env:USERPROFILE\.ssh\vps_deploy_key` + +3. Lire la cle publique: +`Get-Content $env:USERPROFILE\.ssh\vps_deploy_key.pub` + +## 2) Installer la cle sur le VPS + +1. Se connecter au VPS avec mot de passe (premiere fois): +`ssh @` + +2. Sur le VPS, preparer le dossier SSH: +`mkdir -p ~/.ssh` +`chmod 700 ~/.ssh` + +3. Ajouter la cle publique (une ligne complete): +`echo "ssh-ed25519 ... vps-deploy" >> ~/.ssh/authorized_keys` +`chmod 600 ~/.ssh/authorized_keys` + +## 3) Tester la connexion par cle + +Depuis Windows: +`ssh -i $env:USERPROFILE\.ssh\vps_deploy_key @` + +## 4) Test operationnel minimal + +Creer un dossier distant: +`ssh -i $env:USERPROFILE\.ssh\vps_deploy_key @ "mkdir -p ~/test_codex_deploy && ls -ld ~/test_codex_deploy"` + +## 5) Durcissement recommande + +- Desactiver l'authentification par mot de passe apres validation de la cle. +- Utiliser une cle dediee par environnement (dev/staging/prod). +- Documenter user + IP + chemin de cle dans une fiche VPS separee. + +## 6) Note importante - Contrainte sandbox Codex + +- Si une commande SSH/SCP echoue avec un message proche de: + - `Identity file ... not accessible: Permission denied` +- Cause probable: + - la session est en sandbox et ne peut pas lire la cle locale dans + `C:\Users\\.ssh\...`. +- Action: + - relancer la commande en mode `require_escalated` (hors sandbox) pour + autoriser l'acces a la cle locale. +- Exemple observe le 2026-04-07: + - creation du dossier `/root/test` sur `46.202.173.47` reussie uniquement + apres escalation. diff --git a/deployment/vps/46.202.173.47-quickstart.md b/deployment/vps/46.202.173.47-quickstart.md new file mode 100644 index 0000000..00ee9a4 --- /dev/null +++ b/deployment/vps/46.202.173.47-quickstart.md @@ -0,0 +1,39 @@ +# Commandes Rapides - VPS 46.202.173.47 + +Date de reference: 2026-04-07 + +## Cles SSH par utilisateur + +| Utilisateur | Fichier cle locale | +|---|---| +| Laurent Barontini | `$env:USERPROFILE\.ssh\vps_deploy_key` | +| Sylvain Duvernay | `$env:USERPROFILE\.ssh\id_ed25519` | + +> Les commandes ci-dessous utilisent `id_ed25519` (Sylvain Duvernay). + +## 1) Test SSH + +`ssh -i $env:USERPROFILE\.ssh\id_ed25519 @46.202.173.47 "echo ok"` + +## 2) Creer un dossier test distant + +`ssh -i $env:USERPROFILE\.ssh\id_ed25519 @46.202.173.47 "mkdir -p ~/test_codex_deploy && ls -ld ~/test_codex_deploy"` + +## 3) Lister home distant + +`ssh -i $env:USERPROFILE\.ssh\id_ed25519 @46.202.173.47 "ls -la ~"` + +## 4) Copier un fichier local vers le VPS + +`scp -i $env:USERPROFILE\.ssh\id_ed25519 .\local.txt @46.202.173.47:~/local.txt` + +## 5) Recuperer un fichier du VPS + +`scp -i $env:USERPROFILE\.ssh\id_ed25519 @46.202.173.47:~/remote.txt .\remote.txt` + +## 6) Depannage sandbox (Codex) + +- Symptome: + - `Identity file ... not accessible: Permission denied` +- Correctif: + - relancer la commande SSH/SCP en mode escalade (`require_escalated`). diff --git a/deployment/vps/vps-TradonDev.md b/deployment/vps/vps-TradonDev.md new file mode 100644 index 0000000..21a3a47 --- /dev/null +++ b/deployment/vps/vps-TradonDev.md @@ -0,0 +1,3 @@ +Serveur: 'VPS-62.72.36.116' +Alias Name: 'VPS DEV' +IP Address:'62.72.36.116' diff --git a/modules/trade_finance/constraint_type.py b/modules/trade_finance/constraint_type.py index cba3f8e..41f54fe 100644 --- a/modules/trade_finance/constraint_type.py +++ b/modules/trade_finance/constraint_type.py @@ -2,7 +2,7 @@ # this repository contains the full copyright notices and license terms. from trytond.model import ModelSQL, ModelView, fields -from trytond.pyson import Eval +from trytond.transaction import Transaction __all__ = ['ConstraintType'] @@ -13,12 +13,18 @@ class ConstraintType(ModelSQL, ModelView): _rec_name = 'name' name = fields.Char('Type', required=True, size=50) - model = fields.Many2One('ir.model', 'Table', ondelete='RESTRICT') + view_name = fields.Selection('get_views_selection', 'View') value_field = fields.Many2One('ir.model.field', 'Value Field', - ondelete='RESTRICT', - domain=[('model', '=', Eval('model'))], - depends=['model']) + ondelete='RESTRICT') label_field = fields.Many2One('ir.model.field', 'Label Field', - ondelete='RESTRICT', - domain=[('model', '=', Eval('model'))], - depends=['model']) + ondelete='RESTRICT') + + @classmethod + def get_views_selection(cls): + cursor = Transaction().connection.cursor() + cursor.execute( + "SELECT table_name FROM information_schema.views " + "WHERE table_schema = 'public' AND table_name LIKE 'vw_tf_const_%' " + "ORDER BY table_name" + ) + return [('', '')] + [(r[0], r[0]) for r in cursor.fetchall()] diff --git a/modules/trade_finance/view/constraint_type_form.xml b/modules/trade_finance/view/constraint_type_form.xml index 73c68c6..111e18d 100644 --- a/modules/trade_finance/view/constraint_type_form.xml +++ b/modules/trade_finance/view/constraint_type_form.xml @@ -2,8 +2,8 @@