← Back to team overview

savoirfairelinux-openerp team mailing list archive

lp:~savoirfairelinux-openerp/openerp-hr/6.1-modules-from-extra-addons into lp:openerp-hr/6.1

 

Maxime Chambreuil (http://www.savoirfairelinux.com) has proposed merging lp:~savoirfairelinux-openerp/openerp-hr/6.1-modules-from-extra-addons into lp:openerp-hr/6.1.

Requested reviews:
  HR Core Editors (hr-core-editors)

For more details, see:
https://code.launchpad.net/~savoirfairelinux-openerp/openerp-hr/6.1-modules-from-extra-addons/+merge/186935

[IMP] Moved and cleaned up hr_* modules out of lp:openobject-addons/extra-trunk
-- 
https://code.launchpad.net/~savoirfairelinux-openerp/openerp-hr/6.1-modules-from-extra-addons/+merge/186935
Your team Savoir-faire Linux' OpenERP is subscribed to branch lp:~savoirfairelinux-openerp/openerp-hr/6.1-modules-from-extra-addons.
=== modified file 'hr_change_password/__init__.py'
--- hr_change_password/__init__.py	2009-11-04 06:22:37 +0000
+++ hr_change_password/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution	
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,9 +18,6 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
-
-import wizard
-
+#
+from . import wizard
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_change_password/__terp__.py' => 'hr_change_password/__openerp__.py'
--- hr_change_password/__terp__.py	2009-11-04 06:22:37 +0000
+++ hr_change_password/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution	
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,15 +18,15 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 
 {
-    "name" : "Human Resources/Change password",
-    "version" : "1.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com";,
+    "name": "Human Resources/Change password",
+    "version": "1.1",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
+    "website": "http://www.openerp.com";,
     "description": """
     Module for human resource management. You can manage:
     * Change the password of user

=== modified file 'hr_change_password/wizard/__init__.py'
--- hr_change_password/wizard/__init__.py	2009-11-04 06:22:37 +0000
+++ hr_change_password/wizard/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 #-*- coding:utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    d$
 #
@@ -19,6 +19,5 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
-
-import change_passwd_wizard
+#
+from . import change_passwd_wizard

=== modified file 'hr_change_password/wizard/change_passwd_wizard.py'
--- hr_change_password/wizard/change_passwd_wizard.py	2009-11-04 06:22:37 +0000
+++ hr_change_password/wizard/change_passwd_wizard.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution	
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,57 +18,61 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 from osv import osv
 from osv import fields
 import wizard
 import pooler
 
+
 class change_passwd(wizard.interface):
-	'''
-	OpenERP Wizard
-	'''
-	form = '''<?xml version="1.0"?>
-	<form string="Confirm Passwords">
-		<field name="user" attrs="{'readonly':[('check','!=',1)]}"/>
-		<field name="oldpwd" password="True"/>
-		<field name="newpwd" password="True"/>
-		<field name="confirmpwd" password="True"/>
-	</form>'''
-
-	fields = {
-		'user': dict(string=u'User', type='many2one', relation='res.users', required=True),
+
+    '''
+    OpenERP Wizard
+    '''
+    form = '''<?xml version="1.0"?>
+    <form string="Confirm Passwords">
+        <field name="user" attrs="{'readonly':[('check','!=',1)]}"/>
+        <field name="oldpwd" password="True"/>
+        <field name="newpwd" password="True"/>
+        <field name="confirmpwd" password="True"/>
+    </form>'''
+
+    fields = {
+        'user': dict(string=u'User', type='many2one', relation='res.users', required=True),
         'oldpwd': {'string': 'Old Password', 'type': 'char'},
         'newpwd': {'string': 'New Password', 'type': 'char'},
         'confirmpwd': {'string': 'Confirm Password', 'type': 'char'},
         'check': dict(string='Check', type='boolean', invisible=True)
     }
 
-	def _get_value(self, cr, uid, data, context):
-		if uid == 1:
-			data['form']['check'] = 1
-		else:
-			data['form']['check'] = 0
-		data['form']['user'] = uid
-		return data['form']
-
-
-	def _check_password(self, cr, uid, data, context):
-		if data['form']['newpwd'] == data['form']['confirmpwd']:
-			pool_obj = pooler.get_pool(cr.dbname)
-			obj_change = pool_obj.get('res.users')
-			pwd = obj_change.read(cr, uid, [data['form']['user']],['password'])
-			if data['form']['oldpwd'] == pwd[0]['password']:
-				obj_change.write(cr, uid, [data['form']['user']], {'password':data['form']['newpwd']})
-			else:		
-				raise osv.except_osv(_('Verification Error !'), _('Your Old Password is not verified.'))
-		else:
-			raise osv.except_osv(_('Verification Error !'), _('New Password and Confirm password does not match.'))
-		
-		return {}
-    
-	states = {
+    def _get_value(self, cr, uid, data, context):
+        if uid == 1:
+            data['form']['check'] = 1
+        else:
+            data['form']['check'] = 0
+        data['form']['user'] = uid
+        return data['form']
+
+    def _check_password(self, cr, uid, data, context):
+        if data['form']['newpwd'] == data['form']['confirmpwd']:
+            pool_obj = pooler.get_pool(cr.dbname)
+            obj_change = pool_obj.get('res.users')
+            pwd = obj_change.read(
+                cr, uid, [data['form']['user']], ['password'])
+            if data['form']['oldpwd'] == pwd[0]['password']:
+                obj_change.write(
+                    cr, uid, [data['form']['user']], {'password': data['form']['newpwd']})
+            else:
+                raise osv.except_osv(
+                    _('Verification Error !'), _('Your Old Password is not verified.'))
+        else:
+            raise osv.except_osv(_('Verification Error !'), _(
+                'New Password and Confirm password does not match.'))
+        return {}
+
+    states = {
         'init': {
             'actions': [_get_value],
             'result': {'type': 'form', 'arch': form, 'fields': fields, 'state': (('end', 'Cancel'), ('process', 'Change'))},

=== modified file 'hr_contract_available/__init__.py'
--- hr_contract_available/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_contract_available/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,10 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import hr_contract_available
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import hr_contract_available
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_contract_available/__terp__.py' => 'hr_contract_available/__openerp__.py'
--- hr_contract_available/__terp__.py	2009-11-25 06:35:25 +0000
+++ hr_contract_available/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,17 +15,17 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 {
-    "name" : "Human Resources Contracts - Human Ressources Reservations Management",
-    "version" : "0.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com";,
-    "depends" : ["hr_contract"],
+    "name": "Human Resources Contracts - Human Ressources Reservations Management",
+    "version": "0.1",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
+    "website": "http://www.openerp.com";,
+    "depends": ["hr_contract"],
     "module": "",
     "description": """
     This module is a reservation system on employees.
@@ -34,11 +34,10 @@
     defined period. This module is used to track availability and
     reservations on human ressources.
     """,
-    "init_xml" : [],
-    "demo_xml" : [],
-    "update_xml" : ["security/ir.model.access.csv","hr_contract_available_view.xml"],
+    "init_xml": [],
+    "demo_xml": [],
+    "update_xml": ["security/ir.model.access.csv", "hr_contract_available_view.xml"],
     "active": False,
     "installable": True
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_contract_available/hr_contract_available.py'
--- hr_contract_available/hr_contract_available.py	2009-10-15 11:25:40 +0000
+++ hr_contract_available/hr_contract_available.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,15 +15,16 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 from osv import fields, osv
 import time
 
+
 class hr_employee(osv.osv):
     _inherit = "hr.employee"
+
     def _get_state(self, cr, uid, ids, name, args, context):
         result = {}
         t = time.strftime('%Y-%m-%d')
@@ -31,56 +32,60 @@
             result[emp.id] = 'no'
 
             for alloc in emp.allocation_ids:
-                if ((not alloc.date_end) or (alloc.date_end>=t)) and (alloc.date_start<=t):
+                if ((not alloc.date_end) or (alloc.date_end >= t)) and (alloc.date_start <= t):
                     result[emp.id] = alloc.state
         return result
+
     def _get_date_end(self, cr, uid, ids, name, args, context):
         result = {}
         for emp in self.browse(cr, uid, ids, context):
             result[emp.id] = False
-            if len( emp.allocation_ids):
+            if len(emp.allocation_ids):
                 result[emp.id] = emp.allocation_ids[-1].date_end or False
         return result
+
     def _get_department_id(self, cr, uid, ids, name, args, context):
         result = {}
         t = time.strftime('%Y-%m-%d')
         for emp in self.browse(cr, uid, ids, context):
             result[emp.id] = False
             for alloc in emp.allocation_ids:
-                if ((not alloc.date_end) or (alloc.date_end>=t)) and (alloc.date_start<=t):
+                if ((not alloc.date_end) or (alloc.date_end >= t)) and (alloc.date_start <= t):
                     result[emp.id] = alloc.department_id.id
         return result
+
     _columns = {
-        'allocation_ids' : fields.one2many('hr.allocation', 'employee_id', 'Allocations'),
-        'allocation_state': fields.function(_get_state,
-            method=True,
-            type='selection',
-            selection=[('no','/'),('unavailable','Unavailable'),('ondemand','On demand'),('available','Available')],
-            string='Current Availability'),
+        'allocation_ids': fields.one2many('hr.allocation', 'employee_id', 'Allocations'),
+        'allocation_state': fields.function(_get_state, method=True, type='selection',
+                                            selection=[('no', '/'),
+                                                       ('unavailable', 'Unavailable'),
+                                                       ('ondemand', 'On demand'),
+                                                       ('available', 'Available')],
+                                            string='Current Availability'),
         'allocation_department_id': fields.function(_get_department_id, method=True, type='many2one', relation='res.company', string='Current Department'),
         'allocation_date_end': fields.function(_get_date_end, method=True, type='date', string='Availability Date')
     }
 hr_employee()
 
+
 class hr_allocation(osv.osv):
     _name = 'hr.allocation'
     _description = 'Allocations'
     _columns = {
-        'name' : fields.char('Allocation Name', size=30, required=True),
-        'employee_id' : fields.many2one('hr.employee', 'Employee', required=True),
-        'department_id' : fields.many2one('res.company', 'Department', required=True),
-        'function' : fields.many2one('res.partner.function', 'Function'),
-        'date_start' : fields.date('Start Date', required=True),
-        'date_end' : fields.date('End Date', help="Keep empty for unlimited allocation."),
-        'state' : fields.selection([('unavailable','Unavailable'),('ondemand','On demand'),('available','Available')], 'State', required=True),
+        'name': fields.char('Allocation Name', size=30, required=True),
+        'employee_id': fields.many2one('hr.employee', 'Employee', required=True),
+        'department_id': fields.many2one('res.company', 'Department', required=True),
+        'function': fields.many2one('res.partner.function', 'Function'),
+        'date_start': fields.date('Start Date', required=True),
+        'date_end': fields.date('End Date', help="Keep empty for unlimited allocation."),
+        'state': fields.selection([('unavailable', 'Unavailable'), ('ondemand', 'On demand'), ('available', 'Available')], 'State', required=True),
     }
     _order = 'date_start'
     _defaults = {
-        'date_start' : lambda *a : time.strftime("%Y-%m-%d"),
-        'state' : lambda *a : 'ondemand',
-        'department_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id
+        'date_start': lambda *a: time.strftime("%Y-%m-%d"),
+        'state': lambda *a: 'ondemand',
+        'department_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id
     }
 hr_allocation()
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_contract_timesheet/__init__.py'
--- hr_contract_timesheet/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_contract_timesheet/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,11 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-
-import hr_contract_timesheet
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import hr_contract_timesheet
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_contract_timesheet/__terp__.py' => 'hr_contract_timesheet/__openerp__.py'
--- hr_contract_timesheet/__terp__.py	2009-10-15 11:25:40 +0000
+++ hr_contract_timesheet/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,28 +15,27 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 {
-    "name" : "Human Resources Timesheets on contracts",
-    "version" : "0.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com";,
-    "depends" : ["hr_contract","hr_timesheet"],
+    "name": "Human Resources Timesheets on contracts",
+    "version": "0.1",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
+    "website": "http://www.openerp.com";,
+    "depends": ["hr_contract", "hr_timesheet"],
     "module": "",
     "description": """
         Compute the cost of an employee for his timesheets according
         to his contract definitions. If no contract are defined, it
         uses the product costs linked to the employee.
     """,
-    "init_xml" : [],
-    "demo_xml" : [],
-    "update_xml" : [],
+    "init_xml": [],
+    "demo_xml": [],
+    "update_xml": [],
     "active": False,
     "installable": True
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_contract_timesheet/hr_contract_timesheet.py'
--- hr_contract_timesheet/hr_contract_timesheet.py	2010-10-19 07:17:52 +0000
+++ hr_contract_timesheet/hr_contract_timesheet.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,26 +15,28 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
+import time
 from osv import fields, osv
-import time
+
 
 class hr_timesheet(osv.osv):
     _name = "hr.analytic.timesheet"
     _inherit = "hr.analytic.timesheet"
-    
+
     def on_change_unit_amount(self, cr, uid, id, prod_id, unit_amount, unit, user_id=False, date=False, context={}):
         if not date:
             date = time.strftime('%Y-%m-%d')
         if not user_id:
             user_id = uid
 
-        res = super(hr_timesheet, self).on_change_unit_amount(cr, uid, id, prod_id, unit_amount, unit, context)
+        res = super(hr_timesheet, self).on_change_unit_amount(
+            cr, uid, id, prod_id, unit_amount, unit, context)
         if user_id:
-            sql_req= '''
+            sql_req = '''
             SELECT -c.wage * cwt.factor_type / p.factor_days as hourlywage
             FROM hr_contract c
               LEFT JOIN hr_employee emp on (c.employee_id=emp.id)
@@ -47,13 +49,14 @@
             LIMIT 1
             '''
 
-            cr.execute(sql_req, (user_id,date,date))
+            cr.execute(sql_req, (user_id, date, date))
             contract_info = cr.dictfetchone()
             if res and contract_info:
-                res['value']['amount'] = contract_info['hourlywage'] * unit_amount
+                res['value']['amount'] = contract_info[
+                    'hourlywage'] * unit_amount
 
         return res
+
 hr_timesheet()
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_expense_line_tax/__init__.py'
--- hr_expense_line_tax/__init__.py	2011-02-13 23:55:44 +0000
+++ hr_expense_line_tax/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2010 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
 #
@@ -15,8 +15,8 @@
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import hr_expense_line_tax
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_expense_line_tax/__openerp__.py'
--- hr_expense_line_tax/__openerp__.py	2011-02-13 23:55:44 +0000
+++ hr_expense_line_tax/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2010 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
 #
@@ -15,28 +15,27 @@
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 {
-    "name" : "Tax on expense line",
-    "version" : "1.0",
-    "author" : "Savoir-faire Linux",
-    "website" : "http://www.savoirfairelinux.com";,
-    "category" : "Human Resources",
+    "name": "Tax on expense line",
+    "version": "1.0",
+    "author": "Savoir-faire Linux",
+    "website": "http://www.savoirfairelinux.com";,
+    "category": "Human Resources",
     "description": """
 	This module adds a tax field on the expense line and set the taxes of
-        the employee invoice based on this tax, discarding the ones set on the 
+        the employee invoice based on this tax, discarding the ones set on the
         product.	
     """,
-    "depends" : ['hr_expense'],
-    "init_xml" : [],
-    "update_xml" : [
-	'hr_expense.xml',
+    "depends": ['hr_expense'],
+    "init_xml": [],
+    "update_xml": [
+        'hr_expense.xml',
     ],
-    "demo_xml" : [],
-    "installable" : True,
-    "certificate" : ''
+    "demo_xml": [],
+    "installable": True,
+    "certificate": ''
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_expense_line_tax/hr_expense_line_tax.py'
--- hr_expense_line_tax/hr_expense_line_tax.py	2011-03-04 05:19:21 +0000
+++ hr_expense_line_tax/hr_expense_line_tax.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2010 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
 #
@@ -15,43 +15,52 @@
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 import netsvc
 logger = netsvc.Logger()
 from osv import osv, fields
 from tools.translate import _
 
+
 class hr_expense_line(osv.osv):
     _inherit = 'hr.expense.line'
     _columns = {
-        'tax_id': fields.many2one('account.tax', 'Tax', domain=[('type_tax_use','=','purchase')]),
+        'tax_id': fields.many2one('account.tax', 'Tax', domain=[('type_tax_use', '=', 'purchase')]),
     }
-    
+
     def onchange_product_id(self, cr, uid, ids, product_id, uom_id, employee_id, tax_id, context=None):
         res = {}
-        logger.notifyChannel("",netsvc.LOG_INFO,"This is new OnChange")
+        logger.notifyChannel("", netsvc.LOG_INFO, "This is new OnChange")
         if product_id:
-            product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
+            product = self.pool.get('product.product').browse(
+                cr, uid, product_id, context=context)
             res['name'] = product.name
-            amount_unit = product.price_get('standard_price', context=context)[product.id]
+            amount_unit = product.price_get(
+                'standard_price', context=context)[product.id]
             res['unit_amount'] = amount_unit
             if not uom_id:
                 res['uom_id'] = product.uom_id.id
-            logger.notifyChannel("",netsvc.LOG_INFO,"tax_id = " + str(tax_id))
+            logger.notifyChannel(
+                "", netsvc.LOG_INFO, "tax_id = " + str(tax_id))
             if not tax_id:
-                logger.notifyChannel("",netsvc.LOG_INFO,"tax_id = " + str(tax_id))
+                logger.notifyChannel(
+                    "", netsvc.LOG_INFO, "tax_id = " + str(tax_id))
                 if product.supplier_taxes_id:
-                    logger.notifyChannel("",netsvc.LOG_INFO,"product_name = " + product.name)
-                    logger.notifyChannel("",netsvc.LOG_INFO,"product_id = " + product.name)
-                    logger.notifyChannel("",netsvc.LOG_INFO,"supplier_taxes = " + str(len(product.supplier_taxes_id)))
+                    logger.notifyChannel(
+                        "", netsvc.LOG_INFO, "product_name = " + product.name)
+                    logger.notifyChannel(
+                        "", netsvc.LOG_INFO, "product_id = " + product.name)
+                    logger.notifyChannel(
+                        "", netsvc.LOG_INFO, "supplier_taxes = " + str(len(product.supplier_taxes_id)))
                     res['tax_id'] = product.supplier_taxes_id[0].id
         return {'value': res}
 
 hr_expense_line()
 
+
 class hr_expense_expense(osv.osv):
     _inherit = 'hr.expense.expense'
 
@@ -67,17 +76,19 @@
             for l in exp.line_ids:
                 tax_id = []
                 if l.tax_id:
-                   tax_id = [l.tax_id.id]
+                    tax_id = [l.tax_id.id]
                 if l.product_id:
                     if not tax_id:
-                        tax_id=[x.id for x in l.product_id.supplier_taxes_id]
+                        tax_id = [x.id for x in l.product_id.supplier_taxes_id]
                     acc = l.product_id.product_tmpl_id.property_account_expense
                     if not acc:
                         acc = l.product_id.categ_id.property_account_expense_categ
                 else:
-                    acc = property_obj.get(cr, uid, 'property_account_expense_categ', 'product.category')
+                    acc = property_obj.get(
+                        cr, uid, 'property_account_expense_categ', 'product.category')
                     if not acc:
-                        raise osv.except_osv(_('Error !'), _('Please configure Default Expanse account for Product purchase, `property_account_expense_categ`'))
+                        raise osv.except_osv(
+                            _('Error !'), _('Please configure Default Expanse account for Product purchase, `property_account_expense_categ`'))
 
                 lines.append((0, False, {
                     'name': l.name,
@@ -90,9 +101,11 @@
                     'account_analytic_id': l.analytic_account.id,
                 }))
             if not exp.employee_id.address_home_id:
-                raise osv.except_osv(_('Error !'), _('The employee must have a Home address.'))
+                raise osv.except_osv(
+                    _('Error !'), _('The employee must have a Home address.'))
             if not exp.employee_id.address_home_id.partner_id:
-                raise osv.except_osv(_('Error !'), _("The employee's home address must have a partner linked."))
+                raise osv.except_osv(
+                    _('Error !'), _("The employee's home address must have a partner linked."))
             acc = exp.employee_id.address_home_id.partner_id.property_account_payable.id
             payment_term_id = exp.employee_id.address_home_id.partner_id.property_payment_term.id
             inv = {
@@ -110,28 +123,35 @@
                 'fiscal_position': exp.employee_id.address_home_id.partner_id.property_account_position.id
             }
             if payment_term_id:
-                to_update = invoice_obj.onchange_payment_term_date_invoice(cr, uid, [], payment_term_id, None)
+                to_update = invoice_obj.onchange_payment_term_date_invoice(
+                    cr, uid, [], payment_term_id, None)
                 if to_update:
                     inv.update(to_update['value'])
             journal = False
             if exp.journal_id:
-                inv['journal_id']=exp.journal_id.id
+                inv['journal_id'] = exp.journal_id.id
                 journal = exp.journal_id
             else:
-                journal_id = invoice_obj._get_journal(cr, uid, context={'type': 'in_invoice'})
+                journal_id = invoice_obj._get_journal(
+                    cr, uid, context={'type': 'in_invoice'})
                 if journal_id:
                     inv['journal_id'] = journal_id
                     journal = account_journal.browse(cr, uid, journal_id)
             if journal and not journal.analytic_journal_id:
-                analytic_journal_ids = analytic_journal_obj.search(cr, uid, [('type','=','purchase')])
+                analytic_journal_ids = analytic_journal_obj.search(
+                    cr, uid, [('type', '=', 'purchase')])
                 if analytic_journal_ids:
-                    account_journal.write(cr, uid, [journal.id],{'analytic_journal_id':analytic_journal_ids[0]})
+                    account_journal.write(cr, uid, [journal.id], {
+                                          'analytic_journal_id': analytic_journal_ids[0]})
             inv_id = invoice_obj.create(cr, uid, inv, {'type': 'in_invoice'})
-            invoice_obj.button_compute(cr, uid, [inv_id], {'type': 'in_invoice'}, set_total=True)
+            invoice_obj.button_compute(
+                cr, uid, [inv_id], {'type': 'in_invoice'}, set_total=True)
             wf_service = netsvc.LocalService("workflow")
-            wf_service.trg_validate(uid, 'account.invoice', inv_id, 'invoice_open', cr)
+            wf_service.trg_validate(
+                uid, 'account.invoice', inv_id, 'invoice_open', cr)
 
-            self.write(cr, uid, [exp.id], {'invoice_id': inv_id, 'state': 'invoiced'})
+            self.write(cr, uid, [exp.id], {
+                       'invoice_id': inv_id, 'state': 'invoiced'})
             res = inv_id
         return res
 

=== removed directory 'hr_holidays_cci'
=== removed file 'hr_holidays_cci/__init__.py'
--- hr_holidays_cci/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_cci/__init__.py	1970-01-01 00:00:00 +0000
@@ -1,26 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#    
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import hr
-import wizard
-import report
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== removed file 'hr_holidays_cci/__terp__.py'
--- hr_holidays_cci/__terp__.py	2010-05-05 13:41:27 +0000
+++ hr_holidays_cci/__terp__.py	1970-01-01 00:00:00 +0000
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-
-{
-    "name" : "Human Resources: Holidays management",
-    "version" : "0.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com/";,
-    "description": """Human Ressources: Holidays summary printing functionality
-
-
-NOTICE: This Module is Deprecated. Please install hr_holidays in order to have latest functionalities.""",
-    "depends" : ["hr_holidays",],
-    "init_xml" : [],
-    "demo_xml" : [],
-    "update_xml" : ["hr_view.xml","hr_holidays_report.xml","hr_holidays_wizard.xml",],
-    "active": False,
-    "installable": False
-}
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== removed file 'hr_holidays_cci/hr.py'
--- hr_holidays_cci/hr.py	2008-07-23 14:24:53 +0000
+++ hr_holidays_cci/hr.py	1970-01-01 00:00:00 +0000
@@ -1,127 +0,0 @@
-# -*- encoding: utf-8 -*-
-##################################################################################
-#
-# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com) All Rights Reserved.
-#
-# $Id: hr.py 4656 2006-11-24 09:58:42Z Cyp $
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-##############################################################################
-
-from mx import DateTime
-import time
-import pooler
-import netsvc
-from osv import fields, osv
-
-def _employee_get(obj,cr,uid,context={}):
-    ids = obj.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
-    if ids:
-        return ids[0]
-    return False
-
-class hr_holidays(osv.osv):
-    _name = "hr.holidays"
-    _inherit = 'hr.holidays'
-    _description = "Holidays"
-    _columns = {
-        'name' : fields.char('Description', required=True, readonly=True, size=64, states={'draft':[('readonly',False)]}),
-        'state': fields.selection([('draft', 'draft'), ('confirm', 'Confirmed'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
-        'date_from' : fields.datetime('Vacation start day', required=True, readonly=True, states={'draft':[('readonly',False)]}),
-        'date_to' : fields.datetime('Vacation end day', readonly=True, states={'draft':[('readonly',False)]}),
-        'holiday_status' : fields.many2one("hr.holidays.status", "Holiday's Status", readonly=True, states={'draft':[('readonly',False)]}),
-        'employee_id' : fields.many2one('hr.employee', 'Employee', select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)]}),
-        'user_id':fields.many2one('res.users', 'Employee_id', states={'draft':[('readonly',False)]}, relate=True, select=True, readonly=True),
-        'manager_id' : fields.many2one('hr.employee', 'Holiday manager', invisible=False, readonly=True),
-        'notes' : fields.text('Notes'),
-    }
-    _defaults = {
-        'employee_id' : _employee_get ,
-        'state' : lambda *a: 'draft',
-        'user_id': lambda obj, cr, uid, context: uid
-    }
-    _order = 'date_from desc'
-    def set_to_draft(self, cr, uid, ids, *args):
-        #for exp in self.browse(cr, uid, ids):
-        self.write(cr, uid, ids, {
-            'state':'draft'
-        })
-        wf_service = netsvc.LocalService("workflow")
-        wf_service.trg_create(uid, 'hr.holidays', ids[0], cr)
-        return True
-
-    def holidays_validate(self, cr, uid, ids, *args):
-        #for exp in self.browse(cr, uid, ids):
-        ids2 = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
-        self.write(cr, uid, ids, {
-            'state':'validate',
-            'manager_id':ids2[0]
-        })
-        return True
-
-    def holidays_confirm(self, cr, uid, ids, *args):
-        #for exp in self.browse(cr, uid, ids):
-        self.write(cr, uid, ids, {
-            'state':'confirm'
-        })
-        return True
-
-    def holidays_refuse(self, cr, uid, ids, *args):
-        #for exp in self.browse(cr, uid, ids):
-        ids2 = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
-        self.write(cr, uid, ids, {
-            'state':'refuse',
-            'manager_id':ids2[0]
-        })
-        return True
-
-    def holidays_cancel(self, cr, uid, ids, *args):
-        #for exp in self.browse(cr, uid, ids):
-        self.write(cr, uid, ids, {
-            'state':'cancel'
-            })
-        return True
-
-    def holidays_draft(self, cr, uid, ids, *args):
-        #for exp in self.browse(cr, uid, ids):
-        self.write(cr, uid, ids, {
-            'state':'draft'
-        })
-        return True
-
-hr_holidays()
-
-class hr_holidays_status(osv.osv):
-    _name = "hr.holidays.status"
-    _inherit = 'hr.holidays.status'
-    _description = "Holidays Status"
-    _columns = {
-        'color_name' : fields.selection([('red', 'Red'), ('green', 'Green'), ('blue','Blue'), ('yellow', 'Yellow'), ('magenta', 'Magenta'),('cyan', 'Cyan'),('black', 'Black'),('pink', 'Pink'),('brown', 'Brown'),('indigo', 'Indigo'),('lightcoral', 'Light Coral'),('lightsteelblue', 'Light Steel Blue')],'Color of the status', required=True),
-    }
-    _defaults = {
-        'color_name': lambda *args: 'red',
-    }
-hr_holidays_status()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== removed file 'hr_holidays_cci/hr_holidays_report.xml'
--- hr_holidays_cci/hr_holidays_report.xml	2008-09-12 22:59:35 +0000
+++ hr_holidays_cci/hr_holidays_report.xml	1970-01-01 00:00:00 +0000
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<openerp>
-	<data>
-		<report id="report_holidays_summary"
-				string="Summary Of Holidays"
-				model="hr.holidays"
-				name="hr.holidays.holidays_summary"
-				xsl="hr_holidays_cci/report/holidays_summary.xsl"
-				auto="False"
-				menu="False"/>
-
-		<!--<wizard id="wizard_hr_holidays_summary"
-			string="Summary Of Holidays"
-			model="hr.holidays"
-			name="hr.holidays.holidays_summary"
-			menu="False"/>
-
-		<menuitem
-			name="Human Resources/Holidays Request/Print Summary Of Holidays"
-			action="wizard_hr_holidays_summary"
-			type="wizard"
-			id="menu_wizard_hr_holidays_summary"/>-->
-
-	</data>
-</openerp>

=== removed file 'hr_holidays_cci/hr_holidays_wizard.xml'
--- hr_holidays_cci/hr_holidays_wizard.xml	2008-09-12 22:59:35 +0000
+++ hr_holidays_cci/hr_holidays_wizard.xml	1970-01-01 00:00:00 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" ?>
-<openerp>
-	<data>
-	<wizard string="Print Summary of Holidays"
-		 model="hr.holidays"
-		  name="hr.holidays.summary"
-		  id="holidays_summary"/>
-
-	<menuitem name="Print Summary of Holidays" parent="hr.menu_hr_reporting"
-		 action="holidays_summary"
-		 type="wizard"
-		 id="menu_holidays_summary"/>
- 	</data>
-</openerp>

=== removed file 'hr_holidays_cci/hr_view.xml'
--- hr_holidays_cci/hr_view.xml	2008-09-12 22:59:35 +0000
+++ hr_holidays_cci/hr_view.xml	1970-01-01 00:00:00 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" ?>
-<openerp>
-	<data>
-		<record model="ir.ui.view" id="edit_holiday_status1">
-			<field name="name">hr.holidays.status.form</field>
-			<field name="model">hr.holidays.status</field>
-			<field name="inherit_id" ref="hr.edit_holiday_status"/>
-			<field name="type">form</field>
-			<field name="arch" type="xml">
-				<form string="Define holiday status">
-					<field name="color_name" colspan="3" />
-					<label string="Make sure that no colors are repeated." colspan="1" />
-				</form>
-			</field>
-		</record>
-		<record model="ir.ui.view" id="view_holiday_status1">
-			<field name="name">hr.holidays.status.tree</field>
-			<field name="model">hr.holidays.status</field>
-			<field name="type">tree</field>
-			<field name="arch" type="xml">
-				<tree string="Holiday status">
-					<field name="name"/>
-					<field name="color_name" />
-				</tree>
-			</field>
-		</record>
-		<record model="ir.actions.act_window" id="open_view_holiday_status1">
-			<field name="type">ir.actions.act_window</field>
-			<field name="res_model">hr.holidays.status</field>
-			<field name="view_type">form</field>
-			<field name="view_mode">tree,form</field>
-			<field name="view_id" ref="view_holiday_status1" />
-		</record>
-		<menuitem name="Holiday Status" parent="hr.menu_hr_configuration" id="menu_open_view_holiday_status1" action="open_view_holiday_status1" groups="base.group_admin"/>
-	</data>
-</openerp>

=== removed directory 'hr_holidays_cci/i18n'
=== removed file 'hr_holidays_cci/i18n/fr_BE.po'
--- hr_holidays_cci/i18n/fr_BE.po	2009-12-10 11:23:25 +0000
+++ hr_holidays_cci/i18n/fr_BE.po	1970-01-01 00:00:00 +0000
@@ -1,35 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-#	* hr_holidays_cci
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.6\n"
-"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
-"POT-Creation-Date: 2009-12-10 11:00:31+0000\n"
-"PO-Revision-Date: 2009-12-10 11:00:31+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
-"Plural-Forms: \n"
-
-#. module: hr_holidays_cci
-#: model:ir.module.module,description:hr_holidays_cci.module_meta_information
-msgid "Human Ressources: Holidays summary printing functionality \n"
-"\n"
-"\n"
-"NOTICE: This Module is Deprecated. Please install hr_holidays in order to have latest functionalities."
-msgstr ""
-
-#. module: hr_holidays_cci
-#: model:ir.module.module,shortdesc:hr_holidays_cci.module_meta_information
-msgid "Human Resources: Holidays management"
-msgstr ""
-
-#. module: hr_holidays_cci
-#: field:hr.holidays,holiday_status:0
-msgid "Holiday's Status"
-msgstr ""
-

=== removed file 'hr_holidays_cci/i18n/sv.po'
--- hr_holidays_cci/i18n/sv.po	2010-11-22 16:27:37 +0000
+++ hr_holidays_cci/i18n/sv.po	1970-01-01 00:00:00 +0000
@@ -1,28 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-#	* hr_holidays_cci
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.14\n"
-"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
-"POT-Creation-Date: 2010-11-22 10:19:32+0000\n"
-"PO-Revision-Date: 2010-11-22 10:19:32+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
-"Plural-Forms: \n"
-
-#. module: hr_holidays_cci
-#: model:ir.module.module,description:hr_holidays_cci.module_meta_information
-msgid "Human Ressources: Holidays summary printing functionality \n"
-"\n"
-"\n"
-"NOTICE: This Module is Deprecated. Please install hr_holidays in order to have latest functionalities."
-msgstr "Human Ressources: Holidays summary printing functionality \n"
-"\n"
-"\n"
-"NOTICE: This Module is Deprecated. Please install hr_holidays in order to have latest functionalities."
-

=== removed directory 'hr_holidays_cci/report'
=== removed file 'hr_holidays_cci/report/__init__.py'
--- hr_holidays_cci/report/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_cci/report/__init__.py	1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#    
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import holidays_summary_report
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== removed file 'hr_holidays_cci/report/holidays_summary.xsl'
--- hr_holidays_cci/report/holidays_summary.xsl	2008-01-04 08:52:07 +0000
+++ hr_holidays_cci/report/holidays_summary.xsl	1970-01-01 00:00:00 +0000
@@ -1,232 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
-    xmlns:fo="http://www.w3.org/1999/XSL/Format";>
-
-	<xsl:template match="/">
-		<xsl:call-template name="rml" />
-	</xsl:template>
-
-	<xsl:template name="rml">
-		<document filename="example.pdf">
-			<template pageSize="74.7cm,30cm" leftMargin="2.0cm" rightMargin="2.0cm" topMargin="2.0cm" bottomMargin="2.0cm" title="Timesheets" author="Generated by Tiny ERP, Fabien Pinckaers" allowSplitting="20">
-				<pageTemplate id="first">
-					<frame id="col1" x1="2.0cm" y1="2.5cm" width="70.7cm" height="25cm"/>
-				</pageTemplate>
-			</template>
-
-			<stylesheet>
-				<paraStyle name="normal" fontName="Helvetica" fontSize="8" alignment="left" />
-				<paraStyle name="normal-title" fontName="Helvetica" fontSize="6" />
-				<paraStyle name="title" fontName="Helvetica" fontSize="18" alignment="center" />
-				<paraStyle name="dept" fontName="Helvetica-Bold" fontSize="11" alignment="left" />
-				<paraStyle name="employee" fontName="Helvetica-Bold" fontSize="10" textColor="black" />
-				<paraStyle name="glande" textColor="red" />
-				<paraStyle name="normal_people" textColor="green" />
-				<paraStyle name="esclave" textColor="blue" />
-				<blockTableStyle id="products">
-					 <blockAlignment value="CENTER" start="1,0" stop="-1,-1"/>
-					 <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" />
-					 <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/>
-					 <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/>
-					 <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/>
-					 <blockFont name="Helvetica-Bold" size="10" start="0,-1" stop="-1,-1"/>
-					 <blockValign value="TOP"/>
-				</blockTableStyle>
-				<blockTableStyle id="legend">
-					<blockAlignment value="LEFT" start="1,0" stop="-1,-1" />
-					<blockFont name="Helvetica" size="8" start="0,-1" stop="-1,-1"/>
-					<lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" />
-					<lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/>
-					<lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/>
-					<lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/>
-					<blockBackground colorName="#FFFFFF" start="0,0" stop="-1,-1"/>
-					<xsl:for-each select="/report/legend">
-						<blockBackground>
-							<xsl:attribute name="colorName">
-							<xsl:value-of select="attribute::color" />
-							</xsl:attribute>
-							<xsl:attribute name="start">
-								<xsl:text>0,</xsl:text>
-								<xsl:value-of select="attribute::row" />
-							</xsl:attribute>
-							<xsl:attribute name="stop">
-								<xsl:text>0,</xsl:text>
-								<xsl:value-of select="attribute::row" />
-							</xsl:attribute>
-						</blockBackground>
-					</xsl:for-each>
-					<blockValign value="TOP"/>
-				</blockTableStyle>
-				<blockTableStyle id="month">
-					<blockAlignment value="CENTER" start="1,0" stop="-1,-1" />
-					<blockFont name="Helvetica" size="8" start="0,0" stop="-1,1"/>
-					<blockFont name="Helvetica" size="6" start="0,2" stop="-2,-2"/>
-					<blockFont name="Helvetica-BoldOblique" size="8" start="0,-1" stop="-1,-1"/>
-					<blockBackground colorName="#FFFFFF" start="1,0" stop="-2,1"/>
-					<xsl:for-each select="/report/days/dayy[@name='Sat' or @name='Sun']">
-						<xsl:variable name="col" select="attribute::cell" />
-						<blockBackground>
-							<xsl:attribute name="colorName">lightgrey</xsl:attribute>
-							<xsl:attribute name="start">
-								<xsl:value-of select="$col" />
-								<xsl:text>,0</xsl:text>
-							</xsl:attribute>
-							<xsl:attribute name="stop">
-								<xsl:value-of select="$col" />
-								<xsl:text>,-1</xsl:text>
-							</xsl:attribute>
-						</blockBackground>
-					</xsl:for-each>
-					<xsl:for-each select="/report/info">
-						<xsl:variable name="val" select="attribute::val" />
-						<xsl:variable name="col" select="attribute::number" />
-						<xsl:variable name="row" select="attribute::id" />
-						<xsl:for-each select="/report/legend">
-							<xsl:variable name="val_id" select="attribute::id" />
-							<xsl:variable name="color" select="attribute::color" />
-							<xsl:if test="$val_id = $val ">
-								<blockBackground>
-									<xsl:attribute name="colorName"><xsl:value-of select="$color" /></xsl:attribute>
-									<xsl:attribute name="start">
-										<xsl:value-of select="$col" />
-										<xsl:text>,</xsl:text>
-										<xsl:value-of select="$row + 1" />
-									</xsl:attribute>
-									<xsl:attribute name="stop">
-										<xsl:value-of select="$col" />
-										<xsl:text>,</xsl:text>
-										<xsl:value-of select="$row + 1" />
-									</xsl:attribute>
-								</blockBackground>
-							</xsl:if>
-						</xsl:for-each>
-					</xsl:for-each>
-					<xsl:for-each select="report/employee">
-						<xsl:variable name="dept" select="attribute::id" />
-						<xsl:variable name="row" select="attribute::row" />
-						<xsl:if test="$dept = 1">
-							<blockBackground>
-								<xsl:attribute name="colorName">lightgrey</xsl:attribute>
-								<xsl:attribute name="start">
-									<xsl:text>0,</xsl:text>
-									<xsl:value-of select="$row +1" />
-								</xsl:attribute>
-								<xsl:attribute name="stop">
-									<xsl:text>0,</xsl:text>
-									<xsl:value-of select="$row +1" />
-								</xsl:attribute>
-							</blockBackground>
-						</xsl:if>
-					</xsl:for-each>
-					<lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" />
-					<lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/>
-					<lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/>
-					<lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/>
-					<blockValign value="TOP"/>
-				</blockTableStyle>
-
-			</stylesheet>
-
-			<story>
-				<xsl:call-template name="story"/>
-			</story>
-		</document>
-	</xsl:template>
-
-	<xsl:template name="story">
-		<para style="title" t="1">Holidays Summary</para>
-		<spacer length="1cm" />
-		<xsl:variable name="cols_legend">
-			<xsl:text>1.2cm,7.0cm</xsl:text>
-		</xsl:variable>
-		<blockTable>
-			<xsl:attribute name="style">products</xsl:attribute>
-			<xsl:attribute name="colWidths"><xsl:value-of select="report/cols_months"/></xsl:attribute>
-			<tr>
-			 	<td>Month</td>
-				<xsl:for-each select="report/months">
-					<td>
-						<xsl:value-of select="attribute::name" />
-					</td>
-				</xsl:for-each>
-			</tr>
-		</blockTable>
-
-		<blockTable>
-			<xsl:attribute name="style">month</xsl:attribute>
-			<xsl:attribute name="colWidths"><xsl:value-of select="report/cols" /></xsl:attribute>
-			<tr>
-				<td> </td>
-				<xsl:for-each select="report/days/dayy">
-					<td>
-						<xsl:value-of select="attribute::name" />
-					</td>
-				</xsl:for-each>
-			</tr>
-			<tr>
-				<td><para>
-						<xsl:attribute name="style">employee</xsl:attribute>
-								Employee Name
-					</para>
-				</td>
-				<xsl:for-each select="report/days/dayy">
-					<td>
-						<xsl:value-of select="attribute::number" />
-					</td>
-				</xsl:for-each>
-            </tr>
-			<xsl:apply-templates select="report/employee"/>
-			<xsl:for-each select="report/employee">
-				<xsl:variable name="id" select="attribute::id"/>
-
-				<tr>
-					<td t="1">
-						<para>
-							<xsl:choose>
-   								 <xsl:when test="$id = 1">
-      							 	<xsl:attribute name="style">dept</xsl:attribute>
-      							 </xsl:when>
-								<xsl:otherwise>
-      								<xsl:attribute name="style">normal</xsl:attribute>
-   								</xsl:otherwise>
-							</xsl:choose>
-							<xsl:value-of select="attribute::name"/>
-						</para>
-					</td>
-					<xsl:for-each select="//report/days/dayy">
-						<xsl:variable name="cell" select="attribute::cell" />
-						<td></td>
-					</xsl:for-each>
-				</tr>
-			</xsl:for-each>
-
-		</blockTable>
-		<spacer length="1cm" />
-		<blockTable>
-			<xsl:attribute name="style">legend</xsl:attribute>
-			<xsl:attribute name="colWidths"><xsl:value-of select="$cols_legend"/></xsl:attribute>
-			<tr>
-					<td>Color</td>
-					<td>Holiday Type</td>
-
-			</tr>
-			<xsl:for-each select="report/legend">
-			<tr>
-					<td>
-							<para>
-							<xsl:attribute name="style">normal</xsl:attribute>
-								<xsl:value-of select="attribute::row"/>
-							</para>
-					</td>
-					<td>
-							<para>
-							<xsl:attribute name="style">normal</xsl:attribute>
-								<xsl:value-of select="attribute::name"/>
-							</para>
-					</td>
-            </tr>
-            </xsl:for-each>
-		</blockTable>
-	</xsl:template>
-</xsl:stylesheet>

=== removed file 'hr_holidays_cci/report/holidays_summary_report.py'
--- hr_holidays_cci/report/holidays_summary_report.py	2010-07-06 06:47:27 +0000
+++ hr_holidays_cci/report/holidays_summary_report.py	1970-01-01 00:00:00 +0000
@@ -1,228 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#    
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import datetime
-import time
-
-from osv import fields, osv
-from report.interface import report_rml
-from report.interface import toxml
-
-import pooler
-
-
-def lengthmonth(year, month):
-    if month == 2 and ((year % 4 == 0) and ((year % 100 != 0) or (year % 400 == 0))):
-        return 29
-    return [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]
-
-def strToDate(dt):
-    dt_date=datetime.date(int(dt[0:4]),int(dt[5:7]),int(dt[8:10]))
-    return dt_date
-
-def emp_create_xml(self,cr,uid,dept,row_id,empid,name,som,eom):
-
-    dayDiff=eom-som
-    display={}
-    if dept==0:
-        p_id=pooler.get_pool(cr.dbname).get('hr.holidays').search(cr,uid,[('employee_id','=',empid)])
-
-        ids_date = pooler.get_pool(cr.dbname).get('hr.holidays').read(cr,uid,p_id,['date_from','date_to','holiday_status','state'])
-
-        for index in range(1,dayDiff.days+2):
-            diff=index-1
-            current=som+datetime.timedelta(diff)
-
-            for item in ids_date:
-    #            print current,"from",item['date_from'],"to",item['date_to']
-                if current >= strToDate(item['date_from']) and current <= strToDate(item['date_to']):
-                    if item['state']=='confirm' or item['state']=='validate':
-                        display[index]=item['holiday_status'][0]
-                    else:
-                        display[index]=' '
-                    break
-                else:
-                    display[index]=' '
-
-    else:
-
-         for index in range(1,dayDiff.days+2):
-              display[index]=' '
-
-    xml = '''
-        <time-element index="%d">
-            <value>%s</value>
-        </time-element>
-        '''
-    time_xml = ([xml % (index, value) for index,value in display.iteritems()])
-    data_xml=['<info id="%d" number="%d" val="%s" />' % (row_id,x,display[x]) for x in range(1,len(display)+1) ]
-
-    # Computing the xml
-    xml = '''
-    %s
-    <employee row="%d" id="%d" name="%s">
-    %s
-    </employee>
-    ''' % (data_xml,row_id,dept, toxml(name), '\n'.join(time_xml))
-
-    return xml
-
-class report_custom(report_rml):
-    def create_xml(self, cr, uid, ids,data, context):
-        depts=[]
-        emp_id={}
-
-        # Computing the dates (start of month: som, and end of month: eom)
-        cr.execute("select id,name,color_name from hr_holidays_status order by id")
-        legend=cr.fetchall()
-
-        today=datetime.datetime.today()
-
-        first_date=data['form']['date_from']
-        last_date=data['form']['date_to']
-
-        som = strToDate(first_date)
-        eom = strToDate(last_date)
-
-        day_diff=eom-som
-
-        date_xml=[]
-        for l in range(0,len(legend)):
-            date_xml += ['<legend row="%d" id="%d" name="%s" color="%s" />' % (l+1,legend[l][0],legend[l][1],legend[l][2])]
-
-        date_xml += ['<date month="%s" year="%d" />' % (som.strftime('%B'), som.year),'<days>']
-
-        cell=1
-        if day_diff.days>=30:
-            date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
-        else:
-            if day_diff.days>=(lengthmonth(som.year, som.month)-som.day):
-                date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
-            else:
-                date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, eom.day+1)]
-
-        cell=x-som.day+1
-        day_diff1=day_diff.days-cell+1
-
-        width_dict={}
-        month_dict={}
-
-        i=1
-        j=1
-        year=som.year
-        month=som.month
-        month_dict[j]=som.strftime('%B')
-        width_dict[j]=cell
-
-        while day_diff1>0:
-            if month+i<=12:
-                if day_diff1>30:
-                    som1=datetime.date(year,month+i,1)
-                    date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, lengthmonth(year,i+month)+1)]
-                    i=i+1
-                    j=j+1
-                    month_dict[j]=som1.strftime('%B')
-                    cell=cell+x
-                    width_dict[j]=x
-
-                else:
-                    som1=datetime.date(year,month+i,1)
-                    date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, eom.day+1)]
-                    i=i+1
-                    j=j+1
-                    month_dict[j]=som1.strftime('%B')
-                    cell=cell+x
-                    width_dict[j]=x
-
-                day_diff1=day_diff1-x
-#                print "now day_diff1 is..frst.",day_diff1
-            else:
-                years=year+1
-                year=years
-                month=0
-                i=1
-                if day_diff1>=30:
-                    som1=datetime.date(years,i,1)
-                    date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, lengthmonth(years,i)+1)]
-                    i=i+1
-                    j=j+1
-                    month_dict[j]=som1.strftime('%B')
-                    cell=cell+x
-                    width_dict[j]=x
-
-                else:
-                    som1=datetime.date(years,i,1)
-                    i=i+1
-                    j=j+1
-                    month_dict[j]=som1.strftime('%B')
-                    date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, eom.day+1)]
-                    cell=cell+x
-                    width_dict[j]=x
-
-                day_diff1=day_diff1-x
-#                print "now day_diff1 is..scnd.",day_diff1
-
-        date_xml.append('</days>')
-        date_xml.append('<cols>3.5cm%s</cols>\n' % (',0.7cm' * (day_diff.days+1)))
-
-        st='<cols_months>3.5cm'
-        for m in range(1,len(width_dict)+1):
-            st+=',' + str(0.7 *width_dict[m])+'cm'
-        st+='</cols_months>\n'
-#        print "dates...",date_xml
-        months_xml =['<months  number="%d" name="%s" />' % (x,month_dict[x]) for x in range(1,len(month_dict)+1) ]
-        months_xml.append(st)
-        emp_xml=''
-        row_id=1
-        for id in data['form']['depts'][0][2]:
-            dept = pooler.get_pool(cr.dbname).get('hr.department').browse(cr, uid, id, context.copy())
-            depts.append(dept)
-
-            cr.execute('select user_id from hr_department_user_rel where department_id=%d'%(dept.id))
-            result=cr.fetchall()
-
-            if result!=[]:
-                emp_xml += emp_create_xml(self,cr,uid,1,row_id,dept.id,dept.name,som, eom)
-                row_id = row_id +1
-            else:
-                continue
-            for d in range(0,len(result)):
-                emp_id[d]=pooler.get_pool(cr.dbname).get('hr.employee').search(cr,uid,[('user_id','=',result[d][0])])
-                items = pooler.get_pool(cr.dbname).get('hr.employee').read(cr,uid,emp_id[d],['id','name'])
-
-                for item in items:
-                    emp_xml += emp_create_xml(self,cr,uid,0,row_id,item['id'],item['name'],som, eom)
-                    row_id = row_id +1
-
-        # Computing the xml
-        xml='''<?xml version="1.0" encoding="UTF-8" ?>
-        <report>
-        %s
-        %s
-        %s
-        </report>
-        ''' % (months_xml,date_xml, emp_xml)
-
-        return xml
-
-report_custom('report.holidays.summary', 'hr.holidays', '', 'addons/hr_holidays_cci/report/holidays_summary.xsl')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== removed directory 'hr_holidays_cci/wizard'
=== removed file 'hr_holidays_cci/wizard/__init__.py'
--- hr_holidays_cci/wizard/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_cci/wizard/__init__.py	1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#    
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import holidays_summary
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== removed file 'hr_holidays_cci/wizard/holidays_summary.py'
--- hr_holidays_cci/wizard/holidays_summary.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_cci/wizard/holidays_summary.py	1970-01-01 00:00:00 +0000
@@ -1,101 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#    
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import wizard
-import datetime
-
-form='''<?xml version="1.0"?>
-<form string="Choose the timespan for the report">
-    <field name="date_from" colspan="1" />
-    <field name="date_to" colspan="1" />
-    <field name="depts" colspan="4" />
-</form>'''
-
-back_form='''<?xml version="1.0"?>
-<form string="Notification">
-<label string="You should select less than 90 days for the proper layout of report. Try again." colspan="4"/>
-</form>'''
-
-back_fields={
-}
-class wizard_report(wizard.interface):
-    def _check(self, cr, uid, data, context):
-        cr.execute("select CURRENT_DATE")
-        _date_from=cr.fetchone()
-        cr.execute("select CURRENT_DATE + 89")
-        _date_to=cr.fetchone()
-
-        data['form']['date_from']=_date_from[0]
-        data['form']['date_to']=_date_to[0]
-
-        return data['form']
-    def _check90days(self,cr,uid,data,context):
-
-        first_date=data['form']['date_from']
-        last_date=data['form']['date_to']
-
-        som = datetime.date(int(first_date[0:4]),int(first_date[5:7]),int(first_date[8:10]))
-        eom = datetime.date(int(last_date[0:4]),int(last_date[5:7]),int(last_date[8:10]))
-
-        day_diff=eom-som
-        if day_diff.days>90:
-           return 'notify'
-        else:
-           return 'report'
-
-    fields={
-        'date_from':{
-            'string':'From',
-            'type':'date',
-            'required':True,
-
-        },
-        'date_to':{
-            'string':'To',
-            'type':'date',
-            'required':True,
-
-        },
-        'depts': {'string': 'Department(s)', 'type': 'many2many', 'relation': 'hr.department','required': True},
-
-    }
-
-    states={
-        'init':{
-            'actions':[_check],
-            'result':{'type':'form', 'arch':form, 'fields':fields, 'state':[('end', 'Cancel'), ('state_next', 'Print')]}
-        },
-        'state_next':{
-            'actions':[],
-            'result': {'type':'choice','next_state':_check90days}
-        },
-        'notify': {
-            'actions': [],
-            'result': {'type':'form','arch':back_form,'fields':back_fields,'state':[('end','Ok')]}
-        },
-        'report':{
-            'actions':[],
-            'result':{'type':'print', 'report':'holidays.summary', 'state':'end'}
-        }
-    }
-wizard_report('hr.holidays.summary')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_evaluation/__init__.py'
--- hr_holidays_evaluation/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_evaluation/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import hr_holidays_evaluation
 
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== renamed file 'hr_holidays_evaluation/__terp__.py' => 'hr_holidays_evaluation/__openerp__.py'
--- hr_holidays_evaluation/__terp__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_evaluation/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,23 +15,23 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 {
-    "name" : "Hr holidays evaluation",
-    "version" : "1.0",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com";,
-    "depends" : ["hr_holidays", "hr_contract", "hr_attendance"],
-    "demo_xml" : [],
+    "name": "Hr holidays evaluation",
+    "version": "1.0",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
+    "website": "http://www.openerp.com";,
+    "depends": ["hr_holidays", "hr_contract", "hr_attendance"],
+    "demo_xml": [],
     'init_xml': [],
-    "update_xml" : ["hr_holidays_evaluation_view.xml",
-                    "security/ir.model.access.csv"],
-    "description" : "Computation of holidays for employee",
-    "active" : False,
-    "installable" : True,
+    "update_xml": ["hr_holidays_evaluation_view.xml",
+                   "security/ir.model.access.csv"],
+    "description": "Computation of holidays for employee",
+    "active": False,
+    "installable": True,
 }
 
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_holidays_evaluation/hr_holidays_evaluation.py'
--- hr_holidays_evaluation/hr_holidays_evaluation.py	2010-09-14 13:51:49 +0000
+++ hr_holidays_evaluation/hr_holidays_evaluation.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
@@ -17,7 +17,7 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 from mx import DateTime
 import time
@@ -27,36 +27,37 @@
 from tools.translate import _
 import pooler
 
+
 class hr_holidays(osv.osv):
     _inherit = 'hr.holidays'
     _columns = {
-        'auto_eval' : fields.boolean('Auto computed by wizard'),
+        'auto_eval': fields.boolean('Auto computed by wizard'),
     }
     _defaults = {
-        'auto_eval' : lambda *a: False,
+        'auto_eval': lambda *a: False,
     }
 hr_holidays()
 
+
 class hr_holidays_note(osv.osv):
-    _name='hr.holidays.note'
+    _name = 'hr.holidays.note'
     _description = "Holidays note"
     _rec_name = 'date'
     _order = 'date desc'
 
     def _compute_diff(self, cr, uid, ids, name, arg, context={}):
-        res={}
+        res = {}
         for id in ids:
-            tmp = self.read(cr, uid, id, ['prev_number','new_number'])
+            tmp = self.read(cr, uid, id, ['prev_number', 'new_number'])
             old, new = tmp['prev_number'], tmp['new_number']
             if not old:
                 old = 0
             res[id] = new - old
         return res
 
-
     _columns = {
-        'holiday_status_id':fields.many2one('hr.holidays.status','Holiday Status', required=True),
-        'date' : fields.char('Date', size=64, required=True),
+        'holiday_status_id': fields.many2one('hr.holidays.status', 'Holiday Status', required=True),
+        'date': fields.char('Date', size=64, required=True),
         'employee_id': fields.many2one('hr.employee', string='Employee Name', required=True),
         'prev_number': fields.float('Previous Holiday Number'),
         'new_number': fields.float('New Holiday Number', required=True),
@@ -64,20 +65,21 @@
     }
 hr_holidays_note()
 
+
 class wizard_hr_holidays_evaluation(osv.osv_memory):
     _name = 'wizard.hr.holidays.evaluation'
     _rec_name = 'holiday_status_id'
     _columns = {
-        'holiday_status_id':fields.many2one('hr.holidays.status','Holiday Status',required=True,help='This is where you specify the holiday type to synchronize. It will create the "holidays per employee" accordingly if necessary, or replace the value "Max leaves allowed" into the existing one.'),
-        'hr_timesheet_group_id':fields.many2one('resource.calendar','Working Hours',required=True,help='This field allow you to filter on only the employees that have a contract using this working hour.'),
-        'float_time':fields.float('Time',required=True,help='''This time depicts the amount per day earned by an employee working a day.The computation is: total earned = time * number of working days'''),
-        'date_current' : fields.date('Date',help='This field allow you to choose the date to use, for forecast matter e.g.'),
+        'holiday_status_id': fields.many2one('hr.holidays.status', 'Holiday Status', required=True, help='This is where you specify the holiday type to synchronize. It will create the "holidays per employee" accordingly if necessary, or replace the value "Max leaves allowed" into the existing one.'),
+        'hr_timesheet_group_id': fields.many2one('resource.calendar', 'Working Hours', required=True, help='This field allow you to filter on only the employees that have a contract using this working hour.'),
+        'float_time': fields.float('Time', required=True, help='''This time depicts the amount per day earned by an employee working a day.The computation is: total earned = time * number of working days'''),
+        'date_current': fields.date('Date', help='This field allow you to choose the date to use, for forecast matter e.g.'),
         'date_start': fields.date('Start Date', required=True, help='This field allow you to choose the start date of the holiday computation. Usually it\' the begining of the current year. (NB: For new employees, it will be the starting date of their contract)'),
     }
     _defaults = {
-        'date_current' : lambda *a: time.strftime('%Y-%m-%d'),
+        'date_current': lambda *a: time.strftime('%Y-%m-%d'),
         'date_start': lambda *a: time.strftime('%Y-01-01'),
-        }
+    }
 
     def action_create(self, cr, uid, ids, context=None):
         data = {}
@@ -86,11 +88,12 @@
         my_dict = {}
         bjs = []
         contract_obj = self.pool.get('hr.contract')
-        evaluation_obj = self.browse(cr, uid, ids, context = context)[0]
+        evaluation_obj = self.browse(cr, uid, ids, context=context)[0]
         group_id = evaluation_obj.hr_timesheet_group_id.id
-        contract_ids = contract_obj.search(cr, uid, [('working_hours', '=', group_id)])
+        contract_ids = contract_obj.search(
+            cr, uid, [('working_hours', '=', group_id)])
 
-        for contract in contract_obj.browse(cr,uid,contract_ids):
+        for contract in contract_obj.browse(cr, uid, contract_ids):
             emp_id = contract.employee_id.id
             start_date = contract.date_start
             stop_date = evaluation_obj.cate_current
@@ -102,16 +105,16 @@
             cr.execute("""SELECT distinct(ht.dayofweek), sum(ht.hour_to - ht.hour_from)
                         FROM resource_calendar as htg, resource_calendar_week as ht
                         WHERE ht.calendar_id = htg.id AND htg.id = %s
-                        GROUP BY ht.dayofweek""" %evaluation_obj.hr_timesheet_group_id.id)
+                        GROUP BY ht.dayofweek""" % evaluation_obj.hr_timesheet_group_id.id)
 
             timesheet_grp = cr.fetchall()
-            alldays = map(lambda x: x[0],timesheet_grp)
+            alldays = map(lambda x: x[0], timesheet_grp)
             nod = len(alldays)
-            alltime = map(lambda x: x[1],timesheet_grp)
+            alltime = map(lambda x: x[1], timesheet_grp)
             how = 0
             for k in alltime:
                 how += k
-            hpd = how/nod
+            hpd = how / nod
             cr.execute("""SELECT distinct(to_date(to_char(ha.name, 'YYYY-MM-dd'),'YYYY-MM-dd'))
                         FROM hr_attendance ha, hr_attendance ha2
                         WHERE ha.action='sign_in'
@@ -122,7 +125,7 @@
                             AND ha.employee_id = %s """, (stop_date, start_date, emp_id))
 
             results = cr.fetchall()
-            all_dates = map(lambda x: x[0],results)
+            all_dates = map(lambda x: x[0], results)
             days = len(all_dates)
             hrss = days * evaluation_obj.float_time
 
@@ -136,7 +139,8 @@
                     x += 0.5
 
             holiday_obj = self.pool.get('hr.holidays')
-            holiday_ids = holiday_obj.search(cr, uid, [('employee_id', '=', emp_id),('holiday_status_id', '=', evaluation_obj.holiday_status_id.id),('auto_eval','=',True)])
+            holiday_ids = holiday_obj.search(cr, uid, [('employee_id', '=', emp_id), (
+                'holiday_status_id', '=', evaluation_obj.holiday_status_id.id), ('auto_eval', '=', True)])
             old_leave = 0
             for holiday_id in holiday_obj.browse(cr, uid, holiday_ids, context):
                 old_leave += holiday_id.number_of_days_temp
@@ -146,7 +150,7 @@
                     'name': _('Automatically Created Holiday'),
                     'employee_id': emp_id,
                     'holiday_status_id': evaluation_obj.holiday_status_id.id,
-                    'number_of_days_temp' : x - old_leave,
+                    'number_of_days_temp': x - old_leave,
                     'type': 'add',
                     'auto_eval': True
                 }
