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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions