summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/base_import_import.py
blob: 7c66a2280f98d2b9b16d3001bff17b0f268c0145 (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
from odoo import models
from odoo.exceptions import UserError
from datetime import datetime

class Import(models.TransientModel):
    _inherit = 'base_import.import'

    def _get_config_enable_import(self):
        return self.env['ir.config_parameter'].get_param('base_import.import.enable_import', '')
    
    def _get_config_restrict_model(self):
        return self.env['ir.config_parameter'].get_param('base_import.import.restrict_model', '')

    def _check_time_range(self, config_string):
        current_time = datetime.now().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 start_time <= current_time and current_time <= end_time:
                return True

        return False

    def _check_enable_import(self):
        enable_import = self._get_config_enable_import()
        restrict_model = self._get_config_restrict_model()
        
        is_enable_import = False
        if enable_import.lower() == 'true':
            is_enable_import = True
        elif enable_import.lower() == 'false':
            is_enable_import = False
        elif '-' in enable_import:
            is_enable_import = self._check_time_range(enable_import)
        
        if not is_enable_import and self.res_model in restrict_model:
            return False
        
        return True
    
    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):
        enable_import = self._check_enable_import()
        if not enable_import:
            self._unable_import_notif()
        return super(Import, self).do(fields, columns, options, dryrun)