From 9eeeddaf741534acec17f2ab61bad328f089f6fc Mon Sep 17 00:00:00 2001 From: Milton-Procel <150056843+FranciscoProcel@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:28:52 -0500 Subject: [PATCH] [test new yalm] --- .github/workflows/test_and_curl.yaml | 2 +- .gitignore | 6 ++ .vscode/settings.json | 4 + trescloud_github_release/__init__.py | 3 - trescloud_github_release/__manifest__.py | 16 ---- .../controllers/__init__.py | 2 - .../controllers/webhook.py | 75 ------------------- trescloud_github_release/models/__init__.py | 2 - .../models/github_webhook_log.py | 26 ------- .../security/ir.model.access.csv | 3 - .../security/security.xml | 7 -- .../views/github_webhook_log_views.xml | 75 ------------------- 12 files changed, 11 insertions(+), 210 deletions(-) create mode 100755 .gitignore create mode 100644 .vscode/settings.json delete mode 100644 trescloud_github_release/__init__.py delete mode 100644 trescloud_github_release/__manifest__.py delete mode 100644 trescloud_github_release/controllers/__init__.py delete mode 100644 trescloud_github_release/controllers/webhook.py delete mode 100644 trescloud_github_release/models/__init__.py delete mode 100644 trescloud_github_release/models/github_webhook_log.py delete mode 100644 trescloud_github_release/security/ir.model.access.csv delete mode 100644 trescloud_github_release/security/security.xml delete mode 100644 trescloud_github_release/views/github_webhook_log_views.xml diff --git a/.github/workflows/test_and_curl.yaml b/.github/workflows/test_and_curl.yaml index 69d10f4..b697310 100644 --- a/.github/workflows/test_and_curl.yaml +++ b/.github/workflows/test_and_curl.yaml @@ -44,7 +44,7 @@ jobs: - name: POST payload to your API run: | - curl -sS -X POST 'https://tu-api.example.com/hooks/github-release' \ + curl -sS -X POST 'https://cacell16-pruebas-2025-12-08-26348625.dev.odoo.com/github/release-webhook' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer token_de_prueba_123' \ --data-binary @payload.json \ diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..0fc6cc7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.project +*.pydevproject +*.settings +*.pyc +/.idea/ +/.classpath diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..13bb971 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "xml.symbols.enabled": false, + "python.languageServer": "None" +} \ No newline at end of file diff --git a/trescloud_github_release/__init__.py b/trescloud_github_release/__init__.py deleted file mode 100644 index 724cd13..0000000 --- a/trescloud_github_release/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- coding: utf-8 -*- -from . import models -from . import controllers \ No newline at end of file diff --git a/trescloud_github_release/__manifest__.py b/trescloud_github_release/__manifest__.py deleted file mode 100644 index 62b3a67..0000000 --- a/trescloud_github_release/__manifest__.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -{ - "name": "Trescloud - GitHub Release Webhook", - "summary": "Endpoint para recibir webhook de GitHub y registrar payloads", - "version": "16.0.1.0.0", - "author": "Trescloud", - "license": "LGPL-3", - "depends": ["base"], - "data": [ - "security/security.xml", - "security/ir.model.access.csv", - "views/github_webhook_log_views.xml", - ], - "application": False, - "installable": True, -} \ No newline at end of file diff --git a/trescloud_github_release/controllers/__init__.py b/trescloud_github_release/controllers/__init__.py deleted file mode 100644 index daeb001..0000000 --- a/trescloud_github_release/controllers/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# -*- coding: utf-8 -*- -from . import webhook \ No newline at end of file diff --git a/trescloud_github_release/controllers/webhook.py b/trescloud_github_release/controllers/webhook.py deleted file mode 100644 index e957709..0000000 --- a/trescloud_github_release/controllers/webhook.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -import json -from datetime import datetime -from odoo import http -from odoo.http import request - -class GithubReleaseWebhookController(http.Controller): - - @http.route('/github/release-webhook', type='http', auth='public', methods=['POST'], csrf=False) - def github_release_webhook(self, **kwargs): - """Endpoint mínimo para recibir el JSON del workflow de GitHub. - Crea un registro en github.webhook.log con los campos más útiles. - """ - # Lee el cuerpo como bytes y parsea JSON - try: - raw = request.httprequest.data - payload = json.loads(raw.decode('utf-8')) if raw else (request.jsonrequest or {}) - except Exception: - payload = request.jsonrequest or {} - raw = json.dumps(payload).encode("utf-8") - - # Extrae campos esperados (según tu workflow) - repo = payload.get("repository") - repo_owner = payload.get("repo_owner") - pr_number = payload.get("pr_number") - title = payload.get("title") - body = payload.get("body") - html_url = payload.get("html_url") - state = payload.get("state") - merged = payload.get("merged") - merged_at = payload.get("merged_at") - merged_by = payload.get("merged_by") - base_branch = payload.get("base_branch") - head_branch = payload.get("head_branch") - merge_commit_sha = payload.get("merge_commit_sha") - labels = payload.get("labels") - assignees = payload.get("assignees") - requested_reviewers = payload.get("requested_reviewers") - - # Convert merged_at si viene como string ISO - merged_at_dt = False - if isinstance(merged_at, str): - try: - merged_at_dt = datetime.fromisoformat(merged_at.replace('Z', '+00:00')).replace(tzinfo=None) - except Exception: - merged_at_dt = False - - # Crea el registro - rec = request.env["github.webhook.log"].sudo().create({ - "name": title, - "repository": repo, - "repo_owner": repo_owner, - "pr_number": pr_number or 0, - "html_url": html_url, - "state": state, - "merged": bool(merged), - "merged_at": merged_at_dt or False, - "merged_by": merged_by, - "base_branch": base_branch, - "head_branch": head_branch, - "merge_commit_sha": merge_commit_sha, - "labels": json.dumps(labels, ensure_ascii=False) if labels is not None else False, - "assignees": json.dumps(assignees, ensure_ascii=False) if assignees is not None else False, - "requested_reviewers": json.dumps(requested_reviewers, ensure_ascii=False) if requested_reviewers is not None else False, - "body": body, - "raw_payload": raw.decode('utf-8') if isinstance(raw, (bytes, bytearray)) else json.dumps(payload, ensure_ascii=False), - }) - - # Devuelve un JSON mínimo - headers = [('Content-Type', 'application/json; charset=utf-8')] - return request.make_response( - json.dumps({"ok": True, "id": rec.id}), - headers=headers, - status=200, - ) \ No newline at end of file diff --git a/trescloud_github_release/models/__init__.py b/trescloud_github_release/models/__init__.py deleted file mode 100644 index fa26015..0000000 --- a/trescloud_github_release/models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# -*- coding: utf-8 -*- -from . import github_webhook_log \ No newline at end of file diff --git a/trescloud_github_release/models/github_webhook_log.py b/trescloud_github_release/models/github_webhook_log.py deleted file mode 100644 index 2199bd2..0000000 --- a/trescloud_github_release/models/github_webhook_log.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from odoo import fields, models - -class GithubWebhookLog(models.Model): - _name = "github.webhook.log" - _description = "GitHub Webhook Log" - _order = "create_date desc" - - name = fields.Char("Título", index=True) - repository = fields.Char("Repositorio") - repo_owner = fields.Char("Owner") - pr_number = fields.Integer("PR #") - html_url = fields.Char("URL del PR") - state = fields.Char("Estado") - merged = fields.Boolean("Merged") - merged_at = fields.Datetime("Merged At", help="Fecha/hora enviada por GitHub") - merged_by = fields.Char("Merged by") - base_branch = fields.Char("Base branch") - head_branch = fields.Char("Head branch") - merge_commit_sha = fields.Char("Merge commit SHA") - labels = fields.Char("Labels (JSON)") - assignees = fields.Char("Assignees (JSON)") - requested_reviewers = fields.Char("Requested Reviewers (JSON)") - - body = fields.Text("Descripción (PR body)") - raw_payload = fields.Text("Payload crudo (JSON)") \ No newline at end of file diff --git a/trescloud_github_release/security/ir.model.access.csv b/trescloud_github_release/security/ir.model.access.csv deleted file mode 100644 index 0b182f3..0000000 --- a/trescloud_github_release/security/ir.model.access.csv +++ /dev/null @@ -1,3 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_github_webhook_log_user,access_github_webhook_log_user,model_github_webhook_log,base.group_system,1,1,1,1 -access_github_webhook_log_readonly,access_github_webhook_log_readonly,model_github_webhook_log,trescloud_github_release.group_github_webhook_user,1,0,0,0 \ No newline at end of file diff --git a/trescloud_github_release/security/security.xml b/trescloud_github_release/security/security.xml deleted file mode 100644 index 4e50bea..0000000 --- a/trescloud_github_release/security/security.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - GitHub Webhook User - - - \ No newline at end of file diff --git a/trescloud_github_release/views/github_webhook_log_views.xml b/trescloud_github_release/views/github_webhook_log_views.xml deleted file mode 100644 index 7605639..0000000 --- a/trescloud_github_release/views/github_webhook_log_views.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - github.webhook.log.tree - github.webhook.log - - - - - - - - - - - - - - - - github.webhook.log.form - github.webhook.log - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - GitHub Webhooks - github.webhook.log - tree,form - - - - -
\ No newline at end of file