"""Logic module for new applications and roles.""" from owsresponse import response from account.models import application as app_model, types def _get_applications_by_ids( application_ids: list[str], attributes: list[str] = None ) -> list[types.Application | None]: """ Get application by ids. Args: application_ids (list[str]): Application ids. attributes (list[str]): list of attributes to return. Return: list[Application | None]: a list of Application. """ if not attributes: attributes = ['application_id', 'group_id'] allowed_attributes = ['group_id', 'application_id', 'page', 'subdomain', 'url'] # Check if all attributes are in the allowed list invalid_attributes = [attr for attr in attributes if attr not in allowed_attributes] if invalid_attributes: raise ValueError(f"Invalid attributes: {', '.join(invalid_attributes)}") return [ {attr: app_model.APPLICATIONS_DICT[application_id][attr] for attr in attributes} if application_id in app_model.APPLICATIONS_DICT else None for application_id in application_ids ] def get_applications_by_ids(application_ids: list[str]) -> response.Response: """ Get applications by ids and return response. Args: application_ids (list[str]): list of application ids. Return: Response: response containing a list of Application. """ return response.Response(_get_applications_by_ids(application_ids)) def _get_roles_by_ids( role_ids: list[str], ) -> list[types.ApplicationRole | None]: """ Get roles by ids. Args: role_ids (list[str]): Role ids. Return: list[ApplicationRole | None]: a list of ApplicationRole. """ return [app_model.ROLES_DICT.get(role_id, None) for role_id in role_ids] def get_roles_by_ids(role_ids: list[str]) -> response.Response: """ Get roles by ids. Args: role_ids (list): list of role ids. Return: Response: containing a list of ApplicationRole. """ return response.Response(_get_roles_by_ids(role_ids))