@@ -160,19 +164,20 @@
                     'employee_id': emp_id,
                 }
 
-                note_id = self.pool.get('hr.holidays.note').create(cr, uid, value, context)
+                note_id = self.pool.get(
+                    'hr.holidays.note').create(cr, uid, value, context)
                 bjs.append(note_id)
 
         return {
-            'domain': "[('id','in', ["+','.join(map(str,bjs))+"])]",
+            'domain': "[('id','in', [" + ','.join(map(str, bjs)) + "])]",
             'name': _('Summary Report'),
             'view_type': 'form',
             'view_mode': 'tree,form',
             'res_model': 'hr.holidays.note',
             'type': 'ir.actions.act_window'
-            }
+        }
 
-    def action_cancel(self,cr,uid,ids,context=None):
+    def action_cancel(self, cr, uid, ids, context=None):
         return {}
 
 wizard_hr_holidays_evaluation()

=== modified file 'hr_holidays_request/__init__.py'
--- hr_holidays_request/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,11 +15,10 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import hr_holidays_request
 import wizard
 import report
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_holidays_request/__terp__.py' => 'hr_holidays_request/__openerp__.py'
--- hr_holidays_request/__terp__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,21 +15,20 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 {
-    "name" : "HR Holiday Request",
-    "version" : "1.0",
-    "author" : "Tiny & Axelor",
-    "category" : "Generic Modules/Human Resources",
+    "name": "HR Holiday Request",
+    "version": "1.0",
+    "author": "Tiny & Axelor",
+    "category": "Generic Modules/Human Resources",
     "website": "http://www.axelor.com";,
-    "depends" : ["base", "hr", "hr_holidays"],
-    "init_xml" : [],
-    "update_xml" : ["security/ir.model.access.csv","holiday_demo_data.xml","hr_holidays_request_view.xml","hr_holiday_wizard.xml","hr_workflow.xml"],
-    "demo_xml" : [],
+    "depends": ["base", "hr", "hr_holidays"],
+    "init_xml": [],
+    "update_xml": ["security/ir.model.access.csv", "holiday_demo_data.xml", "hr_holidays_request_view.xml", "hr_holiday_wizard.xml", "hr_workflow.xml"],
+    "demo_xml": [],
     "installable": True,
-    "active" : False,
+    "active": False,
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_request/hr_holidays_request.py'
--- hr_holidays_request/hr_holidays_request.py	2010-08-05 10:31:01 +0000
+++ hr_holidays_request/hr_holidays_request.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
@@ -17,437 +17,477 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 from mx import DateTime
 import time
 import pooler
 import netsvc
-from osv import fields, osv
 import datetime
 import calendar
-def _manager_get(obj,cr,uid,context={}):
-    ids = obj.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+from osv import fields, osv
+
+
+def _manager_get(obj, cr, uid, context={}):
+    ids = obj.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)])
     if ids:
         boss = obj.pool.get('hr.employee').read(cr, uid, ids)[0]['parent_id']
         if boss:
             return boss[0]
     return False
 
+
 class hr_holidays(osv.osv):
     _inherit = 'hr.holidays'
     _description = "Holidays"
+
     def search(self, cr, uid, args, offset=0, limit=None, order=None,
-            context=None, count=False):
-        if len(args)==2:
-            if (args[0]==['state', '=', 'confirm'] and args[1]==['employee_id',"=",[]]) or (args[0]==('state', '=', 'confirm') and args[1]==('employee_id',"=",[])):
-                res=[]
-                ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+               context=None, count=False):
+        if len(args) == 2:
+            if (args[0] == ['state', '=', 'confirm'] and args[1] == ['employee_id', "=", []]) or (args[0] == ('state', '=', 'confirm') and args[1] == ('employee_id', "=", [])):
+                res = []
+                ids = self.pool.get('hr.employee').search(
+                    cr, uid, [('user_id', '=', uid)])
                 for id in ids:
-                    boss = self.pool.get('hr.employee').search(cr, uid,[('parent_id','=',id)])
+                    boss = self.pool.get('hr.employee').search(
+                        cr, uid, [('parent_id', '=', id)])
                     for b in boss:
                         res.append(b)
-                        boss1 = self.pool.get('hr.employee').search(cr, uid,[('parent_id','=',b)])
+                        boss1 = self.pool.get('hr.employee').search(
+                            cr, uid, [('parent_id', '=', b)])
                         for b1 in boss1:
                             boss.append(b1)
-                args[1]=['employee_id','in',res]
-
-        return super(hr_holidays,self).search(cr, uid, args, offset, limit,
-                order, context=context, count=count)
+                args[1] = ['employee_id', 'in', res]
+
+        return super(hr_holidays, self).search(cr, uid, args, offset, limit,
+                                               order, context=context, count=count)
+
     def copy(self, cr, uid, id, default=None, context={}):
-        raise osv.except_osv('Duplicate Error !','Can not create duplicate record')
+        raise osv.except_osv(
+            'Duplicate Error !', 'Can not create duplicate record')
         return False
+
     def unlink(self, cr, uid, ids, context={}, check=True):
         for id in ids:
-            selfobj=self.browse(cr,uid,id)
-            if selfobj.state=="validate" or selfobj.state=="refuse":
-                raise osv.except_osv('Data Error !','Can not Delete Validated or refused record')
+            selfobj = self.browse(cr, uid, id)
+            if selfobj.state == "validate" or selfobj.state == "refuse":
+                raise osv.except_osv(
+                    'Data Error !', 'Can not delete validated or refused record')
         return super(hr_holidays, self).unlink(cr, uid, ids, context=context)
+
     def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
-        slobj=self.browse(cr,uid,ids)
+        slobj = self.browse(cr, uid, ids)
         if vals.__contains__('date_from1'):
-            d=vals['date_from1']
+            d = vals['date_from1']
         else:
             for s in slobj:
-                d=s.date_from1
+                d = s.date_from1
         if vals.__contains__('date_to1'):
-            dd=vals['date_to1']
-        else :
+            dd = vals['date_to1']
+        else:
             for s in slobj:
-                dd=s.date_to1
+                dd = s.date_to1
 
-        d1=d.split('-')
-        d2=dd.split('-')
-        d1[2]=d1[2].split(' ')
-        d2[2]=d2[2].split(' ')
-        a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-        b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
-        if b<a:
-            raise osv.except_osv('Date Error !','From date should be smaller than To date')
+        d1 = d.split('-')
+        d2 = dd.split('-')
+        d1[2] = d1[2].split(' ')
+        d2[2] = d2[2].split(' ')
+        a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+        b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
+        if b < a:
+            raise osv.except_osv(
+                'Date Error !', 'From date should be smaller than To date')
         return super(hr_holidays, self).write(cr, uid, ids, vals, context=context)
+
     def create(self, cr, uid, vals, context=None):
