1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
from datetime import datetime
from odoo import models
from odoo.exceptions import UserError
from pytz import timezone
class Import(models.TransientModel):
_inherit = 'base_import.import'
def _get_config(self, key, default = ''):
return self.env['ir.config_parameter'].sudo().get_param('base_import.import.' + key, default)
def _get_config_enable_import(self):
return self._get_config('enable_import')
def _get_config_allowed_model(self):
return self._get_config('allowed_model')
def _get_config_always_allowed_model(self):
return self._get_config('always_allowed_model')
def _check_time_range(self, config_string):
current_time = datetime.now(tz=timezone('Asia/Jakarta')).time()
ranges = config_string.split(' / ')
for time_range in ranges:
start_str, end_str = time_range.split(' - ')
start_time = datetime.strptime(start_str, '%H:%M:%S').time()
end_time = datetime.strptime(end_str, '%H:%M:%S').time()
# If current time in range of start and end time
if current_time >= start_time and current_time <= end_time:
return True
return False
def _check_enable_import(self):
enable_import = self._get_config_enable_import()
allowed_model = self._get_config_allowed_model()
always_allowed_model = self._get_config_always_allowed_model()
if self.res_model in always_allowed_model or always_allowed_model == 'ALL':
return True
if self.res_model in allowed_model or allowed_model == 'ALL':
return self._check_time_range(enable_import)
return False
def _unable_import_notif(self):
enable_import_config = self._get_config_enable_import()
message = 'Import tidak dapat dilakukan saat ini. Hubungi Tim IT.'
if '-' in enable_import_config:
message = f'Import tidak dapat dilakukan saat ini. Anda bisa melakukannya di rentang waktu berikut: {enable_import_config}.'
raise UserError(message)
def do(self, fields, columns, options, dryrun=False):
model = self.res_model
can_import = self.env.user.check_access(model, 'import')
if not can_import:
raise UserError('You are not allowed to import')
return super(Import, self).do(fields, columns, options, dryrun)
|