def __process_get(self, is_code, prefix): """ Respond to GET requests. When someone sends GET requests to the code then they want to browse the available code options. Same with spezialiced code. @param is_code: Indicates whether this is a request for un-specialized code. @type is_code: boolean @param prefix: The prefix for this type of request. @type prefix: string @return: HTTP return structure. @rtype: Result """ # It's the responsibility of the browser class to provide breadcrumbs if is_code: dirname = "Code" else: dirname = "Specialized" self.breadcrumbs = [ ("Home", "/"), (dirname, prefix) ] if self.request.getRequestPath() == prefix: # # Just show the home page of the code browser (list of all installed (specialized) code) # if is_code: # Data to be taken from the code data = dict() for name in get_component_names(): if name[0] not in EXCLUDE_PREFIXES: # component_info is a tuple, which contains the component class and its manifest info component = make_component(name) data[name] = { "uri" : Url(component.getCodeUri()), "desc" : component.getDesc() } """ data = dict([ (name, { "uri" : Url(component_class().getCodeUri()), "desc" : component_class().getDesc() } ) \ for (name, (component_class, component_config)) in get_code_map().items() \ if name[0] not in EXCLUDE_PREFIXES ]) """ else: # We are looking for partial resources data = listResources(partials=True) else: # Path elements (the known code prefix is stripped off) path_elems = self.request.getRequestPath()[len(prefix):].split("/")[1:] if is_code: # We are referencing actual components here component_name = path_elems[0] # This should be the name of the code element component_path = self.request.getRequestPath() else: # We are looking at a partial resource. Therefore, we need to load # that resource and then get the code URI from it. specialized_code_name = path_elems[0] specialized_code = retrieveResourceFromStorage(getResourceUri(specialized_code_name, is_partial=True), only_public=False, is_partial=True) if not specialized_code: return Result.notFound("Cannot find specialized component resource '%s'" % specialized_code_name) component_path = specialized_code["private"]["code_uri"] # Instantiate the component component = getComponentObjectFromPath(component_path) if not component: return Result.notFound("Unknown component") component_home_uri = component.getCodeUri() if is_code: self.breadcrumbs.append((component_name, component_home_uri)) else: self.breadcrumbs.append((specialized_code_name, specialized_code["public"]["uri"])) if len(path_elems) == 1: # # No sub-detail specified: We want meta info about a code segment (component) # data = component.getMetaData() # # If this is based on a specialized component then we need to overwrite some # of the component's meta data with the info from the specialized component # definition. # if not is_code: data = specializedOverwrite(data, specialized_code) data = languageStructToPython(component, data) if is_code: qs = "" cname = component_name else: qs = "?specialized=y" cname = specialized_code_name self.context_header.append(("[ Create resource ]", settings.PREFIX_RESOURCE+"/_createResourceForm/form/"+cname+qs, "")) #, "target=_blank")) else: # # Some sub-detail of the requested component was requested # sub_name = path_elems[1] if sub_name == "doc": data = component.getDocs() self.breadcrumbs.append(("Doc", component_home_uri + "/doc")) else: return Result.notFound("Unknown code detail") return Result.ok(data)
opts, args = getopt.getopt(sys.argv[1:], "hl:P:p:r:", ["help", "logfile=", "port=", "pidfile=", "rootdir="]) except getopt.GetoptError, err: # print help information and exit: print str(err) # will print something like "option -a not recognized" print_help() sys.exit(1) port = settings.LISTEN_PORT for o, a in opts: if o in ("-p", "--pidfile"): # Writing our process ID pid = os.getpid() f = open(a, "w") f.write(str(pid)) f.close() elif o in ("-h", "--help"): print_help() sys.exit(0) elif o in ("-P", "--port"): port = int(a) elif o in ("-r", "--rootdir"): rootdir = str(a) settings.set_root_dir(rootdir) elif o in ("-l", "--logfile"): logger.set_logfile(a) get_component_names() # Do the import of all components to get it out of the way my_server = HttpServer(port, RequestDispatcher())