-        d=vals['date_from1']
-        dd=vals['date_to1']
-        d1=d.split('-')
-        d2=dd.split('-')
-        d1[2]=d1[2].split(' ')
-        d2[2]=d2[2].split(' ')
-        a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-        b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
-        if b<a:
-            raise osv.except_osv('Date Error !','From date should be smaller than To date')
+        d = vals['date_from1']
+        dd = vals['date_to1']
+        d1 = d.split('-')
+        d2 = dd.split('-')
+        d1[2] = d1[2].split(' ')
+        d2[2] = d2[2].split(' ')
+        a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+        b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
+        if b < a:
+            raise osv.except_osv(
+                'Date Error !', 'From date should be smaller than To date')
         else:
             return super(hr_holidays, self).create(cr, uid, vals, context=context)
     _columns = {
-        'name' : fields.char('Description', required=True, readonly=True, size=64, states={'draft':[('readonly',False)],'draft1':[('readonly',False)]}),
-        'state': fields.selection([('draft1', 'draft'),('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
-        'date_from' : fields.datetime('Vacation start day'),
-        'date_to' : fields.datetime('Vacation end day'),
-        'date_from1' : fields.date('From', required=True, readonly=True, states={'draft':[('readonly',False)]}),
-        'date_to1' : fields.date('To', required=True, readonly=True, states={'draft':[('readonly',False)]}),
-        'employee_id' : fields.many2one('hr.employee', 'Employee', select=True, readonly=True, required=True),
-        'user_id':fields.many2one('res.users', 'User_id', states={'draft':[('readonly',False)],'draft1':[('readonly',False)]}, select=True, readonly=True),
-        'manager_id' : fields.many2one('hr.employee', 'Holiday manager', invisible=False, readonly=True),
-        'notes' : fields.text('Notes', readonly=True,states={'draft':[('readonly',False)],'draft1':[('readonly',False)]}),
-        'contactno':fields.char("Contact no",size=64 , required=True, readonly=True,states={'draft':[('readonly',False)],'draft1':[('readonly',False)]}),
-        'holiday_id':fields.one2many('days.holidays.days','holiday_id',"Holiday's days list", readonly=True,states={'draft':[('readonly',False)],'validate':[('readonly',False)]}),
-        'total_half':fields.integer("Total Half Leave", readonly=True),
-        'total_full':fields.integer("Total Full Leave", readonly=True),
-        'total_hour':fields.integer("Total Hours", readonly=True),
+        'name': fields.char('Description', required=True, readonly=True, size=64, states={'draft': [('readonly', False)], 'draft1': [('readonly', False)]}),
+        'state': fields.selection([('draft1', 'draft'), ('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
+        'date_from': fields.datetime('Vacation start day'),
+        'date_to': fields.datetime('Vacation end day'),
+        'date_from1': fields.date('From', required=True, readonly=True, states={'draft': [('readonly', False)]}),
+        'date_to1': fields.date('To', required=True, readonly=True, states={'draft': [('readonly', False)]}),
+        'employee_id': fields.many2one('hr.employee', 'Employee', select=True, readonly=True, required=True),
+        'user_id': fields.many2one('res.users', 'User_id', states={'draft': [('readonly', False)], 'draft1': [('readonly', False)]}, select=True, readonly=True),
+        'manager_id': fields.many2one('hr.employee', 'Holiday manager', invisible=False, readonly=True),
+        'notes': fields.text('Notes', readonly=True, states={'draft': [('readonly', False)], 'draft1': [('readonly', False)]}),
+        'contactno': fields.char("Contact no", size=64, required=True, readonly=True, states={'draft': [('readonly', False)], 'draft1': [('readonly', False)]}),
+        'holiday_id': fields.one2many('days.holidays.days', 'holiday_id', "Holiday's days list", readonly=True, states={'draft': [('readonly', False)], 'validate': [('readonly', False)]}),
+        'total_half': fields.integer("Total Half Leave", readonly=True),
+        'total_full': fields.integer("Total Full Leave", readonly=True),
+        'total_hour': fields.integer("Total Hours", readonly=True),
         'number_of_days': fields.float('Number of Days in this Holiday Request'),
-        'holiday_status' : fields.many2one("hr.holidays.status", "Holiday's Status"),
-          }
+        'holiday_status': fields.many2one("hr.holidays.status", "Holiday's Status"),
+    }
     _defaults = {
-        'manager_id' : _manager_get,
-        'state' : lambda *a: 'draft',
+        'manager_id': _manager_get,
+        'state': lambda *a: 'draft',
         'user_id': lambda obj, cr, uid, context: uid,
         'date_from1': lambda *a: time.strftime('%Y-%m-%d'),
         'date_to1': lambda *a: time.strftime('%Y-%m-%d'),
         'date_from': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
         'date_to': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
-            }
+    }
     _order = 'date_from1 desc'
 
-    def onchange_from_date(self, cr, uid, ids, date_from1,date_to1):
-        if date_from1>date_to1:
-            return{'value':{'date_to1':date_from1}}
-
+    def onchange_from_date(self, cr, uid, ids, date_from1, date_to1):
+        if date_from1 > date_to1:
+            return{'value': {'date_to1': date_from1}}
         else:
-            return {'value':{}}
+            return {'value': {}}
 
-    def days_chaeck(self,cr,uid,ids,s1):
-        seaobj=self.pool.get('days.holidays.days').browse(cr,uid,s1)
+    def days_check(self, cr, uid, ids, s1):
+        seaobj = self.pool.get('days.holidays.days').browse(cr, uid, s1)
         if seaobj.holiday_id.id:
-            if not seaobj.holiday_id.id==ids[0]:
+            if not seaobj.holiday_id.id == ids[0]:
 
-                if seaobj.holiday_id.state=='refuse':
+                if seaobj.holiday_id.state == 'refuse':
                     return True
                 else:
-                    raise osv.except_osv('Day Error !','Can not create more leaves for one day ')
+                    raise osv.except_osv(
+                        'Day Error !', 'Can not create more leaves for one day ')
             else:
                 return True
         else:
             return True
 
     def create_days(self, cr, uid, ids, *args):
-        selfobj=self.browse(cr, uid, ids, None)
+        selfobj = self.browse(cr, uid, ids, None)
         for s in selfobj:
-            d=s.date_from1
-            dd=s.date_to1
-            d1=d.split('-')
-            d2=dd.split('-')
-            d1[2]=d1[2].split(' ')
-            d2[2]=d2[2].split(' ')
-            a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-            b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
-            temp=a
-            if a>b:
-                raise osv.except_osv('Date Error !','From date should be smaller than To date')
-            t12=datetime.timedelta(days=1)
-            dobj=self.pool.get('days.holidays.days')
-            delobject=dobj.search(cr, uid, [('holiday_id', '=', ids[0])])
+            d = s.date_from1
+            dd = s.date_to1
+            d1 = d.split('-')
+            d2 = dd.split('-')
+            d1[2] = d1[2].split(' ')
+            d2[2] = d2[2].split(' ')
+            a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+            b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
+            temp = a
+            if a > b:
+                raise osv.except_osv(
+                    'Date Error !', 'From date should be smaller than To date')
+            t12 = datetime.timedelta(days=1)
+            dobj = self.pool.get('days.holidays.days')
+            delobject = dobj.search(cr, uid, [('holiday_id', '=', ids[0])])
             for d in delobject:
-                dobj.unlink(cr, uid,d)
-            cr.execute("select name from public_holidays_days" )
-            t=[]
-            t=cr.fetchall()
-            fd=1
-            pd=0
-            while (temp<=b):
-                searchobject=self.pool.get('days.holidays.days').search(cr,uid,[('date1','like', temp.strftime("%Y-%m-%d")),('user_id',"=",uid)])
+                dobj.unlink(cr, uid, d)
+            cr.execute("select name from public_holidays_days")
+            t = []
+            t = cr.fetchall()
+            fd = 1
+            pd = 0
+            while (temp <= b):
+                searchobject = self.pool.get('days.holidays.days').search(
+                    cr, uid, [('date1', 'like', temp.strftime("%Y-%m-%d")), ('user_id', "=", uid)])
 
-                for s1 in  searchobject:
-                    if self.days_chaeck(cr, uid, ids, s1):
+                for s1 in searchobject:
+                    if self.days_check(cr, uid, ids, s1):
                         continue
                     else:
                         return False
                 for t1 in t:
-                    day=calendar.weekday(int(temp.strftime("%Y")),int(temp.strftime("%m")),int(temp.strftime("%d")))
+                    day = calendar.weekday(int(temp.strftime("%Y")), int(
+                        temp.strftime("%m")), int(temp.strftime("%d")))
 
-                    if t1[0]==temp.strftime("%Y-%m-%d") :
-                        if t1[0]==a.strftime("%Y-%m-%d") or t1[0]==b.strftime("%Y-%m-%d") :
-                            pd=1
-                            fd=0
+                    if t1[0] == temp.strftime("%Y-%m-%d"):
+                        if t1[0] == a.strftime("%Y-%m-%d") or t1[0] == b.strftime("%Y-%m-%d"):
+                            pd = 1
+                            fd = 0
                             break
                         else:
-                            pd=1
-                            fd=1
+                            pd = 1
+                            fd = 1
                     else:
-                        pd=0
-                        fd=1
-                    if day==6:
-                        if temp.strftime("%Y-%m-%d")==a.strftime("%Y-%m-%d") or temp.strftime("%Y-%m-%d")==b.strftime("%Y-%m-%d") :
-                            fd=0
-                            pd=1
+                        pd = 0
+                        fd = 1
+                    if day == 6:
+                        if temp.strftime("%Y-%m-%d") == a.strftime("%Y-%m-%d") or temp.strftime("%Y-%m-%d") == b.strftime("%Y-%m-%d"):
+                            fd = 0
+                            pd = 1
                         else:
-                            fd=1
-                            pd=1
-                self.write(cr, uid, ids, {'state':'draft1'})
-                self.pool.get('days.holidays.days').create(cr,uid,{
-                      'name':temp,
-                      'date1':temp,
-                      'half_day':0,
-                      'full_day':fd,
-                      'hourly_leave':0,
-                      'holiday_id':ids[0],
-                      'public_h':pd,
-                      'holiday_status':0,
-                      'user_id':uid,
-                      'state':'draft',
-
-                          })
-
-                temp+=t12
-
-
+                            fd = 1
+                            pd = 1
+                self.write(cr, uid, ids, {'state': 'draft1'})
+                self.pool.get(
+                    'days.holidays.days').create(cr, uid, {'name': temp,
+                                                           'date1': temp,
+                                                           'half_day': 0,
+                                                           'full_day': fd,
+                                                           'hourly_leave': 0,
+                                                           'holiday_id': ids[0],
+                                                           'public_h': pd,
+                                                           'holiday_status': 0,
+                                                           'user_id': uid,
+                                                           'state': 'draft'})
+                temp += t12
         return True
+
     def days_count(self, cr, uid, ids, *args):
-        selfobj=self.browse(cr, uid, ids, None)
+        selfobj = self.browse(cr, uid, ids, None)
         for s in selfobj:
-
-            d=s.date_from1
-            dd=s.date_to1
-            d1=d.split('-')
-            d2=dd.split('-')
-            d1[2]=d1[2].split(' ')
-            d2[2]=d2[2].split(' ')
-            a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-            b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
+            d = s.date_from1
+            dd = s.date_to1
+            d1 = d.split('-')
+            d2 = dd.split('-')
+            d1[2] = d1[2].split(' ')
+            d2[2] = d2[2].split(' ')
+            a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+            b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
             if b >= a:
-                t1=datetime.timedelta(days=1)
-                temp=b-a+t1
+                t1 = datetime.timedelta(days=1)
+                temp = b - a + t1
 
                 if temp == t1:
                     return False
-                elif temp >t1:
+                elif temp > t1:
                     return True
                 else:
                     return False
             else:
-                raise osv.except_osv('Date Error !','From date should be smaller than To date')
+                raise osv.except_osv(
+                    'Date Error !', 'From date should be smaller than To date')
 
     def set_to_draft(self, cr, uid, ids, *args):
+        self.write(cr, uid, ids, {'state': 'draft'})
+        return True
 
-         self.write(cr, uid, ids, {
-             'state':'draft'
-             })
-         return True
-    def write_data(self,cr,uid,ids,*args):
-        selfobj=self.browse(cr, uid, ids, None)
-        full=0
-        half=0
-        hl=0
+    def write_data(self, cr, uid, ids, *args):
+        selfobj = self.browse(cr, uid, ids, None)
+        full = 0
+        half = 0
+        hl = 0
         for s in selfobj:
-            sid=self.pool.get('hr.holidays.history').create(cr,uid,{'validated_id':uid,'name':s.name,'state':s.state,'date_from1':s.date_from1,'date_to1':s.date_to1,'employee_id':s.employee_id.id,'user_id':s.user_id.id,'manager_id':s.manager_id.id,'notes':s.notes,'contactno':s.contactno,'total_half':s.total_half,'total_full':s.total_half})
+            sid = self.pool.get(
+                'hr.holidays.history').create(cr, uid, {'validated_id': uid,
+                                                        'name': s.name,
+                                                        'state': s.state,
+                                                        'date_from1': s.date_from1,
+                                                        'date_to1': s.date_to1,
+                                                        'employee_id': s.employee_id.id,
+                                                        'user_id': s.user_id.id,
+                                                        'manager_id': s.manager_id.id,
+                                                        'notes': s.notes,
+                                                        'contactno': s.contactno,
+                                                        'total_half': s.total_half,
+                                                        'total_full': s.total_half})
             for s1 in s.holiday_id:
-                self.pool.get('days.holidays.days').write(cr,uid,s1.id,{'state':s.state})
-                ss1=self.pool.get('days.holidays.days').browse(cr,uid,s1.id)
+                self.pool.get('days.holidays.days').write(
+                    cr, uid, s1.id, {'state': s.state})
+                ss1 = self.pool.get(
+                    'days.holidays.days').browse(cr, uid, s1.id)
 
                 if ss1.full_day:
-                    full+=1
+                    full += 1
                 if ss1.half_day:
-                    half+=1
-                if ss1.hourly_leave >0:
-                    hl+=ss1.hourly_leave
-                self.pool.get('days.holidays.days.history').create(cr,uid,{'user_id':ss1.user_id.id,'state':ss1.state,'name':ss1.name,'date1':ss1.name,'half_day':ss1.half_day,'full_day':ss1.full_day,'hourly_leave':ss1.hourly_leave,'holiday_id':sid,'public_h':ss1.public_h,'holiday_status':ss1.holiday_status})
-            self.write(cr, uid, ids, {'total_hour':hl})
-            self.write(cr, uid, ids, {'total_half':half})
-            self.write(cr, uid, ids, {'total_full':full})
-            self.pool.get('hr.holidays.history').write(cr, uid, sid, {'total_half':half})
-            self.pool.get('hr.holidays.history').write(cr, uid, sid, {'total_full':full})
-            self.pool.get('hr.holidays.history').write(cr, uid, sid, {'total_hour':hl})
+                    half += 1
+                if ss1.hourly_leave > 0:
+                    hl += ss1.hourly_leave
+                self.pool.get(
+                    'days.holidays.days.history').create(cr, uid, {'user_id': ss1.user_id.id,
+                                                                   'state': ss1.state,
+                                                                   'name': ss1.name,
+                                                                   'date1': ss1.name,
+                                                                   'half_day': ss1.half_day,
+                                                                   'full_day': ss1.full_day,
+                                                                   'hourly_leave': ss1.hourly_leave,
+                                                                   'holiday_id': sid,
+                                                                   'public_h': ss1.public_h,
+                                                                   'holiday_status': ss1.holiday_status})
+            self.write(cr, uid, ids, {'total_hour': hl})
+            self.write(cr, uid, ids, {'total_half': half})
+            self.write(cr, uid, ids, {'total_full': full})
+            self.pool.get('hr.holidays.history').write(
+                cr, uid, sid, {'total_half': half})
+            self.pool.get('hr.holidays.history').write(
+                cr, uid, sid, {'total_full': full})
+            self.pool.get('hr.holidays.history').write(
+                cr, uid, sid, {'total_hour': hl})
 
     def holidays_validate(self, cr, uid, ids, *args):
-
-            self.write(cr, uid, ids, {'state':'validate'})
-            self.write_data(cr, uid, ids)
-            return True
+        self.write(cr, uid, ids, {'state': 'validate'})
+        self.write_data(cr, uid, ids)
+        return True
 
     def holidays_confirm(self, cr, uid, ids, *args):
-        selfobject=self.browse(cr, uid, ids, None)
-        full=0
-        half=0
-        hl=0
+        selfobject = self.browse(cr, uid, ids, None)
+        full = 0
+        half = 0
+        hl = 0
         for selfobj in selfobject:
 
-            recids=self.pool.get('days.holidays.days').search(cr,uid,[('holiday_id','=', selfobj.id)])
+            recids = self.pool.get('days.holidays.days').search(
+                cr, uid, [('holiday_id', '=', selfobj.id)])
 
-            if recids==[]:
-                raise osv.except_osv('Day Error !','Create Day list')
+            if recids == []:
+                raise osv.except_osv('Day Error !', 'Create Day list')
             for rec in recids:
-                if self.days_chaeck(cr, uid, ids, rec):
-                    recobj=self.pool.get('days.holidays.days').browse(cr,uid,rec)
-                    self.pool.get('days.holidays.days').write(cr,uid,rec,{'state':'confirm'})
-                    flg=0
-                    if recobj.half_day==1:
-                        half+=1
-                        flg=1
-                    if recobj.full_day==1:
-                        full+=1
-                        flg=1
-                    if recobj.public_h==1:
-                        flg=1
+                if self.days_check(cr, uid, ids, rec):
+                    recobj = self.pool.get(
+                        'days.holidays.days').browse(cr, uid, rec)
+                    self.pool.get('days.holidays.days').write(
+                        cr, uid, rec, {'state': 'confirm'})
+                    flg = 0
+                    if recobj.half_day == 1:
+                        half += 1
+                        flg = 1
+                    if recobj.full_day == 1:
+                        full += 1
+                        flg = 1
+                    if recobj.public_h == 1:
+                        flg = 1
                     if recobj.hourly_leave > 0:
-                        hl+=recobj.hourly_leave
-                        flg=1
-                    if flg==0:
-                        raise osv.except_osv('Leave Error !','Select Leave type')
+                        hl += recobj.hourly_leave
+                        flg = 1
+                    if flg == 0:
+                        raise osv.except_osv(
+                            'Leave Error !', 'Select Leave type')
                 else:
                     return False
 
             self.write(cr, uid, ids, {
-                     'state':'confirm',
-                     'total_half':half,
-                     'total_full':full,
-                     'total_hour':hl
-                     })
+                'state': 'confirm',
+                'total_half': half,
+                'total_full': full,
+                'total_hour': hl
+            })
             return True
 
-
     def holidays_refuse(self, cr, uid, ids, *args):
-
-        self.write(cr, uid, ids, {'state':'refuse'})
+        self.write(cr, uid, ids, {'state': 'refuse'})
         self.write_data(cr, uid, ids)
         return True
 
-
     def holidays_cancel(self, cr, uid, ids, *args):
-
-        self.write(cr, uid, ids, {
-            'state':'cancel'
-            })
+        self.write(cr, uid, ids, {'state': 'cancel'})
         return True
 
     def holidays_draft(self, cr, uid, ids, *args):
-        self.write(cr, uid, ids, {
-            'state':'draft'
-            })
-        selfobj=self.browse(cr, uid, ids, None)
+        self.write(cr, uid, ids, {'state': 'draft'})
+        selfobj = self.browse(cr, uid, ids, None)
         for s in selfobj:
             for s1 in s.holiday_id:
-                self.pool.get('days.holidays.days').write(cr,uid,s1.id,{'state':draft})
-
-
+                self.pool.get('days.holidays.days').write(
+                    cr, uid, s1.id, {'state': draft})
         return True
-
 hr_holidays()
 
+
 class holiday_history(osv.osv):
     _name = 'hr.holidays.history'
     _description = "Holidays history"
     _columns = {
-                'validated_id':fields.many2one('res.users', 'Validated By', readonly=True),
-                'name' : fields.char('Description',  readonly=True, size=64),
-                'state': fields.selection([('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
-                'date_from1' : fields.date('From', readonly=True),
-                'date_to1' : fields.date('To', readonly=True),
-                'employee_id' : fields.many2one('hr.employee','Employee',readonly=True),
-                'user_id':fields.many2one('res.users', 'Employee_id',readonly=True),
-                'manager_id' : fields.many2one('hr.employee', 'Holiday manager', readonly=True),
-                'notes' : fields.text('Notes',readonly=True),
-                'contactno':fields.char("Contact no",size=64,readonly=True),
-                'holiday_id':fields.one2many('days.holidays.days.history','holiday_id',"Holiday's days list",readonly=True),
-                'total_half':fields.integer("Total Half Leave", readonly=True),
-                'total_full':fields.integer("Total Full Leave", readonly=True),
-                'total_hour':fields.integer("Total Hours", readonly=True),
-                }
+        'validated_id': fields.many2one('res.users', 'Validated By', readonly=True),
+        'name': fields.char('Description', readonly=True, size=64),
+        'state': fields.selection([('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
+        'date_from1': fields.date('From', readonly=True),
+        'date_to1': fields.date('To', readonly=True),
+        'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True),
+        'user_id': fields.many2one('res.users', 'Employee_id', readonly=True),
+        'manager_id': fields.many2one('hr.employee', 'Holiday manager', readonly=True),
+        'notes': fields.text('Notes', readonly=True),
+        'contactno': fields.char("Contact no", size=64, readonly=True),
+        'holiday_id': fields.one2many('days.holidays.days.history', 'holiday_id', "Holiday's days list", readonly=True),
+        'total_half': fields.integer("Total Half Leave", readonly=True),
+        'total_full': fields.integer("Total Full Leave", readonly=True),
+        'total_hour': fields.integer("Total Hours", readonly=True),
+    }
 holiday_history()
 
-class  holiday_days(osv.osv):
 
-    _name='days.holidays.days'
+class holiday_days(osv.osv):
+    _name = 'days.holidays.days'
     _description = "Holidays history"
     _columns = {
-                 'name':fields.char("Date",size=64),
-                 'date1':fields.date('Date', readonly=True,required=True),
-                 'half_day' : fields.boolean('Half Leave', readonly=True,states={'draft':[('readonly',False)]}),
-                 'full_day' : fields.boolean('Full Leave', readonly=True,states={'draft':[('readonly',False)]}),
-                 'hourly_leave':fields.float("Hourly Leave", readonly=True,states={'draft':[('readonly',False)]}),
-                 'holiday_id':fields.many2one("hr.holidays","Holiday Ref"),
-                 'public_h':fields.boolean('Public Holiday',readonly=True),
-                 'holiday_status':fields.many2one("hr.holidays.status", "Holiday's Status"),
-                 'user_id':fields.many2one('res.users', 'User_id',readonly=True),
-                 'state': fields.selection([('draft1', 'draft'),('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
-                 }
+        'name': fields.char("Date", size=64),
+        'date1': fields.date('Date', readonly=True, required=True),
+        'half_day': fields.boolean('Half Leave', readonly=True, states={'draft': [('readonly', False)]}),
+        'full_day': fields.boolean('Full Leave', readonly=True, states={'draft': [('readonly', False)]}),
+        'hourly_leave': fields.float("Hourly Leave", readonly=True, states={'draft': [('readonly', False)]}),
+        'holiday_id': fields.many2one("hr.holidays", "Holiday Ref"),
+        'public_h': fields.boolean('Public Holiday', readonly=True),
+        'holiday_status': fields.many2one("hr.holidays.status", "Holiday's Status"),
+        'user_id': fields.many2one('res.users', 'User_id', readonly=True),
+        'state': fields.selection([('draft1', 'draft'), ('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
+    }
     _order = 'date1'
     _defaults = {
-                 'state' : lambda *a: 'refuse',
-                 }
-
-    def onchange_half_day(self, cr, uid, ids, half_day,full_day,hourly_leave,public_h):
-       if public_h==1:
-           return {'value':{'full_day':1,'half_day':0,'hourly_leave':0}}
-       if half_day==1 and full_day==1:
-           full_day=0
-       if half_day==1 and hourly_leave>0:
-           hourly_leave=0
-       return {'value':{'full_day':full_day,'hourly_leave':hourly_leave}}
-    def onchange_full_day(self, cr, uid, ids, half_day,full_day,hourly_leave,public_h):
-       if public_h==1:
-           return {'value':{'full_day':1,'half_day':0,'hourly_leave':0}}
-       if half_day==1 and full_day==1:
-           half_day=0
-       if half_day==1 and hourly_leave>0:
-           hourly_leave=0
-       return {'value':{'half_day':half_day,'hourly_leave':hourly_leave}}
-    def onchange_hourly_leave(self, cr, uid, ids, half_day,full_day,hourly_leave,public_h):
-       if public_h==1:
-           return {'value':{'full_day':1,'half_day':0,'hourly_leave':0}}
-       if half_day==1 and hourly_leave>0:
-           half_day=0
-       if full_day==1 and hourly_leave>0:
-           full_day=0
-       return {'value':{'full_day':full_day,'half_day':half_day}}
+        'state': lambda *a: 'refuse',
+    }
+
+    def onchange_half_day(self, cr, uid, ids, half_day, full_day, hourly_leave, public_h):
+        if public_h == 1:
+            return {'value': {'full_day': 1, 'half_day': 0, 'hourly_leave': 0}}
+        if half_day == 1 and full_day == 1:
+            full_day = 0
+        if half_day == 1 and hourly_leave > 0:
+            hourly_leave = 0
+        return {'value': {'full_day': full_day, 'hourly_leave': hourly_leave}}
+
+    def onchange_full_day(self, cr, uid, ids, half_day, full_day, hourly_leave, public_h):
+        if public_h == 1:
+            return {'value': {'full_day': 1, 'half_day': 0, 'hourly_leave': 0}}
+        if half_day == 1 and full_day == 1:
+            half_day = 0
+        if half_day == 1 and hourly_leave > 0:
+            hourly_leave = 0
+        return {'value': {'half_day': half_day, 'hourly_leave': hourly_leave}}
+
+    def onchange_hourly_leave(self, cr, uid, ids, half_day, full_day, hourly_leave, public_h):
+        if public_h == 1:
+            return {'value': {'full_day': 1, 'half_day': 0, 'hourly_leave': 0}}
+        if half_day == 1 and hourly_leave > 0:
+            half_day = 0
+        if full_day == 1 and hourly_leave > 0:
+            full_day = 0
+        return {'value': {'full_day': full_day, 'half_day': half_day}}
 holiday_days()
 
-class  public_holiday_days(osv.osv):
-    _name='public.holidays.days'
+
+class public_holiday_days(osv.osv):
+    _name = 'public.holidays.days'
     _description = "Public Holidays"
     _columns = {
-                 'name':fields.date('Date',required=True),
-                 'reason':fields.text("Reason",required=True),
-                 }
+        'name': fields.date('Date', required=True),
+        'reason': fields.text("Reason", required=True),
+    }
 public_holiday_days()
-class  holiday_days_history(osv.osv):
+
+
+class holiday_days_history(osv.osv):
+
     def _holidaystatus_get(self, cr, uid, context={}):
         obj = self.pool.get('hr.holidays.status')
         ids = obj.search(cr, uid, [])
         res = obj.read(cr, uid, ids, ['name'], context)
         res = [(r['id'], r['name']) for r in res]
         return res
-    _name='days.holidays.days.history'
+
+    _name = 'days.holidays.days.history'
     _description = "Holidays history"
     _columns = {
-                 'name':fields.char("Date",size=64,readonly=True),
-                 'date1':fields.date('Date',readonly=True),
-                 'half_day' : fields.boolean('Half Leave',readonly=True),
-                 'full_day' : fields.boolean('Full Leave',readonly=True),
-                 'hourly_leave':fields.float("Hourly Leave",readonly=True),
-                 'holiday_id':fields.many2one("hr.holidays.history","Holiday Ref",readonly=True),
-                 'public_h':fields.boolean('Public Holiday',readonly=True),
-                 'holiday_status':fields.selection(_holidaystatus_get, "Holiday's Status",readonly=True),
-                 'user_id':fields.many2one('res.users', 'User_id',readonly=True),
-                 'state': fields.selection([('draft1', 'draft'),('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
-                 }
+        'name': fields.char("Date", size=64, readonly=True),
+        'date1': fields.date('Date', readonly=True),
+        'half_day': fields.boolean('Half Leave', readonly=True),
+        'full_day': fields.boolean('Full Leave', readonly=True),
+        'hourly_leave': fields.float("Hourly Leave", readonly=True),
+        'holiday_id': fields.many2one("hr.holidays.history", "Holiday Ref", readonly=True),
+        'public_h': fields.boolean('Public Holiday', readonly=True),
+        'holiday_status': fields.selection(_holidaystatus_get, "Holiday's Status", readonly=True),
+        'user_id': fields.many2one('res.users', 'User_id', readonly=True),
+        'state': fields.selection([('draft1', 'draft'), ('draft', 'draft'), ('confirm', 'Requested'), ('refuse', 'Refused'), ('validate', 'Validate'), ('cancel', 'Cancel')], 'State', readonly=True),
+    }
 holiday_days_history()
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_request/report/__init__.py'
--- hr_holidays_request/report/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/report/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,11 +15,10 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 import hr_holiday_report
 import hr_holiday_report_form
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_request/report/hr_holiday_report.py'
--- hr_holidays_request/report/hr_holiday_report.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/report/hr_holiday_report.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,76 +15,81 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import time
 from report import report_sxw
 import calendar
 import datetime
 
+
 class hr_holiday_report(report_sxw.rml_parse):
+
     def __init__(self, cr, uid, name, context):
         super(hr_holiday_report, self).__init__(cr, uid, name, context)
         self.localcontext.update({
             'time': time,
-            'line' : self._getShop,
-            
+            'line': self._getShop,
+
         })
-    def _getShop(self,form):
+
+    def _getShop(self, form):
         if form['active1']:
-            startdate=str(datetime.date(form['year'],form['month'],1))
-            a=calendar.monthrange(form['year'],form['month'])
-            enddate=str(datetime.date(form['year'],form['month'],a[1]))
-            
+            startdate = str(datetime.date(form['year'], form['month'], 1))
+            a = calendar.monthrange(form['year'], form['month'])
+            enddate = str(datetime.date(form['year'], form['month'], a[1]))
+
         elif form['active2']:
-            
-            startdate=form['fromdate']
-            enddate=form['todate']
-        ls=[]
-        res={}
-        half=0
-        full=0
-        hl=0
-        total=0.0
+
+            startdate = form['fromdate']
+            enddate = form['todate']
+        ls = []
+        res = {}
+        half = 0
+        full = 0
+        hl = 0
+        total = 0.0
         for li in form['emp_ids'][0][2]:
             hr_pool = self.pool.get('hr.holidays')
             day_pool = self.pool.get('days.holidays.days')
-            hr_ids = hr_pool.search(self.cr,self.uid,[('employee_id', '=',li)])
+            hr_ids = hr_pool.search(
+                self.cr, self.uid, [('employee_id', '=', li)])
             for hrid in hr_ids:
-                hr_obj=hr_pool.browse(self.cr,self.uid,hrid)
-                day_ids = day_pool.search(self.cr,self.uid,[('holiday_id', '=',hrid)])
+                hr_obj = hr_pool.browse(self.cr, self.uid, hrid)
+                day_ids = day_pool.search(
+                    self.cr, self.uid, [('holiday_id', '=', hrid)])
                 for did in day_ids:
-                    day_obj=day_pool.browse(self.cr,self.uid,did)
-                    if day_obj.date1>=startdate and day_obj.date1<=enddate and hr_obj.state=='validate':
-                        if day_obj.half_day==1:
-                            half+=1
-                        if day_obj.full_day==1:
-                            full+=1
+                    day_obj = day_pool.browse(self.cr, self.uid, did)
+                    if day_obj.date1 >= startdate and day_obj.date1 <= enddate and hr_obj.state == 'validate':
+                        if day_obj.half_day == 1:
+                            half += 1
+                        if day_obj.full_day == 1:
+                            full += 1
                         if day_obj.hourly_leave > 0:
-                            hl+=day_obj.hourly_leave
-            emp=self.pool.get('hr.employee').browse(self.cr,self.uid,li)
-            user=self.pool.get('res.users').browse(self.cr,self.uid,emp.user_id.id)
-            res['emp_name']=emp.name
-            res['total_full']=full
-            res['total_half']=half
-            res['total_hour']=hl
-            res['user_name']=user.login
-            total+=full
-            total+=(float(half)/float(2))
-            total+=(float(hl)/float(8))
-            res['total']=total
-            total=0.0
-            half=0
-            full=0
-            hl=0
+                            hl += day_obj.hourly_leave
+            emp = self.pool.get('hr.employee').browse(self.cr, self.uid, li)
+            user = self.pool.get('res.users').browse(
+                self.cr, self.uid, emp.user_id.id)
+            res['emp_name'] = emp.name
+            res['total_full'] = full
+            res['total_half'] = half
+            res['total_hour'] = hl
+            res['user_name'] = user.login
+            total += full
+            total += (float(half) / float(2))
+            total += (float(hl) / float(8))
+            res['total'] = total
+            total = 0.0
+            half = 0
+            full = 0
+            hl = 0
             ls.append(res)
-            res={}
-        
+            res = {}
+
         return ls
-                    
-                
-        
-report_sxw.report_sxw('report.hr.holiday.req.report', 'hr.holidays', 'addons/hr_holidays_request/report/hrreport.rml' ,parser=hr_holiday_report)
+
+
+report_sxw.report_sxw('report.hr.holiday.req.report', 'hr.holidays',
+                      'addons/hr_holidays_request/report/hrreport.rml', parser=hr_holiday_report)
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_request/report/hr_holiday_report_form.py'
--- hr_holidays_request/report/hr_holiday_report_form.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/report/hr_holiday_report_form.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,66 +15,74 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import time
 from report import report_sxw
 import calendar
 import datetime
 
+
 class hr_holiday_report_form(report_sxw.rml_parse):
+
     def __init__(self, cr, uid, name, context):
         super(hr_holiday_report_form, self).__init__(cr, uid, name, context)
-        self.half=0
-        self.hl=0
+        self.half = 0
+        self.hl = 0
         self.localcontext.update({
             'time': time,
-            'total_days':self._total_days,
-            'total_full':self._total_full,
-            'total_half':self._total_half,
-            'total_hourly':self._total_hourly,       
-        
+            'total_days': self._total_days,
+            'total_full': self._total_full,
+            'total_half': self._total_half,
+            'total_hourly': self._total_hourly,
+
         })
-    def _total_days(self,full,half,hours):
-        total=0.0
-        total+=full
-        total+=(float(half)/float(2))
-        total+=(float(hours)/float(8))
+
+    def _total_days(self, full, half, hours):
+        total = 0.0
+        total += full
+        total += (float(half) / float(2))
+        total += (float(hours) / float(8))
         return total
-    def _total_full(self,object,emp):
-        lst=object.date_from1.split('-')
-        
-        year=int(lst[0])
-        month=int(lst[1])
-        startdate=str(datetime.date(year,month,1))
-        a=calendar.monthrange(year,month)
-        enddate=str(datetime.date(year,month,a[1]))
-        self.half=0
-        full=0
-        self.hl=0
+
+    def _total_full(self, object, emp):
+        lst = object.date_from1.split('-')
+
+        year = int(lst[0])
+        month = int(lst[1])
+        startdate = str(datetime.date(year, month, 1))
+        a = calendar.monthrange(year, month)
+        enddate = str(datetime.date(year, month, a[1]))
+        self.half = 0
+        full = 0
+        self.hl = 0
         hr_pool = self.pool.get('hr.holidays')
         day_pool = self.pool.get('days.holidays.days')
-        hr_ids = hr_pool.search(self.cr,self.uid,[('employee_id', '=',emp.id)])
+        hr_ids = hr_pool.search(
+            self.cr, self.uid, [('employee_id', '=', emp.id)])
         for hrid in hr_ids:
-            if hrid==object.id:
+            if hrid == object.id:
                 continue
-            hr_obj=hr_pool.browse(self.cr,self.uid,hrid)
-            day_ids = day_pool.search(self.cr,self.uid,[('holiday_id', '=',hrid)])
+            hr_obj = hr_pool.browse(self.cr, self.uid, hrid)
+            day_ids = day_pool.search(
+                self.cr, self.uid, [('holiday_id', '=', hrid)])
             for did in day_ids:
-                day_obj=day_pool.browse(self.cr,self.uid,did)
-                if day_obj.date1>=startdate and day_obj.date1<=enddate and hr_obj.state=='validate':
-                    if day_obj.half_day==1:
-                        self.half+=1
-                    if day_obj.full_day==1:
-                        full+=1
+                day_obj = day_pool.browse(self.cr, self.uid, did)
+                if day_obj.date1 >= startdate and day_obj.date1 <= enddate and hr_obj.state == 'validate':
+                    if day_obj.half_day == 1:
+                        self.half += 1
+                    if day_obj.full_day == 1:
+                        full += 1
                     if day_obj.hourly_leave > 0:
-                        self.hl+=day_obj.hourly_leave
+                        self.hl += day_obj.hourly_leave
         return full
-    def _total_half(self,object,emp):
+
+    def _total_half(self, object, emp):
         return self.half
-    def _total_hourly(self,object,emp):
+
+    def _total_hourly(self, object, emp):
         return self.hl
-report_sxw.report_sxw('report.hr_holiday_report_form', 'hr.holidays', 'addons/hr_holidays_request/report/hrreport_form.rml' ,parser=hr_holiday_report_form)
+report_sxw.report_sxw('report.hr_holiday_report_form', 'hr.holidays',
+                      'addons/hr_holidays_request/report/hrreport_form.rml', parser=hr_holiday_report_form)
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_request/wizard/__init__.py'
--- hr_holidays_request/wizard/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/wizard/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import hr_holiday
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import hr_holiday
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_request/wizard/hr_holiday.py'
--- hr_holidays_request/wizard/hr_holiday.py	2009-10-15 11:25:40 +0000
+++ hr_holidays_request/wizard/hr_holiday.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,12 +15,13 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import time
 import wizard
 import datetime
+
 error = '''<?xml version="1.0"?>
 <form string="Select period">
     <label string="Error in Data !!"/>
@@ -50,72 +51,78 @@
             <field name="todate"/>
             </group>
 </form>'''
+
+
 def _get_months(sel, cr, uid, context):
-    i=0
-    res=[]
-    while i<12:
-        t=()
-        t=(i+1,i+1)
+    i = 0
+    res = []
+    while i < 12:
+        t = ()
+        t = (i + 1, i + 1)
         res.append(t)
-        i+=1
+        i += 1
     return res
+
 field1 = {
-    'emp_ids': {'string':'Employees', 'type':'many2many', 'relation':'hr.employee'},
-    'month': {'string':'Month','type':'selection', 'selection':_get_months},
-    'year':{'string':'Year','type':'integer'},
-    'fromdate': {'string':'From', 'type':'date'},
-    'todate': {'string':'To', 'type':'date'},
-    'active1':{'string':'Month Wise','type':'boolean'},
-    'active2':{'string':'Date Wise','type':'boolean'}
+    'emp_ids': {'string': 'Employees', 'type': 'many2many', 'relation': 'hr.employee'},
+    'month': {'string': 'Month', 'type': 'selection', 'selection': _get_months},
+    'year': {'string': 'Year', 'type': 'integer'},
+    'fromdate': {'string': 'From', 'type': 'date'},
+    'todate': {'string': 'To', 'type': 'date'},
+    'active1': {'string': 'Month Wise', 'type': 'boolean'},
+    'active2': {'string': 'Date Wise', 'type': 'boolean'}
 }
 
 
 class hr_holidays_report(wizard.interface):
+
     def year_get(self, cr, uid, data, context):
-       p=int(time.strftime('%Y'))
-       return {'year':p}
-    def _riase_error(self, cr, uid, data, context):
-        form=data['form']
-        if not form['emp_ids'][0][2] :
-            raise wizard.except_wizard('Error', 'You must select Employee(s) For report !')
-        
+        p = int(time.strftime('%Y'))
+        return {'year': p}
+
+    def _raise_error(self, cr, uid, data, context):
+        form = data['form']
+        if not form['emp_ids'][0][2]:
+            raise wizard.except_wizard(
+                'Error', 'You must select Employee(s) For report !')
         if form['active1'] and form['active2']:
-            raise wizard.except_wizard('TyepError', 'You must select only one type For report !')
+            raise wizard.except_wizard(
+                'TyepError', 'You must select only one type For report !')
         if form['active1']:
-            temp=form['year']
+            temp = form['year']
             if not form['month']:
-                raise wizard.except_wizard('MonthError', 'You must select month For month-wise report !')
-            
-                
+                raise wizard.except_wizard(
+                    'MonthError', 'You must select month For month-wise report !')
         elif form['active2']:
-            temp=0
+            temp = 0
             if not form['fromdate'] or not form['todate']:
-                raise wizard.except_wizard('DateError', 'You must select Dates For date-wise report !')
+                raise wizard.except_wizard(
+                    'DateError', 'You must select Dates For date-wise report !')
             else:
-                d=form['fromdate']
-                dd=form['todate']
-                d1=d.split('-')
-                d2=dd.split('-')
-                d1[2]=d1[2].split(' ')
-                d2[2]=d2[2].split(' ')
-                a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-                b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
-                if  a>b :
-                    raise wizard.except_wizard('DateError', 'You must select Dates proparly !')
+                d = form['fromdate']
+                dd = form['todate']
+                d1 = d.split('-')
+                d2 = dd.split('-')
+                d1[2] = d1[2].split(' ')
+                d2[2] = d2[2].split(' ')
+                a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+                b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
+                if a > b:
+                    raise wizard.except_wizard(
+                        'DateError', 'You must select Dates proparly !')
         else:
             raise wizard.except_wizard('typeError', 'You must select Type !')
-        return {'year':temp}
+        return {'year': temp}
     states = {
         'init': {
             'actions': [year_get],
-            'result': {'type':'form', 'arch':form1, 'fields':field1,  'state' : [('print', 'Ok'),('end', 'Cancel')]}
+            'result': {'type': 'form', 'arch': form1, 'fields': field1, 'state': [('print', 'Ok'), ('end', 'Cancel')]}
         },
-         'print': {
-            'actions': [_riase_error],
-            'result': {'type':'print', 'report':'hr.holiday.req.report','state':'end'}
+        'print': {
+            'actions': [_raise_error],
+            'result': {'type': 'print', 'report': 'hr.holiday.req.report', 'state': 'end'}
         }
-        
     }
 hr_holidays_report('hr_holiday_req')
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_type/__init__.py'
--- hr_holidays_type/__init__.py	2010-05-10 05:14:44 +0000
+++ hr_holidays_type/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,7 +17,7 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import hr_holidays_type
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== renamed file 'hr_holidays_type/__terp__.py' => 'hr_holidays_type/__openerp__.py'
--- hr_holidays_type/__terp__.py	2010-05-10 05:14:44 +0000
+++ hr_holidays_type/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,23 +17,21 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
-
+#
 
 
 {
-    "name" : "Human Resources: Holidays management",
-    "version" : "0.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com/";,
+    "name": "Human Resources: Holidays management",
+    "version": "0.1",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
+    "website": "http://www.openerp.com/";,
     "description": """ One request for different Leave type """,
-    "depends" : ["hr_holidays"],
-    "init_xml" : [],
-    "demo_xml" : [],
-    "update_xml" : ["hr_holidays_type_view.xml"],
+    "depends": ["hr_holidays"],
+    "init_xml": [],
+    "demo_xml": [],
+    "update_xml": ["hr_holidays_type_view.xml"],
     "active": False,
     "installable": True
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_holidays_type/hr_holidays_type.py'
--- hr_holidays_type/hr_holidays_type.py	2010-05-10 05:14:44 +0000
+++ hr_holidays_type/hr_holidays_type.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,12 +17,13 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 import time
 
 from osv import fields, osv
 from tools.translate import _
 
+
 class hr_holidays_status(osv.osv):
     _inherit = "hr.holidays.status"
 
@@ -32,13 +33,15 @@
             res[record.id] = {}
             max_leaves = leaves_taken = 0
             if not return_false:
-                cr.execute("""SELECT type, sum(number_of_days) FROM hr_holidays WHERE employee_id = %s AND state='validate' AND holiday_status_id = %s and type='add' GROUP BY type""", (str(employee_id), str(record.id)))
+                cr.execute("""SELECT type, sum(number_of_days) FROM hr_holidays WHERE employee_id = %s AND state='validate' AND holiday_status_id = %s and type='add' GROUP BY type""", (
+                    str(employee_id), str(record.id)))
                 for line in cr.fetchall():
-                    if line[0] =='add':
+                    if line[0] == 'add':
                         max_leaves = line[1]
-                cr.execute("""SELECT type, sum(h.number_of_days) from hr_holidays as h left join hr_holidays_line as t on t.holiday_id=h.id where employee_id = %s AND state='validate' AND t.holiday_status_id = %s and type='remove' GROUP BY type""",(str(employee_id), str(record.id)))
+                cr.execute("""SELECT type, sum(h.number_of_days) from hr_holidays as h left join hr_holidays_line as t on t.holiday_id=h.id where employee_id = %s AND state='validate' AND t.holiday_status_id = %s and type='remove' GROUP BY type""", (
+                    str(employee_id), str(record.id)))
                 for line in cr.fetchall():
-                    if line[0] =='remove':
+                    if line[0] == 'remove':
                         leaves_taken = -line[1]
             res[record.id]['max_leaves'] = max_leaves
             res[record.id]['leaves_taken'] = leaves_taken
@@ -47,6 +50,7 @@
 
 hr_holidays_status()
 
+
 class hr_holidays_line(osv.osv):
     _name = 'hr.holidays.line'
     _description = 'hr.holidays.line'
@@ -56,27 +60,29 @@
         'date_to': fields.datetime('End Date'),
         'number_of_days': fields.float('Number of Days'),
         'holiday_id': fields.many2one('hr.holidays', 'Holiday'),
-                }
+    }
 
     def onchange_sec_id(self, cr, uid, ids, status, context={}):
         warning = {}
         if status:
-            brows_obj = self.pool.get('hr.holidays.status').browse(cr, uid, [status])[0]
+            brows_obj = self.pool.get(
+                'hr.holidays.status').browse(cr, uid, [status])[0]
             if brows_obj.categ_id and brows_obj.categ_id.section_id and not brows_obj.categ_id.section_id.allow_unlink:
                 warning = {
                     'title': "Warning for ",
                     'message': "You won\'t be able to cancel this leave request because the CRM Section of the leave type disallows."
-                        }
+                }
         return {'warning': warning}
 
     def onchange_date_from(self, cr, uid, ids, date_to, date_from):
         result = {}
         if date_to and date_from:
-            from_dt = time.mktime(time.strptime(date_from,'%Y-%m-%d %H:%M:%S'))
-            to_dt = time.mktime(time.strptime(date_to,'%Y-%m-%d %H:%M:%S'))
-            diff_day = (to_dt-from_dt)/(3600*24)
+            from_dt = time.mktime(
+                time.strptime(date_from, '%Y-%m-%d %H:%M:%S'))
+            to_dt = time.mktime(time.strptime(date_to, '%Y-%m-%d %H:%M:%S'))
+            diff_day = (to_dt - from_dt) / (3600 * 24)
             result['value'] = {
-                'number_of_days': round(diff_day)+1
+                'number_of_days': round(diff_day) + 1
             }
             return result
         result['value'] = {
@@ -87,11 +93,12 @@
     def onchange_date_to(self, cr, uid, ids, date_from, date_to):
         result = {}
         if date_from and date_to:
-            from_dt = time.mktime(time.strptime(date_from,'%Y-%m-%d %H:%M:%S'))
-            to_dt = time.mktime(time.strptime(date_to,'%Y-%m-%d %H:%M:%S'))
-            diff_day = (to_dt-from_dt)/(3600*24)
+            from_dt = time.mktime(
+                time.strptime(date_from, '%Y-%m-%d %H:%M:%S'))
+            to_dt = time.mktime(time.strptime(date_to, '%Y-%m-%d %H:%M:%S'))
+            diff_day = (to_dt - from_dt) / (3600 * 24)
             result['value'] = {
-                'number_of_days': round(diff_day)+1
+                'number_of_days': round(diff_day) + 1
             }
             return result
         result['value'] = {
@@ -101,139 +108,158 @@
 
 hr_holidays_line()
 
+
 class hr_holidays(osv.osv):
     _inherit = 'hr.holidays'
     _description = 'hr.holidays'
     _columns = {
-        'date_from' : fields.datetime('Start Date', readonly=False, states={'draft':[('readonly',False)]}),
-        'date_to' : fields.datetime('End Date', readonly=False, states={'draft':[('readonly',False)]}),
+        'date_from': fields.datetime('Start Date', readonly=False, states={'draft': [('readonly', False)]}),
+        'date_to': fields.datetime('End Date', readonly=False, states={'draft': [('readonly', False)]}),
         'holiday_line': fields.one2many('hr.holidays.line', 'holiday_id', 'Holidays Line'),
-        'holiday_status_id' : fields.many2one("hr.holidays.status", "Leave Type", required=False,readonly=False, states={'draft':[('readonly',False)]}),
-                }
+        'holiday_status_id': fields.many2one("hr.holidays.status", "Leave Type", required=False, readonly=False, states={'draft': [('readonly', False)]}),
+    }
 
     def check_holidays(self, cr, uid, ids):
         for record in self.browse(cr, uid, ids):
             if not record.number_of_days:
-                raise osv.except_osv(_('Warning!'),_('Wrong leave definition.'))
-            if record.holiday_type=='employee' and record.employee_id:
-                for i in record.holiday_line:
-                    leave_asked = -(i.number_of_days)
-#                leave_asked = record.number_of_days
-                    if leave_asked < 0.00:
-                        if not i.holiday_status_id.limit:
-                            leaves_rest = self.pool.get('hr.holidays.status').get_days(cr, uid, [i.holiday_status_id.id], record.employee_id.id, False)[i.holiday_status_id.id]['remaining_leaves']
-                            if leaves_rest < -(leave_asked):
-                                raise osv.except_osv(_('Warning!'),_('You Cannot Validate leaves while available leaves are less than asked leaves for %s' %(i.holiday_status_id.name)))
-            elif record.holiday_type=='category' and record.category_id:
-#                leave_asked = record.number_of_days
-                for i in record.holiday_line:
-                    leave_asked = -(i.number_of_days)
-                    if leave_asked < 0.00:
-                        if not i.holiday_status_id.limit:
-                            leaves_rest = self.pool.get('hr.holidays.status').get_days_cat(cr, uid, [i.holiday_status_id.id], record.category_id.id, False)[i.holiday_status_id.id]['remaining_leaves']
-                            if leaves_rest < -(leave_asked):
-                                raise osv.except_osv(_('Warning!'),_('You Cannot Validate leaves while available leaves are less than asked leaves for %s'%(i.holiday_status_id.name)))
-            else:# This condition will never meet!! # check me
+                raise osv.except_osv(
+                    _('Warning!'), _('Wrong leave definition.'))
+            if record.holiday_type == 'employee' and record.employee_id:
+                for i in record.holiday_line:
+                    leave_asked = -(i.number_of_days)
+#                leave_asked = record.number_of_days
+                    if leave_asked < 0.00:
+                        if not i.holiday_status_id.limit:
+                            leaves_rest = self.pool.get('hr.holidays.status').get_days(
+                                cr, uid, [i.holiday_status_id.id], record.employee_id.id, False)[i.holiday_status_id.id]['remaining_leaves']
+                            if leaves_rest < -(leave_asked):
+                                raise osv.except_osv(
+                                    _('Warning!'), _('You Cannot Validate leaves while available leaves are less than asked leaves for %s' % (i.holiday_status_id.name)))
+            elif record.holiday_type == 'category' and record.category_id:
+#                leave_asked = record.number_of_days
+                for i in record.holiday_line:
+                    leave_asked = -(i.number_of_days)
+                    if leave_asked < 0.00:
+                        if not i.holiday_status_id.limit:
+                            leaves_rest = self.pool.get('hr.holidays.status').get_days_cat(
+                                cr, uid, [i.holiday_status_id.id], record.category_id.id, False)[i.holiday_status_id.id]['remaining_leaves']
+                            if leaves_rest < -(leave_asked):
+                                raise osv.except_osv(
+                                    _('Warning!'), _('You Cannot Validate leaves while available leaves are less than asked leaves for %s' % (i.holiday_status_id.name)))
+            else:  # This condition will never meet!! # check me
                 for i in record.holiday_line:
                     holiday_ids = []
                     vals = {
-                        'name' : record.name,
-                        'holiday_status_id' : i.holiday_status_id.id,
+                        'name': record.name,
+                        'holiday_status_id': i.holiday_status_id.id,
                         'state': 'draft',
-                        'date_from' : i.date_from,
-                        'date_to' : i.date_to,
-                        'notes' : record.notes,
+                        'date_from': i.date_from,
+                        'date_to': i.date_to,
+                        'notes': record.notes,
                         'number_of_days': i.number_of_days,
                         'number_of_days_temp': i.number_of_days,
                         'type': record.type,
                         'allocation_type': record.allocation_type,
                         'parent_id': record.id,
                     }
-                    employee_ids = self.pool.get('hr.employee').search(cr, uid, [])
+                    employee_ids = self.pool.get(
+                        'hr.employee').search(cr, uid, [])
                     for employee in employee_ids:
                         vals['employee_id'] = employee
-                        user_id = self.pool.get('hr.employee').search(cr, uid, [('user_id','=',uid)])
+                        user_id = self.pool.get('hr.employee').search(
+                            cr, uid, [('user_id', '=', uid)])
                         if user_id:
                             vals['user_id'] = user_id[0]
-                        holiday_ids.append(self.create(cr, uid, vals, context={}))
+                        holiday_ids.append(
+                            self.create(cr, uid, vals, context={}))
                     self.holidays_confirm(cr, uid, holiday_ids)
                     self.holidays_validate(cr, uid, holiday_ids)
 
-            #if record.holiday_status_id.categ_id and record.date_from and record.date_to and record.employee_id:
+            # if record.holiday_status_id.categ_id and record.date_from and
+            # record.date_to and record.employee_id:
             for i in record.holiday_line:
                 if i.holiday_status_id.categ_id and i.date_from and i.date_to:
-                    vals={}
-                    vals['name']=record.name
-                    vals['categ_id']=i.holiday_status_id.categ_id.id
-                    epoch_c = time.mktime(time.strptime(i.date_to,'%Y-%m-%d %H:%M:%S'))
-                    epoch_d = time.mktime(time.strptime(i.date_from,'%Y-%m-%d %H:%M:%S'))
-                    diff_day = (epoch_c - epoch_d)/(3600*24)
+                    vals = {}
+                    vals['name'] = record.name
+                    vals['categ_id'] = i.holiday_status_id.categ_id.id
+                    epoch_c = time.mktime(
+                        time.strptime(i.date_to, '%Y-%m-%d %H:%M:%S'))
+                    epoch_d = time.mktime(
+                        time.strptime(i.date_from, '%Y-%m-%d %H:%M:%S'))
+                    diff_day = (epoch_c - epoch_d) / (3600 * 24)
                     vals['duration'] = (diff_day) * 8
                     vals['note'] = record.notes
     #                vals['user_id'] = record.user_id.id
                     vals['date'] = i.date_from
-                    if record.holiday_type=='employee':
+                    if record.holiday_type == 'employee':
                         vals['user_id'] = record.user_id.id
-                    case_id = self.pool.get('crm.meeting').create(cr,uid,vals)
-                    self.write(cr, uid, ids, {'case_id':case_id})
+                    case_id = self.pool.get(
+                        'crm.meeting').create(cr, uid, vals)
+                    self.write(cr, uid, ids, {'case_id': case_id})
         return True
 
     def holidays_validate(self, cr, uid, ids, *args):
         self.check_holidays(cr, uid, ids)
         vals = {
-            'state':'validate',
+            'state': 'validate',
         }
-        ids2 = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+        ids2 = self.pool.get('hr.employee').search(
+            cr, uid, [('user_id', '=', uid)])
         if ids2:
             vals['manager_id'] = ids2[0]
         else:
-            raise osv.except_osv(_('Warning !'),_('No user related to the selected employee.'))
+            raise osv.except_osv(
+                _('Warning !'), _('No user related to the selected employee.'))
         self.write(cr, uid, ids, vals)
         for record in self.browse(cr, uid, ids):
             for i in record.holiday_line:
-                if record.holiday_type=='employee' and record.type=='remove':
-                    vals= {
-                       'name':record.name,
-                       'date_from':i.date_from,
-                       'date_to':i.date_to,
-                       'calendar_id':record.employee_id.calendar_id.id,
-                       'company_id':record.employee_id.company_id.id,
-                       'resource_id':record.employee_id.resource_id.id
-                         }
-                    self.pool.get('resource.calendar.leaves').create(cr, uid, vals)
+                if record.holiday_type == 'employee' and record.type == 'remove':
+                    vals = {
+                        'name': record.name,
+                        'date_from': i.date_from,
+                        'date_to': i.date_to,
+                        'calendar_id': record.employee_id.calendar_id.id,
+                        'company_id': record.employee_id.company_id.id,
+                        'resource_id': record.employee_id.resource_id.id
+                    }
+                    self.pool.get(
+                        'resource.calendar.leaves').create(cr, uid, vals)
         return True
 
     def holidays_confirm(self, cr, uid, ids, *args):
         for record in self.browse(cr, uid, ids):
             user_id = False
 #            leave_asked = record.number_of_days_temp
-            if record.holiday_type=='employee' and record.type == 'remove':
+            if record.holiday_type == 'employee' and record.type == 'remove':
 #                if record.employee_id and not record.holiday_status_id.limit:
                     if record.employee_id:
                         for i in record.holiday_line:
                             leave_asked = i.number_of_days
-                            leaves_rest = self.pool.get('hr.holidays.status').get_days( cr, uid, [i.holiday_status_id.id], record.employee_id.id, False)[i.holiday_status_id.id]['remaining_leaves']
+                            leaves_rest = self.pool.get('hr.holidays.status').get_days(
+                                cr, uid, [i.holiday_status_id.id], record.employee_id.id, False)[i.holiday_status_id.id]['remaining_leaves']
                             if leaves_rest < leave_asked and not i.holiday_status_id.limit:
-                                raise osv.except_osv(_('Warning!'),_('You cannot validate leaves for %s while available leaves are less than asked leaves for %s' %(record.employee_id.name, i.holiday_status_id.name)))
+                                raise osv.except_osv(
+                                    _('Warning!'), _('You cannot validate leaves for %s while available leaves are less than asked leaves for %s' % (record.employee_id.name, i.holiday_status_id.name)))
                     nb = -(record.number_of_days_temp)
-            elif record.holiday_type=='category' and record.type == 'remove':
+            elif record.holiday_type == 'category' and record.type == 'remove':
 #                if record.category_id and not record.holiday_status_id.limit:
                 if record.category_id:
                     for j in record.holiday_line:
                         leave_asked = i.number_of_days
-                        leaves_rest = self.pool.get('hr.holidays.status').get_days_cat( cr, uid, [j.holiday_status_id.id], record.category_id.id, False)[j.holiday_status_id.id]['remaining_leaves']
+                        leaves_rest = self.pool.get('hr.holidays.status').get_days_cat(
+                            cr, uid, [j.holiday_status_id.id], record.category_id.id, False)[j.holiday_status_id.id]['remaining_leaves']
                         if leaves_rest < leave_asked and not i.holiday_status_id.limit:
-                            raise osv.except_osv(_('Warning!'),_('You cannot validate leaves for %s while available leaves are less than asked leaves for %s' %(record.category_id.name, j.holiday_status_id.name)))
+                            raise osv.except_osv(
+                                _('Warning!'), _('You cannot validate leaves for %s while available leaves are less than asked leaves for %s' % (record.category_id.name, j.holiday_status_id.name)))
                 nb = -(record.number_of_days_temp)
             else:
                 nb = record.number_of_days_temp
 
-            if record.holiday_type=='employee' and record.employee_id:
+            if record.holiday_type == 'employee' and record.employee_id:
                 user_id = record.employee_id.user_id and record.employee_id.user_id.id or uid
 
-
             self.write(cr, uid, [record.id], {
-                'state':'confirm',
+                'state': 'confirm',
                 'number_of_days': nb,
                 'user_id': user_id
             })
@@ -253,13 +279,15 @@
         days = 0.0
         if context is None:
             context = {}
-        res = super(hr_holidays, self).write(cr, uid, ids, vals, context=context)
+        res = super(hr_holidays, self).write(
+            cr, uid, ids, vals, context=context)
         if 'holiday_line' in vals and vals['holiday_line']:
             for i in self.browse(cr, uid, ids)[0].holiday_line:
                     days += i.number_of_days
-            cr.execute('update hr_holidays set number_of_days_temp=%s'%(days,))
+            cr.execute(
+                'update hr_holidays set number_of_days_temp=%s' % (days,))
         return res
 
 hr_holidays()
 
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_interview/__init__.py'
--- hr_interview/__init__.py	2009-11-23 08:56:43 +0000
+++ hr_interview/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution	
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,9 +18,8 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 import hr_interview
 import wizard
 import report
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_interview/__terp__.py' => 'hr_interview/__openerp__.py'
--- hr_interview/__terp__.py	2009-11-23 08:56:43 +0000
+++ hr_interview/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution	
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,7 +18,7 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 {
     'name': 'Human Resources (Interview Evaluation)',
@@ -32,12 +32,12 @@
     """,
     'author': 'Tiny',
     'website': 'http://www.openerp.com',
-    'depends': ['base', 'hr','crm','smtpclient'],
+    'depends': ['base', 'hr', 'crm', 'smtpclient'],
     'init_xml': [],
-    'update_xml': ['hr_interview_view.xml','hr_workflow.xml','hr_sequence.xml','security/ir.model.access.csv','hr_wizard.xml','hr_interview_report.xml'],
+    'update_xml': ['hr_interview_view.xml', 'hr_workflow.xml', 'hr_sequence.xml', 'security/ir.model.access.csv', 'hr_wizard.xml', 'hr_interview_report.xml'],
     'demo_xml': [],
     'installable': True,
     'active': False,
-   
+
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_interview/hr_interview.py'
--- hr_interview/hr_interview.py	2010-04-07 10:31:59 +0000
+++ hr_interview/hr_interview.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
@@ -18,201 +18,213 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
-from osv import fields,osv
+from osv import fields, osv
 from osv.orm import except_orm
 from tools.translate import _
 from time import strftime
 
 
 class candidate_category(osv.osv):
-	_name="candidate.category"
-	_description="Category Of Candidate"
-	_columns={
-	    'code':fields.char("Code", size=64, required=True),
-		'name' : fields.char("Name", size=64, required=True),
-		'question_ids':fields.one2many("category.question","category_id","Question")
-		}
+    _name = "candidate.category"
+    _description = "Category Of Candidate"
+    _columns = {
+        'code': fields.char("Code", size=64, required=True),
+        'name': fields.char("Name", size=64, required=True),
+        'question_ids': fields.one2many("category.question", "category_id", "Question")
+    }
 candidate_category()
 
 
 class cateory_question(osv.osv):
-	_name="category.question"
-	_description="Question Category (Question Belongs to Which Category)"
-	_columns={
-		'name' :fields.char("Question" ,size=64,required=True),
-		'tot_marks':fields.integer("Total Marks",required=True),
-		'category_id':fields.many2one("candidate.category","Category")
-		}
+    _name = "category.question"
+    _description = "Question Category (Question Belongs to Which Category)"
+    _columns = {
+        'name': fields.char("Question", size=64, required=True),
+        'tot_marks': fields.integer("Total Marks", required=True),
+        'category_id': fields.many2one("candidate.category", "Category")
+    }
 
 cateory_question()
 
 
 class candidate_experience(osv.osv):
-	_name="candidate.experience"
-	_description="Candidate Experience"
-	_columns={
-	    'code':fields.char("Code", size=64, required=True),
-		'name' : fields.char("Name", size=64, required=True),
-		'special':fields.char("Specialization",size =128)
-		}
+    _name = "candidate.experience"
+    _description = "Candidate Experience"
+    _columns = {
+        'code': fields.char("Code", size=64, required=True),
+        'name': fields.char("Name", size=64, required=True),
+        'special': fields.char("Specialization", size=128)
+    }
 candidate_experience()
 
 
 class hr_interview(osv.osv):
-	_name = "hr.interview"
-	_description = "Interview Evaluation"
-
-	def eval_performance(self,cr, uid, ids, *args):
-		tech_obj=self.pool.get("technical.skill")
-		tot_marks=obt_marks=0
-		tech_id=tech_obj.search(cr,uid,[('candidate_id','=',ids[0])])
-		if tech_id :
-			for rec in tech_obj.browse(cr,uid,tech_id):
-				tot_marks += rec.tot_marks
-				obt_marks += rec.obt_marks
-			self.write(cr, uid, ids, { 'performance' : (obt_marks * 100) / tot_marks })
-		return True
-
-	def _constraint_obt_marks(self, cr, uid, ids):
-		tech_skill_obj=self.pool.get("technical.skill")
-		tech_skill_ids=tech_skill_obj.search(cr,uid,[('candidate_id','=',ids[0])])
-		for rec in tech_skill_obj.browse(cr,uid,tech_skill_ids):
-			if rec['obt_marks'] > rec['tot_marks'] or rec['tot_marks'] <= 0 :
-			    return False
-		return True
-
-	def _constraint_evaluator(self, cr, uid, ids):
-		rec = self.read(cr,uid,ids[0])
-		if rec['reference_id']:
-			if rec['reference_id'][0] in rec['evaluator_ids']:
-				return False
-		return True
-
-	_columns ={
-		'hr_id' : fields.char("Interview ID", size =64),
-		'name':fields.char("Candidate Name", size=64, required = True,select = True),
-		'crm_case_id' : fields.many2one('crm.case',"Case"),
-		'email' : fields.char("E-mail",size=64,required =True),
-		'mobile_no' :fields.char("Mobile",size=64),
-		'date' :fields.datetime('Scheduled Date'),
-		'exam_date' :fields.datetime('Exam On'),
-		'education': fields.selection([("be_ce","BE Computers"),("be_it","BE IT"),("bsc_it","BSc IT"),("bca","BCA"),("btech_ce","BTech Computers"),("btech_it","BTech IT"),("mca","MCA"),("msc_it","MSc IT"),("mtech_ce","MTech Computers"),("other","Other")],"Education"),
-		'category_id' : fields.many2one("candidate.category","Category"),
-		'experience_id':fields.many2one("candidate.experience","Experience"),
-		'remarks':fields.text("Remarks"),
-		'evaluator_ids': fields.many2many("hr.employee",'hr_empl_rel', 'hr_cand_id', 'emp_id',"Evaluator"),
-		'reference_id': fields.many2one("hr.employee","Reference"),
-		'tech_skills_ids': fields.one2many("technical.skill","candidate_id","Technology Skills"),
-		'performance': fields.float("Performance (%)",readonly=True),
-		'state' : fields.selection([("draft","Draft"),('scheduled','Scheduled'),('re-scheduled','Re-Scheduled'),('start-interview','Start-Interview'),('end-interview','End-Interview'),("selected","Selected"),('rejected','Rejected'),("cancel","Cancel")],"State",readonly=True,select =1),
-		'history_log_ids': fields.one2many("hr.interview.log","history_id","Interview Logs",readonly=True),
-	}
-	_defaults = {
-         'state' : lambda *a: "draft",
-		 'hr_id': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'hr.interview'),
-	}
-
-	_constraints = [
-        (_constraint_obt_marks, _('Obtained marks cannot be greater than Total marks!'), ['obt_marks']),
-        (_constraint_evaluator, "Reference Person cannot be among Evaluators!", ['reference_id'])
+    _name = "hr.interview"
+    _description = "Interview Evaluation"
+
+    def eval_performance(self, cr, uid, ids, *args):
+        tech_obj = self.pool.get("technical.skill")
+        tot_marks = obt_marks = 0
+        tech_id = tech_obj.search(cr, uid, [('candidate_id', '=', ids[0])])
+        if tech_id:
+            for rec in tech_obj.browse(cr, uid, tech_id):
+                tot_marks += rec.tot_marks
+                obt_marks += rec.obt_marks
+            self.write(
+                cr, uid, ids, {'performance': (obt_marks * 100) / tot_marks})
+        return True
+
+    def _constraint_obt_marks(self, cr, uid, ids):
+        tech_skill_obj = self.pool.get("technical.skill")
+        tech_skill_ids = tech_skill_obj.search(
+            cr, uid, [('candidate_id', '=', ids[0])])
+        for rec in tech_skill_obj.browse(cr, uid, tech_skill_ids):
+            if rec['obt_marks'] > rec['tot_marks'] or rec['tot_marks'] <= 0:
+                return False
+        return True
+
+    def _constraint_evaluator(self, cr, uid, ids):
+        rec = self.read(cr, uid, ids[0])
+        if rec['reference_id']:
+            if rec['reference_id'][0] in rec['evaluator_ids']:
+                return False
+        return True
+
+    _columns = {
+        'hr_id': fields.char("Interview ID", size=64),
+        'name': fields.char("Candidate Name", size=64, required=True, select=True),
+        'crm_case_id': fields.many2one('crm.case', "Case"),
+        'email': fields.char("E-mail", size=64, required=True),
+        'mobile_no': fields.char("Mobile", size=64),
+        'date': fields.datetime('Scheduled Date'),
+        'exam_date': fields.datetime('Exam On'),
+        'education': fields.selection([("be_ce", "BE Computers"), ("be_it", "BE IT"), ("bsc_it", "BSc IT"), ("bca", "BCA"), ("btech_ce", "BTech Computers"), ("btech_it", "BTech IT"), ("mca", "MCA"), ("msc_it", "MSc IT"), ("mtech_ce", "MTech Computers"), ("other", "Other")], "Education"),
+        'category_id': fields.many2one("candidate.category", "Category"),
+        'experience_id': fields.many2one("candidate.experience", "Experience"),
+        'remarks': fields.text("Remarks"),
+        'evaluator_ids': fields.many2many("hr.employee", 'hr_empl_rel', 'hr_cand_id', 'emp_id', "Evaluator"),
+        'reference_id': fields.many2one("hr.employee", "Reference"),
+        'tech_skills_ids': fields.one2many("technical.skill", "candidate_id", "Technology Skills"),
+        'performance': fields.float("Performance (%)", readonly=True),
+        'state': fields.selection([("draft", "Draft"), ('scheduled', 'Scheduled'), ('re-scheduled', 'Re-Scheduled'), ('start-interview', 'Start-Interview'), ('end-interview', 'End-Interview'), ("selected", "Selected"), ('rejected', 'Rejected'), ("cancel", "Cancel")], "State", readonly=True, select=1),
+        'history_log_ids': fields.one2many("hr.interview.log", "history_id", "Interview Logs", readonly=True),
+    }
+    _defaults = {
+        'state': lambda *a: "draft",
+        'hr_id': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'hr.interview'),
+    }
+
+    _constraints = [
+        (_constraint_obt_marks,
+         _('Obtained marks cannot be greater than Total marks!'), ['obt_marks']),
+        (_constraint_evaluator,
+         "Reference Person cannot be among Evaluators!", ['reference_id'])
     ]
 
-	def state_scheduled(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 'scheduled'})
-		self._log(cr,uid,ids,'scheduled')
-		return True
-
-	def state_cancel(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 'cancel' })
-		self._log(cr,uid,ids,'cancel')
-		return True
-
-	def state_re_scheduled(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 're-scheduled' })
-		self._log(cr,uid,ids,'re-scheduled')
-		return True
-
-	def state_start_interview(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 'start-interview' })
-		self._log(cr,uid,ids,'start-interview')
-		return True
-
-	def state_end_interview(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 'end-interview' })
-		self._log(cr,uid,ids,'end-interview')
-		return True
-
-	def state_selected(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 'selected' })
-		self._log(cr,uid,ids,'selected')
-		return True
-
-	def state_rejected(self, cr, uid, ids,*arg):
-		self.write(cr, uid, ids, { 'state' : 'rejected' })
-		self._log(cr,uid,ids,'rejected')
-		return True
-
-	def _log(self,cr,uid,ids,action):
-		his_obj = self.pool.get("hr.interview.log")
-		his_obj.create(cr,uid,{'state':action,'date':strftime("%Y-%m-%d %H:%M:%S"),"user_id":uid,'history_id':ids[0]})
-		return True
-
-	def copy(self, cr, uid, id, default=None,context=None):
-		raise osv.except_osv(_('Error !'),_('You cannot duplicate the resource!'))
-		return False
-
-	def create(self, cr, uid, vals, context=None):
-		que_obj = self.pool.get("category.question")
-		tech_skill_obj = self.pool.get("technical.skill")
-		hr_id = super(hr_interview, self).create(cr, uid, vals, context=context)
-		if vals.get('category_id', False):
-			cate_id = vals.get('category_id')
-			que_ids = que_obj.search(cr, uid, [('category_id','=',int(cate_id))], context=context)
-			for rec in que_obj.browse(cr, uid, que_ids, context=context):
-				tech_skill_obj.create(cr, uid, {'name': rec.name, 'tot_marks': rec.tot_marks, 'candidate_id': hr_id})
-		self._log(cr, uid, [hr_id], 'draft')
-		return hr_id
-
-	def write(self, cr, uid, ids, vals, context=None):
-		que_obj = self.pool.get("category.question")
-		tech_skill_obj=self.pool.get("technical.skill")
-		if 'category_id' in vals :
-			cate_id = vals['category_id']
-			que_ids = que_obj.search(cr, uid, [('category_id', '=', int(cate_id))])
-			tech_skill_ids=tech_skill_obj.search(cr, uid, [('candidate_id','=',ids[0])])
-			if tech_skill_ids:
-				tech_skill_obj.unlink(cr,uid,tech_skill_ids)
-			for rec in que_obj.browse(cr,uid,que_ids):
-				tech_skill_obj.create(cr,uid,{'name':rec.name,'tot_marks':rec.tot_marks,'candidate_id':ids[0]})
-		return super(hr_interview, self).write(cr, uid, ids, vals, context=context)
+    def state_scheduled(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 'scheduled'})
+        self._log(cr, uid, ids, 'scheduled')
+        return True
+
+    def state_cancel(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 'cancel'})
+        self._log(cr, uid, ids, 'cancel')
+        return True
+
+    def state_re_scheduled(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 're-scheduled'})
+        self._log(cr, uid, ids, 're-scheduled')
+        return True
+
+    def state_start_interview(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 'start-interview'})
+        self._log(cr, uid, ids, 'start-interview')
+        return True
+
+    def state_end_interview(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 'end-interview'})
+        self._log(cr, uid, ids, 'end-interview')
+        return True
+
+    def state_selected(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 'selected'})
+        self._log(cr, uid, ids, 'selected')
+        return True
+
+    def state_rejected(self, cr, uid, ids, *arg):
+        self.write(cr, uid, ids, {'state': 'rejected'})
+        self._log(cr, uid, ids, 'rejected')
+        return True
+
+    def _log(self, cr, uid, ids, action):
+        his_obj = self.pool.get("hr.interview.log")
+        his_obj.create(cr, uid, {'state': action, 'date': strftime(
+            "%Y-%m-%d %H:%M:%S"), "user_id": uid, 'history_id': ids[0]})
+        return True
+
+    def copy(self, cr, uid, id, default=None, context=None):
+        raise osv.except_osv(
+            _('Error !'), _('You cannot duplicate the resource!'))
+        return False
+
+    def create(self, cr, uid, vals, context=None):
+        que_obj = self.pool.get("category.question")
+        tech_skill_obj = self.pool.get("technical.skill")
+        hr_id = super(hr_interview, self).create(
+            cr, uid, vals, context=context)
+        if vals.get('category_id', False):
+            cate_id = vals.get('category_id')
+            que_ids = que_obj.search(
+                cr, uid, [('category_id', '=', int(cate_id))], context=context)
+            for rec in que_obj.browse(cr, uid, que_ids, context=context):
+                tech_skill_obj.create(
+                    cr, uid, {'name': rec.name, 'tot_marks': rec.tot_marks, 'candidate_id': hr_id})
+        self._log(cr, uid, [hr_id], 'draft')
+        return hr_id
+
+    def write(self, cr, uid, ids, vals, context=None):
+        que_obj = self.pool.get("category.question")
+        tech_skill_obj = self.pool.get("technical.skill")
+        if 'category_id' in vals:
+            cate_id = vals['category_id']
+            que_ids = que_obj.search(
+                cr, uid, [('category_id', '=', int(cate_id))])
+            tech_skill_ids = tech_skill_obj.search(
+                cr, uid, [('candidate_id', '=', ids[0])])
+            if tech_skill_ids:
+                tech_skill_obj.unlink(cr, uid, tech_skill_ids)
+            for rec in que_obj.browse(cr, uid, que_ids):
+                tech_skill_obj.create(
+                    cr, uid, {'name': rec.name, 'tot_marks': rec.tot_marks, 'candidate_id': ids[0]})
+        return super(hr_interview, self).write(cr, uid, ids, vals, context=context)
 
 hr_interview()
 
 
 class technical_skill(osv.osv):
-	_name="technical.skill"
-	_description="Technical Skill Of Candidate"
-	_columns={
-		'candidate_id' : fields.many2one("hr.interview","Candidate ID"),
-		'name' : fields.char("Category" ,size=64),
-		'tot_marks' : fields.float("Total Marks"),
-		'obt_marks': fields.float("Obtained Marks"),
-		'remarks' : fields.text("Remarks")
-		}
+    _name = "technical.skill"
+    _description = "Technical Skill Of Candidate"
+    _columns = {
+        'candidate_id': fields.many2one("hr.interview", "Candidate ID"),
+        'name': fields.char("Category", size=64),
+        'tot_marks': fields.float("Total Marks"),
+        'obt_marks': fields.float("Obtained Marks"),
+        'remarks': fields.text("Remarks")
+    }
 technical_skill()
 
 
 class hr_interview_log(osv.osv):
-	_name="hr.interview.log"
-	_description="HR interview log"
-	_rec_name="history_id"
-	_columns={
-		'history_id':fields.many2one("hr.interview","History ID"),
-		'state' : fields.char("State",size=64),
-		'date': fields.datetime("Date"),
-		'user_id' : fields.many2one("res.users","User Name")
-		}
+    _name = "hr.interview.log"
+    _description = "HR interview log"
+    _rec_name = "history_id"
+    _columns = {
+        'history_id': fields.many2one("hr.interview", "History ID"),
+        'state': fields.char("State", size=64),
+        'date': fields.datetime("Date"),
+        'user_id': fields.many2one("res.users", "User Name")
+    }
 hr_interview_log()
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_interview/report/candidate_summary.py'
--- hr_interview/report/candidate_summary.py	2009-11-23 08:56:43 +0000
+++ hr_interview/report/candidate_summary.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,38 +18,41 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import time
 from report import report_sxw
 import datetime
 import mx.DateTime
 
+
 class candidate_summary(report_sxw.rml_parse):
 
     def __init__(self, cr, uid, name, context):
         super(candidate_summary, self).__init__(cr, uid, name, context)
-        self.localcontext.update( {
+        self.localcontext.update({
             'time': time,
             'get_education': self._get_education,
-            'get_scheduled_date':self._get_schedule_date,
+            'get_scheduled_date': self._get_schedule_date,
         })
-        
+
     def _get_education(self, edu_type):
-        edu_list = [("be_ce","BE Computers"),("be_it","BE IT"),("bsc_it","BSc IT"),("bca","BCA"),("btech_ce","BTech Computers"),("btech_it","BTech IT"),("mca","MCA"),("msc_it","MSc IT"),("mtech_ce","MTech Computers"),("other","Other")]
-        edu = [x[1] for x in edu_list if x[0]==str(edu_type) ]
+        edu_list = [(
+            "be_ce", "BE Computers"), ("be_it", "BE IT"), ("bsc_it", "BSc IT"), ("bca", "BCA"), ("btech_ce", "BTech Computers"),
+            ("btech_it", "BTech IT"), ("mca", "MCA"), ("msc_it", "MSc IT"), ("mtech_ce", "MTech Computers"), ("other", "Other")]
+        edu = [x[1] for x in edu_list if x[0] == str(edu_type)]
         return edu[0]
-    
+
     def _get_schedule_date(self, sch_time):
         if len(sch_time) > 5:
-            dt = mx.DateTime.strptime(str(sch_time),"%m/%d/%Y %H:%M:%S")
+            dt = mx.DateTime.strptime(str(sch_time), "%m/%d/%Y %H:%M:%S")
             sch_dt = dt.strftime('%B %d,%Y at %H:%M %p')
-        else :
-            sch_dt=""
+        else:
+            sch_dt = ""
         return sch_dt
 
-report_sxw.report_sxw('report.candidate.summary', 'hr.interview', 'addons/hr_interview/report/candidate_summary.rml',parser=candidate_summary,header=False)
+report_sxw.report_sxw('report.candidate.summary', 'hr.interview',
+                      'addons/hr_interview/report/candidate_summary.rml', parser=candidate_summary, header=False)
 
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_interview/wizard/__init__.py'
--- hr_interview/wizard/__init__.py	2009-11-23 08:56:43 +0000
+++ hr_interview/wizard/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,8 +18,8 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import wiz_schedule
 import wizard_send_interview_mail
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_interview/wizard/wiz_schedule.py'
--- hr_interview/wizard/wiz_schedule.py	2010-01-21 08:17:41 +0000
+++ hr_interview/wizard/wiz_schedule.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,7 +18,7 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import wizard
 import pooler
@@ -36,10 +36,10 @@
  </form>'''
 
 _schedule_fields = {
-    'start_interview' : {'string' : 'Start Interview Time', 'type' : 'datetime','required':True },
-    'end_interview' : {'string' : 'End Interview Time', 'type' : 'datetime','required':True },
-    'interval_time' : {'string' : 'Interval(Approximate Evaluation Time) ', 'type' : 'integer','required':True },
-    }
+    'start_interview': {'string': 'Start Interview Time', 'type': 'datetime', 'required': True},
+    'end_interview': {'string': 'End Interview Time', 'type': 'datetime', 'required': True},
+    'interval_time': {'string': 'Interval(Approximate Evaluation Time) ', 'type': 'integer', 'required': True},
+}
 
 
 form = """<?xml version="1.0"?>
@@ -52,57 +52,66 @@
 """
 
 fields = {
-    'list' : {'string': "",'type':'text','readonly':True},
-    'list_all' : {'string': "",'type':'text','readonly':True}
-          }
+    'list': {'string': "", 'type': 'text', 'readonly': True},
+    'list_all': {'string': "", 'type': 'text', 'readonly': True}
+}
+
 
 class wiz_schedule(wizard.interface):
+
     def _scheduling(self, cr, uid, data, context):
         pool = pooler.get_pool(cr.dbname)
         hr_int_obj = pool.get("hr.interview")
-        if time.strptime(str(data['form']['start_interview']),"%Y-%m-%d %H:%M:%S") < time.strptime(data['form']['end_interview'],"%Y-%m-%d %H:%M:%S") and time.strptime(str(data['form']['start_interview']),"%Y-%m-%d %H:%M:%S")[:3] ==time.strptime(str(data['form']['end_interview']),"%Y-%m-%d %H:%M:%S")[:3] :  
-            if datetime.datetime(*time.strptime(str(data['form']['end_interview']),"%Y-%m-%d %H:%M:%S")[:6]) >= datetime.datetime(*time.strptime(str(data['form']['start_interview']),"%Y-%m-%d %H:%M:%S")[:6]) + datetime.timedelta(minutes=int(data['form']['interval_time'])):
+        if time.strptime(str(data['form']['start_interview']), "%Y-%m-%d %H:%M:%S") < time.strptime(data['form']['end_interview'], "%Y-%m-%d %H:%M:%S") and time.strptime(str(data['form']['start_interview']), "%Y-%m-%d %H:%M:%S")[:3] == time.strptime(str(data['form']['end_interview']), "%Y-%m-%d %H:%M:%S")[:3]:
+            if datetime.datetime(*time.strptime(str(data['form']['end_interview']), "%Y-%m-%d %H:%M:%S")[:6]) >= datetime.datetime(*time.strptime(str(data['form']['start_interview']), "%Y-%m-%d %H:%M:%S")[:6]) + datetime.timedelta(minutes=int(data['form']['interval_time'])):
                 cur_time = data['form']['start_interview']
                 re_id = deepcopy(data['ids'])
-                list_all="Interview ID \t Name "
+                list_all = "Interview ID \t Name "
                 for rec in data['ids']:
                     wf_service = netsvc.LocalService('workflow')
-                    wf_service.trg_validate(uid, 'hr.interview', rec, 'state_scheduled', cr)
-                    record = hr_int_obj.read(cr,uid,rec,['hr_id','name'])
-                    list_all +="\n" + record['hr_id']+"\t\t" + record['name'] 
-                    id = hr_int_obj.write(cr,uid,rec,{'date':cur_time,'state':'scheduled'})
-                    cur_time  = datetime.datetime(*time.strptime(str(cur_time),"%Y-%m-%d %H:%M:%S")[:6]) + datetime.timedelta(minutes=int(data['form']['interval_time']))
+                    wf_service.trg_validate(
+                        uid, 'hr.interview', rec, 'state_scheduled', cr)
+                    record = hr_int_obj.read(cr, uid, rec, ['hr_id', 'name'])
+                    list_all += "\n" + \
+                        record['hr_id'] + "\t\t" + record['name']
+                    id = hr_int_obj.write(
+                        cr, uid, rec, {'date': cur_time, 'state': 'scheduled'})
+                    cur_time = datetime.datetime(*time.strptime(str(cur_time), "%Y-%m-%d %H:%M:%S")[
+                        :6]) + datetime.timedelta(minutes=int(data['form']['interval_time']))
                     re_id.remove(rec)
-                    end_time  = datetime.datetime(*time.strptime(str(cur_time),"%Y-%m-%d %H:%M:%S")[:6]) + datetime.timedelta(minutes=int(data['form']['interval_time']))
-                    if len(re_id) > 0 and time.strptime(str(end_time),"%Y-%m-%d %H:%M:%S") > time.strptime(data['form']['end_interview'],"%Y-%m-%d %H:%M:%S") :
-                        remain="Interview ID \t Name "
-                        for record in hr_int_obj.read(cr,uid,re_id,['hr_id','name']):
-                            remain +="\n" + record['hr_id']+"\t\t" + record['name'] 
-                        data['form']['list']=remain
-                        data['form']['list_all']=list_all
+                    end_time = datetime.datetime(*time.strptime(str(cur_time), "%Y-%m-%d %H:%M:%S")[
+                        :6]) + datetime.timedelta(minutes=int(data['form']['interval_time']))
+                    if len(re_id) > 0 and time.strptime(str(end_time), "%Y-%m-%d %H:%M:%S") > time.strptime(data['form']['end_interview'], "%Y-%m-%d %H:%M:%S"):
+                        remain = "Interview ID \t Name "
+                        for record in hr_int_obj.read(cr, uid, re_id, ['hr_id', 'name']):
+                            remain += "\n" + \
+                                record['hr_id'] + "\t\t" + record['name']
+                        data['form']['list'] = remain
+                        data['form']['list_all'] = list_all
                         return data['form']
-            else :
-                raise  wizard.except_wizard(_('UserError'),_('Insert appropriate interval time!!!'))
+            else:
+                raise wizard.except_wizard(
+                    _('UserError'), _('Insert appropriate interval time!!!'))
                 return {}
-        else :
-            raise  wizard.except_wizard(_('UserError'),_('The Scheduling is not Appropriate. Enter appropriate date and time '))
+        else:
+            raise wizard.except_wizard(
+                _('UserError'), _('The Scheduling is not Appropriate. Enter appropriate date and time '))
             return {}
-        
-        data['form']['list_all']= list_all
-        data['form']['list']= "None"
-        
+
+        data['form']['list_all'] = list_all
+        data['form']['list'] = "None"
+
         return data['form']
-    
-    
+
     states = {
         'init': {
             'actions': [],
-            'result': {'type': 'form', 'arch':_schedule_form, 'fields':_schedule_fields, 'state':[('schedule','Schedule','gtk-ok'),('end','Cancel','gtk-cancel')]}
-                },
-            'schedule': {
+            'result': {'type': 'form', 'arch': _schedule_form, 'fields': _schedule_fields, 'state': [('schedule', 'Schedule', 'gtk-ok'), ('end', 'Cancel', 'gtk-cancel')]}
+        },
+        'schedule': {
             'actions': [_scheduling],
-            'result': {'type': 'form','arch':form, 'fields':fields, 'state':[('end','Ok')]}
-                },                
+            'result': {'type': 'form', 'arch': form, 'fields': fields, 'state': [('end', 'Ok')]}
+        },
     }
 wiz_schedule('wiz_interview_scheduling')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_interview/wizard/wizard_send_interview_mail.py'
--- hr_interview/wizard/wizard_send_interview_mail.py	2010-07-06 06:47:27 +0000
+++ hr_interview/wizard/wizard_send_interview_mail.py	2013-09-22 13:57:11 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    $Id$
 #
@@ -18,7 +18,7 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import wizard
 import pooler
@@ -28,7 +28,7 @@
 import mx.DateTime
 import re
 
-mail_form='''<?xml version="1.0"?>
+mail_form = '''<?xml version="1.0"?>
 <form string="Interview Mail">
     <field name="smtp_server" colspan="4"/>
     <field name="subject" colspan="4"/>
@@ -36,20 +36,22 @@
 </form>'''
 
 mail_fields = {
-    'smtp_server':{'string':'SMTP Server','type':'many2one','relation': 'email.smtpclient','required':True},
-    'subject': {'string': 'Subject', 'type':'char', 'size': 64, 'required':True},
-    'mail_body': {'string': 'Body', 'type': 'text_tag', 'required':True}
+    'smtp_server': {'string': 'SMTP Server', 'type': 'many2one', 'relation': 'email.smtpclient', 'required': True},
+    'subject': {'string': 'Subject', 'type': 'char', 'size': 64, 'required': True},
+    'mail_body': {'string': 'Body', 'type': 'text_tag', 'required': True}
 }
 
+
 class wizard_email_interview(wizard.interface):
-    
+
     def merge_message(self, cr, uid, id, keystr, context):
         obj_pool = pooler.get_pool(cr.dbname).get('hr.interview')
-        
+
         def merge(match):
             obj = obj_pool.browse(cr, uid, id)
             exp = str(match.group()[2:-2]).strip()
-            result = eval(exp, {'object':obj, 'context': context,'time':time})
+            result = eval(
+                exp, {'object': obj, 'context': context, 'time': time})
             if result in (None, False):
                 return str("--------")
             print 'XXXXXXXXXXXXXXXXXXXX : ', result
@@ -57,7 +59,7 @@
 
         com = re.compile('(\[\[.+?\]\])')
         message = com.sub(merge, keystr)
-        
+
         return message
 
     def _send_mail(self, cr, uid, data, context={}):
@@ -66,40 +68,43 @@
         body = data['form']['mail_body']
         ids = data['ids']
         hr_candidate_obj = pooler.get_pool(cr.dbname).get('hr.interview')
-        hr_candidates = hr_candidate_obj.browse(cr,uid,ids)
+        hr_candidates = hr_candidate_obj.browse(cr, uid, ids)
         for hr_candidate in hr_candidates:
             msg = self.merge_message(cr, uid, hr_candidate.id, body, context)
             to = hr_candidate.email
-            files = smtp_obj.send_email(cr, uid, data['form']['smtp_server'], to, subject, msg)
-        return {}     
+            files = smtp_obj.send_email(
+                cr, uid, data['form']['smtp_server'], to, subject, msg)
+        return {}
 
     def _default_params(self, cr, uid, data, context={}):
         ids = data['ids']
-        hr_candidates = pooler.get_pool(cr.dbname).get('hr.interview').browse(cr,uid,ids)
+        hr_candidates = pooler.get_pool(cr.dbname).get(
+            'hr.interview').browse(cr, uid, ids)
         subject = '<No Subject>'
         for hr_candidate in hr_candidates:
             body = "Hello __candidate__ ,\n\n" + "Congratulations!\n\n"
             if hr_candidate.state == 'scheduled':
                 body = body + "Your resume has been short listed in the qualifying candidates.\n"\
-                            + "Your interview has been scheduled on __date__\n\n"
+                            + \
+                    "Your interview has been scheduled on __date__\n\n"
                 subject = "A call for Interview !"
             elif hr_candidate.state == 'selected':
                 body = body + "You have been selected .\n"\
                             + "Your date of joining is :  __date__\n\n"
-                subject = "Congratulations! A call for Joining!"           
-                
+                subject = "Congratulations! A call for Joining!"
+
         data['mail_body'] = body + "Regards,\n" + "Management\n"
-        data['subject'] = subject           
+        data['subject'] = subject
         return data
-        
+
     states = {
         'init': {
             'actions': [_default_params],
-            'result': {'type':'form', 'arch':mail_form, 'fields':mail_fields, 'state':[('end','Cancel'),('sendmail','Send Mail')]}
+            'result': {'type': 'form', 'arch': mail_form, 'fields': mail_fields, 'state': [('end', 'Cancel'), ('sendmail', 'Send Mail')]}
         },
         'sendmail': {
             'actions': [_send_mail],
-            'result': {'type':'state', 'state':'end'}
+            'result': {'type': 'state', 'state': 'end'}
         }
     }
 wizard_email_interview('hr.email.interview')

=== modified file 'hr_payroll_declare/__init__.py'
--- hr_payroll_declare/__init__.py	2010-01-20 11:54:30 +0000
+++ hr_payroll_declare/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 #-*- coding:utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    d$
 #
@@ -19,6 +19,5 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
-
-import hr_payroll_declare
+#
+from . import hr_payroll_declare

=== renamed file 'hr_payroll_declare/__terp__.py' => 'hr_payroll_declare/__openerp__.py'
--- hr_payroll_declare/__terp__.py	2010-01-20 12:24:59 +0000
+++ hr_payroll_declare/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 #-*- coding:utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    d$
 #
@@ -19,7 +19,7 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 {
     'name': 'Human Resource Payroll Decleration Form',

=== modified file 'hr_payroll_declare/hr_payroll_declare.py'
--- hr_payroll_declare/hr_payroll_declare.py	2010-07-06 06:47:27 +0000
+++ hr_payroll_declare/hr_payroll_declare.py	2013-09-22 13:57:11 +0000
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 #-*- coding:utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution    
+#
+#
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    d$
 #
@@ -19,53 +19,51 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
-
+#
 import time
+from datetime import datetime
+from datetime import timedelta
 
-from osv import osv
-from osv import fields
+from osv import osv, fields
 from tools import config
 from tools.translate import _
-from datetime import datetime
-from datetime import timedelta
+
 
 class hr_payroll_declar(osv.osv):
+
     '''
-    Decleration Form
+    Declaration Form
     '''
     _name = 'hr.payroll.declare'
-    _description = 'Decleration Form'
-    
+    _description = 'Declaration Form'
     _columns = {
-        'name':fields.char('Name', size=1024, required=False),
-        'company_id':fields.many2one('res.company', 'Company', required=True),
-        'employee_id':fields.many2one('hr.employee', 'Employee', required=True),
+        'name': fields.char('Name', size=1024, required=False),
+        'company_id': fields.many2one('res.company', 'Company', required=True),
+        'employee_id': fields.many2one('hr.employee', 'Employee', required=True),
         'income_sal': fields.float('Income by Salary', digits=(16, int(config['price_accuracy'])), readonly=True),
-        'income_ids':fields.one2many('hr.payroll.declare.line', 'income_id', 'Source Of Income', required=False),
-        'investment_ids':fields.one2many('hr.payroll.declare.line', 'invest_id', 'Investments', required=False),
-        'claim_ids':fields.one2many('hr.payroll.declare.line', 'claim_id', 'Allowance to Claime', required=False),
+        'income_ids': fields.one2many('hr.payroll.declare.line', 'income_id', 'Source Of Income', required=False),
+        'investment_ids': fields.one2many('hr.payroll.declare.line', 'invest_id', 'Investments', required=False),
+        'claim_ids': fields.one2many('hr.payroll.declare.line', 'claim_id', 'Allowance to Claime', required=False),
         'date': fields.date('Date'),
-        
         'income': fields.float('Taxable Income', digits=(16, int(config['price_accuracy'])), readonly=True),
         'investment': fields.float('Total Investment', digits=(16, int(config['price_accuracy'])), readonly=True),
         'claims': fields.float('Total Allowance Claims', digits=(16, int(config['price_accuracy'])), readonly=True),
-        
-        'state':fields.selection([
-            ('draft','Draft'),
-            ('pending','Waiting for Review'),
-            ('pending','Approved by HR'),
-            ('done','Confirm'),
-        ],'State', select=True, readonly=True),
-        'note': fields.text('Description'),   
+        'state': fields.selection([('draft', 'Draft'),
+                                   ('pending', 'Waiting for Review'),
+                                   ('pending', 'Approved by HR'),
+                                   ('done', 'Confirm'),
+                                   ], 'State', select=True, readonly=True),
+        'note': fields.text('Description'),
     }
-    
+
     def get_basic(self, cr, uid, ids, context):
         res = {}
         for rs in self.browse(cr, uid, ids, context):
-            period_id = self.pool.get('account.period').search(cr,uid,[('date_start','<=',time.strftime('%Y-%m-%d')),('date_stop','>=',time.strftime('%Y-%m-%d'))])[0]
-            fiscalyear_id = self.pool.get('account.period').browse(cr, uid, period_id).fiscalyear_id
-            sql_req= '''
+            period_id = self.pool.get('account.period').search(
+                cr, uid, [('date_start', '<=', time.strftime('%Y-%m-%d')), ('date_stop', '>=', time.strftime('%Y-%m-%d'))])[0]
+            fiscalyear_id = self.pool.get('account.period').browse(
+                cr, uid, period_id).fiscalyear_id
+            sql_req = '''
                 SELECT c.id as id, c.wage as wage, function as function, c.date_start as start, c.date_end as end
                 FROM hr_contract c
                   LEFT JOIN hr_employee emp on (c.employee_id=emp.id)
@@ -76,24 +74,26 @@
                   (date_start >= %s) AND
                   (date_end IS NULL OR date_end <= %s)
                 '''
-            cr.execute(sql_req, (rs.employee_id.id, fiscalyear_id.date_start, fiscalyear_id.date_stop))
+            cr.execute(
+                sql_req, (rs.employee_id.id, fiscalyear_id.date_start, fiscalyear_id.date_stop))
             contracts = cr.dictfetchall()
             if not contracts:
-                raise osv.except_osv(_('Contract Error !'), _('No Contract Defined for : %s ' % (rs.employee_id.name)))
+                raise osv.except_osv(_('Contract Error !'), _(
+                    'No Contract Defined for : %s ' % (rs.employee_id.name)))
             total = 0.0
-            
+
             line_ids = []
             for lines in rs.claim_ids:
                 line_ids += [lines.head_id.id]
-            
+
             for ct in contracts:
-                allow = 0.0
-                
+                # allow = 0.0
                 d1 = ct['start']
                 d2 = ct['end'] or fiscalyear_id.date_stop
-                td = datetime.fromtimestamp(time.mktime(time.strptime(d2, '%Y-%m-%d'))) - datetime.fromtimestamp(time.mktime(time.strptime(d1, '%Y-%m-%d')))
+                td = datetime.fromtimestamp(time.mktime(time.strptime(d2, '%Y-%m-%d'))) - datetime.fromtimestamp(
+                    time.mktime(time.strptime(d1, '%Y-%m-%d')))
                 total += (td.days / 30) * ct['wage']
-            
+
 #                ct = self.pool.get('hr.contract').browse(cr, uid, ct['id'])
 #                for line in ct.function.line_ids:
 #                    if line.category_id.id in line_ids:
@@ -102,32 +102,30 @@
 #                        elif line.amount_type == 'per':
 #                            allow += (total * line.amount)
 #                        print 'XXXXXXXXXXXXXXXXXXXXXXX : ', line.name, allow
-                        
             res[rs.id] = total
         return res
-        
+
     def write(self, cr, user, ids, vals, context=None):
         res = self.get_basic(cr, user, ids, context)
         for id in ids:
             vals['income_sal'] = res[id]
             super(hr_payroll_declar, self).write(cr, user, [id], vals, context)
-            
         return res
-    
 hr_payroll_declar()
 
+
 class hr_payroll_declare_line(osv.osv):
+
     '''
-    Decleration Line
+    Declaration Line
     '''
     _name = 'hr.payroll.declare.line'
-    _description = 'Decleration Line'
-    
+    _description = 'Declaration Line'
+
     def _function_call(self, cr, uid, ids, field_names, arg, context={}):
         res = {}
         for rs in self.browse(cr, uid, ids, context):
             val = 0.0
-            
             if rs.income_id:
                 pass
             elif rs.invest_id:
@@ -140,47 +138,44 @@
                         val = rs.amount
                     elif rs.amount > rs.head_id.max:
                         val = rs.head_id.max
-                
             res[rs.id] = val
-            
         return res
-    
+
     _columns = {
-        'name':fields.char('Name', size=64, required=False),
+        'name': fields.char('Name', size=64, required=False),
         'note': fields.text('Description'),
-        'income_id':fields.many2one('hr.payroll.declare', 'Income', required=False),
-        'invest_id':fields.many2one('hr.payroll.declare', 'Investment', required=False),
-        'claim_id':fields.many2one('hr.payroll.declare', 'Allowance Claims', required=False),
+        'income_id': fields.many2one('hr.payroll.declare', 'Income', required=False),
+        'invest_id': fields.many2one('hr.payroll.declare', 'Investment', required=False),
+        'claim_id': fields.many2one('hr.payroll.declare', 'Allowance Claims', required=False),
         'amount': fields.float('Amount', digits=(16, int(config['price_accuracy']))),
         'allow': fields.float('Allowence', digits=(16, int(config['price_accuracy']))),
         'allow_amount': fields.function(_function_call, method=True, type='float', digits=(16, int(config['price_accuracy'])), string='Allow Amount'),
-        'head_id':fields.many2one('hr.allounce.deduction.categoty', 'Allowance / Deduction', required=True),
-        
+        'head_id': fields.many2one('hr.allounce.deduction.categoty', 'Allowance / Deduction', required=True),
+
     }
 hr_payroll_declare_line()
 
 
 class payment_category(osv.osv):
+
     '''
     Allowance Deduction Categoty
     '''
     _inherit = 'hr.allounce.deduction.categoty'
-        
+
     _columns = {
-        'calc_type':fields.selection([
-            ('min_max','Min / Max'),
-            ('stmt','List of Calculations'),
-            ('range','Selection from Range'),
-        ],'Calculation Type', select=True, readonly=False),
+        'calc_type': fields.selection([('min_max', 'Min / Max'),
+                                       ('stmt', 'List of Calculations'),
+                                       ('range', 'Selection from Range'),
+                                       ], 'Calculation Type', select=True, readonly=False),
         'min': fields.float('Min Value', digits=(16, int(config['price_accuracy']))),
         'max': fields.float('Max Value', digits=(16, int(config['price_accuracy']))),
-        
-        'stmt_ids':fields.one2many('hr.payroll.declare.stmt', 'category_id', 'Functions', required=False),
-        'stmt_select':fields.selection([
-            ('min','Minimum'),
-            ('max','Maximum'),
-            ('avg','Average'),
-        ],'Selection Method', select=True, readonly=False),
+
+        'stmt_ids': fields.one2many('hr.payroll.declare.stmt', 'category_id', 'Functions', required=False),
+        'stmt_select': fields.selection([('min', 'Minimum'),
+                                         ('max', 'Maximum'),
+                                         ('avg', 'Average'),
+                                         ], 'Selection Method', select=True, readonly=False),
     }
     _defaults = {
         'stmt_select': lambda *a: 'min',
@@ -188,18 +183,20 @@
     }
 payment_category()
 
+
 class payment_stmt(osv.osv):
+
     '''
     Open ERP Model
     '''
     _name = 'hr.payroll.declare.stmt'
     _description = 'Payroll Calculations'
-    
+
     _columns = {
-        'category_id':fields.many2one('hr.allounce.deduction.categoty', 'Category', required=True),
-        'name':fields.char('Expression', size=1024, required=True, readonly=False),
+        'category_id': fields.many2one('hr.allounce.deduction.categoty', 'Category', required=True),
+        'name': fields.char('Expression', size=1024, required=True, readonly=False),
         'sequence': fields.integer('Sequence'),
-        'active':fields.boolean('Active', required=False),
+        'active': fields.boolean('Active', required=False),
     }
     _defaults = {
         'sequence': lambda *a: 5,

=== modified file 'hr_performance/__init__.py'
--- hr_performance/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_performance/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,8 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import hr_performance
-import report
\ No newline at end of file
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import hr_performance
+from . import report

=== renamed file 'hr_performance/__terp__.py' => 'hr_performance/__openerp__.py'
--- hr_performance/__terp__.py	2009-10-15 11:25:40 +0000
+++ hr_performance/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,21 +15,26 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 {
     "name": "Performance Review",
     "version": "1.0",
     "author": "Tiny",
-    "category" : "Generic Modules",
-    "depends" : ["base","hr"],
+    "category": "Generic Modules",
+    "depends": ["base", "hr"],
     "website": "http://www.openerp.com";,
     "category": "Generic Modules",
     "description": "A module that Check Performance For the Company Employees.",
     "init_xml": ["hr_performance_view.xml"],
-    "demo_xml" : [],
-    "update_xml": ["security/ir.model.access.csv","hr_performance_view.xml","hr_performance_workflow.xml","hr_performance_report.xml"],
+    "demo_xml": [],
+    "update_xml": [
+        "security/ir.model.access.csv",
+        "hr_performance_view.xml",
+        "hr_performance_workflow.xml",
+        "hr_performance_report.xml"
+    ],
     "active": False,
     "installable": True,
-}
\ No newline at end of file
+}

=== modified file 'hr_performance/hr_performance.py'
--- hr_performance/hr_performance.py	2009-10-15 11:25:40 +0000
+++ hr_performance/hr_performance.py	2013-09-22 13:57:11 +0000
@@ -1,13 +1,13 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#    
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
+# -*- encoding:  utf-8 -*-
+#
+#
+#    OpenERP,  Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http: //tiny.be>).
+#
+#    This program is free software:  you can redistribute it and/or modify
 #    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
+#    published by the Free Software Foundation,  either version 3 of the
+#    License,  or (at your option) any later version.
 #
 #    This program is distributed in the hope that it will be useful,
 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,235 +15,247 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-from osv import fields,osv
+#    along with this program.  If not,  see <http: //www.gnu.org/licenses/>.
+#
+#
 import datetime
 import time
 from mx.DateTime import *
+from osv import fields,  osv
+
 
 class hr_performance(osv.osv):
-    
+
     def create(self, cr, uid, vals, context=None):
-        date_from=vals['date_from']
-        date_to=vals['date_to']
-        d1=date_from.split('-')
-        d2=date_to.split('-')
-        d1[2]=d1[2].split(' ')
-        d2[2]=d2[2].split(' ')
-        a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-        b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
-        if b<a:
-            raise osv.except_osv('Date Error !','From date should be smaller than To date')
+        date_from = vals['date_from']
+        date_to = vals['date_to']
+        d1 = date_from.split('-')
+        d2 = date_to.split('-')
+        d1[2] = d1[2].split(' ')
+        d2[2] = d2[2].split(' ')
+        a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+        b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
+        if b < a:
+            raise osv.except_osv(
+                'Date Error !', 'From date should be smaller than To date')
         else:
             return super(hr_performance, self).create(cr, uid, vals, context=context)
-        
-    
+
     def write(self, cr, uid, ids, vals, context=None):
-        
-        review_obj=self.browse(cr,uid,ids)
-        
+        review_obj = self.browse(cr,  uid, ids)
         if vals.__contains__('date_from'):
-            date_from=vals['date_from']
+            date_from = vals['date_from']
         else:
             for s in review_obj:
-                date_from=s.date_from
-                
+                date_from = s.date_from
+
         if vals.__contains__('date_to'):
-            date_to=vals['date_to']
-        else :
+            date_to = vals['date_to']
+        else:
             for s in review_obj:
-                date_to=s.date_to
-
-        d1=date_from.split('-')
-        d2=date_to.split('-')
-        d1[2]=d1[2].split(' ')
-        d2[2]=d2[2].split(' ')
-        a=datetime.date(int(d1[0]),int(d1[1]),int(d1[2][0]))
-        b=datetime.date(int(d2[0]),int(d2[1]),int(d2[2][0]))
-        
-        if b<a:
-            raise osv.except_osv('Date Error !','From date should be smaller than To date')
+                date_to = s.date_to
+
+        d1 = date_from.split('-')
+        d2 = date_to.split('-')
+        d1[2] = d1[2].split(' ')
+        d2[2] = d2[2].split(' ')
+        a = datetime.date(int(d1[0]), int(d1[1]), int(d1[2][0]))
+        b = datetime.date(int(d2[0]), int(d2[1]), int(d2[2][0]))
+
+        if b < a:
+            raise osv.except_osv(
+                'Date Error !', 'From date should be smaller than To date')
         return super(hr_performance, self).write(cr, uid, ids, vals, context=context)
 
     def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
-        res=[]
-        search_ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
-  
+        res = []
+        search_ids = self.pool.get('hr.employee').search(
+            cr, uid, [('user_id', '=', uid)])
+
         for search_id in search_ids:
-            child_ids = self.pool.get('hr.employee').search(cr, uid,[('parent_id','in',search_ids)])
+            child_ids = self.pool.get('hr.employee').search(
+                cr, uid, [('parent_id', 'in', search_ids)])
             for b in child_ids:
                 res.append(b)
-  
-        ids1=super(hr_performance,self).search(cr,uid,[('reviewer_id','in',res),('state','=','done')])
-                  
-        res2 = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
-        boss = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid),('parent_id','=',False)])
-  
+
+        ids1 = super(hr_performance, self).search(
+            cr, uid, [('reviewer_id', 'in', res), ('state', '=', 'done')])
+
+        res2 = self.pool.get('hr.employee').search(
+            cr, uid, [('user_id', '=', uid)])
+        boss = self.pool.get('hr.employee').search(
+            cr, uid, [('user_id', '=', uid), ('parent_id', '=', False)])
+
         if boss:
-            ids2=super(hr_performance,self).search(cr,uid,[('reviewer_id','in',res2)])
+            ids2 = super(hr_performance, self).search(
+                cr, uid, [('reviewer_id', 'in', res2)])
         else:
-            ids2=super(hr_performance,self).search(cr,uid,[('reviewer_id','in',res2),('state','!=','done')])
-
-        ids=ids1+ids2
-  
+            ids2 = super(hr_performance, self).search(
+                cr, uid, [('reviewer_id', 'in', res2), ('state', '!=', 'done')])
+        ids = ids1 + ids2
         if ids:
-            args1=args
+            args1 = args
             if len(args1) > 2:
-                args1=args1[0:-2]
-                args=[('id','in',ids)]+args1
-        else:   
-            args=[('id','in',ids)]
-              
-        return super(hr_performance,self).search(cr, uid, args, offset, limit,
-                order, context=context, count=count)
-          
+                args1 = args1[0: -2]
+                args = [('id', 'in', ids)] + args1
+        else:
+            args = [('id', 'in', ids)]
+
+        return super(hr_performance, self).search(cr, uid, args, offset, limit, order, context=context, count=count)
+
     def _check_date(self, cr, uid, ids):
         for r in self.browse(cr, uid, ids):
             cr.execute('SELECT id \
-                    FROM hr_performance \
-                    WHERE (date_from <= %s and %s <= date_to) \
-                        AND reviewer_id=%d \
-                        AND id <> %d', (r.date_to, r.date_from,
-                            r.reviewer_id.id, r.id))
+                       FROM hr_performance \
+                       WHERE (date_from <=  %s and %s <= date_to) \
+                       AND reviewer_id = %d \
+                       AND id <> %d',  (r.date_to, r.date_from, r.reviewer_id.id, r.id))
             if cr.fetchall():
                 return False
-        return True       
-     
-    def fill_employee_list(self, cr, uid, ids, *args):
-        res=[]
-        search_ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
-        
+        return True
+
+    def fill_employee_list(self,  cr, uid, ids, *args):
+        res = []
+        search_ids = self.pool.get('hr.employee').search(
+            cr, uid, [('user_id', '=', uid)])
+
         for search_id in search_ids:
-            boss = self.pool.get('hr.employee').search(cr, uid,[('parent_id','in',search_ids)])
+            boss = self.pool.get('hr.employee').search(
+                cr, uid, [('parent_id', 'in', search_ids)])
             for b in boss:
                 res.append(b)
-                
+
         for emp_id in res:
-            pl_id=self.pool.get('hr.performance.line').create(cr, uid, {
-            'employee_id': emp_id,
-            'performance_id':ids[0]
-            },context={'from_btn':True})
-            
-            att_ids = self.pool.get('hr.performance.line.attribute').search(cr, uid,[])
-            
+            pl_id = self.pool.get(
+                'hr.performance.line').create(cr, uid, {'employee_id':  emp_id,
+                                                        'performance_id': ids[0]
+                                                        }, context={'from_btn': True})
+
+            att_ids = self.pool.get(
+                'hr.performance.line.attribute').search(cr, uid, [])
+
             for attribute_id in att_ids:
-                att_obj=self.pool.get('hr.performance.line.attribute').browse(cr, uid,attribute_id, *args)
-                self.pool.get('attribute.line').create(cr, uid, {
-                        'attribute_id': attribute_id,
-                        'performance_line_id':pl_id,
-                        'total_marks':att_obj.total_point,
-                        'obtained_marks':0 },context={'from_btn':True})
-        return self.write(cr, uid, ids, {'state':'saved'})
-    
+                att_obj = self.pool.get('hr.performance.line.attribute').browse(
+                    cr, uid, attribute_id, *args)
+                self.pool.get(
+                    'attribute.line').create(cr, uid, {'attribute_id': attribute_id,
+                                                       'performance_line_id': pl_id,
+                                                       'total_marks': att_obj.total_point,
+                                                       'obtained_marks': 0}, context={'from_btn': True})
+        return self.write(cr, uid, ids, {'state': 'saved'})
+
     def change_sate(self, cr, uid, ids, *args):
-        self.write(cr, uid, ids, {'state':'done'})
+        self.write(cr, uid, ids, {'state': 'done'})
         return True
-        
-    def _employee_get(self,cr,uid,context={}):
-        ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+
+    def _employee_get(self, cr, uid, context={}):
+        ids = self.pool.get('hr.employee').search(
+            cr, uid, [('user_id', '=', uid)])
         if ids:
             return ids[0]
         return False
 
-    _name="hr.performance"
-    _description="Employee Performance "
-    _columns={
-        'name':fields.char('Description',size=64),  
-        'reviewer_id':fields.many2one('hr.employee','Employee',readonly=True),
-        'date_from':fields.date('Date From',  required=True,select=True),
-        'date_to':fields.date('Date To',required=True,select=True),
-        'state':fields.selection([('new','New'),('saved','Saved'),('done','Confirmed')],'State',readonly=True),
-        'performance_id':fields.one2many('hr.performance.line','performance_id','Performance'),
-        'user_id' : fields.many2one('res.users', 'User', readonly=True)
+    _name = "hr.performance"
+    _description = "Employee Performance"
+    _columns = {
+        'name': fields.char('Description', size=64),
+        'reviewer_id': fields.many2one('hr.employee', 'Employee', readonly=True),
+        'date_from': fields.date('Date From', required=True, select=True),
+        'date_to': fields.date('Date To', required=True, select=True),
+        'state': fields.selection([('new', 'New'), ('saved', 'Saved'), ('done', 'Confirmed')], 'State', readonly=True),
+        'performance_id': fields.one2many('hr.performance.line', 'performance_id', 'Performance'),
+        'user_id': fields.many2one('res.users', 'User', readonly=True)
     }
 
-    _defaults={
-      'reviewer_id': _employee_get,
-      'state': lambda *a : 'new',
-      'user_id': lambda obj, cr, uid, context: uid,
+    _defaults = {
+        'reviewer_id': _employee_get,
+        'state': lambda *a: 'new',
+        'user_id': lambda obj, cr, uid, context: uid,
     }
     _constraints = [
-        (_check_date, 'You can not have 2 Review that overlaps !', ['date_from','date_to']),
-    ] 
+        (_check_date, 'You can not have 2 Review that overlaps!',
+         ['date_from', 'date_to']),
+    ]
 hr_performance()
 
+
 class hr_performance_line(osv.osv):
-    
+
     def _get_total(self, cr, uid, ids, name, arg, context={}):
-     res = {}
-     for self_obj in self.browse(cr,uid,ids):
-         total=0
-         for re_po in self_obj.attribute_line:
-             total+=re_po.obtained_marks
-         res[self_obj.id]=total
-     return res   
-    
+        res = {}
+        for self_obj in self.browse(cr, uid, ids):
+            total = 0
+            for re_po in self_obj.attribute_line:
+                total += re_po.obtained_marks
+            res[self_obj.id] = total
+        return res
+
     def _get_performance(self, cr, uid, ids, name, arg, context={}):
         res = {}
-        for self_obj in self.browse(cr,uid,ids):
-             total_obtained=0
-             total_marks=0
-             for re_po in self_obj.attribute_line:
-                 total_obtained+=re_po.obtained_marks
-                 total_marks+=re_po.total_marks
-             if total_marks > 0:
-                 res[self_obj.id]=(total_obtained*100)/(total_marks)
-             else:  
-                 res[self_obj.id]=0
+        for self_obj in self.browse(cr, uid, ids):
+            total_obtained = 0
+            total_marks = 0
+            for re_po in self_obj.attribute_line:
+                total_obtained += re_po.obtained_marks
+                total_marks += re_po.total_marks
+            if total_marks > 0:
+                res[self_obj.id] = (total_obtained * 100) / (total_marks)
+            else:
+                res[self_obj.id] = 0
         return res
-    
-    _name="hr.performance.line"
-    _description="Performance Review Points"
-    _columns={
-        'name':fields.char('Description',size=64),  
-        'employee_id':fields.many2one('hr.employee','Employee',readonly=True,required=True),
-        'attribute_line':fields.one2many('attribute.line','performance_line_id','Attributes'),
-        'performance_id':fields.many2one('hr.performance','Review Point'),
-        'total':fields.function(_get_total,method=True,string='Total'),
-        'performance':fields.function(_get_performance,method=True,string='Performance in (%)'),
-    } 
+
+    _name = "hr.performance.line"
+    _description = "Performance Review Points"
+    _columns = {
+        'name': fields.char('Description', size=64),
+        'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True, required=True),
+        'attribute_line': fields.one2many('attribute.line', 'performance_line_id', 'Attributes'),
+        'performance_id': fields.many2one('hr.performance', 'Review Point'),
+        'total': fields.function(_get_total,  method=True, string='Total'),
+        'performance': fields.function(_get_performance,  method=True, string='Performance in (%)'),
+    }
 hr_performance_line()
 
+
 class hr_performance_line_attribute(osv.osv):
-    _name="hr.performance.line.attribute"
-    _description="Review Attributes"
-    _columns={
-        'name':fields.char('Attribute Name', size=1024, select=True, required=True),
-        'note':fields.text('Description'),
-        'total_point':fields.integer('Total Point',required=True)
+    _name = "hr.performance.line.attribute"
+    _description = "Review Attributes"
+    _columns = {
+        'name': fields.char('Attribute Name', size=1024, select=True, required=True),
+        'note': fields.text('Description'),
+        'total_point': fields.integer('Total Point', required=True)
     }
     _sql_constraints = [
-        ('uniq_name', 'unique (name)', 'The name of the Attribute must be unique !')
+        ('uniq_name', 'unique (name)',
+         'The name of the Attribute must be unique!')
     ]
-hr_performance_line_attribute() 
-
-class attribute_line(osv.osv):    
-    def change_obtain_marks(self,cr,uid,ids,tot_mark,obtain_mark):
+hr_performance_line_attribute()
+
+
+class attribute_line(osv.osv):
+
+    def change_obtain_marks(self, cr, uid, ids, tot_mark, obtain_mark):
         if obtain_mark > tot_mark or obtain_mark < 0:
-            raise osv.except_osv('Validation Error !','Obtained Marks Should be from  0 to '+ str(int(tot_mark)) +'')
+            raise osv.except_osv(
+                'Validation Error !', 'Obtained Marks Should be from 0 to ' + str(int(tot_mark)) + '')
         return {}
-            
+
     def write(self, cr, uid, ids, vals, context=None):
-        for self_obj in self.browse(cr,uid,ids):
-          if vals.__contains__('obtained_marks'):  
-            if vals['obtained_marks'] > self_obj.total_marks or vals['obtained_marks'] < 0:
-                raise osv.except_osv('Validation Error !','Obtained Marks Should be from  0 to '+ str(int(self_obj.total_marks)) +'')
-            return super(attribute_line, self).write(cr, uid, ids, vals, context=context)
-        
-    _name="attribute.line"
-    _description="Attributes Lines"
-    _columns={
-        'name':fields.char('Description',size=64),  
-        'attribute_id':fields.many2one('hr.performance.line.attribute','Attribute',readonly=True,required=True),
-        'total_marks':fields.float('Total Marks',digits=(4,2),readonly=True),
-        'obtained_marks':fields.float('Obtained Marks',digits=(4,2),required=True),
-        'description':fields.text('Description'),
-        'performance_line_id':fields.many2one('hr.performance.line','Performance Line',readonly=True),
+        for self_obj in self.browse(cr, uid, ids):
+            if vals.__contains__('obtained_marks'):
+                if vals['obtained_marks'] > self_obj.total_marks or vals['obtained_marks'] < 0:
+                    raise osv.except_osv(
+                        'Validation Error !', 'Obtained Marks Should be from  0 to ' + str(int(self_obj.total_marks)) + '')
+                return super(attribute_line, self).write(cr, uid, ids, vals, context=context)
+
+    _name = "attribute.line"
+    _description = "Attributes Lines"
+    _columns = {
+        'name': fields.char('Description',  size=64),
+        'attribute_id': fields.many2one('hr.performance.line.attribute', 'Attribute', readonly=True, required=True),
+        'total_marks': fields.float('Total Marks', digits=(4, 2), readonly=True),
+        'obtained_marks': fields.float('Obtained Marks', digits=(4, 2), required=True),
+        'description': fields.text('Description'),
+        'performance_line_id': fields.many2one('hr.performance.line', 'Performance Line', readonly=True),
     }
-attribute_line()  
-
-
-
-       
\ No newline at end of file
+attribute_line()

=== modified file 'hr_performance/report/__init__.py'
--- hr_performance/report/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_performance/report/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,7 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import hr_performance_report
\ No newline at end of file
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import hr_performance_report
+# EOF

=== modified file 'hr_performance/report/hr_performance_report.py'
--- hr_performance/report/hr_performance_report.py	2009-10-15 11:25:40 +0000
+++ hr_performance/report/hr_performance_report.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,22 +15,21 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+import time
 from report import report_sxw
-import time
+
+
 class performance_report(report_sxw.rml_parse):
+
     def __init__(self, cr, uid, name, context):
         super(performance_report, self).__init__(cr, uid, name, context)
-        self.localcontext.update({
-            'time': time,
-        })
-    
-report_sxw.report_sxw(
-        'report.hr_performance.report', 
-        'hr.performance', 
-        'addons/hr_performance/report/performance.rml', 
-        parser=performance_report,
-        header=False
-)
\ No newline at end of file
+        self.localcontext.update({'time': time})
+
+report_sxw.report_sxw('report.hr_performance.report',
+                      'hr.performance',
+                      'addons/hr_performance/report/performance.rml',
+                      parser=performance_report,
+                      header=False)

=== modified file 'hr_planned_leaves/__init__.py'
--- hr_planned_leaves/__init__.py	2010-07-28 10:20:50 +0000
+++ hr_planned_leaves/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,10 +17,9 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import report
 import wizard
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_planned_leaves/__openerp__.py'
--- hr_planned_leaves/__openerp__.py	2010-07-28 10:20:50 +0000
+++ hr_planned_leaves/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,17 +17,17 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 {
-    "name" : "Groupe S HR self Report",
-    "version" : "1.0",
-    "author" : "OpenERP / Groupe S",
-    "category" : "Generic Modules/Groupe S",
-    "website" : "http://www.openerp.com";,
+    "name": "Groupe S HR self Report",
+    "version": "1.0",
+    "author": "OpenERP / Groupe S",
+    "category": "Generic Modules/Groupe S",
+    "website": "http://www.openerp.com";,
     "description": """Extension of generic HR module for Groupe S needs.""",
     'depends': ['hr_holidays'],
-    'update_xml':['wizard/hr_planned_leaves_wizard_view.xml','hr_planned_leaves_report.xml'],
+    'update_xml': ['wizard/hr_planned_leaves_wizard_view.xml', 'hr_planned_leaves_report.xml'],
     'data': [],
     'demo': [],
     'test': [],

=== modified file 'hr_planned_leaves/report/__init__.py'
--- hr_planned_leaves/report/__init__.py	2010-07-28 10:20:50 +0000
+++ hr_planned_leaves/report/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,8 +17,7 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import hr_planned_leaves
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_planned_leaves/report/hr_planned_leaves.py'
--- hr_planned_leaves/report/hr_planned_leaves.py	2010-07-28 10:20:50 +0000
+++ hr_planned_leaves/report/hr_planned_leaves.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
@@ -18,7 +18,7 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import pooler
 from report.interface import report_rml
@@ -30,30 +30,34 @@
 from report.interface import toxml
 from tools.translate import _
 
+
 class hrself_planned_leaves(report_rml):
 
     def get_month_name(self, cr, uid, month):
-        _months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May"), 6:_("June"), 7:_("July"), 8:_("August"), 9:_("September"), 10:_("October"), 11:_("November"), 12:_("December")}
+        _months = {1: _(
+            "January"), 2: _("February"), 3: _("March"), 4: _("April"), 5: _("May"), 6: _("June"),
+            7: _("July"), 8: _("August"), 9: _("September"), 10: _("October"), 11: _("November"), 12: _("December")}
         return _months[month]
 
-    def last_day_of_month(self,date):
+    def last_day_of_month(self, date):
         if date.month == 12:
             return date.replace(day=31)
-        return date.replace(month=date.month+1, day=1) - datetime.timedelta(days=1)
+        return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)
 
-    def date_range(self,start, end):
-        r = (end+datetime.timedelta(days=1)-start).days
-        return [start+datetime.timedelta(days=i) for i in range(r)]
+    def date_range(self, start, end):
+        r = (end + datetime.timedelta(days=1) - start).days
+        return [start + datetime.timedelta(days=i) for i in range(r)]
 
     def create(self, cr, uid, ids, datas, context):
         emp_obj = pooler.get_pool(cr.dbname).get('hr.employee')
         holidays_obj = pooler.get_pool(cr.dbname).get('hr.holidays')
-        holidays_status_obj = pooler.get_pool(cr.dbname).get('hr.holidays.status')
+        holidays_status_obj = pooler.get_pool(
+            cr.dbname).get('hr.holidays.status')
         user_obj = pooler.get_pool(cr.dbname).get('res.users')
         browse_user = user_obj.browse(cr, uid, [uid], context)[0]
-        user=browse_user.name
-        company=browse_user.company_id.name
-        rml="""
+        user = browse_user.name
+        company = browse_user.company_id.name
+        rml = """
         <document filename="Planned Leaves.pdf">
             <template pageSize="29.7cm,21cm" leftMargin="2.0cm" rightMargin="2.0cm" topMargin="2.0cm" bottomMargin="2.0cm" title="Planned Leaves" allowSplitting="20">
                 <pageTemplate id="first">
@@ -61,20 +65,20 @@
                         <header>
                             <pageGraphics>
                                 <setFont name="Helvetica-Bold" size="9"/>
-                                <drawString x="1.0cm" y="20.1cm">"""+tools.ustr(company)+"""</drawString>
+                                <drawString x="1.0cm" y="20.1cm">""" + tools.ustr(company) + """</drawString>
                                 <drawRightString x="28.7cm" y="20.1cm">Planned Leaves</drawRightString>
                                 """
-        holidays_status_ids=holidays_status_obj.search(cr, uid, [])
-        x=10
-        for holidays_status in holidays_status_obj.browse(cr,uid,holidays_status_ids):
-            rml+="""<place x="%smm" y="-3.20cm"  width="100.0cm" height="5cm">
+        holidays_status_ids = holidays_status_obj.search(cr, uid, [])
+        x = 10
+        for holidays_status in holidays_status_obj.browse(cr, uid, holidays_status_ids):
+            rml += """<place x="%smm" y="-3.20cm"  width="100.0cm" height="5cm">
             <illustration x="%smm" y="-3.00cm" ><fill color="%s"/><rect x="0.0cm" y="-0.38cm" width="%smm" height="0.4cm" fill="yes" stroke="no"/></illustration>
-            <para style="status_right"><font color="white">"""%(str(x),str(x),tools.ustr(holidays_status.color_name),len(holidays_status.name)*2)+tools.ustr(holidays_status.name)+"""</font></para></place>"""
-            x+=len(holidays_status.name)*2.1
-        rml+="""
+            <para style="status_right"><font color="white">""" % (str(x), str(x), tools.ustr(holidays_status.color_name), len(holidays_status.name) * 2) + tools.ustr(holidays_status.name) + """</font></para></place>"""
+            x += len(holidays_status.name) * 2.1
+        rml += """
                                 <setFont name="Helvetica" size="9"/>
-                                <drawString x="1.0cm" y="1cm">"""+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+"""</drawString>
-                                <drawString x="14.5cm" y="1cm">"""+tools.ustr(user)+"""</drawString>
+                                <drawString x="1.0cm" y="1cm">""" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + """</drawString>
+                                <drawString x="14.5cm" y="1cm">""" + tools.ustr(user) + """</drawString>
                                 <drawString x="27.7cm" y="1cm">Page <pageNumber/></drawString>
                                 <lineMode width="0.7"/>
                                 <lines>1cm 19.7cm 28.7cm 19.7cm</lines>
@@ -111,111 +115,135 @@
                 <paraStyle name="days" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
                 <paraStyle name="month_and_year" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
             </stylesheet>
-            <story><para style="blank_space">From : """+ datas['form']['date_from'] +""" To : """+ datas['form']['date_to'] +"""</para>"""
-        date_from=time.strptime(datas['form']['date_from'],"%Y-%m-%d")
-        date_to=time.strptime(datas['form']['date_to'],"%Y-%m-%d")
-        first_date = datetime.date(date_from.tm_year, date_from.tm_mon, date_from.tm_mday)
-        last_date = datetime.date(date_to.tm_year, date_to.tm_mon, date_to.tm_mday)
+            <story><para style="blank_space">From : """ + datas['form']['date_from'] + """ To : """ + datas['form']['date_to'] + """</para>"""
+        date_from = time.strptime(datas['form']['date_from'], "%Y-%m-%d")
+        date_to = time.strptime(datas['form']['date_to'], "%Y-%m-%d")
+        first_date = datetime.date(
+            date_from.tm_year, date_from.tm_mon, date_from.tm_mday)
+        last_date = datetime.date(
+            date_to.tm_year, date_to.tm_mon, date_to.tm_mday)
         dateList = self.date_range(first_date, last_date)
-        total_years=(date_to.tm_year-date_from.tm_year)+1
-        years=[]
-        years = [(date_from.tm_year+year) for year in range(0,total_years) if date_from.tm_year+year not in years]
-        final_datas=[]
+        total_years = (date_to.tm_year - date_from.tm_year) + 1
+        years = []
+        years = [(date_from.tm_year + year)
+                 for year in range(0, total_years) if date_from.tm_year + year not in years]
+        final_datas = []
         for year in years:
             for dt in dateList:
-                if dt.year==year and {dt.year:{dt.month:[]}} not in final_datas:
-                    final_datas.append({dt.year:{dt.month:[]}})
+                if dt.year == year and {dt.year: {dt.month: []}} not in final_datas:
+                    final_datas.append({dt.year: {dt.month: []}})
         for data in final_datas:
             for dt in dateList:
-                if data.get(dt.year,False) and data[dt.year].keys()[0]==dt.month:
+                if data.get(dt.year, False) and data[dt.year].keys()[0] == dt.month:
                     data[dt.year][dt.month].append(dt.day)
 
         for year in years:
             for data in final_datas:
-                tmp_total=3.5
-                tmp=27.0
-                if data.keys()[0]==year:
-                    total_days=len(data[year][data[year].keys()[0]])
-                    tmp_total+=0.7*total_days
-                    Widhts="3.5cm%s"%(',0.7cm'*total_days)
-                    _cols_Widhts="%scm%s"%(str(3.5+(tmp-tmp_total)),',0.7cm'*total_days)
-                    rml+="""<blockTable colWidths=" """ +tools.ustr(_cols_Widhts) + """ " style="month" repeatRows="1"><tr>"""
-                    fdate=tools.ustr(year)+'-'+tools.ustr(data[year].keys()[0])+'-'+tools.ustr(data[year][data[year].keys()[0]][0])
-                    ldate=tools.ustr(year)+'-'+tools.ustr(data[year].keys()[0])+'-'+tools.ustr(data[year][data[year].keys()[0]][-1])
-                    days=[0,]
+                tmp_total = 3.5
+                tmp = 27.0
+                if data.keys()[0] == year:
+                    total_days = len(data[year][data[year].keys()[0]])
+                    tmp_total += 0.7 * total_days
+                    Widhts = "3.5cm%s" % (',0.7cm' * total_days)
+                    _cols_Widhts = "%scm%s" % (
+                        str(3.5 + (tmp - tmp_total)), ',0.7cm' * total_days)
+                    rml += """<blockTable colWidths=" """ + \
+                        tools.ustr(_cols_Widhts) + \
+                                   """ " style="month" repeatRows="1"><tr>"""
+                    fdate = tools.ustr(year) + '-' + tools.ustr(
+                        data[year].keys()[0]) + '-' + tools.ustr(data[year][data[year].keys()[0]][0])
+                    ldate = tools.ustr(year) + '-' + tools.ustr(
+                        data[year].keys()[0]) + '-' + tools.ustr(data[year][data[year].keys()[0]][-1])
+                    days = [0, ]
                     for day in data[year][data[year].keys()[0]]:
                         days.append(day)
                     for day in days:
-                        if day==0:
-                           rml+="""<td><para style="month_and_year">"""+ tools.ustr(self.get_month_name(cr, uid, data[year].keys()[0]))+""" - """+tools.ustr(year)+"""</para></td>"""
+                        if day == 0:
+                            rml += """<td><para style="month_and_year">""" + \
+                                tools.ustr(self.get_month_name(cr, uid, data[year].keys()[0])) + """ - """ + tools.ustr(
+                                    year) + """</para></td>"""
                         else:
-                           rml+="""<td><para style="days">"""+tools.ustr(day)+"""</para></td>"""
-                    rml+="""</tr>"""
-                    for emp in emp_obj.browse(cr,uid,datas['form']['employee_ids']):
-                        rml+="""<tr>"""
-                        from_to_lst=[]
-                        colors_dict={}
-                        holidays_ids=holidays_obj.search(cr, uid, ['&', ('employee_id', '=', emp.id), \
-                                                                   '|', '&', ('date_from', '<=', ldate), ('date_to', '>=', fdate), \
-                                                                   '&', ('date_from', '>=', fdate), ('date_to', '<=', ldate)])
+                            rml += """<td><para style="days">""" + \
+                                tools.ustr(day) + """</para></td>"""
+                    rml += """</tr>"""
+                    for emp in emp_obj.browse(cr, uid, datas['form']['employee_ids']):
+                        rml += """<tr>"""
+                        from_to_lst = []
+                        colors_dict = {}
+                        holidays_ids = holidays_obj.search(
+                            cr, uid, ['&', ('employee_id', '=', emp.id),
+                                      '|', '&', ('date_from', '<=', ldate), (
+                                          'date_to', '>=', fdate),
+                                      '&', ('date_from', '>=', fdate), ('date_to', '<=', ldate)])
 
                         for day in days:
-                            if day==0:
-                               rml+="""<td><para style="employee_name">"""+ tools.ustr(emp.resource_id.name) +"""</para></td>"""
+                            if day == 0:
+                                rml += """<td><para style="employee_name">""" + \
+                                    tools.ustr(
+                                        emp.resource_id.name) + """</para></td>"""
                             else:
-                               if holidays_ids:
-                                   for holiday in holidays_obj.browse(cr,uid,holidays_ids):
-                                       if holiday.date_from and holiday.date_to:
-                                           holiday_date_from=time.strptime(holiday.date_from,"%Y-%m-%d %H:%M:%S")
-                                           holiday_date_to=time.strptime(holiday.date_to,"%Y-%m-%d %H:%M:%S")
-                                           final_date_from = datetime.date(holiday_date_from.tm_year, holiday_date_from.tm_mon, holiday_date_from.tm_mday)
-                                           final_date_to = datetime.date(holiday_date_to.tm_year, holiday_date_to.tm_mon, holiday_date_to.tm_mday)
-                                           if data[year].keys()[0]>final_date_from.month:
-                                               final_date_from=(self.last_day_of_month(final_date_from)+datetime.timedelta(days=1))
-                                           elif final_date_from.month<final_date_to.month:
-                                               final_date_to=(self.last_day_of_month(final_date_to)-datetime.timedelta(days=1))
-                                           if (final_date_from.day,final_date_to.day) not in from_to_lst:
-                                               colors_dict.update({final_date_from.day:str(holiday.holiday_status_id.color_name),final_date_to.day:str(holiday.holiday_status_id.color_name)})
-                                               from_to_lst.append((final_date_from.day,final_date_to.day))
-                                   leave_days=[]
-                                   for from_to in from_to_lst:
-                                       leave_days.append(from_to[0])
-                                       for j in range(1,(from_to[1]-from_to[0])):
-                                           colors_dict.update({from_to[0]+j:colors_dict[from_to[0]]})
-                                           leave_days.append(from_to[0]+j)
-                                       leave_days.append(from_to[1])
-                                   if day in leave_days:
-                                       rml+="""
+                                if holidays_ids:
+                                    for holiday in holidays_obj.browse(cr, uid, holidays_ids):
+                                        if holiday.date_from and holiday.date_to:
+                                            holiday_date_from = time.strptime(
+                                                holiday.date_from, "%Y-%m-%d %H:%M:%S")
+                                            holiday_date_to = time.strptime(
+                                                holiday.date_to, "%Y-%m-%d %H:%M:%S")
+                                            final_date_from = datetime.date(
+                                                holiday_date_from.tm_year, holiday_date_from.tm_mon, holiday_date_from.tm_mday)
+                                            final_date_to = datetime.date(
+                                                holiday_date_to.tm_year, holiday_date_to.tm_mon, holiday_date_to.tm_mday)
+                                            if data[year].keys()[0] > final_date_from.month:
+                                                final_date_from = (self.last_day_of_month(
+                                                    final_date_from) + datetime.timedelta(days=1))
+                                            elif final_date_from.month < final_date_to.month:
+                                                final_date_to = (self.last_day_of_month(
+                                                    final_date_to) - datetime.timedelta(days=1))
+                                            if (final_date_from.day, final_date_to.day) not in from_to_lst:
+                                                colors_dict.update(
+                                                    {final_date_from.day: str(holiday.holiday_status_id.color_name), final_date_to.day: str(holiday.holiday_status_id.color_name)})
+                                                from_to_lst.append(
+                                                    (final_date_from.day, final_date_to.day))
+                                    leave_days = []
+                                    for from_to in from_to_lst:
+                                        leave_days.append(from_to[0])
+                                        for j in range(1, (from_to[1] - from_to[0])):
+                                            colors_dict.update(
+                                                {from_to[0] + j: colors_dict[from_to[0]]})
+                                            leave_days.append(from_to[0] + j)
+                                        leave_days.append(from_to[1])
+                                    if day in leave_days:
+                                        rml += """
                                        <td>
                                            <illustration>
                                                <fill color="%s"/>
                                                <rect x="-0.33cm" y="-0.50cm" width="0.7 cm" height="0.6cm" fill="yes" stroke="no"/>
                                            </illustration>
-                                       </td>"""%(tools.ustr(colors_dict[day]))
-                                   else:
-                                       rml+="""
+                                       </td>""" % (tools.ustr(colors_dict[day]))
+                                    else:
+                                        rml += """
                                        <td>
                                            <illustration>
                                                <setFont name="Times-Roman" size="20"/>
                                                <drawString x="-0.20cm" y="-0.43cm">#</drawString>
                                            </illustration>
                                        </td>"""
-                               else:
-                                   rml+="""
+                                else:
+                                    rml += """
                                    <td>
                                        <illustration>
                                            <setFont name="Times-Roman" size="20"/>
                                            <drawString x="-0.20cm" y="-0.43cm">#</drawString>
                                        </illustration>
                                    </td>"""
-                        rml+="""</tr>"""
-                    rml+="""</blockTable><para style="blank_space"><font></font></para>"""
-        rml+="""</story></document>"""
+                        rml += """</tr>"""
+                    rml += """</blockTable><para style="blank_space"><font></font></para>"""
+        rml += """</story></document>"""
         report_type = datas.get('report_type', 'pdf')
         create_doc = self.generators[report_type]
         pdf = create_doc(rml, title=self.title)
         return (pdf, report_type)
 
-hrself_planned_leaves('report.hrself.planned.leaves', 'hr.holidays','','')
+hrself_planned_leaves('report.hrself.planned.leaves', 'hr.holidays', '', '')
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_planned_leaves/wizard/__init__.py'
--- hr_planned_leaves/wizard/__init__.py	2010-07-28 10:20:50 +0000
+++ hr_planned_leaves/wizard/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -17,8 +17,7 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 
 import hr_planned_leaves_wizard
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_planned_leaves/wizard/hr_planned_leaves_wizard.py'
--- hr_planned_leaves/wizard/hr_planned_leaves_wizard.py	2010-07-28 10:20:50 +0000
+++ hr_planned_leaves/wizard/hr_planned_leaves_wizard.py	2013-09-22 13:57:11 +0000
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-##############################################################################
+#
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
@@ -18,13 +18,14 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-##############################################################################
+#
 import time
 import datetime
 import calendar
 from osv import osv, fields
 from tools.translate import _
 
+
 class hrself_holidays_summary_dept(osv.osv_memory):
     _name = 'hrself.holidays.summary.dept'
     _description = 'HR Holidays Summary Report By Department'
@@ -33,51 +34,54 @@
         'date_to': fields.date('To', required=True),
         'depts': fields.many2many('hr.department', 'summary_dept_rel', 'sum_id', 'dept_id', 'Department(s)'),
         'employee_ids': fields.many2many('hr.employee', 'summary_dept_emp_rel', 'sum_id', 'emp_id', 'Employee(s)'),
-#        'holiday_type': fields.selection([('Validated','Validated'),('Confirmed','Confirmed'),('both','Both Validated and Confirmed')], 'Holiday Type', required=True),
-        'report_type': fields.selection([('pdf','PDF'),('excel','Excel')], 'Report Type', required=True),
-        }
+        #        'holiday_type': fields.selection([('Validated','Validated'),('Confirmed','Confirmed'),('both','Both Validated and Confirmed')], 'Holiday Type', required=True),
+        'report_type': fields.selection([('pdf', 'PDF'), ('excel', 'Excel')], 'Report Type', required=True),
+    }
 
     def _get_depts(self, cursor, user, context={}):
-        dept_id=self.pool.get('res.users').browse(cursor,user,[user],context={})[0].context_department_id.id
-        return self.pool.get('hr.department').search(cursor, user, [('id', 'in' , [dept_id])])
+        dept_id = self.pool.get('res.users').browse(
+            cursor, user, [user], context={})[0].context_department_id.id
+        return self.pool.get('hr.department').search(cursor, user, [('id', 'in', [dept_id])])
 
     def _get_employee(self, cursor, user, context={}):
-        dept_id=self.pool.get('res.users').browse(cursor,user,[user],context={})[0].context_department_id.id
+        dept_id = self.pool.get('res.users').browse(
+            cursor, user, [user], context={})[0].context_department_id.id
         return self.pool.get('hr.employee').search(cursor, user, [('department_id', 'in', [dept_id])])
 
     def _from_date(self, cursor, user, context={}):
-        return datetime.date.today().strftime('%Y-%m-01');
+        return datetime.date.today().strftime('%Y-%m-01')
 
     def _to_date(self, cursor, user, context={}):
-        today_date = datetime.date.today();
-        return datetime.datetime(today_date.year, today_date.month, calendar.mdays[today_date.month]).strftime('%Y-%m-%d');
+        today_date = datetime.date.today()
+        return datetime.datetime(today_date.year, today_date.month, calendar.mdays[today_date.month]).strftime('%Y-%m-%d')
 
     _defaults = {
-         'date_from': _from_date,
-         'date_to':_to_date,
-#         'holiday_type': 'Validated',
-         'depts': _get_depts,
-         'employee_ids': _get_employee,
-         'report_type':'pdf'
-        }
+        'date_from': _from_date,
+        'date_to': _to_date,
+        #         'holiday_type': 'Validated',
+        'depts': _get_depts,
+        'employee_ids': _get_employee,
+        'report_type': 'pdf'
+    }
 
     def print_report(self, cr, uid, ids, context=None):
         data = self.read(cr, uid, ids, [])[0]
         if not data['depts']:
-            raise osv.except_osv(_('Error'), _('You have to select at least 1 Department. And try again'))
+            raise osv.except_osv(
+                _('Error'), _('You have to select at least 1 Department. And try again'))
         datas = {
-             'ids': [],
-             'model': 'ir.ui.menu',
-             'form': data
-                 }
+            'ids': [],
+            'model': 'ir.ui.menu',
+            'form': data
+        }
         return {
             'type': 'ir.actions.report.xml',
-#            'report_name': 'planned.leaves',
+            #            'report_name': 'planned.leaves',
             'report_name': 'hrself.planned.leaves',
             'datas': datas,
             'nodestroy': True,
-            }
+        }
 
 hrself_holidays_summary_dept()
 
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'hr_skill/__init__.py'
--- hr_skill/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_skill/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,12 +15,11 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import hr_skill
-import report
-import wizard
-import hrskill
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import hr_skill
+from . import report
+from . import wizard
+from . import hrskill
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_skill/__terp__.py' => 'hr_skill/__openerp__.py'
--- hr_skill/__terp__.py	2009-10-15 11:25:40 +0000
+++ hr_skill/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,26 +15,38 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 {
-    "name" : "Skill Management",
-    "version" : "0.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
+    "name": "Skill Management",
+    "version": "0.1",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
     "website": "http://www.openerp.com";,
-    "depends" : ["hr"],
+    "depends": ["hr"],
     "description": "Generic and powerfull skill management system. This module allows you to manage your company and employees skills, interviews, ...",
-#   "demo_xml" : ["hr_skill.weight.category.csv","hr_skill.weight.csv","hr_skill.skill.csv",\
-#               "hr_skill.profile.csv","hr_skill.position.csv","hr_skill.experience.csv",\
-#               "hr_skill.experience.category.csv","hr_skill.evaluation.category.csv"],
-#   "demo_xml" : ["hr_skill.evaluation.csv"],
-    "init_xml" : [],
-    "update_xml" : ['security/ir.model.access.csv','hr_skill_report.xml','hr_skill_view.xml','hrskill_view.xml','lang_wiz_view.xml',],
+    "demo_xml": [
+        "hr_skill.weight.category.csv",
+        "hr_skill.weight.csv",
+        "hr_skill.skill.csv",
+        "hr_skill.profile.csv",
+        "hr_skill.position.csv",
+        "hr_skill.experience.csv",
+        "hr_skill.experience.category.csv",
+        "hr_skill.evaluation.category.csv",
+        "hr_skill.evaluation.csv"
+    ],
+    "init_xml": [],
+    "update_xml": [
+        'security/ir.model.access.csv',
+        'hr_skill_report.xml',
+        'hr_skill_view.xml',
+        'hrskill_view.xml',
+        'lang_wiz_view.xml'
+    ],
     "active": False,
     "installable": True
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/hr_skill.py'
--- hr_skill/hr_skill.py	2010-03-24 16:55:59 +0000
+++ hr_skill/hr_skill.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 # ON peut choisir lors de la definititon
 # d'un skill de lui associer des skills
@@ -26,118 +26,117 @@
 
 from osv import osv, fields
 
+
 # Wheight Category
 # eg: years, in english, ..
 class hr_skill_weight_category(osv.osv):
-    _name ='hr_skill.weight.category'
+    _name = 'hr_skill.weight.category'
     _columns = {
         'name': fields.char('Name', size=64, required=True),
-        }
-
+    }
 hr_skill_weight_category()
 
 
 # weight
 # eg: 0 to 1, more than 5, good, bad
 class hr_skill_weight(osv.osv):
-    _name ='hr_skill.weight'
+    _name = 'hr_skill.weight'
     _columns = {
-        'name': fields.char('Name', size=64,required=True),
-        'value': fields.float('Numerical value', required=True), 
+        'name': fields.char('Name', size=64, required=True),
+        'value': fields.float('Numerical value', required=True),
         'category_id': fields.many2one('hr_skill.weight.category', 'Category', required=True, ondelete='cascade'),
-        }# hr_skill.category ne passe pas (cad creation des tables) la premiere fois (hr_skill_category bien)
-
+    }  # hr_skill.category ne passe pas (cad creation des tables) la premiere fois (hr_skill_category bien)
 hr_skill_weight()
 
 
 # Skill
-# eg : Spanish, OO programming (-> skill) 
-#      Langage, IT (->view)       
+# eg : Spanish, OO programming (-> skill)
+#      Langage, IT (->view)
 # Categories of weight
 class hr_skill_skill(osv.osv):
     _name = 'hr_skill.skill'
     _columns = {
-        'name': fields.char('Name', size=64,required=True), 
-        'active': fields.boolean('Active'), 
+        'name': fields.char('Name', size=64, required=True),
+        'active': fields.boolean('Active'),
         'weight': fields.float('Weight', required=True),
-        'weight_category_id': fields.many2one('hr_skill.weight.category','Weight Category'),
+        'weight_category_id': fields.many2one('hr_skill.weight.category', 'Weight Category'),
         'parent_id': fields.many2one('hr_skill.skill', 'Parent', ondelete='cascade'),
         'child_ids': fields.one2many('hr_skill.skill', 'parent_id', 'Children'),
-        'view': fields.selection([('view','View'), ('skill','Skill')], 'Skill', required=True),
+        'view': fields.selection([('view', 'View'), ('skill', 'Skill')], 'Skill', required=True),
     }
     _defaults = {
-        'view': lambda self,cr,uid,context: 'view',
-        'weight': lambda self,cr,uid,context: 0,
-        'active': lambda self,cr,uid,context: 1
+        'view': lambda self, cr, uid, context: 'view',
+        'weight': lambda self, cr, uid, context: 0,
+        'active': lambda self, cr, uid, context: 1
     }
 hr_skill_skill()
 
 
-
 # Experience category
 # eg : a degree or a professional experience
 class hr_skill_experience_category(osv.osv):
-    _name ='hr_skill.experience.category'
+    _name = 'hr_skill.experience.category'
     _columns = {
-        'name': fields.char('Name', size=64,required=True),
+        'name': fields.char('Name', size=64, required=True),
     }
 hr_skill_experience_category()
 
 
 # Experience
-# eg : a specific former job position or studies  
-# each experience is associated with several couple skill - weight 
+# eg : a specific former job position or studies
+# each experience is associated with several couple skill - weight
 class hr_skill_experience(osv.osv):
-    _name ='hr_skill.experience'
+    _name = 'hr_skill.experience'
     _columns = {
-        'name': fields.char('Name', size=64,required=True),
-        'skill_ids': fields.one2many('hr_skill.experience.skill','experience_id','Skills'),
+        'name': fields.char('Name', size=64, required=True),
+        'skill_ids': fields.one2many('hr_skill.experience.skill', 'experience_id', 'Skills'),
         'sequence': fields.integer('Sequence'),
-        'category_id' : fields.many2one('hr_skill.experience.category', 'Category'),
+        'category_id': fields.many2one('hr_skill.experience.category', 'Category'),
     }
 hr_skill_experience()
 
 
 # Evaluation Category
 class hr_skill_evaluation_category(osv.osv):
-    _name ='hr_skill.evaluation.category'
+    _name = 'hr_skill.evaluation.category'
     _columns = {
-        'name': fields.char('Name', size=64,required=True),
+        'name': fields.char('Name', size=64, required=True),
     }
 hr_skill_evaluation_category()
 
+
 # Evaluation
 class hr_skill_evaluation(osv.osv):
-    _name ='hr_skill.evaluation'
+    _name = 'hr_skill.evaluation'
     _columns = {
-        'name': fields.char('Evaluation name', size=64,required=True),
-        'date': fields.date('Date',required=True),
-        'interviewer_name': fields.char('Evaluator', size=64,required=True),
-        'interviewee_name': fields.char('Evaluated People', size=64,required=True),
+        'name': fields.char('Evaluation name', size=64, required=True),
+        'date': fields.date('Date', required=True),
+        'interviewer_name': fields.char('Evaluator', size=64, required=True),
+        'interviewee_name': fields.char('Evaluated People', size=64, required=True),
         'employee_id': fields.many2one('hr.employee', 'Evaluated Employee'),
         'note': fields.text('Notes'),
         'reference': fields.char('Reference', size=64),
         'category_id': fields.many2one('hr_skill.evaluation.category', 'Category', change_default=True),
-        'experience_ids': fields.one2many('hr_skill.evaluation.experience','evaluation_id','Experience'),
-        'skill_ids': fields.one2many('hr_skill.evaluation.skill','evaluation_id','Skill'),
+        'experience_ids': fields.one2many('hr_skill.evaluation.experience', 'evaluation_id', 'Experience'),
+        'skill_ids': fields.one2many('hr_skill.evaluation.skill', 'evaluation_id', 'Skill'),
+    }
 
-    }
     def onchange_employee_id(self, cr, uid, ids, employee_id):
         if not employee_id:
             return {}
         empl = self.pool.get('hr.employee').browse(cr, uid, employee_id)
-        return {'value': {'interviewee_name':empl.name} }
-    
+        return {'value': {'interviewee_name': empl.name}}
 hr_skill_evaluation()
 
+
 # Profile
 # eg : management, web-dev.
 # each profile is associated with several couple skill - weight
 class hr_skill_profile(osv.osv):
-    _name ='hr_skill.profile'
+    _name = 'hr_skill.profile'
     _columns = {
         'name': fields.char('Name', size=64, required=True),
-        'skill_ids': fields.one2many('hr_skill.profile.skill','profile_id','Skills'),
+        'skill_ids': fields.one2many('hr_skill.profile.skill', 'profile_id', 'Skills'),
     }
 hr_skill_profile()
 
@@ -146,117 +145,112 @@
 # eg : Senior web-dev, junior logistician
 # a position is associated to one (or several) profile
 class hr_skill_position(osv.osv):
-    _name ='hr_skill.position'
+    _name = 'hr_skill.position'
     _columns = {
-        'name': fields.char('Name', size=64, required=True), 
-        'employee_id': fields.many2one('hr.employee', 'Assigned Employee'),# ?? pq un many2one ?
+        'name': fields.char('Name', size=64, required=True),
+        # ?? pq un many2one ?
+        'employee_id': fields.many2one('hr.employee', 'Assigned Employee'),
         'profile_ids': fields.one2many('hr_skill.position.profile', 'position_id', 'Profiles'),
-        'status': fields.selection([('open','Open'), ('assigned','Assigned'), ('unused','Unused')], 'Status'),
+        'status': fields.selection([('open', 'Open'), ('assigned', 'Assigned'), ('unused', 'Unused')], 'Status'),
     }
 hr_skill_position()
 
 
-
-# definitition des relations :
+# definition des relations :
 class hr_skill_position_profile(osv.osv):
-    _name ='hr_skill.position.profile'
+    _name = 'hr_skill.position.profile'
     _columns = {
         'name': fields.char('Name', size=64),
-        'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
-        'position_id': fields.many2one('hr_skill.position','Position', ondelete='cascade',required=True),
-        'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True) ,
+        'weight_id': fields.many2one('hr_skill.weight', 'Weight', required=True),
+        'position_id': fields.many2one('hr_skill.position', 'Position', ondelete='cascade', required=True),
+        'profile_id': fields.many2one('hr_skill.profile', 'Profile', ondelete='cascade', required=True),
     }
+
     def onchange_profile_id(self, cr, uid, ids, profile_id):
         if not profile_id:
             return {}
         prof = self.pool.get('hr_skill.profile').browse(cr, uid, profile_id)
-        return {'value': {'name':prof.name} }
+        return {'value': {'name': prof.name}}
 hr_skill_position_profile()
 
 
 class hr_skill_experience_skill(osv.osv):
-    _name ='hr_skill.experience.skill'
+    _name = 'hr_skill.experience.skill'
     _columns = {
         'name': fields.char('Name', size=64, required=True),
-        'weight_id': fields.many2one('hr_skill.weight','Weight', required=True),
-        'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade',required=True),
-        'experience_id': fields.many2one('hr_skill.experience','Experience', ondelete='cascade',required=True) ,
+        'weight_id': fields.many2one('hr_skill.weight', 'Weight', required=True),
+        'skill_id': fields.many2one('hr_skill.skill', 'Skill', ondelete='cascade', required=True),
+        'experience_id': fields.many2one('hr_skill.experience', 'Experience', ondelete='cascade', required=True),
     }
+
     def onchange_skill_id(self, cr, uid, ids, skill_id):
         if not skill_id:
             return {}
         sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
-        return {'value': {'name':sk.name} }
-    
+        return {'value': {'name': sk.name}}
 hr_skill_experience_skill()
 
 
-
 class hr_skill_profile_skill(osv.osv):
-    _name ='hr_skill.profile.skill'
+    _name = 'hr_skill.profile.skill'
     _columns = {
         'name': fields.char('Name', size=64),
-        'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
-        'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True),
-        'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade',required=True, domain=[('view','<>','view')]),
+        'weight_id': fields.many2one('hr_skill.weight', 'Weight', required=True),
+        'profile_id': fields.many2one('hr_skill.profile', 'Profile', ondelete='cascade', required=True),
+        'skill_id': fields.many2one('hr_skill.skill', 'Skill', ondelete='cascade', required=True, domain=[('view', '<>', 'view')]),
     }
-    
+
     def onchange_skill_id(self, cr, uid, ids, skill_id):
         if not skill_id:
             return {}
         sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
-        return {'value': {'name':sk.name} }
-    
+        return {'value': {'name': sk.name}}
 hr_skill_profile_skill()
 
 
-
 class hr_skill_position_profile(osv.osv):
-    _name ='hr_skill.position.profile'
+    _name = 'hr_skill.position.profile'
     _columns = {
         'name': fields.char('Name', size=64),
-        'weight_id': fields.many2one('hr_skill.weight','Weight',required=True, ondelete='cascade'),
-        'position_id': fields.many2one('hr_skill.position','Position', ondelete='cascade',required=True),
-        'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True),
+        'weight_id': fields.many2one('hr_skill.weight', 'Weight', required=True, ondelete='cascade'),
+        'position_id': fields.many2one('hr_skill.position', 'Position', ondelete='cascade', required=True),
+        'profile_id': fields.many2one('hr_skill.profile', 'Profile', ondelete='cascade', required=True),
     }
 hr_skill_profile_skill()
 
 
-
 class hr_skill_evaluation_experience(osv.osv):
-    _name ='hr_skill.evaluation.experience'
+    _name = 'hr_skill.evaluation.experience'
     _columns = {
-        'name': fields.char('Name', size=64,required=True),
-        'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
-        'evaluation_id': fields.many2one('hr_skill.evaluation','Evaluation', ondelete='cascade', required=True),
-        'experience_id': fields.many2one('hr_skill.experience','Experience', ondelete='cascade', required=True),
+        'name': fields.char('Name', size=64, required=True),
+        'weight_id': fields.many2one('hr_skill.weight', 'Weight', required=True),
+        'evaluation_id': fields.many2one('hr_skill.evaluation', 'Evaluation', ondelete='cascade', required=True),
+        'experience_id': fields.many2one('hr_skill.experience', 'Experience', ondelete='cascade', required=True),
     }
-    
-    def onchange_experience_id(self, cr, uid, ids, experience_id): 
+
+    def onchange_experience_id(self, cr, uid, ids, experience_id):
         if not experience_id:
             return {}
-        exp = self.pool.get('hr_skill.experience').browse(cr, uid, experience_id)
-        return {'value': {'name':exp.name} }
-
+        exp = self.pool.get('hr_skill.experience').browse(
+            cr, uid, experience_id)
+        return {'value': {'name': exp.name}}
 hr_skill_evaluation_experience()
 
 
-
 class hr_skill_evaluation_skill(osv.osv):
-    _name ='hr_skill.evaluation.skill'
+    _name = 'hr_skill.evaluation.skill'
     _columns = {
         'name': fields.char('Name', size=64),
-        'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
-        'evaluation_id': fields.many2one('hr_skill.evaluation','Evaluation', ondelete='cascade', required=True),
-        'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade', required=True),
+        'weight_id': fields.many2one('hr_skill.weight', 'Weight', required=True),
+        'evaluation_id': fields.many2one('hr_skill.evaluation', 'Evaluation', ondelete='cascade', required=True),
+        'skill_id': fields.many2one('hr_skill.skill', 'Skill', ondelete='cascade', required=True),
     }
-    def onchange_skill_id(self, cr, uid, ids, skill_id): 
+
+    def onchange_skill_id(self, cr, uid, ids, skill_id):
         if not skill_id:
             return {}
         sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
-        return {'value': {'name':sk.name} }
-
+        return {'value': {'name': sk.name}}
 hr_skill_evaluation_skill()
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/hrskill.py'
--- hr_skill/hrskill.py	2011-03-28 12:39:13 +0000
+++ hr_skill/hrskill.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,78 +15,79 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-from osv import fields,osv
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from osv import fields, osv
 
 
 def _currency_get(self, cr, uid, context={}):
-        obj = self.pool.get('res.currency')
-        ids = obj.search(cr, uid, [])
-        res = obj.read(cr, uid, ids, ['name'], context)
-        return [(r['name'],r['name']) for r in res]
+    obj = self.pool.get('res.currency')
+    ids = obj.search(cr, uid, [])
+    res = obj.read(cr, uid, ids, ['name'], context)
+    return [(r['name'], r['name']) for r in res]
+
 
 def _status_get(self, cr, uid, context={}):
-        obj = self.pool.get('employee.status')
-        ids = obj.search(cr, uid, [])
-        res = obj.read(cr, uid, ids, ['name'], context)
-        return [(r['name'],r['name']) for r in res]
+    obj = self.pool.get('employee.status')
+    ids = obj.search(cr, uid, [])
+    res = obj.read(cr, uid, ids, ['name'], context)
+    return [(r['name'], r['name']) for r in res]
+
 
 class hr_lang(osv.osv):
-    _description ='Languages'
+    _description = 'Languages'
     _name = 'hr.lang'
     _columns = {
-
-        'name':fields.char('Language',size=64),
-              }
+        'name': fields.char('Language', size=64),
+    }
 hr_lang()
 
+
 class emp_lang(osv.osv):
-    _description ='Languages'
+    _description = 'Languages'
     _name = 'emp.lang'
     _columns = {
-        'ii_id': fields.many2one('hr.employee','languages known'),
-        'name':fields.many2one('hr.lang','Language'),
+        'ii_id': fields.many2one('hr.employee', 'languages known'),
+        'name': fields.many2one('hr.lang', 'Language'),
         'read': fields.boolean('Read'),
         'write': fields.boolean('Write'),
         'speak': fields.boolean('Speak'),
-        }
+    }
 emp_lang()
 
+
 class hr_scale(osv.osv):
-    _description ='Pay Scales'
-    _name='hr.scale'
-
+    _description = 'Pay Scales'
+    _name = 'hr.scale'
     _columns = {
-         'code' : fields.char('Code', size=64,),
-         'name' : fields.char('Name', size=64),
-         'cur' : fields.selection(_currency_get, 'Currency', method=True),
-         'min_sal' : fields.integer('Minimum Salary'),
-         'max_sal' : fields.integer('Maximum Salary'),
-         'increase' : fields.integer('Step Increase'),
-
-                }
+        'code': fields.char('Code', size=64),
+        'name': fields.char('Name', size=64),
+        'cur': fields.selection(_currency_get, 'Currency', method=True),
+        'min_sal': fields.integer('Minimum Salary'),
+        'max_sal': fields.integer('Maximum Salary'),
+        'increase': fields.integer('Step Increase'),
+    }
 hr_scale()
 
