예제 #1
0
 def error(self, code, message = None):
     self.response.set_status(code, str(message))
     if message is None: message = Response.http_status_message(code)
     self.view['message'] = message
     self.view['code'] = code
     self.render_view('system/error.html')
     raise PageError, (code, message)
예제 #2
0
def parsefunctiondoc(docstring):
    global types

    # create an ordered dictionary to hold information from the docstring
    docdict = collections.OrderedDict()

    # no docstring given
    if (docstring == None):
        docdict[ "Description" ] = "Unspecified"
        docdict[ "Arguments" ] = "Unspecified"
        docdict[ "Bindings" ] = "Unspecified"
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict

    # split the docstring into lines and obtain the number of lines
    docstring = docstring.split("\n")
    docsize = len(docstring)

    # one-line docstring
    if (docsize == 1):
        docdict[ "Description" ] = docstring[0].strip()
        docdict[ "Arguments" ] = "Unspecified"
        docdict[ "Bindings" ] = "Unspecified"
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict

    # obtain information about description
    docsize = docsize - 1
    description = ""
    i = 0
    while(i<docsize and (not (docstring[i].strip()).startswith("Args"))):
        description = description + str(docstring[i].strip()) + " "
        i = i + 1
    if (description.strip() == ""):
        docdict[ "Description" ] = "Unspecified"
    else:
        docdict[ "Description" ] = description.strip()
    if (i == docsize):
        docdict[ "Arguments" ] = "Unspecified"
        docdict[ "Bindings" ] = "Unspecified"
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict

    # obtain information about argument(s), including queries
    arguments = []
    i = i + 1
    while(i<docsize):
        argline = docstring[i].split(":")
        if (len(argline) == 1):
            break
        elif (len(argline) == 2):
            argtype = argline[1].strip()
            if (argtype == ""):
                argtype = "Unspecified"
            argdes = "Unspecified"
        else:
            argtype = argline[1].strip()
            argdes = argline[2].strip()
            if (argdes == ""):
                argdes = "Unspecified"
        argdict = collections.OrderedDict()
        argdict[ "Name" ] = argline[0].strip()
        argdict[ "Description" ] = argdes
        argdict[ "Type" ] = argtype

        if (argdict[ "Type" ] not in types):
            types.append(argdict[ "Type" ])

        arguments.append(argdict)
        i = i + 1
    if (arguments == []):
        docdict[ "Arguments" ] = "Unspecified"
    else:
        docdict[ "Arguments" ] = arguments
    if (i == docsize):
        docdict[ "Bindings" ] = "Unspecified"
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict

    # obtain information about bindings
    while(i<docsize and (not (docstring[i].strip()).startswith("Bindings"))):
        description = description + str(docstring[i].strip()) + " "
        i = i + 1
    if (i == docsize):
        docdict[ "Bindings" ] = "Unspecified"
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict
    bindings = []
    i = i + 1
    while(i<docsize):
        bindline = docstring[i].split(":")
        if (len(bindline) == 1):
            break
        elif (len(bindline) == 2):
            bindtype = bindline[1].strip()
            if (bindtype == ""):
                bindtype = "Unspecified"
                binddes = "Unspecified"
                bindmode = "Unspecified"
        elif (len(bindline) == 3):
            binddes = bindline[2].strip()
            if (binddes == ""):
                binddes = "Unspecified"
                bindmode = "Unspecified"
        else:
            bindtype = bindline[1].strip()
            binddes = bindline[2].strip()
            bindmode = bindline[3].strip()
            if (bindmode == ""):
                bindmode = "Unspecified"
        binddict = collections.OrderedDict()
        binddict[ "ID" ] = bindline[0].strip() + "Binding"
        binddict[ "Mode" ] = bindmode
        binddict[ "Name" ] = bindline[0].strip()
        binddict[ "Description" ] = binddes
        binddict[ "Type" ] = bindtype

        if (binddict[ "Type" ] not in types):
            types.append(binddict[ "Type" ])

        bindings.append(binddict)
        i = i + 1
    if (bindings == []):
        docdict[ "Bindings" ] = "Unspecified"
    else:
        docdict[ "Bindings" ] = bindings
    if (i == docsize):
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict
    while(i<docsize and (not (docstring[i].strip()).startswith("Returns"))):
        i = i+1
    if (i == docsize):
        docdict[ "Returns" ] = "Unspecified"
        docdict[ "Errors" ] = "Unspecified"
        return docdict

    # obtain information about return type
    returns = []
    i = i + 1
    while(i<docsize):
        retline = docstring[i].split(":")
        if (len(retline) == 1):
            break
        else:
            rettype = retline[1].strip()
            retdes = retline[2].strip()
            if (retdes == ""):
                retdes = "Unspecified"
        retdict = collections.OrderedDict()
        retdict[ "Name" ] = retline[0].strip()
        retdict[ "Description" ] = retdes
        retdict[ "Type" ] = rettype

        if (retdict[ "Type" ] not in types):
            types.append(retdict[ "Type" ])

        returns.append(retdict)
        i = i + 1
    if (returns == []):
        docdict[ "Returns" ] = "Unspecified"
    else:
        docdict[ "Returns" ] = returns
    if (i == docsize):
        docdict[ "Errors" ] = "Unspecified"
        return docdict
    while(i<docsize and (not (docstring[i].strip()).startswith("Exceptions"))):
        i = i+1
    if (i == docsize):
        docdict[ "Errors" ] = "Unspecified"
        return docdict

    # obtain information about errors, if given
    errors = []
    i = i + 1
    while(i<docsize):
        errdict = collections.OrderedDict()
        errline = docstring[i].split(":")
        if (errline[0].strip() == ''):
            break
        if (len(errline) == 1):
            errline = errline[0].strip()
            errdict[ "Status" ] = errline
            errdict[ "Cause" ] = Response.http_status_message(int(errline))
        else:
            errdict[ "Status" ] = errline[0].strip()
            errdict[ "Cause" ] = errline[1].strip()
        if (errdict[ "Cause" ] == ""):
            errdict[ "Cause" ] = Response.http_status_message(int(errdict[ "Status" ]))
        errors.append(errdict)
        i = i + 1
    docdict[ "Errors" ] = errors

    return docdict
