From eeb6d60b40cb32bdeb373a810c4e7355af6a50ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Sainl=C3=A9ger?= Date: Fri, 10 Jun 2022 15:19:22 +0200 Subject: [PATCH] [UPD] Separate core addons from Git platform connector addons --- .../__manifest__.py | 2 +- .../models/project_task.py | 2 +- .../security/ir.model.access.csv | 8 +- .../wizard/link_issue.py | 18 ++--- .../wizard/link_issue.xml | 9 +-- dev_github_connector/__init__.py | 3 + dev_github_connector/__manifest__.py | 78 +++++++++++++++++++ dev_github_connector/wizard/__init__.py | 3 + dev_github_connector/wizard/link_issue.py | 24 ++++++ 9 files changed, 120 insertions(+), 27 deletions(-) create mode 100644 dev_github_connector/__init__.py create mode 100644 dev_github_connector/__manifest__.py create mode 100644 dev_github_connector/wizard/__init__.py create mode 100644 dev_github_connector/wizard/link_issue.py diff --git a/dev_git_project_task_connector/__manifest__.py b/dev_git_project_task_connector/__manifest__.py index e5bcb69..6e6e020 100644 --- a/dev_git_project_task_connector/__manifest__.py +++ b/dev_git_project_task_connector/__manifest__.py @@ -9,7 +9,7 @@ "website": "False", "license": "AGPL-3", "category": "False", - "summary": "Link project task to Github issues", + "summary": "Link project task to Git issues", "description": """ :image: https://img.shields.io/badge/licence-AGPL--3-blue.svg :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html diff --git a/dev_git_project_task_connector/models/project_task.py b/dev_git_project_task_connector/models/project_task.py index fd2b8ec..120f597 100644 --- a/dev_git_project_task_connector/models/project_task.py +++ b/dev_git_project_task_connector/models/project_task.py @@ -10,7 +10,7 @@ class Task(models.Model): def link_issue(self): return { - "name": "Link a Github issue", + "name": "Link a Git issue", "type": "ir.actions.act_window", "view_mode": "form", "res_model": "link.git.issue", diff --git a/dev_git_project_task_connector/security/ir.model.access.csv b/dev_git_project_task_connector/security/ir.model.access.csv index b3f700b..41c8866 100644 --- a/dev_git_project_task_connector/security/ir.model.access.csv +++ b/dev_git_project_task_connector/security/ir.model.access.csv @@ -1,5 +1,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_git_issue_user,git.issue.user,dev_github_project_task_connector.model_git_issue,project.group_project_user,1,0,0,0 -access_git_issue_manager,git.issue.manager,dev_github_project_task_connector.model_git_issue,project.group_project_manager,1,1,1,1 -access_git_repo_user,git.repo.user,dev_github_project_task_connector.model_git_repo,project.group_project_user,1,0,0,0 -access_git_repo_manager,git.repo.manager,dev_github_project_task_connector.model_git_repo,project.group_project_manager,1,1,1,1 \ No newline at end of file +access_git_issue_user,git.issue.user,dev_git_project_task_connector.model_git_issue,project.group_project_user,1,0,0,0 +access_git_issue_manager,git.issue.manager,dev_git_project_task_connector.model_git_issue,project.group_project_manager,1,1,1,1 +access_git_repo_user,git.repo.user,dev_git_project_task_connector.model_git_repo,project.group_project_user,1,0,0,0 +access_git_repo_manager,git.repo.manager,dev_git_project_task_connector.model_git_repo,project.group_project_manager,1,1,1,1 \ No newline at end of file diff --git a/dev_git_project_task_connector/wizard/link_issue.py b/dev_git_project_task_connector/wizard/link_issue.py index 05cf69e..f348b50 100644 --- a/dev_git_project_task_connector/wizard/link_issue.py +++ b/dev_git_project_task_connector/wizard/link_issue.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- from odoo import models, fields -from github import Github class LinkGitIssue(models.TransientModel): @@ -11,17 +10,10 @@ class LinkGitIssue(models.TransientModel): issue_repo = fields.Many2one("git.repo", string="Repository", required=True) issue_number = fields.Integer("Issue number", required=True) + def _compute_issue_values(self): + # Function to inherit in Git platform connector addons + return {} + def link_issue(self): - github = Github() - repo = github.get_repo(self.issue_repo.displayed_name) - issue = repo.get_issue(number=self.issue_number) - values = { - "name": issue.title, - "repo": self.issue_repo.id, - "status": issue.state, - "url": issue.html_url, - "task_id": self.env["project.task"] - .browse(self._context.get("active_ids")) - .id, - } + values = self._compute_issue_values() self.env["git.issue"].create(values) diff --git a/dev_git_project_task_connector/wizard/link_issue.xml b/dev_git_project_task_connector/wizard/link_issue.xml index 0ef0a12..2f4be1a 100644 --- a/dev_git_project_task_connector/wizard/link_issue.xml +++ b/dev_git_project_task_connector/wizard/link_issue.xml @@ -5,7 +5,7 @@ link_issue.wizard link.git.issue -
+ @@ -18,11 +18,4 @@ - \ No newline at end of file diff --git a/dev_github_connector/__init__.py b/dev_github_connector/__init__.py new file mode 100644 index 0000000..3b4c3ed --- /dev/null +++ b/dev_github_connector/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import wizard diff --git a/dev_github_connector/__manifest__.py b/dev_github_connector/__manifest__.py new file mode 100644 index 0000000..a8af786 --- /dev/null +++ b/dev_github_connector/__manifest__.py @@ -0,0 +1,78 @@ +# Copyright 2021 Elabore () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Github Odoo Connector", + "version": "12.0.1.0.0", + "author": "Elabore", + "maintainer": "False", + "website": "False", + "license": "AGPL-3", + "category": "False", + "summary": "Connect Odoo user to Github user", + "description": """ + :image: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +============================= +Github Odoo Connector +============================= +This module provides the capacity to link a user to a Gihub account in order to launch actions that need Github identification. + +Installation +============ +Just install Github Odoo Connector, all dependencies will be installed by default. + +Known issues / Roadmap +====================== + +Bug Tracker +=========== +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ +* Elabore: `Icon `_. + +Contributors +------------ +* Stéphan Sainléger + +Funders +------- +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) +* Lokavaluto (https://lokavaluto.fr) + +Maintainer +---------- +This module is maintained by ELABORE. + +""", + # any module necessary for this one to work correctly + "depends": [ + "base", + "dev_git_project_task_connector", + ], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": [], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "qweb": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": False, + "application": False, +} diff --git a/dev_github_connector/wizard/__init__.py b/dev_github_connector/wizard/__init__.py new file mode 100644 index 0000000..d394ce4 --- /dev/null +++ b/dev_github_connector/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import link_issue diff --git a/dev_github_connector/wizard/link_issue.py b/dev_github_connector/wizard/link_issue.py new file mode 100644 index 0000000..b857a74 --- /dev/null +++ b/dev_github_connector/wizard/link_issue.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- + +from odoo import models +from github import Github + + +class LinkGitIssue(models.TransientModel): + _inherit = "link.git.issue" + + def _compute_issue_values(self): + values = super(LinkGitIssue, self)._compute_issue_values() + github = Github() + repo = github.get_repo(self.issue_repo.displayed_name) + issue = repo.get_issue(number=self.issue_number) + values = { + "name": issue.title, + "repo": self.issue_repo.id, + "status": issue.state, + "url": issue.html_url, + "task_id": self.env["project.task"] + .browse(self._context.get("active_ids")) + .id, + } + return values