[IMP] bi_sql_editor : allow to reset to the previous state, and not only into 'draft' state

This commit is contained in:
Sylvain LE GAL
2023-12-05 22:57:12 +01:00
committed by thien
parent 57202eb9f1
commit f79db202ec
2 changed files with 44 additions and 33 deletions

View File

@@ -298,28 +298,33 @@ class BiSQLView(models.Model):
sql_view.cron_id.active = True
sql_view.state = "model_valid"
def button_reset_to_model_valid(self):
views = self.filtered(lambda x: x.state == "ui_valid")
views.mapped("tree_view_id").unlink()
views.mapped("graph_view_id").unlink()
views.mapped("pivot_view_id").unlink()
views.mapped("search_view_id").unlink()
views.mapped("action_id").unlink()
views.mapped("menu_id").unlink()
return views.write({"state": "model_valid"})
def button_reset_to_sql_valid(self):
self.button_reset_to_model_valid()
views = self.filtered(lambda x: x.state == "model_valid")
for sql_view in views:
# Drop SQL View (and indexes by cascade)
if sql_view.is_materialized:
sql_view._drop_view()
if sql_view.cron_id:
sql_view.cron_id.active = False
# Drop ORM
sql_view._drop_model_and_fields()
return views.write({"state": "sql_valid"})
def button_set_draft(self):
for sql_view in self.filtered(lambda x: x.state != "draft"):
sql_view.menu_id.unlink()
sql_view.action_id.unlink()
sql_view.tree_view_id.unlink()
sql_view.graph_view_id.unlink()
sql_view.pivot_view_id.unlink()
sql_view.search_view_id.unlink()
if sql_view.state in ("model_valid", "ui_valid"):
# Drop SQL View (and indexes by cascade)
if sql_view.is_materialized:
sql_view._drop_view()
if sql_view.cron_id:
sql_view.cron_id.active = False
# Drop ORM
sql_view._drop_model_and_fields()
super(BiSQLView, sql_view).button_set_draft()
return True
self.button_reset_to_model_valid()
self.button_reset_to_sql_valid()
return super().button_set_draft()
def button_create_ui(self):
self.tree_view_id = self.env["ir.ui.view"].create(self._prepare_tree_view()).id

View File

@@ -34,14 +34,20 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button
name="button_set_draft"
name="button_reset_to_sql_valid"
type="object"
states="model_valid,ui_valid"
string="Set to Draft"
states="model_valid"
string="Delete SQL Elements"
groups="sql_request_abstract.group_sql_request_manager"
confirm="It will delete the materialized view, and all the previous mapping realized with the columns"
/>
<button
name="button_reset_to_model_valid"
type="object"
states="ui_valid"
string="Delete UI"
groups="sql_request_abstract.group_sql_request_manager"
confirm="Are you sure you want to set to draft this SQL View. It will delete the materialized view, and all the previous mapping realized with the columns"
/>
<button
name="button_create_sql_view_and_model"
type="object"
@@ -66,13 +72,6 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
class="oe_highlight"
help="This will create Odoo View, Action and Menu"
/>
<button
name="button_refresh_materialized_view"
type="object"
string="Refresh"
help="Refresh Materialized View"
attrs="{'invisible': ['|', ('state', 'in', ('draft', 'sql_valid')), ('is_materialized', '=', False)]}"
/>
<button
name="button_open_view"
type="object"
@@ -80,6 +79,13 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
states="ui_valid"
class="oe_highlight"
/>
<button
name="button_refresh_materialized_view"
type="object"
string="Refresh"
help="Refresh Materialized View"
attrs="{'invisible': ['|', ('state', 'in', ('draft', 'sql_valid')), ('is_materialized', '=', False)]}"
/>
</xpath>
<group name="group_main_info" position="inside">
<group>