@@ -20,6 +20,8 @@ class DelayExport(models.Model):
2020 _name = 'delay.export'
2121 _description = 'Allow to delay the export'
2222
23+ user_id = fields .Many2one ('res.users' , string = 'User' , index = True )
24+
2325 @api .model
2426 def delay_export (self , data ):
2527 params = json .loads (data .get ('data' ))
@@ -65,13 +67,16 @@ def export(self, params):
6567 xls = ExcelExport ()
6668 result = xls .from_data (columns_headers , import_data )
6769
70+ export_record = self .sudo ().create ({'user_id' : user .id })
71+
6872 name = "{}.{}" .format (model_name , export_format )
6973 attachment = self .env ['ir.attachment' ].create ({
7074 'name' : name ,
7175 'datas' : base64 .b64encode (result ),
7276 'datas_fname' : name ,
7377 'type' : 'binary' ,
74- 'to_delete' : True ,
78+ 'res_model' : self ._name ,
79+ 'res_id' : export_record .id ,
7580 })
7681
7782 url = "{}/web/content/ir.attachment/{}/datas/{}?download=true" .format (
@@ -80,7 +85,7 @@ def export(self, params):
8085 attachment .name ,
8186 )
8287
83- time_to_live = self .env . \
88+ time_to_live = self .sudo (). env . \
8489 ref ('base_export_async.attachment_time_to_live' ).value
8590 date_today = fields .Date .from_string (fields .Date .today ())
8691 expiration_date = fields .Date .to_string (
@@ -104,3 +109,12 @@ def export(self, params):
104109 """ ).format (url , expiration_date ),
105110 'auto_delete' : True ,
106111 })
112+
113+ @api .model
114+ def cron_delete (self ):
115+ time_to_live = self .env . \
116+ ref ('base_export_async.attachment_time_to_live' ).value
117+ date_today = fields .Date .from_string (fields .Date .today ())
118+ date_to_delete = fields .Date .to_string (
119+ date_today + relativedelta (days = - int (time_to_live )))
120+ self .search ([('create_date' , '<=' , date_to_delete )]).unlink ()
0 commit comments