+
 class hr_employee(osv.osv):
-    _description ='Employees'
-    _name='hr.employee'
-    _inherit='hr.employee'
+    _description = 'Employees'
+    _name = 'hr.employee'
+    _inherit = 'hr.employee'
     _columns = {
-         'lang_id':fields.one2many('emp.lang','ii_id','Languages Known'),
-         'leavedate' : fields.date('Leaved on'),
-         'status' : fields.selection(_status_get, 'Employee Status', method=True,),
-         'payscale':fields.many2one('hr.scale','Scale'),
-        }
+        'lang_id': fields.one2many('emp.lang', 'ii_id', 'Languages Known'),
+        'leavedate': fields.date('Leaved on'),
+        'status': fields.selection(_status_get, 'Employee Status', method=True),
+        'payscale': fields.many2one('hr.scale', 'Scale')
+    }
 hr_employee()
 
+
 class employee_status(osv.osv):
     _name = 'employee.status'
     _columns = {
-                'name' : fields.char('Status Name', size=128, required=True)
-               }
+        'name': fields.char('Status Name', size=128, required=True)
+    }
 employee_status()
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/report/__init__.py'
--- hr_skill/report/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_skill/report/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,11 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-
-import employeereport
-import skillreport
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import employeereport
+from . import skillreport
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/report/employeereport.py'
--- hr_skill/report/employeereport.py	2009-10-15 11:25:40 +0000
+++ hr_skill/report/employeereport.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import datetime
 import operator
 import pooler
