def clock_emps_get_all(self,
                           cr,
                           uid,
                           clock_id,
                           ret_dict=False,
                           pwd=False,
                           finger_print=False,
                           context=None):
        if not clock_id:
            return []

        clock = clock_util.clock_obj()
        clock_data = self.pool.get('hr.clock').read(cr,
                                                    uid,
                                                    clock_id, ['ip', 'port'],
                                                    context=context)
        clock_util.clock_connect(clock, clock_data['ip'], clock_data['port'])

        #get all employees on clock
        clock_emps = clock_util.clock_user_get_all(clock,
                                                   ret_dict=ret_dict,
                                                   pwd=pwd,
                                                   finger_print=finger_print)

        clock_util.clock_disconnect(clock)

        return clock_emps
 def clock_emps_delete_exec(self,
                            cr,
                            uid,
                            clock_ids,
                            emp_ids,
                            context=None):
     '''
     Accept the clock_ids and emp_ids parameter to delete on hr clock machine
     @param clock_ids: the list that contains the clock id of int/long or browse_record
     @param emp_ids: the list that contains employee id of int/long or browse_record that will be delte, the   
     '''
     if not clock_ids or not emp_ids:
         return False
     for clock_id in clock_ids:
         if isinstance(clock_id, (int, long)):
             clock_id = self.pool.get('hr.clock').browse(cr,
                                                         uid,
                                                         clock_id,
                                                         context=context)
         #update data to clock
         clock = clock_util.clock_obj()
         clock_util.clock_connect(clock, clock_id.ip, clock_id.port)
         for emp_id in emp_ids:
             if isinstance(emp_id, (int, long)):
                 emp_id = self.pool.get('hr.employee').browse(
                     cr, uid, emp_id, context=context)
             #delete all clock user data, including base info, finger print, password
             clock_util.clock_user_delete(clock, emp_id.emp_code)
         #disconnect clock
         clock.RefreshData(1)
         clock_util.clock_disconnect(clock)
     return True
    def clock_emps_set(self, cr, uid, order_data, context=None):
        if not order_data:
            return False
        #store the password and finger print to update
        emps_fp_pwd = {}
        if order_data.sync_opt_pwd or order_data.sync_opt_fp:
            emp_codes = [emp.emp_code for emp in order_data.emp_ids_sync]
            emp_obj = self.pool.get('hr.employee')
            emp_ids = emp_obj.search(cr,
                                     uid, [('emp_code', 'in', emp_codes)],
                                     context=context)
            read_flds = ['emp_code']
            if order_data.sync_opt_pwd:
                read_flds += ['clock_pwd']
            if order_data.sync_opt_fp:
                read_flds += [
                    'clock_fp1',
                    'clock_fp2',
                    'clock_fp3',
                    'clock_fp4',
                    'clock_fp5',
                    'clock_fp6',
                    'clock_fp7',
                    'clock_fp8',
                    'clock_fp9',
                    'clock_fp10',
                ]
            emps = emp_obj.read(cr, uid, emp_ids, read_flds, context=context)
            for emp in emps:
                emps_fp_pwd[emp['emp_code']] = emp
        #update data to clock
        clock = clock_util.clock_obj()
        clock_util.clock_connect(clock, order_data.clock_id.ip,
                                 order_data.clock_id.port)
        for emp_sync in order_data.emp_ids_sync:
            new_clock_pwd = False
            new_clock_fps = []
            if order_data.sync_opt_pwd or order_data.sync_opt_fp:
                fp_pwd = emps_fp_pwd[emp_sync.emp_code]
                if order_data.sync_opt_pwd:
                    new_clock_pwd += fp_pwd['clock_pwd']
                if order_data.sync_opt_fp:
                    for i in range(1, 11):
                        new_clock_fps.append(fp_pwd['clock_fp%s' % (i, )])
            #set clock user data
            clock_util.clock_user_set(clock, emp_sync, order_data.sync_opt_pwd,
                                      new_clock_pwd, order_data.sync_opt_fp,
                                      new_clock_fps)
        #disconnect clock
        clock.RefreshData(1)
        clock_util.clock_disconnect(clock)

        return True
    def clock_emps_get_all(self, cr, uid, clock_id, ret_dict=False, pwd=False, finger_print=False, context=None):
        if not clock_id:
            return []

        clock = clock_util.clock_obj()
        clock_data = self.pool.get("hr.clock").read(cr, uid, clock_id, ["ip", "port"], context=context)
        clock_util.clock_connect(clock, clock_data["ip"], clock_data["port"])

        # get all employees on clock
        clock_emps = clock_util.clock_user_get_all(clock, ret_dict=ret_dict, pwd=pwd, finger_print=finger_print)

        clock_util.clock_disconnect(clock)

        return clock_emps
    def clock_emps_set(self, cr, uid, order_data, context=None):
        if not order_data:
            return False
        # store the password and finger print to update
        emps_fp_pwd = {}
        if order_data.sync_opt_pwd or order_data.sync_opt_fp:
            emp_codes = [emp.emp_code for emp in order_data.emp_ids_sync]
            emp_obj = self.pool.get("hr.employee")
            emp_ids = emp_obj.search(cr, uid, [("emp_code", "in", emp_codes)], context=context)
            read_flds = ["emp_code"]
            if order_data.sync_opt_pwd:
                read_flds += ["clock_pwd"]
            if order_data.sync_opt_fp:
                read_flds += [
                    "clock_fp1",
                    "clock_fp2",
                    "clock_fp3",
                    "clock_fp4",
                    "clock_fp5",
                    "clock_fp6",
                    "clock_fp7",
                    "clock_fp8",
                    "clock_fp9",
                    "clock_fp10",
                ]
            emps = emp_obj.read(cr, uid, emp_ids, read_flds, context=context)
            for emp in emps:
                emps_fp_pwd[emp["emp_code"]] = emp
        # update data to clock
        clock = clock_util.clock_obj()
        clock_util.clock_connect(clock, order_data.clock_id.ip, order_data.clock_id.port)
        for emp_sync in order_data.emp_ids_sync:
            new_clock_pwd = False
            new_clock_fps = []
            if order_data.sync_opt_pwd or order_data.sync_opt_fp:
                fp_pwd = emps_fp_pwd[emp_sync.emp_code]
                if order_data.sync_opt_pwd:
                    new_clock_pwd += fp_pwd["clock_pwd"]
                if order_data.sync_opt_fp:
                    for i in range(1, 11):
                        new_clock_fps.append(fp_pwd["clock_fp%s" % (i,)])
            # set clock user data
            clock_util.clock_user_set(
                clock, emp_sync, order_data.sync_opt_pwd, new_clock_pwd, order_data.sync_opt_fp, new_clock_fps
            )
        # disconnect clock
        clock.RefreshData(1)
        clock_util.clock_disconnect(clock)

        return True
    def clock_emps_get(self, cr, uid, clock_id, emp_codes, ret_dict=False, pwd=False, finger_print=False, context=None):
        if not clock_id:
            return []

        clock = clock_util.clock_obj()
        clock_data = self.pool.get("hr.clock").read(cr, uid, clock_id, ["ip", "port"], context=context)
        clock_util.clock_connect(clock, clock_data["ip"], clock_data["port"])

        # get all employees on clock
        emps_clock = []
        if ret_dict:
            emps_clock = {}
        for emp_code in emp_codes:
            emp_clock = clock_util.clock_user_get(clock, emp_code, pwd=pwd, finger_print=finger_print)
            if emp_clock:
                if ret_dict:
                    emps_clock[emp_code] = emp_clock
                else:
                    emps_clock.append(emp_clock)

        clock_util.clock_disconnect(clock)

        return emps_clock
 def clock_emps_delete_exec(self, cr, uid, clock_ids, emp_ids, context=None):
     """
     Accept the clock_ids and emp_ids parameter to delete on hr clock machine
     @param clock_ids: the list that contains the clock id of int/long or browse_record
     @param emp_ids: the list that contains employee id of int/long or browse_record that will be delte, the   
     """
     if not clock_ids or not emp_ids:
         return False
     for clock_id in clock_ids:
         if isinstance(clock_id, (int, long)):
             clock_id = self.pool.get("hr.clock").browse(cr, uid, clock_id, context=context)
         # update data to clock
         clock = clock_util.clock_obj()
         clock_util.clock_connect(clock, clock_id.ip, clock_id.port)
         for emp_id in emp_ids:
             if isinstance(emp_id, (int, long)):
                 emp_id = self.pool.get("hr.employee").browse(cr, uid, emp_id, context=context)
             # delete all clock user data, including base info, finger print, password
             clock_util.clock_user_delete(clock, emp_id.emp_code)
         # disconnect clock
         clock.RefreshData(1)
         clock_util.clock_disconnect(clock)
     return True
    def clock_emps_get(self,
                       cr,
                       uid,
                       clock_id,
                       emp_codes,
                       ret_dict=False,
                       pwd=False,
                       finger_print=False,
                       context=None):
        if not clock_id:
            return []

        clock = clock_util.clock_obj()
        clock_data = self.pool.get('hr.clock').read(cr,
                                                    uid,
                                                    clock_id, ['ip', 'port'],
                                                    context=context)
        clock_util.clock_connect(clock, clock_data['ip'], clock_data['port'])

        #get all employees on clock
        emps_clock = []
        if ret_dict:
            emps_clock = {}
        for emp_code in emp_codes:
            emp_clock = clock_util.clock_user_get(clock,
                                                  emp_code,
                                                  pwd=pwd,
                                                  finger_print=finger_print)
            if emp_clock:
                if ret_dict:
                    emps_clock[emp_code] = emp_clock
                else:
                    emps_clock.append(emp_clock)

        clock_util.clock_disconnect(clock)

        return emps_clock