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

[IMP] count in response & add id in domain if filled

parent db5a38cf
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -51,6 +51,7 @@ class RouteApi(http.Controller): ...@@ -51,6 +51,7 @@ class RouteApi(http.Controller):
("model_id.model", "=", model_name), ("model_id.model", "=", model_name),
("route_name", "=", exposition_name), ("route_name", "=", exposition_name),
] ]
exposition_record = request.env["route.exposition"].sudo().search(domain) exposition_record = request.env["route.exposition"].sudo().search(domain)
if not exposition_record: if not exposition_record:
...@@ -76,6 +77,9 @@ class RouteApi(http.Controller): ...@@ -76,6 +77,9 @@ class RouteApi(http.Controller):
try: try:
exposition_domain = exposition_record.get_domain() exposition_domain = exposition_record.get_domain()
if id:
exposition_domain.append(("id", "=", id))
field_exposed = ( field_exposed = (
request.env["route.exposition.field"] request.env["route.exposition.field"]
.sudo() .sudo()
...@@ -107,7 +111,7 @@ class RouteApi(http.Controller): ...@@ -107,7 +111,7 @@ class RouteApi(http.Controller):
) )
response = http.Response( response = http.Response(
response=json.dumps(result), response=json.dumps({"count": len(result), "data": result}),
headers=[("Content-Type", "application/json")], headers=[("Content-Type", "application/json")],
) )
return response return response
...@@ -19,6 +19,9 @@ class RouteExposition(models.Model): ...@@ -19,6 +19,9 @@ class RouteExposition(models.Model):
"for a given odoo model" "for a given odoo model"
) )
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
name = fields.Char(string="Nom", required=True) name = fields.Char(string="Nom", required=True)
description = fields.Text() description = fields.Text()
model_id = fields.Many2one(comodel_name="ir.model", string="Modèle") model_id = fields.Many2one(comodel_name="ir.model", string="Modèle")
...@@ -46,6 +49,9 @@ class RouteExposition(models.Model): ...@@ -46,6 +49,9 @@ class RouteExposition(models.Model):
) )
] ]
# ------------------------------------------------------
# Onchange
# ------------------------------------------------------
@api.onchange("model_id") @api.onchange("model_id")
def _onchange_model_id(self): def _onchange_model_id(self):
self.field_ids = None self.field_ids = None
...@@ -61,6 +67,9 @@ class RouteExposition(models.Model): ...@@ -61,6 +67,9 @@ class RouteExposition(models.Model):
except SyntaxError as e: except SyntaxError as e:
raise ValidationError(f"Uhoh, the domain seems wrong: {e}") from SyntaxError raise ValidationError(f"Uhoh, the domain seems wrong: {e}") from SyntaxError
# ------------------------------------------------------
# Compute
# ------------------------------------------------------
@api.depends("name") @api.depends("name")
def _compute_route_name(self): def _compute_route_name(self):
for exposition in self: for exposition in self:
...@@ -78,6 +87,18 @@ class RouteExposition(models.Model): ...@@ -78,6 +87,18 @@ class RouteExposition(models.Model):
else: else:
exposition.route_name = "" exposition.route_name = ""
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
def refresh_api_key(self):
self.api_key = self.generate_key()
def delete_api_key(self):
self.api_key = False
# ------------------------------------------------------
# Business Method
# ------------------------------------------------------
def get_domain(self): def get_domain(self):
""" """
Evaluate the domain of an exposition, meaning it transforms the string domain to Evaluate the domain of an exposition, meaning it transforms the string domain to
...@@ -89,9 +110,6 @@ class RouteExposition(models.Model): ...@@ -89,9 +110,6 @@ class RouteExposition(models.Model):
self.ensure_one() self.ensure_one()
return safe_eval(self.domain) if self.domain else [] return safe_eval(self.domain) if self.domain else []
def refresh_api_key(self):
self.api_key = self.generate_key()
def generate_key(self) -> str: def generate_key(self) -> str:
""" """
Generate an API key based on Generate an API key based on
...@@ -107,6 +125,3 @@ class RouteExposition(models.Model): ...@@ -107,6 +125,3 @@ class RouteExposition(models.Model):
h.update(encoded_data) h.update(encoded_data)
hashed = h.hexdigest() hashed = h.hexdigest()
return hashed return hashed
def delete_api_key(self):
self.api_key = ""
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