Exemple #1
0
    def get_envs(self):
        r = requests.get(f'{self.api_url}/admin/report-environment',
                         headers=self.get_headers())
        handle_request(r)

        self.envs = {}
        for e in r.json():
            self.envs[e['Name']] = e
        return self.envs
Exemple #2
0
    def get_report_configs(self):
        r = requests.get(f'{self.api_url}/admin/report-configuration',
                         headers=self.get_headers())
        json = handle_request(r)

        self.report_configs = json
        return self.report_configs
Exemple #3
0
    def get_menu_items(self):
        r = requests.get(f'{self.api_url}/admin/menu',
                         headers=self.get_headers())
        json = handle_request(r)

        self.menu_items = json
        return self.menu_items
Exemple #4
0
    def update_user(self, id, email, first, last, type_key, restrictions):
        restrictions_payload = self.get_user(id)

        for r in restrictions:
            restrictions_payload.append({
                'UserKey': id,
                "RestrictionKey": r['key'],
                "RestrictionValue": r['value'],
            })

        payload = {
            'User': {
                'UserKey': id,
                'EmailAddress': email,
                'FirstName': first,
                'SecondName': last,
                'UserTypeKey': type_key,
            },
            'Restrictions': restrictions_payload
        }

        r = requests.put(f'{self.api_url}/admin/user/{id}',
                         headers=self.get_headers(),
                         json=payload)

        json = handle_request(r)
        return json
Exemple #5
0
    def get_reports(self):
        r = requests.get(f'{self.api_url}/admin/report-detail',
                         headers=self.get_headers())
        json = handle_request(r)

        self.reports = json
        return self.reports
Exemple #6
0
    def sync_report(self, report, stage, tag=None):
        if stage not in self.envs:
            return  # Not all PBI environments will surface through Portal

        print(f'*** Updating GPS: {self.env} environment')
        report_name = report.name.rsplit(' -- ',
                                         1)[0]  # Remove release name from end
        # TODO: Avoid hard coding delimiter and abstract to allow more generic patterns

        payload = {
            "ReportName":
            report_name,
            "ModelType":
            'PBI' if report.dataset.has_rls else 'NoRLS',
            "Tags":
            tag,
            "PowerBIConfigurations": [{
                "EnvironmentId": self.envs[stage]['Id'],
                "GroupId": report.workspace.id,
                "ReportId": report.id
            }]
        }

        matching_reports = [
            r for r in self.reports if r['ReportName'] == report_name
        ]
        if len(
                matching_reports
        ) > 0:  # If report exists on Portal, add it to API call (to trigger update rather than insert)
            payload['PowerBIReportId'] = matching_reports[0]['Id']
        else:
            print(f'! Warning: Adding {report_name} to {self.env} Portal')

        r = requests.put(f'{self.api_url}/admin/report-configuration',
                         headers=self.get_headers(),
                         json=payload)
        json = handle_request(r)
        return json
Exemple #7
0
    def get_restriction_types(self):
        r = requests.get(f'{self.api_url}/admin/user-restriction-type',
                         headers=self.get_headers())

        json = handle_request(r)
        return json
Exemple #8
0
 def delete_report(self, report):
     r = requests.delete(
         f'{self.api_url}/admin/report-configuration/{report["Id"]}',
         headers=self.get_headers())
     handle_request(r)
Exemple #9
0
    def get_user_profiles(self):
        r = requests.get(f'{self.api_url}/admin/profile',
                         headers=self.get_headers())

        json = handle_request(r)
        return json
Exemple #10
0
    def get_old_users(self):
        r = requests.get(f'{self.api_url}/users', headers=self.get_headers())

        json = handle_request(r)
        return json
Exemple #11
0
    def get_user(self, id):
        r = requests.get(f'{self.api_url}/admin/user/{id}',
                         headers=self.get_headers())

        json = handle_request(r)
        return json