def get_plugin_representation_from_store_by_url(url, timeout=30):
     """
     Get a plugin app representation from the ChRIS store given the url of the plugin.
     """
     store_url = settings.CHRIS_STORE_URL
     store_client = StoreClient(store_url, None, None, timeout)
     result = store_client.get_data_from_collection(store_client.get(url))
     if result['data']:
         plg = result['data'][0]
     else:
         raise NameError("Could not find plugin with url '%s'" % url)
     plg['parameters'] = PluginManager.get_plugin_parameters_from_store(
         plg['id'], timeout)
     return plg
    def get_plugin_representation_from_store_by_url(url, timeout=30):
        """
        Get a plugin app representation from the ChRIS store given the url of the plugin.
        """
        store_url = settings.CHRIS_STORE_URL
        store_client = StoreClient(store_url, None, None, timeout)
        res = store_client.get(url)
        result = store_client.get_data_from_collection(res)

        if not result['data']:
            raise NameError(f"Could not find plugin with url '{url}'")

        plg = result['data'][0]
        parameters_url = res.items[0].links.get(rel='parameters').href
        plg['parameters'] = PluginManager.get_plugin_parameters_from_url(
            parameters_url, timeout)
        return plg
 def get_plugin_parameters_from_url(parameters_url, timeout=30):
     """
     Get a plugin's parameters representation from a ChRIS store by URL.
     """
     store_url = settings.CHRIS_STORE_URL
     store_client = StoreClient(store_url, None, None, timeout)
     parameters = []
     offset = 0
     limit = 50
     while True:
         res = store_client.get(parameters_url, {
             'limit': limit,
             'offset': offset
         })
         result = store_client.get_data_from_collection(res)
         parameters.extend(result['data'])
         offset += limit
         if not result['hasNextPage']: break
     return parameters