@@ -26,32 +26,40 @@
 
 
 class employeereport(report_sxw.rml_parse):
-        def __init__(self, cr, uid, name, context):
-                super(employeereport, self).__init__(cr, uid, name, context)
-                self.localcontext.update({
-                    'time': time,
-                    'get_data' : self._getData,
-                    'get_duration' : self._getDuration,
-                    })
-        def _getData(self,start_date,end_date):
-                employee_ids = self.pool.get('hr.employee').search(self.cr,self.uid,[('started', '>=', start_date),('started', '<=', end_date)])
-                res = self.pool.get('hr.employee').browse(self.cr,self.uid,employee_ids)
-                return res
-
-        def _getDuration(self,eid):
-                    res1 = self.pool.get('hr.employee').read(self.cr,self.uid,eid,)
-                    sdate=datetime.datetime.strptime(res1['started'],'%Y-%m-%d')
-                    if res1['leavedate']:
-                        edate=datetime.datetime.strptime(res1['leavedate'],'%Y-%m-%d')
-                    else:
-                        edate=datetime.datetime.now()
-                    days=str(edate-sdate)
-                    days=int(days.split(" ",1)[0])
-                    months=days/30
-                    month,year=months%12,months/12
-                    res= str(year)+"."+str(month)+"years"
-                    return res
-
-report_sxw.report_sxw('report.datereport.print','hr.employee','addons/hr_skill/report/datereport.rml', parser=employeereport, header=True)
+
+    def __init__(self, cr, uid, name, context):
+        super(employeereport, self).__init__(cr, uid, name, context)
+        self.localcontext.update({
+            'time': time,
+            'get_data': self._getData,
+            'get_duration': self._getDuration,
+        })
+
+    def _getData(self, start_date, end_date):
+        employee_ids = self.pool.get('hr.employee').search(
+            self.cr, self.uid, [('started', '>=', start_date), ('started', '<=', end_date)])
+        res = self.pool.get('hr.employee').browse(
+            self.cr, self.uid, employee_ids)
+        return res
+
+    def _getDuration(self, eid):
+        res1 = self.pool.get('hr.employee').read(self.cr, self.uid, eid)
+        sdate = datetime.datetime.strptime(res1['started'], '%Y-%m-%d')
+        if res1['leavedate']:
+            edate = datetime.datetime.strptime(res1['leavedate'], '%Y-%m-%d')
+        else:
+            edate = datetime.datetime.now()
+        days = str(edate - sdate)
+        days = int(days.split(" ", 1)[0])
+        months = days / 30
+        month, year = months % 12, months / 12
+        res = str(year) + "." + str(month) + "years"
+        return res
+
+report_sxw.report_sxw('report.datereport.print',
+                      'hr.employee',
+                      'addons/hr_skill/report/datereport.rml',
+                      parser=employeereport,
+                      header=True)
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/report/langreport.py'
--- hr_skill/report/langreport.py	2009-10-15 11:25:40 +0000
+++ hr_skill/report/langreport.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import datetime
 import operator
 import pooler
@@ -25,88 +25,100 @@
 from report import report_sxw
 from array import array
 
+
 class langreport(report_sxw.rml_parse):
-        def __init__(self, cr, uid, name, context):
-                super(langreport, self).__init__(cr, uid, name, context)
-
-                self.localcontext.update({
-                    'time':time,
-                    'get_data' : self._getData,
-                    'get_lang':self._getLang,
-
-                     })
-        def _getLang(self,id):
-                lid=[]
-                lname=[]
-
-                lid.append(pooler.get_pool(self.cr.dbname).get('emp.lang').search(self.cr,self.uid,[('ii_id','=',id),]))
-                for i in range (0,len(lid)):
-                    lname.append(pooler.get_pool(self.cr.dbname).get('emp.lang').read(self.cr,self.uid,lid[i],))
-                res=lname[0]
-                return res
-
-        def _getData(self,form):
-
-            name=0
-            r=False
-            s=False
-            w=False
-            sort_id=[]
-            temp=[]
-            emp_id=[]
-            emp_name=[]
-            count= len(form['lang'])
-
-            if count==0:
-                self.cr.execute("select ii_id,name,read,write,speak from emp_lang" )
+
+    def __init__(self, cr, uid, name, context):
+            super(langreport, self).__init__(cr, uid, name, context)
+
+            self.localcontext.update({
+                'time': time,
+                'get_data': self._getData,
+                'get_lang': self._getLang,
+            })
+
+    def _getLang(self, id):
+            lid = []
+            lname = []
+
+            lid.append(pooler.get_pool(self.cr.dbname).get(
+                'emp.lang').search(self.cr, self.uid, [('ii_id', '=', id)]))
+            for i in range(0, len(lid)):
+                lname.append(pooler.get_pool(self.cr.dbname).get(
+                    'emp.lang').read(self.cr, self.uid, lid[i]))
+            res = lname[0]
+            return res
+
+    def _getData(self, form):
+
+        name = 0
+        r = False
+        s = False
+        w = False
+        sort_id = []
+        temp = []
+        emp_id = []
+        emp_name = []
+        count = len(form['lang'])
+
+        if count == 0:
+            self.cr.execute(
+                "select ii_id, name, read, write, speak from emp_lang")
+            temp.append(self.cr.fetchall())
+
+        else:
+            for i in range(0, count):
+                name = form['lang'][i][2]['name']
+                r = form['lang'][i][2]['read']
+                w = form['lang'][i][2]['write']
+                s = form['lang'][i][2]['speak']
+                whr = ""
+                whr = whr + "name = %d" % (name)
+                if r == 1:
+                    r = True
+                    whr = whr + " and read = %s" % r
+                else:
+                    r = False
+                if s == 1:
+                    s = True
+                    whr = whr + " and speak = %s" % s
+                else:
+                    s = False
+                if w == 1:
+                    w = True
+                    whr = whr + " and write = %s" % w
+                else:
+                    w = False
+                self.cr.execute(
+                    "select ii_id,name,read,write,speak from emp_lang where " + whr)
                 temp.append(self.cr.fetchall())
 
