|
| 1 | +from docusign_admin import ( |
| 2 | + ApiClient, |
| 3 | + ProductPermissionProfilesApi, |
| 4 | + UserProductPermissionProfilesRequest, |
| 5 | + ProductPermissionProfileRequest) |
| 6 | +from flask import session, request |
| 7 | + |
| 8 | +from ...ds_config import DS_CONFIG |
| 9 | +from app.admin.utils import get_organization_id |
| 10 | + |
| 11 | +class Eg008UpdateUserProductPermissionProfileController: |
| 12 | + @staticmethod |
| 13 | + def get_args(): |
| 14 | + """Get required session and request arguments""" |
| 15 | + organization_id = get_organization_id() |
| 16 | + |
| 17 | + return { |
| 18 | + "account_id": session["ds_account_id"], # Represents your {ACCOUNT_ID} |
| 19 | + "access_token": session["ds_access_token"], # Represents your {ACCESS_TOKEN} |
| 20 | + "organization_id": organization_id, # Represents your {ORGANIZATION_ID} |
| 21 | + "product_id": request.form.get("product"), |
| 22 | + "clm_email": session["clm_email"], |
| 23 | + } |
| 24 | + |
| 25 | + @staticmethod |
| 26 | + def get_permission_profiles(): |
| 27 | + """Get permission profiles""" |
| 28 | + |
| 29 | + api_client = ApiClient(host=DS_CONFIG["admin_api_client_host"]) |
| 30 | + api_client.set_default_header( |
| 31 | + header_name="Authorization", |
| 32 | + header_value=f"Bearer {session['ds_access_token']}" |
| 33 | + ) |
| 34 | + |
| 35 | + product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) |
| 36 | + profiles = product_permission_profiles_api.get_product_permission_profiles( |
| 37 | + organization_id=get_organization_id(), |
| 38 | + account_id=session["ds_account_id"] |
| 39 | + ) |
| 40 | + profiles_list = profiles.to_dict()["product_permission_profiles"] |
| 41 | + return profiles_list |
| 42 | + |
| 43 | + @staticmethod |
| 44 | + def worker(self, args): |
| 45 | + """ |
| 46 | + 1. Create an API client with headers |
| 47 | + 2. Get your monitor data via SDK |
| 48 | + """ |
| 49 | + |
| 50 | + access_token = args["access_token"] |
| 51 | + account_id = args["account_id"] |
| 52 | + org_id = args["organization_id"] |
| 53 | + clm_email = args["clm_email"] |
| 54 | + permission_profile_id = args["permission_profile_id"] |
| 55 | + product_id = args["product_id"] |
| 56 | + |
| 57 | + # Create an API client with headers |
| 58 | + # Step 2 start |
| 59 | + api_client = ApiClient(host=DS_CONFIG["admin_api_client_host"]) |
| 60 | + api_client.set_default_header( |
| 61 | + header_name="Authorization", |
| 62 | + header_value=f"Bearer {access_token}" |
| 63 | + ) |
| 64 | + # Step 2 end |
| 65 | + |
| 66 | + # Step 3 start |
| 67 | + product_permission_profile = ProductPermissionProfileRequest( |
| 68 | + permission_profile_id=permission_profile_id, |
| 69 | + product_id=product_id |
| 70 | + ) |
| 71 | + user_product_permission_profile_request = UserProductPermissionProfilesRequest( |
| 72 | + email=clm_email, |
| 73 | + product_permission_profiles=[product_permission_profile] |
| 74 | + ) |
| 75 | + # Step 3 end |
| 76 | + |
| 77 | + # Step 4 start |
| 78 | + product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) |
| 79 | + response = product_permission_profiles_api.add_user_product_permission_profiles_by_email( |
| 80 | + organization_id=org_id, |
| 81 | + account_id=account_id, |
| 82 | + user_product_permission_profiles_request=user_product_permission_profile_request |
| 83 | + ) |
| 84 | + # Step 4 end |
| 85 | + |
| 86 | + return response.to_dict() |
0 commit comments