summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/base_import_import.py
blob: 9cffa6e68bd97c83b36f52f5756425c36aef22ed (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
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'].sudo().get_param('base_import.import.enable_import', '')
    
    def _get_config_restrict_model(self):
        return self.env['ir.config_parameter'].sudo().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()

        if self.res_model not in restrict_model:
            return True
        
        if enable_import.lower() == 'true':
            return True
        elif enable_import.lower() == 'false':
            return False
        elif '-' in enable_import:
            return self._check_time_range(enable_import)
        
        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)