def parsefunctiondoc(docstring):
    global types

    # create an ordered dictionary to hold information from the docstring
    docdict = collections.OrderedDict()

    # no docstring given
    if (docstring == None):
        docdict["Description"] = "Unspecified"
        docdict["Arguments"] = "Unspecified"
        docdict["Bindings"] = "Unspecified"
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict

    # split the docstring into lines and obtain the number of lines
    docstring = docstring.split("\n")
    docsize = len(docstring)

    # one-line docstring
    if (docsize == 1):
        docdict["Description"] = docstring[0].strip()
        docdict["Arguments"] = "Unspecified"
        docdict["Bindings"] = "Unspecified"
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict

    # obtain information about description
    docsize = docsize - 1
    description = ""
    i = 0
    while (i < docsize and (not (docstring[i].strip()).startswith("Args"))):
        description = description + str(docstring[i].strip()) + " "
        i = i + 1
    if (description.strip() == ""):
        docdict["Description"] = "Unspecified"
    else:
        docdict["Description"] = description.strip()
    if (i == docsize):
        docdict["Arguments"] = "Unspecified"
        docdict["Bindings"] = "Unspecified"
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict

    # obtain information about argument(s), including queries
    arguments = []
    i = i + 1
    while (i < docsize):
        argline = docstring[i].split(":")
        if (len(argline) == 1):
            break
        elif (len(argline) == 2):
            argtype = argline[1].strip()
            if (argtype == ""):
                argtype = "Unspecified"
            argdes = "Unspecified"
        else:
            argtype = argline[1].strip()
            argdes = argline[2].strip()
            if (argdes == ""):
                argdes = "Unspecified"
        argdict = collections.OrderedDict()
        argdict["Name"] = argline[0].strip()
        argdict["Description"] = argdes
        argdict["Type"] = argtype

        if (argdict["Type"] not in types):
            types.append(argdict["Type"])

        arguments.append(argdict)
        i = i + 1
    if (arguments == []):
        docdict["Arguments"] = "Unspecified"
    else:
        docdict["Arguments"] = arguments
    if (i == docsize):
        docdict["Bindings"] = "Unspecified"
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict

    # obtain information about bindings
    while (i < docsize
           and (not (docstring[i].strip()).startswith("Bindings"))):
        description = description + str(docstring[i].strip()) + " "
        i = i + 1
    if (i == docsize):
        docdict["Bindings"] = "Unspecified"
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict
    bindings = []
    i = i + 1
    while (i < docsize):
        bindline = docstring[i].split(":")
        if (len(bindline) == 1):
            break
        elif (len(bindline) == 2):
            bindtype = bindline[1].strip()
            if (bindtype == ""):
                bindtype = "Unspecified"
                binddes = "Unspecified"
                bindmode = "Unspecified"
        elif (len(bindline) == 3):
            binddes = bindline[2].strip()
            if (binddes == ""):
                binddes = "Unspecified"
                bindmode = "Unspecified"
        else:
            bindtype = bindline[1].strip()
            binddes = bindline[2].strip()
            bindmode = bindline[3].strip()
            if (bindmode == ""):
                bindmode = "Unspecified"
        binddict = collections.OrderedDict()
        binddict["ID"] = bindline[0].strip() + "Binding"
        binddict["Mode"] = bindmode
        binddict["Name"] = bindline[0].strip()
        binddict["Description"] = binddes
        binddict["Type"] = bindtype

        if (binddict["Type"] not in types):
            types.append(binddict["Type"])

        bindings.append(binddict)
        i = i + 1
    if (bindings == []):
        docdict["Bindings"] = "Unspecified"
    else:
        docdict["Bindings"] = bindings
    if (i == docsize):
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict
    while (i < docsize and (not (docstring[i].strip()).startswith("Returns"))):
        i = i + 1
    if (i == docsize):
        docdict["Returns"] = "Unspecified"
        docdict["Errors"] = "Unspecified"
        return docdict

    # obtain information about return type
    returns = []
    i = i + 1
    while (i < docsize):
        retline = docstring[i].split(":")
        if (len(retline) == 1):
            break
        else:
            rettype = retline[1].strip()
            retdes = retline[2].strip()
            if (retdes == ""):
                retdes = "Unspecified"
        retdict = collections.OrderedDict()
        retdict["Name"] = retline[0].strip()
        retdict["Description"] = retdes
        retdict["Type"] = rettype

        if (retdict["Type"] not in types):
            types.append(retdict["Type"])

        returns.append(retdict)
        i = i + 1
    if (returns == []):
        docdict["Returns"] = "Unspecified"
    else:
        docdict["Returns"] = returns
    if (i == docsize):
        docdict["Errors"] = "Unspecified"
        return docdict
    while (i < docsize
           and (not (docstring[i].strip()).startswith("Exceptions"))):
        i = i + 1
    if (i == docsize):
        docdict["Errors"] = "Unspecified"
        return docdict

    # obtain information about errors, if given
    errors = []
    i = i + 1
    while (i < docsize):
        errdict = collections.OrderedDict()
        errline = docstring[i].split(":")
        if (errline[0].strip() == ''):
            break
        if (len(errline) == 1):
            errline = errline[0].strip()
            errdict["Status"] = errline
            errdict["Cause"] = Response.http_status_message(int(errline))
        else:
            errdict["Status"] = errline[0].strip()
            errdict["Cause"] = errline[1].strip()
        if (errdict["Cause"] == ""):
            errdict["Cause"] = Response.http_status_message(
                int(errdict["Status"]))
        errors.append(errdict)
        i = i + 1
    docdict["Errors"] = errors

    return docdict
예제 #4
0
 def error(self, code, message=None):
     self.response.set_status(code, str(message))
     if message is None: message = Response.http_status_message(code)
     self.view['message'] = message
     self.view['code'] = code
     self.render_view('system/error.html')
예제 #5
0
 def notfound(self, code, message = None):
     self.response.set_status(code, str(message))
     if message is None: message = Response.http_status_message(code)
     self.view['message'] = message
     self.view['code'] = code
     self.render_view('system/notfound.html')