Skip to content
Extraits de code Groupes Projets
Valider f38cabcf rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[update] delete controller and add button action

parent 48f0273a
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2021 Le Filament (https://le-filament.com) # Copyright 2021 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from . import controllers from . import models
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
"depends": [ "depends": [
"base", "base",
], ],
"data": [], "data": ["views/base_config_view.xml"],
"qweb": [], "qweb": [],
"installable": True, "installable": True,
"auto_install": False, "auto_install": False,
......
# Copyright 2022 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
import json
from odoo import exceptions, http
from odoo.http import request
class ReleaseAgent(http.Controller):
# ------------------------------------------------------
# Routes
# ------------------------------------------------------
@http.route(
["/get-modules"],
type="http",
auth="none",
method=["GET"],
csrf=False,
)
def get_modules(self):
db_header = request.httprequest.headers.get("DbName", False)
if db_header and db_header == request.db:
modules = (
request.env["ir.module.module"]
.sudo()
.search([("state", "=", "installed")])
)
res = modules.mapped(
lambda m: {
"name": m.name,
"author": m.author,
"latest_version": m.latest_version,
"author_type": self.get_author_type(m),
}
)
return http.Response(
response=json.dumps(res),
headers=[("Content-Type", "application/json")],
)
else:
return exceptions.AccessDenied()
# ------------------------------------------------------
# Common functions
# ------------------------------------------------------
def get_author_type(self, module):
if "OCA" in module.author:
return "oca"
elif "FILAMENT" in module.author.upper():
return "lefilament"
elif "Odoo S.A." in module.author:
return "odoo"
else:
return "other"
# Copyright 2022 Le Filament (https://le-filament.com) # Copyright 2022 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from . import main from . import base_config_settings
from . import ir_module_module
# Copyright 2022 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
def action_sync_modules(self):
self.env["ir.module.module"].sudo().post_modules()
# © 2022 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import requests
from odoo import exceptions, models
class IrModule(models.Model):
_inherit = "ir.module.module"
# ------------------------------------------------------
# Common function
# ------------------------------------------------------
def _get_modules(self):
modules = self.sudo().search([("state", "=", "installed")])
res = modules.mapped(
lambda m: {
"name": m.name,
"author": m.author,
"latest_version": m.latest_version,
"author_type": m._get_author_type(),
}
)
return res
def _get_author_type(self):
self.ensure_one()
if "OCA" in self.author:
return "oca"
elif "FILAMENT" in self.author.upper():
return "lefilament"
elif "Odoo S.A." in self.author:
return "odoo"
else:
return "other"
def post_modules(self):
try:
requests.post(
url="https://monfil.le-filament.com/post-modules",
json=self._get_modules(),
verify=True,
timeout=10,
)
except Exception as e:
raise exceptions.UserError(e.__str__())
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2015 Antiun Ingenieria S.L. - Antonio Espinosa
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record id="res_config_lefilament_agent_view_form" model="ir.ui.view">
<field name="name">Add module synchro config parameter</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base_setup.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@id='companies']" position='after'>
<h2>Synchronisation des modules</h2>
<div class="row mt16 o_settings_container" name="partner_names_order">
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane">
<p class="text-muted">
Synchronisation des modules vers le serveur du Filament pour la gestion des releases
</p>
<button
name="action_sync_modules"
string="Synchroniser les modules"
class="btn-info"
type="object"
help="Synchronise les modules vers le serveur du Filament"
/>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter