[IMP] bi_sql_editor : conserve cron settings, when setting materialized view to draft ; Set correct default values for cron and enable it
parent
217629af1d
commit
259d95f01c
|
@ -261,6 +261,7 @@ class BiSQLView(models.Model):
|
||||||
raise UserError(
|
raise UserError(
|
||||||
_("You can only unlink draft views."
|
_("You can only unlink draft views."
|
||||||
"If you want to delete them, first set them to draft."))
|
"If you want to delete them, first set them to draft."))
|
||||||
|
self.cron_id.unlink()
|
||||||
return super(BiSQLView, self).unlink()
|
return super(BiSQLView, self).unlink()
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
|
@ -276,10 +277,7 @@ class BiSQLView(models.Model):
|
||||||
# Action Section
|
# Action Section
|
||||||
@api.multi
|
@api.multi
|
||||||
def button_create_sql_view_and_model(self):
|
def button_create_sql_view_and_model(self):
|
||||||
for sql_view in self:
|
for sql_view in self.filtered(lambda x: x.state == "sql_valid"):
|
||||||
if sql_view.state != 'sql_valid':
|
|
||||||
raise UserError(_(
|
|
||||||
"You can only process this action on SQL Valid items"))
|
|
||||||
# Create ORM and access
|
# Create ORM and access
|
||||||
sql_view._create_model_and_fields()
|
sql_view._create_model_and_fields()
|
||||||
sql_view._create_model_access()
|
sql_view._create_model_access()
|
||||||
|
@ -289,31 +287,37 @@ class BiSQLView(models.Model):
|
||||||
sql_view._create_index()
|
sql_view._create_index()
|
||||||
|
|
||||||
if sql_view.is_materialized:
|
if sql_view.is_materialized:
|
||||||
sql_view.cron_id = self.env['ir.cron'].create(
|
if not sql_view.cron_id:
|
||||||
sql_view._prepare_cron()).id
|
sql_view.cron_id = self.env['ir.cron'].create(
|
||||||
|
sql_view._prepare_cron()).id
|
||||||
|
else:
|
||||||
|
sql_view.cron_id.active = True
|
||||||
sql_view.state = 'model_valid'
|
sql_view.state = 'model_valid'
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def button_set_draft(self):
|
def button_set_draft(self):
|
||||||
for sql_view in self:
|
for sql_view in self.filtered(lambda x: x.state != "draft"):
|
||||||
sql_view.menu_id.unlink()
|
sql_view.menu_id.unlink()
|
||||||
sql_view.action_id.unlink()
|
sql_view.action_id.unlink()
|
||||||
sql_view.tree_view_id.unlink()
|
sql_view.tree_view_id.unlink()
|
||||||
sql_view.graph_view_id.unlink()
|
sql_view.graph_view_id.unlink()
|
||||||
sql_view.pivot_view_id.unlink()
|
sql_view.pivot_view_id.unlink()
|
||||||
sql_view.search_view_id.unlink()
|
sql_view.search_view_id.unlink()
|
||||||
if sql_view.cron_id:
|
|
||||||
sql_view.cron_id.unlink()
|
|
||||||
|
|
||||||
if sql_view.state in ('model_valid', 'ui_valid'):
|
if sql_view.state in ('model_valid', 'ui_valid'):
|
||||||
# Drop SQL View (and indexes by cascade)
|
# Drop SQL View (and indexes by cascade)
|
||||||
if sql_view.is_materialized:
|
if sql_view.is_materialized:
|
||||||
sql_view._drop_view()
|
sql_view._drop_view()
|
||||||
|
|
||||||
|
if sql_view.cron_id:
|
||||||
|
sql_view.cron_id.active = False
|
||||||
|
|
||||||
# Drop ORM
|
# Drop ORM
|
||||||
sql_view._drop_model_and_fields()
|
sql_view._drop_model_and_fields()
|
||||||
|
|
||||||
sql_view.write({'state': 'draft', 'has_group_changed': False})
|
sql_view.has_group_changed = False
|
||||||
|
super(BiSQLView, sql_view).button_set_draft()
|
||||||
|
return True
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def button_create_ui(self):
|
def button_create_ui(self):
|
||||||
|
@ -384,7 +388,7 @@ class BiSQLView(models.Model):
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def _prepare_cron(self):
|
def _prepare_cron(self):
|
||||||
self.ensure_one()
|
now = datetime.now()
|
||||||
return {
|
return {
|
||||||
'name': _('Refresh Materialized View %s') % self.view_name,
|
'name': _('Refresh Materialized View %s') % self.view_name,
|
||||||
'user_id': SUPERUSER_ID,
|
'user_id': SUPERUSER_ID,
|
||||||
|
@ -393,6 +397,10 @@ class BiSQLView(models.Model):
|
||||||
'state': 'code',
|
'state': 'code',
|
||||||
'code': 'model._refresh_materialized_view_cron(%s)' % self.ids,
|
'code': 'model._refresh_materialized_view_cron(%s)' % self.ids,
|
||||||
'numbercall': -1,
|
'numbercall': -1,
|
||||||
|
'interval_number': 1,
|
||||||
|
'interval_type': 'days',
|
||||||
|
'nextcall': datetime(now.year, now.month, now.day+1),
|
||||||
|
'active': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
|
|
|
@ -82,6 +82,10 @@ class TestBiSqlViewEditor(SingleTransactionCase):
|
||||||
with self.assertRaises(UserError):
|
with self.assertRaises(UserError):
|
||||||
self.view.unlink()
|
self.view.unlink()
|
||||||
self.view.button_set_draft()
|
self.view.button_set_draft()
|
||||||
|
self.assertNotEqual(
|
||||||
|
self.view.cron_id, False, 'Set to draft materialized view should'
|
||||||
|
' not unlink cron'
|
||||||
|
)
|
||||||
self.view.unlink()
|
self.view.unlink()
|
||||||
res = self.bi_sql_view.search([('name', '=', 'Partners View 2')])
|
res = self.bi_sql_view.search([('name', '=', 'Partners View 2')])
|
||||||
self.assertEqual(len(res), 0, 'View not deleted')
|
self.assertEqual(len(res), 0, 'View not deleted')
|
||||||
|
|
Loading…
Reference in New Issue