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

[add] controller

parent 97b2be7c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2022 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from . import banner_release, portal
from . import banner_release, main, portal
# Copyright 2022 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import exceptions, http
from odoo.http import request
class ReleaseController(http.Controller):
# ------------------------------------------------------
# Routes
# ------------------------------------------------------
@http.route(
["/post-modules"],
type="json",
auth="none",
method=["POST"],
csrf=False,
)
def post_modules(self):
ip_addr = request.httprequest.remote_addr
partner_id = (
request.env["res.partner"].sudo().search([("server_ip", "=", ip_addr)])
)
if partner_id:
modules = request.jsonrequest.get("modules")
partner_id.retrieve_modules(modules)
else:
return exceptions.AccessDenied()
# ------------------------------------------------------
# Common functions
# ------------------------------------------------------
# © 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, fields, models
from odoo import fields, models
class ResPartner(models.Model):
......@@ -26,8 +25,7 @@ class ResPartner(models.Model):
string="Lien de partage client",
compute="_compute_release_share_link",
)
server_url = fields.Char("URL du serveur")
database_name = fields.Char("Nom de la base de données")
server_ip = fields.Char("IP du serveur")
# ------------------------------------------------------
# Computed fields / Search Fields
......@@ -53,23 +51,10 @@ class ResPartner(models.Model):
if partner.is_company:
partner._portal_ensure_token()
def retrieve_modules(self):
def retrieve_modules(self, modules):
existing_modules = self.env["res.partner.module"].search([])
for partner in self:
if not partner.server_url or not partner.database_name:
raise exceptions.UserError(
_("L'url et la base de données doivent être renseignés.")
)
try:
response = requests.get(
partner.server_url + "/get-modules",
headers={"DbName": partner.database_name},
).json()
except Exception as e:
raise exceptions.UserError(e.__str__())
for module in response:
for module in modules:
if module.get("author_type") != "odoo":
# Mise à jour du module
if module.get("name") in existing_modules.mapped("name"):
......@@ -94,7 +79,7 @@ class ResPartner(models.Model):
lambda m: m.get("name")
if m.get("author_type") != "odoo"
else None,
response,
modules,
)
)
)
......
......@@ -18,19 +18,9 @@
>
<group>
<group>
<div class="text-muted" colspan="2">
Format de l'url : https://exemple.com
</div>
<field name="server_url" />
<field name="database_name" />
<field name="server_ip" />
</group>
<group>
<button
name="retrieve_modules"
type="object"
string="Récupérer/Mettre à jour la liste depuis le serveur"
class="btn-info"
/>
</group>
</group>
<field name="module_ids">
......
# Copyright 2022 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import fields, models, api
from odoo import fields, models
class MultiPartnerReleaseWizard(models.TransientModel):
......@@ -43,23 +43,35 @@ class MultiPartnerReleaseWizard(models.TransientModel):
detail_module = []
for module in self.release_module_ids:
detail_module.append(
(0, 0, {
(
0,
0,
{
"module_id": module.module_id.id,
"release_type": module.release_type,
"log": module.log,
})
},
)
partner.write({
"release_ids": [(0, 0, {
)
partner.write(
{
"release_ids": [
(
0,
0,
{
"user_id": self.user_id.id,
"release_date": self.release_date,
"description": self.description,
"release_module_ids": detail_module,
})]
})
},
)
]
}
)
return {
'type': 'ir.actions.client',
'tag': 'reload',
"type": "ir.actions.client",
"tag": "reload",
}
......
......@@ -45,7 +45,12 @@
</field>
</group>
<footer>
<button name="create_releases" type="object" string="Créer les releases" class="btn-primary"/>
<button
name="create_releases"
type="object"
string="Créer les releases"
class="btn-primary"
/>
<button string="Fermer" class="oe_link" special="cancel" />
</footer>
</sheet>
......@@ -54,7 +59,10 @@
</record>
<!-- Action Window -->
<record id="multi_partner_release_wizard_act_window" model="ir.actions.act_window">
<record
id="multi_partner_release_wizard_act_window"
model="ir.actions.act_window"
>
<field name="name">Releases Client</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">multi.partner.release.wizard</field>
......
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