def render_module(self, element): module_options = element.options module_url = module_options['url'] module_view = get_module_view(module_url) module_request = self.request module_request.method = 'GET' module_request.GET = { 'module_id': element.pk, 'url': module_url, 'xsd_xpath': module_options['xpath']['xsd'], 'xml_xpath': module_options['xpath']['xml'] } # if the loaded doc has data, send them to the module for initialization if module_options['data'] is not None: module_request.GET['data'] = module_options['data'] if module_options['attributes'] is not None: module_request.GET['attributes'] = module_options['attributes'] # renders the module return module_view(module_request).content.decode("utf-8")
def render_module(self, element): module_options = element.options module_url = module_options['url'] module_view = get_module_view(module_url) module_request = self.request module_request.method = 'GET' module_request.GET = { 'module_id': element.pk, 'url': module_url, 'xsd_xpath': module_options['xpath']['xsd'], 'xml_xpath': module_options['xpath']['xsd'] } # if the loaded doc has data, send them to the module for initialization if module_options['data'] is not None: module_request.GET['data'] = module_options['data'] if module_options['attributes'] is not None: module_request.GET['attributes'] = module_options['attributes'] # renders the module return module_view(module_request).content.decode("utf-8")
def render_module(self, element): module_options = element.options module_url = module_options["url"] module_view = get_module_view(module_url) module_request = self.request module_request.method = "GET" module_request.GET = { "module_id": element.pk, "url": module_url, "xsd_xpath": module_options["xpath"]["xsd"], "xml_xpath": module_options["xpath"]["xsd"], } # if the loaded doc has data, send them to the module for initialization if module_options["data"] is not None: module_request.GET["data"] = module_options["data"] if module_options["attributes"] is not None: module_request.GET["attributes"] = module_options["attributes"] # renders the module return module_view(module_request).content.decode("utf-8")
def is_module_managing_occurencies(module): request = HttpRequest() request.method = 'GET' request.GET = { 'url': module.url, 'module_id': module.id, 'managing_occurences': True } module_view = get_module_view(module.url) response = module_view(request).content.decode("utf-8") if response == 'false': return False elif response == 'true': return True else: raise ValueError("Unexpected value (expected 'true'|'false', got {})".format(response))
def load_resources_view(request): """ Load resources for a given list of modules :param request: :return: """ if not request.method == 'GET': return HttpResponse({}, status=status.HTTP_400_BAD_REQUEST) if 'urlsToLoad' not in request.GET or 'urlsLoaded' not in request.GET: return HttpResponse({}, status=status.HTTP_403_FORBIDDEN) # URLs of the modules to load mod_urls_qs = sanitize(request.GET['urlsToLoad']) mod_urls = json.loads(mod_urls_qs) # URLs of the loaded modules mod_urls_loaded_qs = sanitize(request.GET['urlsLoaded']) mod_urls_loaded = json.loads(mod_urls_loaded_qs) # Request hack to get module resources request.GET = {'resources': True} # List of resources resources = {'scripts': [], 'styles': []} # Add all resources from requested modules for url in mod_urls: module_view = get_module_view(url) mod_resources = module_view(request).content mod_resources = sanitize(mod_resources) mod_resources = json.loads(mod_resources) # Append resource to the list for key in resources.keys(): if mod_resources[key] is None: continue for resource in mod_resources[key]: if resource not in resources[key]: resources[key].append(resource) # Remove possible dependencies form already loaded modules for url in mod_urls_loaded: module_view = get_module_view(url) mod_resources = module_view(request).content mod_resources = sanitize(mod_resources) mod_resources = json.loads(mod_resources) # Remove resources already loaded for key in resources.keys(): if mod_resources[key] is None: continue for resource in mod_resources[key]: if resource in resources[key]: i = resources[key].index(resource) del resources[key][i] # Build response content response = {'scripts': "", 'styles': ""} # Aggregate scripts for script in resources['scripts']: if script.startswith('http://') or script.startswith('https://'): script_tag = '<script class="module" src="' + script + '"></script>' else: with open(script, 'r') as script_file: script_tag = '<script class="module">' + script_file.read( ) + '</script>' response['scripts'] += script_tag # Aggregate styles for style in resources['styles']: if style.startswith('http://') or style.startswith('https://'): script_tag = '<link class="module" rel="stylesheet" type="text/css" href="' + style + '"></link>' else: with open(style, 'r') as script_file: script_tag = '<style class="module">' + script_file.read( ) + '</style>' response['styles'] += script_tag # Send response return HttpResponse(json.dumps(response), status=status.HTTP_200_OK)
def load_resources_view(request): """ Load resources for a given list of modules :param request: :return: """ if not request.method == 'GET': return HttpResponse({}, status=status.HTTP_400_BAD_REQUEST) if 'urlsToLoad' not in request.GET or 'urlsLoaded' not in request.GET: return HttpResponse({}, status=status.HTTP_403_FORBIDDEN) # URLs of the modules to load mod_urls_qs = sanitize(request.GET['urlsToLoad']) mod_urls = json.loads(mod_urls_qs) # URLs of the loaded modules mod_urls_loaded_qs = sanitize(request.GET['urlsLoaded']) mod_urls_loaded = json.loads(mod_urls_loaded_qs) # Request hack to get module resources request.GET = { 'resources': True } # List of resources resources = { 'scripts': [], 'styles': [] } # loaded_resources = { # 'scripts': [], # 'styles': [] # } # Add all resources from requested modules for url in mod_urls: module_view = get_module_view(url) mod_resources = module_view(request).content mod_resources = sanitize(mod_resources) mod_resources = json.loads(mod_resources) # Append resource to the list for key in resources.keys(): if mod_resources[key] is None: continue for resource in mod_resources[key]: if resource not in resources[key]: resources[key].append(resource) # Remove possible dependencies form already loaded modules for url in mod_urls_loaded: module_view = get_module_view(url) mod_resources = module_view(request).content mod_resources = sanitize(mod_resources) mod_resources = json.loads(mod_resources) # Remove resources already loaded for key in resources.keys(): if mod_resources[key] is None: continue for resource in mod_resources[key]: if resource in resources[key]: i = resources[key].index(resource) del resources[key][i] # Build response content response = { 'scripts': "", 'styles': "" } # Aggregate scripts for script in resources['scripts']: if script.startswith('http://') or script.startswith('https://'): script_tag = '<script src="' + script + '"></script>' else: with open(script, 'r') as script_file: script_tag = '<script>' + script_file.read() + '</script>' response['scripts'] += script_tag # Aggregate styles for style in resources['styles']: if style.startswith('http://') or style.startswith('https://'): script_tag = '<link rel="stylesheet" type="text/css" href="' + style + '"></link>' else: with open(style, 'r') as script_file: script_tag = '<style>' + script_file.read() + '</style>' response['styles'] += script_tag # Send response return HttpResponse(json.dumps(response), status=status.HTTP_200_OK)