def can_approve(self, user, **data):
        """
        Admins of repository service or sys admins can approve a repository
        :param user: a User
        :param data: data that the user wants to update
        """
        service_id = data.get('service_id', self.service_id)

        try:
            service = yield Service.get(service_id)

            is_repo_admin = user.is_org_admin(service.organisation_id)

            is_reseller_preverifying = user.is_reseller() and data.get('pre_verified', False)

            raise Return(is_repo_admin or is_reseller_preverifying)
        except couch.NotFound:
            pass

        raise Return(False)
Admins of repository service or sys admins can approve a repository
        :param user: a User
        :param data: data that the user wants to update