<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def approve(self, template_address, account):
 """ Approve a template already proposed. The account needs to be owner of the templateManager contract to be able of approve the template. :param template_address: Address of the template contract, str :param account: account approving the template, Account :return: bool """

        try:
            approved = self._keeper.template_manager.approve_template(template_address, account)
            return approved
        except ValueError as err:
            template_values = self._keeper.template_manager.get_template(template_address)
            if not template_values:
                logger.warning(f'Approve template failed: {err}')
                return False

            if template_values.state == 1:
                logger.warning(f'Approve template failed, this template is '
                               f'currently in "proposed" state.')
                return False

            if template_values.state == 3:
                logger.warning(f'Approve template failed, this template appears to be '
                               f'revoked.')
                return False

            if template_values.state == 2:
                return True

            return False