summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/base_import_import.py
blob: 01e02a4acf146f3cdb5ef18737e1de5068f46a5f (plain)
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)