Skip to content

AttributeError: 'GroupItem' object has no attribute 'license' #813

@huisek

Description

@huisek

When trying to set the license_mode to onLogin on a GroupItem and call create_AD_group I receive the following error:

  File "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\lib\site-packages\tableauserverclient\server\request_factory.py", line 299, in create_ad_req
    import_element.attrib['grantLicenseMode'] = group_item.license
AttributeError: 'GroupItem' object has no attribute 'license'

Looking at the request_factory.py file it appears there may be a typo in this method when setting the
grantLicenseMode attribute:

    def create_ad_req(self, group_item):
        xml_request = ET.Element('tsRequest')
        group_element = ET.SubElement(xml_request, 'group')
        group_element.attrib['name'] = group_item.name
        import_element = ET.SubElement(group_element, 'import')
        import_element.attrib['source'] = "ActiveDirectory"
        if group_item.domain_name is None:
            error = "Group Domain undefined."
            raise ValueError(error)

        import_element.attrib['domainName'] = group_item.domain_name
        print(group_item.license_mode)
        if group_item.license_mode is not None:
            import_element.attrib['grantLicenseMode'] = group_item.license
        if group_item.minimum_site_role is not None:
            import_element.attrib['SiteRole'] = group_item.minimum_site_role
        return ET.tostring(xml_request)

I'm working in Tabelau Server 2020.3 with API version 3.9

I did try modifying the package to reflect group_item.license_mode but then i receive an error:

  File "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\lib\site-packages\tableauserverclient\server\endpoint\endpoint.py", line 135, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\lib\site-packages\tableauserverclient\server\endpoint\groups_endpoint.py", line 88, in create_AD_group
    server_response = self.post_request(url, create_req)
  File "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\lib\site-packages\tableauserverclient\server\endpoint\endpoint.py", line 110, in post_request
    content_type=content_type)
  File "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\lib\site-packages\tableauserverclient\server\endpoint\endpoint.py", line 53, in _make_request
    self._check_status(server_response)
  File "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\lib\site-packages\tableauserverclient\server\endpoint\endpoint.py", line 68, in _check_status
    raise ServerResponseError.from_response(server_response.content, self.parent_srv.namespace)
tableauserverclient.server.endpoint.exceptions.ServerResponseError:

        400019: Bad Request
                Malformed 'import' element in the request payload.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions