# Copyright (c) 2015 Ansible, Inc. # All Rights Reserved. from rest_framework.exceptions import APIException from awx.main.task_engine import TaskSerializer class LicenseForbids(APIException): status_code = 402 default_detail = 'Your Tower license does not allow that.' def get_license(show_key=False, bypass_database=False): """Return a dictionary representing the license currently in place on this Tower instance. """ license_reader = TaskSerializer() if bypass_database: return license_reader.from_file(show_key=show_key) return license_reader.from_database(show_key=show_key) def feature_enabled(name, bypass_database=False): """Return True if the requested feature is enabled, False otherwise. If the feature does not exist, raise KeyError. """ license = get_license(bypass_database=bypass_database) # Sanity check: If there is no license, the feature is considered # to be off. if 'features' not in license: return False # Return the correct feature flag. return license['features'].get(name, False) def feature_exists(name): """Return True if the requested feature is enabled, False otherwise. If the feature does not exist, raise KeyError. """ license = get_license() # Sanity check: If there is no license, the feature is considered # to be off. if 'features' not in license: return False return name in license['features']