-            else:
-                for i in range(0,count):
-                    name=form['lang'][i][2]['name']
-                    r=form['lang'][i][2]['read']
-                    w=form['lang'][i][2]['write']
-                    s=form['lang'][i][2]['speak']
-                    whr= ""
-                    whr=whr + "name = %d"%(name)
-                    if  r==1:
-                        r=True
-                        whr=whr+" and read = %s"%r
-                    else:
-                        r=False
-                    if  s==1:
-                        s=True
-                        whr=whr+" and speak = %s"%s
-                    else:
-                        s=False
-                    if  w==1:
-                        w=True
-                        whr=whr+" and write = %s"%w
-                    else:
-                        w=False
-                    self.cr.execute("select ii_id,name,read,write,speak from emp_lang where " + whr)
-                    temp.append(self.cr.fetchall())
-
-         # This loop is for extracting employee ids
-            for i in range(0,len(temp)):
-               for j in range(0,len(temp[i])):
-                  emp_id.append(temp[i][j][0])
-
-           # This loop is for extracting Unique employee ids
-            if count==0:
-                sort_id=[]
-                for v in emp_id:
-                   if not v in sort_id: sort_id.append(v)
-            else:
-                sort_id.append(list(set([x for x in emp_id if emp_id.count(x)==count])))
-                temp=[]
-                temp=sort_id[0]
-                sort_id=[]
-                sort_id=temp
-            for i in sort_id:
-                emp_name.append(pooler.get_pool(self.cr.dbname).get('hr.employee').read(self.cr,self.uid,i,['name'],))
-            return emp_name
-
-report_sxw.report_sxw('report.langreport','hr.employee','addons/hr_skill/report/langreport.rml',parser=langreport,)
+        # This loop is for extracting employee ids
+        for i in range(0, len(temp)):
+            for j in range(0, len(temp[i])):
+                emp_id.append(temp[i][j][0])
+
+        # This loop is for extracting Unique employee ids
+        if count == 0:
+            sort_id = []
+            for v in emp_id:
+                if not v in sort_id:
+                    sort_id.append(v)
+        else:
+            sort_id.append(
+                list(set([x for x in emp_id if emp_id.count(x) == count])))
+            temp = []
+            temp = sort_id[0]
+            sort_id = []
+            sort_id = temp
+        for i in sort_id:
+            emp_name.append(pooler.get_pool(self.cr.dbname).get(
+                'hr.employee').read(self.cr, self.uid, i, ['name']))
+        return emp_name
+
+report_sxw.report_sxw('report.langreport',
+                      'hr.employee',
+                      'addons/hr_skill/report/langreport.rml',
+                      parser=langreport)
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/report/skillreport.py'
--- hr_skill/report/skillreport.py	2009-10-15 11:25:40 +0000
+++ hr_skill/report/skillreport.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,47 +15,55 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import datetime
 import operator
 import pooler
 import time
 from report import report_sxw
 
