~inddiana/sisb/sisb

« back to all changes in this revision

Viewing changes to diana_control_ausencias/report/report_absence_control.py

[MOD] Mejoras al módulo diana_control_ausencias para búsqueda y permisos por departamento

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# -*- coding: utf-8 -*-
2
 
#!/usr/bin/env python
3
2
 
4
3
from report import report_sxw
5
4
from datetime import datetime
6
5
import os
7
6
 
 
7
 
8
8
class report_absence_control(report_sxw.rml_parse):
9
 
    _name =  'report.absence.control'
10
 
    
 
9
    _name = 'report.absence.control'
 
10
 
11
11
    def __init__(self, cr, uid, name, context):
12
12
        super(report_absence_control, self).__init__(cr, uid, name, context)
13
13
        self.localcontext.update({
14
 
            'get_empresa':self.get_empresa,
15
 
            'get_final_date':self.get_final_date,
 
14
            'get_empresa': self.get_empresa,
 
15
            'get_final_date': self.get_final_date,
16
16
            'format_sign_ins': self.format_sign_ins,
17
17
            'emp_data': self.emp_data
18
18
        })
25
25
 
26
26
    def get_empresa(self, partner_id):
27
27
        obj_addr = self.pool.get('res.partner.address')
28
 
        addr_id =obj_addr.search(self.cr, self.uid, [('type','=','invoice'),('partner_id','=',partner_id)])
 
28
        addr_id = obj_addr.search(self.cr, self.uid, [('type', '=', 'invoice'), ('partner_id', '=', partner_id)])
29
29
        res = {}
30
30
        for row in obj_addr.browse(self.cr, self.uid, addr_id):
31
31
            res = {
32
 
            'street':row.street,
33
 
            'phone':row.phone,
34
 
            'fax':row.fax,
35
 
            'email':row.email,
36
 
            'city':row.city,
37
 
            'name':row.name,
38
 
            'country':row.country_id.name,
39
 
            } 
 
32
                'street': row.street,
 
33
                'phone': row.phone,
 
34
                'fax': row.fax,
 
35
                'email': row.email,
 
36
                'city': row.city,
 
37
                'name': row.name,
 
38
                'country': row.country_id.name,
 
39
            }
40
40
        return res
41
 
    
 
41
 
42
42
    def get_final_date(self):
43
43
        return datetime.now().strftime('%d/%m/%Y %H:%M')
44
44
 
45
 
    def format_sign_ins(self,sign_in):
 
45
    def format_sign_ins(self, sign_in):
46
46
        if isinstance(sign_in, basestring):
47
47
            if sign_in != 'None':
48
 
                return datetime.strptime(sign_in,'%Y-%m-%d %H:%M:%S').strftime('%a %H:%M:%S')
 
48
                return datetime.strptime(sign_in, '%Y-%m-%d %H:%M:%S').strftime('%a %H:%M:%S')
49
49
        else:
50
50
            if sign_in != None:
51
51
                return sign_in.strftime('%a %H:%M:%S')
52
52
 
53
 
report_sxw = report_sxw.report_sxw     
 
53
 
 
54
report_sxw = report_sxw.report_sxw
 
55
 
54
56
 
55
57
class TxtParser(report_sxw):
56
58
    """Custom class that use webkit to render HTML reports
57
59
       Code partially taken from report openoffice. Thanks guys :)
58
60
    """
 
61
 
59
62
    def __init__(self, name, table, rml=False, parser=False,
60
 
        header=True, store=False):
 
63
                 header=True, store=False):
61
64
        self.parser_instance = False
62
 
        self.localcontext={}
 
65
        self.localcontext = {}
63
66
        report_sxw.__init__(self, name, table, rml, parser,
64
 
            header, store)
65
 
    
66
 
    
 
67
                            header, store)
 
68
 
67
69
    def create_single_pdf(self, cursor, uid, ids, data, report_xml, context):
68
70
        """generate the PDF"""
69
 
        
 
71
 
70
72
        if context is None:
71
 
            context={}
72
 
            
 
73
            context = {}
 
74
 
73
75
        if data['is_pdf']:
74
 
            return super(TxtParser,self).create_single_pdf(cursor, uid, ids, data, report_xml, context=context)
 
76
            return super(TxtParser, self).create_single_pdf(cursor, uid, ids, data, report_xml, context=context)
75
77
 
76
78
        self.parser_instance = self.parser(
77
 
                                            cursor,
78
 
                                            uid,
79
 
                                            self.name2,
80
 
                                            context=context
81
 
                                        )
 
79
            cursor,
 
80
            uid,
 
81
            self.name2,
 
82
            context=context
 
83
        )
82
84
        if data['is_csv']:
83
 
           ret_file_name = open(data['ret_file_name'], 'r')
84
 
           salida_csv = ret_file_name.read()
85
 
           os.remove(data['ret_file_name'])
86
 
           return (salida_csv, 'csv')
87
 
        
88
 
    
 
85
            ret_file_name = open(data['ret_file_name'], 'r')
 
86
            salida_csv = ret_file_name.read()
 
87
            os.remove(data['ret_file_name'])
 
88
            return (salida_csv, 'csv')
 
89
 
 
90
 
89
91
TxtParser(
90
92
    'report.absence.control',
91
93
    'absence.control.wizard',