code: def save_user_template(self, user, fingers=[]):
          
          if not isinstance(user, User):
              users = self.get_users()
              tusers = list(filter(lambda x: x.uid==user, users))
              if len(tusers) == 1:
                  user = tusers[0]
              else:
                  tusers = list(filter(lambda x: x.user_id==str(user), users))
                  if len(tusers) == 1:
                      user = tusers[0]
                  else:
                      raise ZKErrorResponse("Can't find user")
          if isinstance(fingers, Finger):
              fingers = [fingers]
          fpack = b""
          table = b""
          fnum = 0x10
          tstart = 0
          for finger in fingers:
              tfp = finger.repack_only()
              table += pack("<bHbI", 2, user.uid, fnum + finger.fid, tstart)
              tstart += len(tfp)
              fpack += tfp
          if self.user_packet_size == 28:
              upack = user.repack29()
          else:
              upack = user.repack73()
          head = pack("III", len(upack), len(table), len(fpack))
          packet = head + upack + table + fpack
          self._send_with_buffer(packet)
          command = 110
          command_string = pack('<IHH', 12,0,8)
          cmd_response = self.__send_command(command, command_string)
          if not cmd_response.get('status'):
              raise ZKErrorResponse("Can't save utemp")
          self.refresh_data()
docs: save user and template
  
          :param user: user
          :param fingers: list of finger. (The maximum index 0-9)