+
 class skillreport(report_sxw.rml_parse):
-        def __init__(self, cr, uid, name, context):
-                super(skillreport, self).__init__(cr, uid, name, context)
-                self.localcontext.update({
-                    'time' : time,
-                    'get_data' : self._getData,
-                    'get_skill':self._getskill,
-
-                     })
-        def _getskill(self,ids):
-            res=[]
-            t_ids=pooler.get_pool(self.cr.dbname).get('hr_skill.evaluation.skill').search(self.cr,self.uid,[('evaluation_id','=',ids)])
-            res1=pooler.get_pool(self.cr.dbname).get('hr_skill.evaluation.skill').browse(self.cr,self.uid,t_ids)
-            return res1
-
-        def _getData(self,form):
-                res=[]
-                eval_id=[]
-                emp_id=[]
-                final=[]
-                id = form['s_ids']
-                if id:
-                    self.cr.execute("select evaluation_id from hr_skill_evaluation_skill where skill_id=%d"%id)
-                eval_id.append(self.cr.fetchall())
-
-                for i in range(0,len(eval_id[0])):
-                    res.append(eval_id[0][i][0])
-
-                for i in range(0,len(res)):
-                    final.append(pooler.get_pool(self.cr.dbname).get('hr_skill.evaluation').browse(self.cr,self.uid,res[i],))
-                return final
-
-report_sxw.report_sxw('report.skillreport','hr_skill.evaluation','addons/hr_skill/report/skillreport.rml',parser=skillreport,)
+
+    def __init__(self, cr, uid, name, context):
+        super(skillreport, self).__init__(cr, uid, name, context)
+        self.localcontext.update({
+            'time': time,
+            'get_data': self._getData,
+            'get_skill': self._getskill,
+        })
+
+    def _getskill(self, ids):
+        t_ids = pooler.get_pool(self.cr.dbname).get('hr_skill.evaluation.skill').search(
+            self.cr, self.uid, [('evaluation_id', '=', ids)])
+        res1 = pooler.get_pool(self.cr.dbname).get(
+            'hr_skill.evaluation.skill').browse(self.cr, self.uid, t_ids)
+        return res1
+
+    def _getData(self, form):
+        res = []
+        eval_id = []
+        final = []
+        id = form['s_ids']
+        if id:
+            self.cr.execute(
+                "select evaluation_id from hr_skill_evaluation_skill where skill_id=%d" % id)
+            eval_id.append(self.cr.fetchall())
+
+            for i in range(0, len(eval_id[0])):
+                res.append(eval_id[0][i][0])
+
+            for i in range(0, len(res)):
+                final.append(pooler.get_pool(self.cr.dbname).get(
+                    'hr_skill.evaluation').browse(self.cr, self.uid, res[i]))
+
+        return final
+
+report_sxw.report_sxw('report.skillreport',
+                      'hr_skill.evaluation',
+                      'addons/hr_skill/report/skillreport.rml',
+                      parser=skillreport)
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/wizard/__init__.py'
--- hr_skill/wizard/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_skill/wizard/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,11 +15,10 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import lang_wiz
-import datewise
-import skill
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+from . import lang_wiz
+from . import datewise
+from . import skill
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/wizard/datewise.py'
--- hr_skill/wizard/datewise.py	2009-10-15 11:25:40 +0000
+++ hr_skill/wizard/datewise.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,12 +15,12 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import wizard
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import pooler
 import time
+from . import wizard
 
 
 dates_form = '''<?xml version="1.0"?>
@@ -30,25 +30,25 @@
         <field name="edate"/>
 </form>'''
 
-dates_fields ={
-    'sdate': {'string':'Start Date', 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-01-01')},
-    'edate': {'string':'End Date', 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-%m-%d')},
-            }
+dates_fields = {
+    'sdate': {'string': 'Start Date', 'type': 'date', 'required': True, 'default': lambda *a: time.strftime('%Y-01-01')},
+    'edate': {'string': 'End Date', 'type': 'date', 'required': True, 'default': lambda *a: time.strftime('%Y-%m-%d')},
+}
 
 
 class datewisecheck(wizard.interface):
 
     states = {
-       'init': {
-                    'actions': [],
-                    'result': {'type':'form', 'arch':dates_form, 'fields':dates_fields, 'state':[('end','Cancel'),('report','Print')]}
+        'init': {
+            'actions': [],
+            'result': {'type': 'form', 'arch': dates_form, 'fields': dates_fields, 'state': [('end', 'Cancel'), ('report', 'Print')]}
         },
         'report': {
-                    'actions': [],
-                    'result': {'type':'print', 'report':'datereport.print', 'state':'end'}
+            'actions': [],
+            'result': {'type': 'print', 'report': 'datereport.print', 'state': 'end'}
         }
     }
+
 datewisecheck('employee.date.check')
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/wizard/lang_wiz.py'
--- hr_skill/wizard/lang_wiz.py	2009-10-15 11:25:40 +0000
+++ hr_skill/wizard/lang_wiz.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,14 +15,14 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
-import wizard
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import time
 import pooler
 import netsvc
-from tools.misc import UpdateableStr,UpdateableDict
+from tools.misc import UpdateableStr, UpdateableDict
+from . import wizard
 
 info = '''<?xml version="1.0"?>
 <form string="Select period">
@@ -36,25 +36,15 @@
 
  </form>'''
 
-field1 = {
-    'lang': {'string':'Language', 'type':'one2many', 'relation':'emp.lang'},
+field1 = {'lang': {'string': 'Language',
+                   'type': 'one2many', 'relation': 'emp.lang'}}
 
-        }
 
 class lang_get(wizard.interface):
     states = {
-
-       'init': {
-            'actions': [],
-            'result': {'type':'form','arch':form1, 'fields':field1, 'state':[('end','Cancel'),('rpt','Report')]}
-        },
-
-        'rpt': {
-            'actions': [],
-            'result': {'type':'print','report':'langreport','state':'end'}
-                },
-
-             }
+        'init': {'actions': [], 'result': {'type': 'form', 'arch': form1, 'fields': field1, 'state': [('end', 'Cancel'), ('rpt', 'Report')]}},
+        'rpt': {'actions': [], 'result': {'type': 'print', 'report': 'langreport', 'state': 'end'}}}
+
 lang_get('langget')
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_skill/wizard/skill.py'
--- hr_skill/wizard/skill.py	2009-10-15 11:25:40 +0000
+++ hr_skill/wizard/skill.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import wizard
 import pooler
 import time
@@ -27,23 +27,22 @@
         <field name="s_ids"/>
 </form>'''
 
-emp_field ={
-    's_ids': {'name' : 'skill', 'relation':'hr_skill.skill', 'string':'Skill', 'required':'True', 'type':'many2one','domain':"[('view','=','skill')]"},
-   }
+emp_field = {
+    's_ids': {'name': 'skill',
+              'relation': 'hr_skill.skill',
+              'string': 'Skill',
+              'required': 'True',
+              'type': 'many2one',
+              'domain': "[('view', '=', 'skill')]"}
+}
+
 
 class skillemployee(wizard.interface):
     states = {
-       'init': {
-                    'actions': [],
-                    'result': {'type':'form', 'arch':emp_form, 'fields':emp_field, 'state':[('end','Cancel'),('report','Print')]}
-        },
-
-       'report': {
-                    'actions': [],
-                    'result': {'type':'print', 'report':'skillreport', 'state':'end'}
-        }
+        'init': {'actions': [], 'result': {'type': 'form', 'arch': emp_form, 'fields': emp_field, 'state': [('end', 'Cancel'), ('report', 'Print')]}},
+        'report': {'actions': [], 'result': {'type': 'print', 'report': 'skillreport', 'state': 'end'}}
     }
 
 skillemployee('empskill')
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_timesheet_ical/__init__.py'
--- hr_timesheet_ical/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_timesheet_ical/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import wizard
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== renamed file 'hr_timesheet_ical/__terp__.py' => 'hr_timesheet_ical/__openerp__.py'
--- hr_timesheet_ical/__terp__.py	2009-10-15 11:25:40 +0000
+++ hr_timesheet_ical/__openerp__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,22 +15,21 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 {
-    "name" : "Complete timesheet from an iCal server",
-    "version" : "0.1",
-    "author" : "Tiny",
-    "category" : "Generic Modules/Human Resources",
-    "website" : "http://www.openerp.com";,
+    "name": "Complete timesheet from an iCal server",
+    "version": "0.1",
+    "author": "Tiny",
+    "category": "Generic Modules/Human Resources",
+    "website": "http://www.openerp.com";,
     "description": "Import iCal events (for eg, Outlook) to auto-complete timesheets.",
-    "depends" : ["hr_timesheet"],
-    "init_xml" : [],
-    "demo_xml" : [],
-    "update_xml" : ["hr_timesheet_wizard.xml"],
+    "depends": ["hr_timesheet"],
+    "init_xml": [],
+    "demo_xml": [],
+    "update_xml": ["hr_timesheet_wizard.xml"],
     "active": False,
     "installable": True
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_timesheet_ical/wizard/__init__.py'
--- hr_timesheet_ical/wizard/__init__.py	2009-10-15 11:25:40 +0000
+++ hr_timesheet_ical/wizard/__init__.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,12 +15,11 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import sys
 if sys.version_info[:1] >= (2, 4):
     import wizard_ical.py
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_timesheet_ical/wizard/urllib2.py'
--- hr_timesheet_ical/wizard/urllib2.py	2010-01-21 08:17:41 +0000
+++ hr_timesheet_ical/wizard/urllib2.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 
 """An extensible library for opening URLs using a variety of protocols
 
@@ -136,8 +136,8 @@
 
 # not sure how many of these need to be gotten rid of
 from urllib import unwrap, unquote, splittype, splithost, \
-     addinfourl, splitport, splitgophertype, splitquery, \
-     splitattr, ftpwrapper, noheaders, splituser, splitpasswd, splitvalue
+    addinfourl, splitport, splitgophertype, splitquery, \
+    splitattr, ftpwrapper, noheaders, splituser, splitpasswd, splitvalue
 
 # support for FileHandler, proxies via environment variables
 from urllib import localhost, url2pathname, getproxies
@@ -145,12 +145,15 @@
 __version__ = "2.4"
 
 _opener = None
+
+
 def urlopen(url, data=None):
     global _opener
     if _opener is None:
         _opener = build_opener()
     return _opener.open(url, data)
 
+
 def install_opener(opener):
     global _opener
     _opener = opener
@@ -159,12 +162,14 @@
 # make sure all of the IOError stuff is overridden.  we just want to be
 # subtypes.
 
+
 class URLError(IOError):
     # URLError is a sub-type of IOError, but it doesn't share any of
     # the implementation.  need to override __init__ and __str__.
     # It sets self.args for compatibility with other EnvironmentError
     # subclasses, but args doesn't have the typical format with errno in
     # slot 0 and strerror in slot 1.  This may be better than nothing.
+
     def __init__(self, reason):
         self.args = reason,
         self.reason = reason
@@ -172,7 +177,9 @@
     def __str__(self):
         return '<urlopen error %s>' % self.reason
 
+
 class HTTPError(URLError, addinfourl):
+
     """Raised when HTTP error occurs, but also acts like non-error return"""
     __super_init = addinfourl.__init__
 
@@ -192,6 +199,7 @@
     def __str__(self):
         return 'HTTP Error %s: %s' % (self.code, self.msg)
 
+
 class GopherError(URLError):
     pass
 
@@ -297,7 +305,9 @@
         hdrs.update(self.headers)
         return hdrs.items()
 
+
 class OpenerDirector:
+
     def __init__(self):
         server_version = "Python-urllib/%s" % __version__
         self.addheaders = [('User-agent', server_version)]
@@ -313,11 +323,11 @@
         for meth in dir(handler):
             i = meth.find("_")
             protocol = meth[:i]
-            condition = meth[i+1:]
+            condition = meth[i + 1:]
 
             if condition.startswith("error"):
                 j = condition.find("_") + i + 1
-                kind = meth[j+1:]
+                kind = meth[j + 1:]
                 try:
                     kind = int(kind)
                 except ValueError:
@@ -326,10 +336,10 @@
                 self.handle_error[protocol] = lookup
             elif condition == "open":
                 kind = protocol
-                lookup = getattr(self, "handle_"+condition)
+                lookup = getattr(self, "handle_" + condition)
             elif condition in ["response", "request"]:
                 kind = protocol
-                lookup = getattr(self, "process_"+condition)
+                lookup = getattr(self, "process_" + condition)
             else:
                 continue
 
@@ -372,7 +382,7 @@
         protocol = req.get_type()
 
         # pre-process request
-        meth_name = protocol+"_request"
+        meth_name = protocol + "_request"
         for processor in self.process_request.get(protocol, []):
             meth = getattr(processor, meth_name)
             req = meth(req)
@@ -380,7 +390,7 @@
         response = self._open(req, data)
 
         # post-process response
-        meth_name = protocol+"_response"
+        meth_name = protocol + "_response"
         for processor in self.process_response.get(protocol, []):
             meth = getattr(processor, meth_name)
             response = meth(req, response)
@@ -405,7 +415,8 @@
     def error(self, proto, *args):
         if proto in ['http', 'https']:
             # XXX http[s] protocols are special-cased
-            dict = self.handle_error['http'] # https is not different than http
+            # https is not different than http
+            dict = self.handle_error['http']
             proto = args[2]  # YUCK!
             meth_name = 'http_error_%s' % proto
             http_err = 1
@@ -427,6 +438,7 @@
 # sense to skip a superclass in favor of a subclass and when it might
 # make sense to include both
 
+
 def build_opener(*handlers):
     """Create an opener object from a list of handlers.
 
@@ -463,6 +475,7 @@
         opener.add_handler(h)
     return opener
 
+
 class BaseHandler:
     handler_order = 500
 
@@ -483,6 +496,7 @@
 
 
 class HTTPErrorProcessor(BaseHandler):
+
     """Process HTTP error responses."""
     handler_order = 1000  # after all other processing
 
@@ -497,10 +511,13 @@
 
     https_response = http_response
 
+
 class HTTPDefaultErrorHandler(BaseHandler):
+
     def http_error_default(self, req, fp, code, msg, hdrs):
         raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
 
+
 class HTTPRedirectHandler(BaseHandler):
     # maximum number of redirections to any single URL
     # this is needed because of the state that cookies introduce
@@ -521,7 +538,7 @@
         """
         m = req.get_method()
         if (code in (301, 302, 303, 307) and m in ("GET", "HEAD")
-            or code in (301, 302, 303) and m == "POST"):
+                or code in (301, 302, 303) and m == "POST"):
             # Strictly (according to RFC 2616), 301 or 302 in response
             # to a POST MUST NOT cause a redirection without confirmation
             # from the user (of urllib2, in this case).  In practice,
@@ -561,7 +578,7 @@
         if hasattr(req, 'redirect_dict'):
             visited = new.redirect_dict = req.redirect_dict
             if (visited.get(newurl, 0) >= self.max_repeats or
-                len(visited) >= self.max_redirections):
+                    len(visited) >= self.max_redirections):
                 raise HTTPError(req.get_full_url(), code,
                                 self.inf_msg + msg, headers, fp)
         else:
@@ -581,6 +598,7 @@
               "lead to an infinite loop.\n" \
               "The last 30x error message was:\n"
 
+
 class ProxyHandler(BaseHandler):
     # Proxies must be in front
     handler_order = 100
@@ -592,7 +610,7 @@
         self.proxies = proxies
         for type, url in proxies.items():
             setattr(self, '%s_open' % type,
-                    lambda r, proxy=url, type=type, meth=self.proxy_open: \
+                    lambda r, proxy=url, type=type, meth=self.proxy_open:
                     meth(r, proxy, type))
 
     def proxy_open(self, req, proxy, type):
@@ -620,8 +638,11 @@
 
 # feature suggested by Duncan Booth
 # XXX custom is not a good name
+
+
 class CustomProxy:
     # either pass a function to the constructor or override handle
+
     def __init__(self, proto, func=None, proxy_addr=None):
         self.proto = proto
         self.func = func
@@ -634,6 +655,7 @@
     def get_proxy(self):
         return self.addr
 
+
 class CustomProxyHandler(BaseHandler):
     # Proxies must be in front
     handler_order = 100
@@ -662,7 +684,9 @@
         else:
             self.proxies[cpo.proto] = [cpo]
 
+
 class HTTPPasswordMgr:
+
     def __init__(self):
         self.passwd = {}
 
@@ -742,7 +766,7 @@
                     return self.retry_http_basic_auth(host, req, realm)
 
     def retry_http_basic_auth(self, host, req, realm):
-        user,pw = self.passwd.find_user_password(realm, host)
+        user, pw = self.passwd.find_user_password(realm, host)
         if pw is not None:
             raw = "%s:%s" % (user, pw)
             auth = 'Basic %s' % base64.encodestring(raw).strip()
@@ -753,6 +777,7 @@
         else:
             return None
 
+
 class HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
 
     auth_header = 'Authorization'
@@ -787,6 +812,7 @@
         L = [chr(random.randrange(0, 256)) for i in range(n)]
         return "".join(L)
 
+
 class AbstractDigestAuthHandler:
     # Digest authentication is specified in RFC 2617.
 
@@ -827,7 +853,7 @@
                 return self.retry_http_digest_auth(req, authreq)
             else:
                 raise ValueError("AbstractDigestAuthHandler doesn't know "
-                                 "about %s"%(scheme))
+                                 "about %s" % (scheme))
 
     def retry_http_digest_auth(self, req, auth):
         token, challenge = auth.split(' ', 1)
@@ -924,6 +950,7 @@
 
 
 class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
+
     """An authentication protocol defined by RFC 2069
 
     Digest authentication improves on basic authentication because it
@@ -951,6 +978,7 @@
         self.reset_retry_count()
         return retry
 
+
 class AbstractHTTPHandler(BaseHandler):
 
     def __init__(self, debuglevel=0):
@@ -999,7 +1027,7 @@
         if not host:
             raise URLError('no host given')
 
-        h = http_class(host) # will parse host:port
+        h = http_class(host)  # will parse host:port
         h.set_debuglevel(self._debuglevel)
 
         headers = dict(req.headers)
@@ -1014,7 +1042,7 @@
         try:
             h.request(req.get_method(), req.get_selector(), req.data, headers)
             r = h.getresponse()
-        except socket.error, err: # XXX what error?
+        except socket.error, err:  # XXX what error?
             raise URLError(err)
 
         # Pick apart the HTTPResponse object to get the addinfourl
@@ -1052,7 +1080,9 @@
 
         https_request = AbstractHTTPHandler.do_request_
 
+
 class HTTPCookieProcessor(BaseHandler):
+
     def __init__(self, cookiejar=None):
         if cookiejar is None:
             cookiejar = cookielib.CookieJar()
@@ -1069,11 +1099,14 @@
     https_request = http_request
     https_response = http_response
 
+
 class UnknownHandler(BaseHandler):
+
     def unknown_open(self, req):
         type = req.get_type()
         raise URLError('unknown url type: %s' % type)
 
+
 def parse_keqv_list(l):
     """Parse list of key=value strings where keys are not duplicated."""
     parsed = {}
@@ -1084,9 +1117,10 @@
         parsed[k] = v
     return parsed
 
+
 def parse_http_list(s):
     """Parse lists as described by RFC 2068 Section 2.
-    
+ 
     In particular, parse comma-separated lists where the elements of
     the list may include quoted-strings.  A quoted-string could
     contain a comma.  A non-quoted string could have quotes in the
@@ -1118,7 +1152,7 @@
 
         if cur == '"':
             quote = True
-        
+
         part += cur
 
     # append last part
@@ -1127,8 +1161,10 @@
 
     return [part.strip() for part in res]
 
+
 class FileHandler(BaseHandler):
     # Use local file or FTP depending on form of URL
+
     def file_open(self, req):
         url = req.get_selector()
         if url[:2] == '//' and url[2:3] != '/':
@@ -1139,6 +1175,7 @@
 
     # names for the localhost
     names = None
+
     def get_names(self):
         if FileHandler.names is None:
             FileHandler.names = (socket.gethostbyname('localhost'),
@@ -1163,10 +1200,12 @@
         if not host or \
            (not port and socket.gethostbyname(host) in self.get_names()):
             return addinfourl(open(localfile, 'rb'),
-                              headers, 'file:'+file)
+                              headers, 'file:' + file)
         raise URLError('file not on local host')
 
+
 class FTPHandler(BaseHandler):
+
     def ftp_open(self, req):
         host = req.get_host()
         if not host:
@@ -1220,12 +1259,14 @@
 
     def connect_ftp(self, user, passwd, host, port, dirs):
         fw = ftpwrapper(user, passwd, host, port, dirs)
-##        fw.ftp.set_debuglevel(1)
+# fw.ftp.set_debuglevel(1)
         return fw
 
+
 class CacheFTPHandler(FTPHandler):
     # XXX would be nice to have pluggable cache strategies
     # XXX this stuff is definitely not thread safe
+
     def __init__(self):
         self.cache = {}
         self.timeout = {}
@@ -1269,7 +1310,9 @@
                     break
             self.soonest = min(self.timeout.values())
 
+
 class GopherHandler(BaseHandler):
+
     def gopher_open(self, req):
         host = req.get_host()
         if not host:
@@ -1286,7 +1329,9 @@
             fp = gopherlib.send_selector(selector, host)
         return addinfourl(fp, noheaders(), req.get_full_url())
 
-#bleck! don't use this yet
+# bleck! don't use this yet
+
+
 class OpenerFactory:
 
     default_handlers = [UnknownHandler, HTTPHandler,
@@ -1308,4 +1353,3 @@
                 ph = ph()
             opener.add_handler(ph)
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'hr_timesheet_ical/wizard/wizard_ical.py'
--- hr_timesheet_ical/wizard/wizard_ical.py	2009-10-15 11:25:40 +0000
+++ hr_timesheet_ical/wizard/wizard_ical.py	2013-09-22 13:57:11 +0000
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#    
+#
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,9 +15,9 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
-#
-##############################################################################
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 import re
 import urllib2
 import datetime
@@ -28,12 +28,14 @@
 
 CALENDAR_URL = 'http://127.0.0.1:7180'
 
-def _employee_get(self,cr,uid,context={}):
-    ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+
+def _employee_get(self, cr, uid, context={}):
+    ids = self.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)])
     if ids:
         return ids[0]
     return False
 
+
 class RequestHandler(object):
 
     def __init__(self):
@@ -41,7 +43,9 @@
         self.opener = urllib2.build_opener(self.auth_handler)
 
     def addAuthentication(self, username, password):
-        self.auth_handler.add_password('zope', CALENDAR_URL, username, password)
+        self.auth_handler.add_password(
+            'zope', CALENDAR_URL, username, password)
+
 
 def get_url(url, auth_data={}):
     req = RequestHandler()
@@ -49,14 +53,16 @@
         req.addAuthentication(auth_data['user'], auth_data['pass'])
     return req.opener.open(url).read()
 
+
 def _start_date(uid, y, z):
     today = datetime.date.today()
     monday = today - datetime.timedelta(days=today.weekday())
     return monday.strftime('%Y-%m-%d')
 
+
 def _end_date(uid, y, z):
     today = datetime.date.today()
-    friday = today + datetime.timedelta(days=4-today.weekday())
+    friday = today + datetime.timedelta(days=4 - today.weekday())
     return friday.strftime('%Y-%m-%d')
 
 ical_form = """<?xml version="1.0" ?>
@@ -67,10 +73,10 @@
 </form>"""
 
 ical_fields = {
-    'startdate' : dict(string='Start date', type='date', required=True, default=_start_date),
-    'enddate' : dict(string='End date', type='date', required=True, default=_end_date),
-    'user_id' : dict(string=u'User', type='many2one', relation='res.users', required=True, default=lambda x,y,z:x),
-    }
+    'startdate': dict(string='Start date', type='date', required=True, default=_start_date),
+    'enddate': dict(string='End date', type='date', required=True, default=_end_date),
+    'user_id': dict(string=u'User', type='many2one', relation='res.users', required=True, default=lambda x, y, z: x),
+}
 
 success_form = """<?xml version="1.0" ?>
 <form string="Import successful">
@@ -81,72 +87,89 @@
 
 project_re = re.compile(r"^ *\[?(\d{1,4}\.?\d{0,3})\]? *(.*)", re.UNICODE)
 
+
 class wizard_import_icalendar(wizard.interface):
+
     def import_ical(self, cr, uid, data, context):
-        employee_id = _employee_get(pooler.get_pool(cr.dbname).get('hr.attendance'), cr, data['form']['user_id'])
+        employee_id = _employee_get(
+            pooler.get_pool(cr.dbname).get('hr.attendance'), cr, data['form']['user_id'])
         if not employee_id:
-            raise wizard.except_wizard('No employee found for the user', 'Login ID: %s' % data['form']['user_id'])
-        
-        first, end = [datetime.date(*(map(int, x.split('-')))) for x in [data['form']['startdate'], data['form']['enddate']]]
+            raise wizard.except_wizard(
+                'No employee found for the user', 'Login ID: %s' % data['form']['user_id'])
+
+        first, end = [datetime.date(*(map(int, x.split('-'))))
+                      for x in [data['form']['startdate'], data['form']['enddate']]]
         end = min(end, datetime.date.today())
         try:
             user_obj = pooler.get_pool(cr.dbname).get('res.users')
             user = user_obj.read(cr, uid, [data['form']['user_id']])
-            events = icalendar.read_icalendar(get_url('%s/persons/%s/calendar.ics' % (CALENDAR_URL, user[0]['login']), {'user': 'manager', 'pass': 'schoolbell'}))
+            events = icalendar.read_icalendar(get_url('%s/persons/%s/calendar.ics' % (
+                CALENDAR_URL, user[0]['login']), {'user': 'manager', 'pass': 'schoolbell'}))
         except urllib2.HTTPError, e:
-            raise wizard.except_wizard('Erreur HTTP', '%s - %s' % (e.code, e.msg))
+            raise wizard.except_wizard(
+                'Erreur HTTP', '%s - %s' % (e.code, e.msg))
         except IndexError:
-            raise wizard.except_wizard('No user login found', 'Login ID: %s' % data['form']['user_id'])
-        
+            raise wizard.except_wizard(
+                'No user login found', 'Login ID: %s' % data['form']['user_id'])
+
         event_obj = pooler.get_pool(cr.dbname).get('res.partner.event')
-        timesheet_line_obj = pooler.get_pool(cr.dbname).get('hr.analytic.timesheet')
-        analytic_account_obj = pooler.get_pool(cr.dbname).get('account.analytic.account')
+        timesheet_line_obj = pooler.get_pool(
+            cr.dbname).get('hr.analytic.timesheet')
+        analytic_account_obj = pooler.get_pool(
+            cr.dbname).get('account.analytic.account')
         for event in [e for e in events if first <= e.dtstart.date() <= end]:
             project_search = project_re.search(event.title)
             if not project_search:
                 continue
             else:
                 project_code, summary = project_search.groups()
-            
-            account_id = analytic_account_obj.name_search(cr, uid, project_code)
+
+            account_id = analytic_account_obj.name_search(
+                cr, uid, project_code)
             if account_id:
                 account_id = account_id[0][0]
-                timesheet_line_id = timesheet_line_obj.search(cr, uid, [('event_ical_id', '=', event.unique_id)])
+                timesheet_line_id = timesheet_line_obj.search(
+                    cr, uid, [('event_ical_id', '=', event.unique_id)])
                 if not timesheet_line_id:
-                    unit_id = timesheet_line_obj.default_get(cr, uid, ['product_uom_id','product_id'], {'user_id' : data['form']['user_id']})
-                    amount = timesheet_line_obj.on_change_unit_amount(cr, uid, [], unit_id['product_id'], event.duration.seconds / 3600.0, unit_id['product_uom_id'])
+                    unit_id = timesheet_line_obj.default_get(
+                        cr, uid, ['product_uom_id', 'product_id'], {'user_id': data['form']['user_id']})
+                    amount = timesheet_line_obj.on_change_unit_amount(cr, uid, [], unit_id[
+                                                                      'product_id'], event.duration.seconds / 3600.0, unit_id['product_uom_id'])
                     if amount:
                         amount = amount['value']['amount']
-                    timesheet_line_obj.create(cr, uid, {'name' : summary, 'date' : event.dtstart.strftime('%Y-%m-%d'), 'unit_amount' : event.duration.seconds / 3600.0,
-                                                        'user_id' :vdata['form']['user_id'], 'account_id' : account_id, 'amount' : amount,
-                                                        'event_ical_id' : event.unique_id},
-                                              {'user_id' : data['form']['user_id']})
+                    timesheet_line_obj.create(
+                        cr, uid, {
+                            'name': summary, 'date': event.dtstart.strftime('%Y-%m-%d'), 'unit_amount': event.duration.seconds / 3600.0,
+                            'user_id': vdata['form']['user_id'], 'account_id': account_id, 'amount': amount,
+                            'event_ical_id': event.unique_id},
+                        {'user_id': data['form']['user_id']})
 
-                event_id = event_obj.search(cr, uid, [('event_ical_id', '=', event.unique_id)])
+                event_id = event_obj.search(
+                    cr, uid, [('event_ical_id', '=', event.unique_id)])
                 if not event_id:
-                    account = pooler.get_pool(cr.dbname).get('account.analytic.account').read(cr, uid, [account_id], ['partner_id', 'contact_id'])
+                    account = pooler.get_pool(cr.dbname).get('account.analytic.account').read(
+                        cr, uid, [account_id], ['partner_id', 'contact_id'])
                     if account:
                         event_obj.create(cr, uid,
-                          {'name' : summary,
-                           'description' : event.description,
-                           'partner_id' : account[0]['partner_id'][0],
-                           'project_id' : account_id,
-                           'user_id' : data['form']['user_id'],
-                           'date' : event.dtstart.strftime('%Y-%m-%d %H:%M'),
-                           'event_ical_id' : event.unique_id})
+                                         {'name': summary,
+                                          'description': event.description,
+                                          'partner_id': account[0]['partner_id'][0],
+                                          'project_id': account_id,
+                                          'user_id': data['form']['user_id'],
+                                          'date': event.dtstart.strftime('%Y-%m-%d %H:%M'),
+                                          'event_ical_id': event.unique_id})
         return {}
-    
+
     states = {
-        'init' : {
-            'actions' : [],
-            'result' : {'type' : 'form', 'arch' : ical_form, 'fields' : ical_fields, 'state' : (('import', 'Import'), ('end', 'Cancel'))}
-            },
-        'import' : {
-            'actions' : [import_ical],
-            'result' : {'type' : 'form', 'arch' : success_form, 'fields' : success_fields, 'state' : (('end', 'Quit'),)}
-            },
-        }
+        'init': {
+            'actions': [],
+            'result': {'type': 'form', 'arch': ical_form, 'fields': ical_fields, 'state': (('import', 'Import'), ('end', 'Cancel'))}
+        },
+        'import': {
+            'actions': [import_ical],
+            'result': {'type': 'form', 'arch': success_form, 'fields': success_fields, 'state': (('end', 'Quit'),)}
+        },
+    }
 
 wizard_import_icalendar('hr.ical_import')
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-


Follow ups