예제 #1
0
def macro_StackHeader(macro, arg1, arg2=None):
    stack_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if " " in stack_name:
        # something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(" ")
        if len(splits) > 2:
            return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"
        stack_name, lang = splits
    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"

    if not opt_distro:
        headers_html = []
        for distro in distro_names:
            if distro in ["boxturtle", "cturtle", "diamondback"]:
                stack_header_html = generate_old_stack_header(macro, stack_name, distro)
            else:
                stack_header_html = generate_package_header(macro, stack_name, distro)
            headers_html.append('<div class="version %s">' % distro + stack_header_html + "</div>")

        html = "\n".join([distro_html(distro, distro_names) for distro in distro_names])
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ["boxturtle", "cturtle", "diamondback"]:
            return generate_old_stack_header(macro, stack_name, opt_distro)
        else:
            return generate_package_header(macro, stack_name, opt_distro)
예제 #2
0
def macro_PackageHeader(macro, arg1, arg2=None):
    package_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if not opt_distro:
        headers_html = []
        loaded_distros = get_loaded_distros(package_name, distro_names)
        for distro in distro_names:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                pkg_header_html = generate_old_package_header(
                    macro, package_name, distro)
            else:
                pkg_header_html = generate_package_header(
                    macro, package_name, distro)
            headers_html.append('<div class="version %s">' % distro +
                                pkg_header_html + '</div>')

        html = "\n".join([
            distro_html(distro, loaded_distros) for distro in distro_names
        ]) + doc_html(distro_names, package_name)
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_package_header(macro, package_name, opt_distro)
        else:
            return generate_package_header(macro, package_name, opt_distro)
예제 #3
0
def macro_StackHeader(macro, arg1, arg2=None):
    stack_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if ' ' in stack_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(' ')
        if len(splits) > 2:
            return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"
        stack_name, lang = splits
    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"

    if not opt_distro:
        headers_html = []
        loaded_distros = get_loaded_distros(stack_name, distro_names)
        for distro in distro_names:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                stack_header_html = generate_old_stack_header(macro, stack_name, distro)
            else:
                stack_header_html = generate_package_header(macro, stack_name, distro)
            headers_html.append('<div class="version %s">' % distro + stack_header_html + '</div>')

        html = "\n".join([distro_html(distro, loaded_distros) for distro in distro_names]) + doc_html(distro_names, stack_name)
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_stack_header(macro, stack_name, opt_distro)
        else:
            return generate_package_header(macro, stack_name, opt_distro)
예제 #4
0
파일: StackHeader.py 프로젝트: hrnr/roswiki
def macro_StackHeader(macro, arg1, arg2=None):
    stack_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if ' ' in stack_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(' ')
        if len(splits) > 2:
            return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"
        stack_name, lang = splits
    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"

    if not opt_distro:
        headers_html = []
        loaded_distros = get_loaded_distros(stack_name, distro_names)
        for distro in distro_names:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                stack_header_html = generate_old_stack_header(macro, stack_name, distro)
            else:
                stack_header_html = generate_package_header(macro, stack_name, distro)
            headers_html.append('<div class="version %s">' % distro + stack_header_html + '</div>')

        html = '<span id="rosversion_selector" class="btn-group">\n'
        html += "\n".join([distro_html(distro, loaded_distros) for distro in distro_names])
        html += '\n</span>'
        html += doc_html(distro_names, stack_name)
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_stack_header(macro, stack_name, opt_distro)
        else:
            return generate_package_header(macro, stack_name, opt_distro)
예제 #5
0
def macro_PackageMetrics(macro, arg1, arg2='ja'):
    stack_name = get_unicode(macro.request, arg1)
    lang = get_unicode(macro.request, arg2)
    if ' ' in stack_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(' ')
        if len(splits) > 2:
            return "ERROR in StackCodeQuality. Usage: [[StackHeader(stack_name opt_lang)]]"
        stack_name, lang = splits
    if not stack_name:
        return "ERROR in StackCodeQuality. Usage: [[StackCodeQuality(stack_name opt_lang)]]"
    

    f = macro.formatter
    p, div, li, ul = f.paragraph, f.div, f.listitem, f.bullet_list
    h, text, rawHTML = f.heading, f.text, f.rawHTML
    desc = ''


    # Common Information
    try:
        data = load_stack_code_quality(stack_name, lang)
    except UtilException, e:
        name = stack_name
        return e
예제 #6
0
def macro_StackMetrics(macro, arg1, arg2='groovy', arg3='ja'):
    stack_name = get_unicode(macro.request, arg1)
    rosdistro = get_unicode(macro.request, arg2)
    lang = get_unicode(macro.request, arg3)
    if ' ' in stack_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(' ')
        if len(splits) > 3:
            return "ERROR in StackCodeQuality. Usage: [[StackHeader(stack_name opt_rosdistro opt_lang)]]"
        elif len(splits) == 3:
            stack_name, rosdistro, lang = splits
        elif len(splits) == 2:
            stack_name, rosdistro = splits
    if not stack_name:
        return "ERROR in StackCodeQuality. Usage: [[StackCodeQuality(stack_name opt_rosdistro opt_lang)]]"

    f = macro.formatter
    p, div, li, ul = f.paragraph, f.div, f.listitem, f.bullet_list
    h, text, rawHTML = f.heading, f.text, f.rawHTML
    desc = ''

    # Common Information
    try:
        data = load_stack_code_quality(stack_name, rosdistro, lang)
    except UtilException, e:
        name = stack_name
        return str(e)
예제 #7
0
def macro_StackHeader(macro, arg1, arg2=None):
    stack_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if ' ' in stack_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(' ')
        if len(splits) > 2:
            return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"
        stack_name, lang = splits
    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name opt_lang)]]"

    if not opt_distro:
        headers_html = []
        loaded_distros = get_loaded_distros(stack_name, distro_names_buildfarm)
        loaded_distros_eol = [
            distro for distro in loaded_distros if distro in distro_names_eol
        ]
        loaded_distros_buildfarm = [
            distro for distro in loaded_distros
            if distro in distro_names_buildfarm
        ]
        for distro in loaded_distros:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                stack_header_html = generate_old_stack_header(
                    macro, stack_name, distro)
            else:
                stack_header_html = generate_package_header(
                    macro, stack_name, distro)
            headers_html.append('<div class="version %s">' % distro +
                                stack_header_html + '</div>')

        html = ''
        if loaded_distros_buildfarm:
            if loaded_distros_eol:
                html += distro_selector_with_eol_toggle_html(
                    distros_displayed_by_default=loaded_distros_buildfarm,
                    distros_hidden_by_default=loaded_distros_eol,
                )
            else:
                # Only active distros available: don't show EOL toggle.
                html += distro_selector_html(
                    distros_displayed=loaded_distros_buildfarm, )
        else:
            if loaded_distros_eol:
                # Only EOL distros available: don't show EOL toggle.
                html += ('<span style="text-align:left">'
                         '<i>Only released in EOL distros:</i>'
                         '&nbsp;&nbsp;'
                         '</span>')
                html += distro_selector_html(
                    distros_displayed=loaded_distros_eol, )
        html += doc_html(loaded_distros, stack_name)
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_stack_header(macro, stack_name, opt_distro)
        else:
            return generate_package_header(macro, stack_name, opt_distro)
예제 #8
0
파일: __init__.py 프로젝트: steveyen/moingo
 def macro_GetVal(self, page=None, key=None):
     page = wikiutil.get_unicode(self.request, page, 'page')
     if not self.request.user.may.read(page):
         raise ValueError("You don't have enough rights on this page")
     key = wikiutil.get_unicode(self.request, key, 'key')
     if page is None or key is None:
         raise ValueError("You need to give: pagename, key")
     d = self.request.dicts.dict(page)
     result = d.get(key, '')
     return self.formatter.text(result)
예제 #9
0
def macro_PackageHeader2(macro, arg1, arg2='en'):
    package_name = get_unicode(macro.request, arg1)
    lang = get_unicode(macro.request, arg2)
    if not package_name:
        return "ERROR in PackageHeader. Usage: [[PackageHeader(package_name opt_lang)]]"    

    try:
        data = load_package_manifest(package_name, lang)
    except UtilException, e:
        name = package_name
        return CONTRIBUTE_TMPL%locals()
예제 #10
0
def macro_PackageHeader(macro, arg1, arg2=None):
    package_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if not opt_distro:
        headers_html = []
        loaded_distros = get_loaded_distros(package_name, distro_names)
        loaded_distros_eol = [
            distro for distro in loaded_distros if distro in distro_names_eol
        ]
        loaded_distros_buildfarm = [
            distro for distro in loaded_distros
            if distro in distro_names_buildfarm
        ]
        for distro in loaded_distros:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                pkg_header_html = generate_old_package_header(
                    macro, package_name, distro)
            else:
                pkg_header_html = generate_package_header(
                    macro, package_name, distro)
            headers_html.append('<div class="version %s">' % distro +
                                pkg_header_html + '</div>')

        html = ''
        if loaded_distros_buildfarm:
            if loaded_distros_eol:
                html += distro_selector_with_eol_toggle_html(
                    distros_displayed_by_default=loaded_distros_buildfarm,
                    distros_hidden_by_default=loaded_distros_eol,
                )
            else:
                # Only active distros available: don't show EOL toggle.
                html += distro_selector_html(
                    distros_displayed=loaded_distros_buildfarm, )
        else:
            if loaded_distros_eol:
                # Only EOL distros available: don't show EOL toggle.
                html += ('<span style="text-align:left">'
                         '<i>Only released in EOL distros:</i>'
                         '&nbsp;&nbsp;'
                         '</span>')
                html += distro_selector_html(
                    distros_displayed=loaded_distros_eol, )
        html += doc_html(loaded_distros, package_name)
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_package_header(macro, package_name, opt_distro)
        else:
            return generate_package_header(macro, package_name, opt_distro)
예제 #11
0
def execute(macro, args):
    _ = macro._
    case = 0

    # If called with empty or no argument, default to regex search for .+, the full page list.
    needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+')

    # With whitespace argument, return same error message as FullSearch
    if not needle.strip():
        err = _(
            'Please use a more selective search term instead of {{{"%s"}}}',
            wiki=True) % needle
        return '<span class="error">%s</span>' % err

    # Return a title search for needle, sorted by name.
    try:
        results = search.searchPages(macro.request,
                                     needle,
                                     titlesearch=1,
                                     case=case,
                                     sort='page_name')
        ret = results.pageList(macro.request, macro.formatter, paging=False)
    except ValueError:
        # same error as in MoinMoin/action/fullsearch.py, keep it that way!
        ret = ''.join([
            macro.formatter.text('<<PageList('),
            _(
                'Your search query {{{"%s"}}} is invalid. Please refer to '
                'HelpOnSearching for more information.',
                wiki=True,
                percent=True) % wikiutil.escape(needle),
            macro.formatter.text(')>>')
        ])
    return ret
예제 #12
0
def execute(macro, args):
    _ = macro._
    case = 0

    # If called with empty or no argument, default to regex search for .+, the full page list.
    needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+')

    # With whitespace argument, return same error message as FullSearch
    if not needle.strip():
        err = _('Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle
        return '<span class="error">%s</span>' % err

    needle = needle.strip()

    # Return a title search for needle, sorted by name.
    try:
        results = search.searchPages(macro.request, needle,
                                     titlesearch=1, case=case,
                                     sort='page_name')
        fmt = macro.formatter.__class__(macro.request, is_included=True)
        fmt._base_depth = macro.formatter._base_depth
        ret = results.pageList(macro.request, fmt, paging=False,excluded=macro.formatter.page.getPageLinks(macro.request))
    except ValueError:
        # same error as in MoinMoin/action/fullsearch.py, keep it that way!
        ret = ''.join([macro.formatter.text('<<PageList('),
                      _('Your search query {{{"%s"}}} is invalid. Please refer to '
                        'HelpOnSearching for more information.', wiki=True,
                        percent=True) % wikiutil.escape(needle),
                      macro.formatter.text(')>>')])
    return ret
예제 #13
0
파일: PageList.py 프로젝트: sleyzerzon/soar
def execute(macro, args):
    _ = macro._
    case = 0

    # If called with empty or no argument, default to regex search for .+, the full page list.
    needle = wikiutil.get_unicode(macro.request, args, "needle", u"regex:.+")

    # With whitespace argument, return same error message as FullSearch
    if not needle.strip():
        err = _('Please use a more selective search term instead of {{{"%s"}}}', wiki=True) % needle
        return '<span class="error">%s</span>' % err

    # Return a title search for needle, sorted by name.
    try:
        results = search.searchPages(macro.request, needle, titlesearch=1, case=case, sort="page_name")
        ret = results.pageList(macro.request, macro.formatter, paging=False)
    except ValueError:
        # same error as in MoinMoin/action/fullsearch.py, keep it that way!
        ret = "".join(
            [
                macro.formatter.text("<<PageList("),
                _(
                    'Your search query {{{"%s"}}} is invalid. Please refer to ' "HelpOnSearching for more information.",
                    wiki=True,
                    percent=True,
                )
                % wikiutil.escape(needle),
                macro.formatter.text(")>>"),
            ]
        )
    return ret
예제 #14
0
def macro_TestHeader(macro, arg1):
    package_name = get_unicode(macro.request, arg1)

    h = macro.formatter.heading
    text = macro.formatter.text

    return h(1, 2, id="test") + text("Is this thing on?") + h(0, 2)
예제 #15
0
def macro_DisqusThread(macro, username='******'):
    username = get_unicode(macro.request, username)
    username = re.sub(r'<[^>]*?>', '',  username) # dirty solution from http://stackoverflow.com/questions/2295942/pythons-equivalent-to-phps-strip-tags
    try:
        return macro.formatter.rawHTML(embed_code % ({'username': username}))
    except: 
        return macro.formatter.escapedText('Error inserting Disqus code')
예제 #16
0
    def macro_GetVal(self, page=None, key=None):
        page = wikiutil.get_unicode(self.request, page, 'page')

        key = wikiutil.get_unicode(self.request, key, 'key')
        if page is None or key is None:
            raise ValueError("You need to give: pagename, key")

        d = self.request.dicts.get(page, {})

        # Check acl only if dictionary is defined on a wiki page.
        if isinstance(d, WikiDict) and not self.request.user.may.read(page):
            raise ValueError("You don't have enough rights on this page")

        result = d.get(key, '')

        return self.formatter.text(result)
예제 #17
0
def macro_TestHeader(macro, arg1):
  package_name = get_unicode(macro.request, arg1)

  h = macro.formatter.heading
  text = macro.formatter.text

  return h(1, 2, id="test")+text('Is this thing on?')+h(0,2)
예제 #18
0
    def macro_GetVal(self, page=None, key=None):
        page = wikiutil.get_unicode(self.request, page, "page")

        key = wikiutil.get_unicode(self.request, key, "key")
        if page is None or key is None:
            raise ValueError("You need to give: pagename, key")

        d = self.request.dicts.get(page, {})

        # Check acl only if dictionary is defined on a wiki page.
        if isinstance(d, WikiDict) and not self.request.user.may.read(page):
            raise ValueError("You don't have enough rights on this page")

        result = d.get(key, "")

        return self.formatter.text(result)
예제 #19
0
파일: CustomTag.py 프로젝트: happytk/moin
def getPageListFromSearch (request,args):
    # If called with empty or no argument, default to regex search for .+, the full page list.
    needle = wikiutil.get_unicode(request, args, 'needle', u'regex:.+')

    # With whitespace argument, return same error message as FullSearch
    #if not needle.strip():
    #    err = 'Please use a more selective search term instead of {{{"%s"}}}' % needle
    #    return '<span class="error">%s</span>' % err

    # Return a title search for needle, sorted by name.
    try:
        results = search.searchPages(request, needle,
                                     titlesearch=1, case=0,
                                     sort='page_name')
        pages = results.hits#pageList(macro.request, macro.formatter, paging=False)
        pages = map(lambda x:x.page_name, pages)
    except ValueError:
        # same error as in MoinMoin/action/fullsearch.py, keep it that way!
        """
        ret = ''.join([macro.formatter.text('<<PageList('),
                      _('Your search query {{{"%s"}}} is invalid. Please refer to '
                        'HelpOnSearching for more information.', wiki=True,
                        percent=True) % wikiutil.escape(needle),
                      macro.formatter.text(')>>')])
        """
        pages = []
    return pages
예제 #20
0
def macro_PackageHeader(macro, arg1, arg2=None):
    package_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if not package_name:
        return "ERROR in PackageHeader. Usage: [[PackageHeader(package_name opt_distro)]]"    
    if ' ' in package_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = package_name.split(' ')
        if len(splits) > 2:
            return "ERROR in PackageHeader. Usage: [[PackageHeader(pkg_name opt_distro)]]"
        package_name, distro = splits

    try:
        data = load_package_manifest(package_name, opt_distro)
    except UtilException, e:
        name = package_name
        return CONTRIBUTE_TMPL%locals()
예제 #21
0
def macro_PackageHeader(macro, arg1, arg2=None):
    package_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if not package_name:
        return "ERROR in PackageHeader. Usage: [[PackageHeader(package_name opt_distro)]]"
    if ' ' in package_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = package_name.split(' ')
        if len(splits) > 2:
            return "ERROR in PackageHeader. Usage: [[PackageHeader(pkg_name opt_distro)]]"
        package_name, distro = splits

    try:
        data = load_package_manifest(package_name, opt_distro)
    except UtilException, e:
        name = package_name
        return CONTRIBUTE_TMPL % locals()
예제 #22
0
def macro_RepoHeader(macro, arg1):
    repo_name = get_unicode(macro.request, arg1)
    if not repo_name:
        return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name)]]"
    try:
        repo_data = load_repo_manifest(repo_name)
    except UtilException, e:
        return str(e)
예제 #23
0
def macro_RepoHeader(macro, arg1):
    repo_name = get_unicode(macro.request, arg1)
    if not repo_name:
        return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name)]]"
    try:
        repo_data = load_repo_manifest(repo_name)
    except UtilException, e:
        return str(e)
예제 #24
0
def macro_StackCodeQuality(macro, arg1, arg2='ja'):
    stack_name = get_unicode(macro.request, arg1)
    lang = get_unicode(macro.request, arg2)
    if ' ' in stack_name:
        #something changed in the API such that the above arg1, arg2 passing no longer works
        splits = stack_name.split(' ')
        if len(splits) > 2:
            return "ERROR in StackCodeQuality. Usage: [[StackHeader(stack_name opt_lang)]]"
        stack_name, lang = splits
    if not stack_name:
        return "ERROR in StackCodeQuality. Usage: [[StackCodeQuality(stack_name opt_lang)]]"

    try:
        data = load_stack_code_quality(stack_name, lang)
    except UtilException, e:
        name = stack_name
        return e
예제 #25
0
def execute(macro, args):
    _ = macro._
    case = 0

    # If called with empty or no argument, default to regex search for .+, the full page list.
    needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+')

    return fs_execute(macro, needle, titlesearch=True, case=case)
예제 #26
0
def execute(macro, args):
    _ = macro._
    case = 0

    # If called with empty or no argument, default to regex search for .+, the full page list.
    needle = wikiutil.get_unicode(macro.request, args, 'needle', u'regex:.+')

    return fs_execute(macro, needle, titlesearch=True, case=case)
def parseargs(request, args, defpagename, defyear, defmonth, defoffset, defoffset2, defheight6, defanniversary, deftemplate):
    """ parse macro arguments """
    args = wikiutil.parse_quoted_separated(args, name_value=False)
    args += [None] * 8 # fill up with None to trigger defaults
    parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate = args[:8]
    parmpagename = wikiutil.get_unicode(request, parmpagename, 'pagename', defpagename)
    parmyear = wikiutil.get_int(request, parmyear, 'year', defyear)
    parmmonth = wikiutil.get_int(request, parmmonth, 'month', defmonth)
    parmoffset = wikiutil.get_int(request, parmoffset, 'offset', defoffset)
    parmoffset2 = wikiutil.get_int(request, parmoffset2, 'offset2', defoffset2)
    parmheight6 = wikiutil.get_bool(request, parmheight6, 'height6', defheight6)
    parmanniversary = wikiutil.get_bool(request, parmanniversary, 'anniversary', defanniversary)
    parmtemplate = wikiutil.get_unicode(request, parmtemplate, 'template', deftemplate)

    # multiple pagenames separated by "*" - split into list of pagenames
    parmpagename = re.split(r'\*', parmpagename)

    return parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate
예제 #28
0
def macro_PackageHeader(macro, arg1, arg2=None):
    package_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if not opt_distro:
        headers_html = []
        for distro in distro_names:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                pkg_header_html = generate_old_package_header(macro, package_name, distro)
            else:
                pkg_header_html = generate_package_header(macro, package_name, distro)
            headers_html.append('<div class="version %s">' % distro + pkg_header_html + '</div>')

        html = "\n".join([distro_html(distro, distro_names) for distro in distro_names])
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_package_header(macro, package_name, opt_distro)
        else:
            return generate_package_header(macro, package_name, opt_distro)
예제 #29
0
def macro_StackReleases(macro, arg1):
  stack_name = get_unicode(macro.request, arg1)
  if not stack_name:
    return "ERROR in StackReleases. Usage: [[StackReleases(stack_name)]]"
  if '/Releases' in stack_name:
    stack_name = stack_name[:-len('/Releases')]
  try:
    data = load_stack_manifest(stack_name)
  except UtilException, e:
    return str(e)
예제 #30
0
def macro_StackReleases(macro, arg1):
    stack_name = get_unicode(macro.request, arg1)
    if not stack_name:
        return "ERROR in StackReleases. Usage: [[StackReleases(stack_name)]]"
    if '/Releases' in stack_name:
        stack_name = stack_name[:-len('/Releases')]
    try:
        data = load_stack_manifest(stack_name)
    except UtilException, e:
        return str(e)
예제 #31
0
def macro_PackageHeader(macro, arg1, arg2=None):
    package_name = get_unicode(macro.request, arg1)
    opt_distro = get_unicode(macro.request, arg2)
    if not opt_distro:
        headers_html = []
        loaded_distros = get_loaded_distros(package_name, distro_names)
        for distro in distro_names:
            if distro in ['boxturtle', 'cturtle', 'diamondback']:
                pkg_header_html = generate_old_package_header(macro, package_name, distro)
            else:
                pkg_header_html = generate_package_header(macro, package_name, distro)
            headers_html.append('<div class="version %s">' % distro + pkg_header_html + '</div>')

        html = '<span id="rosversion_selector" class="btn-group">\n'
        html += "\n".join([distro_html(distro, loaded_distros) for distro in distro_names])
        html += '\n</span>'
        html += doc_html(distro_names, package_name)
        return macro.formatter.rawHTML(html + "\n".join(headers_html))
    else:
        if opt_distro in ['boxturtle', 'cturtle', 'diamondback']:
            return generate_old_package_header(macro, package_name, opt_distro)
        else:
            return generate_package_header(macro, package_name, opt_distro)
예제 #32
0
    def testGetUnicode(self):
        tests = [
            # default testing for None value
            (None, None, None, None),
            (None, None, u'', u''),
            (None, None, u'abc', u'abc'),

            # some real values
            (u'', None, None, u''),
            (u'abc', None, None, u'abc'),
            (u'"abc"', None, None, u'"abc"'),
        ]
        for arg, name, default, expected in tests:
            assert wikiutil.get_unicode(self.request, arg, name, default) == expected
예제 #33
0
파일: StackNavi.py 프로젝트: 130s/roswiki
def macro_StackNavi(macro, arg1):
  stack_name = get_unicode(macro.request, arg1)

  try:
    import yaml
  except:
    return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

  if not stack_name:
    return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]"    
  
  try:
    data = load_stack_manifest(stack_name)
  except UtilException, e:
    return str(e)
예제 #34
0
def macro_StackNavi(macro, arg1):
    stack_name = get_unicode(macro.request, arg1)

    try:
        import yaml
    except:
        return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]"

    try:
        data = load_stack_manifest(stack_name)
    except UtilException, e:
        return str(e)
예제 #35
0
def parseargs(request, args, defpagename, defyear, defmonth, defoffset,
              defoffset2, defheight6, defanniversary, deftemplate):
    """ parse macro arguments """
    args = wikiutil.parse_quoted_separated(args, name_value=False)
    args += [None] * 8  # fill up with None to trigger defaults
    parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate = args[:
                                                                                                                  8]
    parmpagename = wikiutil.get_unicode(request, parmpagename, 'pagename',
                                        defpagename)
    parmyear = wikiutil.get_int(request, parmyear, 'year', defyear)
    parmmonth = wikiutil.get_int(request, parmmonth, 'month', defmonth)
    parmoffset = wikiutil.get_int(request, parmoffset, 'offset', defoffset)
    parmoffset2 = wikiutil.get_int(request, parmoffset2, 'offset2', defoffset2)
    parmheight6 = wikiutil.get_bool(request, parmheight6, 'height6',
                                    defheight6)
    parmanniversary = wikiutil.get_bool(request, parmanniversary,
                                        'anniversary', defanniversary)
    parmtemplate = wikiutil.get_unicode(request, parmtemplate, 'template',
                                        deftemplate)

    # multiple pagenames separated by "*" - split into list of pagenames
    parmpagename = re.split(r'\*', parmpagename)

    return parmpagename, parmyear, parmmonth, parmoffset, parmoffset2, parmheight6, parmanniversary, parmtemplate
예제 #36
0
파일: RepoHeader.py 프로젝트: 130s/roswiki
def macro_RepoHeader(macro, args):
    if ',' in args:
        args = args.split(',')
    else:
        args = args.split()

    if not args:
        return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]"
  
    repo_name = get_unicode(macro.request, args[0])
    if not repo_name:
        return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]"
    try:
        repo_data = load_repo_manifest(repo_name)
    except UtilException, e:
        name = repo_name
        return CONTRIBUTE_TMPL%locals()
예제 #37
0
def macro_RepoHeader(macro, args):
    if ',' in args:
        args = args.split(',')
    else:
        args = args.split()

    if not args:
        return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]"

    repo_name = get_unicode(macro.request, args[0])
    if not repo_name:
        return "ERROR in RepoHeader. Usage: [[RepoHeader(repo_name [packages stacks])]]"
    try:
        repo_data = load_repo_manifest(repo_name)
    except UtilException, e:
        name = repo_name
        return CONTRIBUTE_TMPL % locals()
예제 #38
0
def macro_PageCount(macro, exists=None):
    """ Return number of pages readable by current user

    Return either an exact count (slow!) or fast count including deleted pages.

    TODO: make macro syntax more sane
    """
    request = macro.request
    exists = wikiutil.get_unicode(request, exists, 'exists')
    # Check input
    only_existing = False
    if exists == u'exists':
        only_existing = True
    elif exists:
        raise ValueError("Wrong argument: %r" % exists)

    count = request.rootpage.getPageCount(exists=only_existing)
    return macro.formatter.text("%d" % count)
예제 #39
0
def macro_PageCount(macro, exists=None):
    """ Return number of pages readable by current user

    Return either an exact count (slow!) or fast count including deleted pages.

    TODO: make macro syntax more sane
    """
    request = macro.request
    exists = wikiutil.get_unicode(request, exists, "exists")
    # Check input
    only_existing = False
    if exists == u"exists":
        only_existing = True
    elif exists:
        raise ValueError("Wrong argument: %r" % exists)

    count = request.rootpage.getPageCount(exists=only_existing)
    return macro.formatter.text("%d" % count)
예제 #40
0
def macro_MsgSrvDoc(macro, arg1, arg2='true'):
  package_name = get_unicode(macro.request, arg1)
  print_title=(get_unicode(macro.request, arg2) or 'true') == 'true'

  package_url = None

  try:
    import yaml
  except:
    return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

  if not package_name:
    return "ERROR in MsgSrvDoc. Usage: [[MsgSrvDoc(pkg_name)]]"    
  
  package_url = package_html_link(package_name)
  url = package_link(package_name) + "/manifest.yaml"
  
  try:
    usock = urllib2.urlopen(url)
    ydata = usock.read()
    usock.close()
  except:
    return 'Newly proposed, mistyped, or obsolete package. Could not find package "' + args + '" in rosdoc: '+url 

  m = yaml.load(unicode(ydata, 'utf-8'))
  if not m or type(m) != dict:
    return "Unable to retrieve package data. Auto-generated documentation may need to regenerate"
  
  # - package data keys
  msgs = m.get('msgs', [])
  srvs = m.get('srvs', [])

  p = macro.formatter.paragraph
  url = macro.formatter.url
  div = macro.formatter.div
  em = macro.formatter.emphasis
  br = macro.formatter.linebreak
  strong = macro.formatter.strong
  li = macro.formatter.listitem
  ul = macro.formatter.bullet_list
  h = macro.formatter.heading
  text = macro.formatter.text
  table = macro.formatter.table
  tr = macro.formatter.table_row
  td = macro.formatter.table_cell
  rawHTML = macro.formatter.rawHTML

  # table of msgs/srvs
  msg_str = text('')
  if msgs or srvs:
    if print_title:
      if msgs and srvs:
        msg_str += h(1, 2, id="msg-types")+text('ROS Message and Service Types')+h(0,2)
      elif msgs:
        msg_str += h(1, 2, id="msg-types")+text('ROS Message Types')+h(0,2)
      elif srvs:
        msg_str += h(1, 2, id="msg-types")+text('ROS Service Types')+h(0,2)
    msg_str += table(1)
    if msgs and srvs:
      msg_str += tr(1)+td(1)+strong(1)+text('ROS Message Types')+strong(0)+td(0)
      msg_str += td(1)+strong(1)+text('ROS Service Types')+strong(0)+td(0)+tr(0)
    msg_str += tr(1)
    if msgs:
      msg_str += rawHTML('<td valign="top">')
      for m in msgs:
        msg_str += msg_link(package_url, m)+rawHTML('<br />')
      msg_str += td(0)
    if srvs:
      msg_str += rawHTML('<td valign="top">')
      for s in srvs:
        msg_str += srv_link(package_url, s)+rawHTML('<br />')
      msg_str += td(0)
    msg_str += tr(0)+table(0)
  
  return msg_str
예제 #41
0
def macro_PackageHeader(macro, arg1):
  package_name = get_unicode(macro.request, arg1)
  package_url = None

  try:
    import yaml
  except:
    return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

  if not package_name:
    return "ERROR in PackageHeader. Usage: [[PackageHeader(pkg_name)]]"    
  
  package_url = package_html_link(package_name)
  url = package_link(package_name) + "/manifest.yaml"
  
  try:
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
  except:
    return 'Newly proposed, mistyped, or obsolete package. Could not find package "' + package_name + '" in rosdoc: '+url 

  data = yaml.load(unicode(data, 'utf-8'))
  if not data:
    return "Unable to retrieve package data. Auto-generated documentation may need to regenerate"
  # keys
  # - manifest keys
  brief = data.get('brief', package_name)
  authors = data.get('authors', 'unknown')
  try:
    if type(authors) != unicode:
      authors = unicode(authors, 'utf-8')
  except UnicodeDecodeError:
    authors = ''
  license = data.get('license', 'unknown')
  description = data.get('description', '')
  try:
    if type(description) != unicode:
      description = unicode(description, 'utf-8')
  except UnicodeDecodeError:
    description = ''
  depends = data.get('depends', [])
  depends_on = data.get('depends_on', [])
  review_status = data.get('review_status', 'unreviewed')
  review_notes = data.get('review_notes', '') or ''
  external_documentation = data.get('external_documentation', '') or data.get('url', '') or '' 
  if 'ros.org' in external_documentation or 'pr.willowgarage.com' in external_documentation:
     external_documentation = u''
  api_documentation = data.get('api_documentation', '')
  repository = data.get('repository', 'unknown')

  stack = data.get('stack', None)

  p = macro.formatter.paragraph
  url = macro.formatter.url
  div = macro.formatter.div
  em = macro.formatter.emphasis
  br = macro.formatter.linebreak
  strong = macro.formatter.strong
  li = macro.formatter.listitem
  ul = macro.formatter.bullet_list
  h = macro.formatter.heading
  text = macro.formatter.text
  rawHTML = macro.formatter.rawHTML
  comment = macro.formatter.comment

  if stack and stack.lower() not in ['ros', 'sandbox']:
    # set() logic is to get around temporary bug
    siblings = list(set(data.get('siblings', [])))
    # filter out test packages
    siblings = [s for s in siblings if not s.startswith('test_')]
    siblings.sort()
    pagename = macro.formatter.page.page_name

    if stack == pagename:
      top = strong(1)+text(stack)+strong(0)
    else:
      top = strong(1)+wiki_url(macro, stack)+strong(0)+text(': ')

    parts = []
    for s in siblings:
      if s == pagename:
        parts.append(text(s))
      else:
        parts.append(wiki_url(macro, s))
    #nav = em(1) + top + ' | '.join(parts) + em(0)
    nav = em(1) + top
    if parts: 
      nav += parts[0]
      for part in parts[1:]:
        nav += text(' | ')+part
    nav += em(0)
  elif stack and stack.lower() == 'sandbox':
    nav = strong(1)+wiki_url(macro, stack)+strong(0)
  else:
    nav = text('')
  
  # - package data keys
  msgs = data.get('msgs', [])
  srvs = data.get('srvs', [])

  # - package links
  #   -- link to msg/srv autogenerated docs
  msg_doc_title = "Msg/Srv API"
  if msgs and not srvs:
    msg_doc_title = "Msg API"
  elif srvs and not msgs:
    msg_doc_title = "Srv API"
  if msgs or srvs:
    msg_doc = li(1)+strong(1)+msg_doc_link(package_url, msg_doc_title)+strong(0)+li(0)
  else:
    msg_doc = text('')

  troubleshooting = Page(macro.request, '%s/Troubleshooting'%package_name).link_to(macro.request, text='Troubleshooting')
  tutorials = Page(macro.request, '%s/Tutorials'%package_name).link_to(macro.request, text='Tutorials')
  review_link = Page(macro.request, '%s/Reviews'%package_name).link_to(macro.request, text='Reviews')
  review_str = '%(review_link)s (%(review_status)s)'%locals()
  dependency_tree = data.get('dependency_tree', '')
  if external_documentation:
    external_documentation = li(1)+strong(1)+url(1, url=external_documentation)+text("External Documentation")+url(0)+strong(0)+li(0)
  
  try:
    package_desc = h(1, 2, id="first")+text('Package Summary')+h(0, 2)+\
      p(1, css_id="package-info")+rawHTML(description)+p(0)+\
      p(1, id="package-info")+\
      ul(1)+li(1)+text("Author: %s"%authors)+li(0)+\
      li(1)+text("License: %s"%license)+li(0)+\
      li(1)+text("Repository: %s"%repository)+li(0)+ul(0)+p(0)
    if package_name:
      repo_change =True
      page= Page(macro.request, package_name)
      pageeditor=PageEditor(macro.request, package_name)
      savetext = page.get_raw_body()
      lines = savetext.splitlines()
      #lines = [line.strip() for line in lines]
      for line in lines: 
        if line.startswith('## repository: %s'%repository):
          repo_change=False
    
      if repo_change ==True:
        lines = [line for line in lines if not line.startswith('## repository:')]
        savetext = u"## repository: %s\n%s" % (repository, "\n".join(lines))
        pageeditor.saveText(savetext, 0, action='SAVE', notify=False)


  except UnicodeDecodeError:
    package_desc = h(1, 2)+text('Package Summary')+h(0, 2)+\
      p(1)+text('Error retrieving package summary')+p(0)

  try:
    package_links = div(1, id="package-links")+\
      strong(1)+text("Package Links")+strong(0)+\
      ul(1)+\
      li(1)+strong(1)+url(1, url=package_url)+text("Code API")+url(0)+strong(0)+li(0)+msg_doc+\
      external_documentation+\
      li(1)+tutorials+li(0)+\
      li(1)+troubleshooting+li(0)+\
      li(1)+review_str+li(0)+\
      li(1)+url(1, url=dependency_tree)+text('Dependency Tree')+url(0)+li(0)+\
      ul(0)
  except UnicodeDecodeError:
    package_links = div(1, id="package-links")+div(0)

  if depends:
    depends.sort()
    package_links += strong(1)+text("Dependencies")+strong(0)+ul(1)
    for d in depends:
      package_links += li(1)+wiki_url(macro,d,shorten=20)+li(0)
    package_links += ul(0)

  if depends_on:
    depends_on.sort()
    d_links =  u'\n'.join([u"<li>%s</li>"%wiki_url(macro,d,shorten=20) for d in depends_on]) 
    package_links += strong(1)+text("Used by")+strong(0)+ul(1)+rawHTML(d_links)+ul(0)

  package_links+=div(0)

  #html_str = u''.join([s for s in [nav, package_links, package_desc]])
  #return html_str
  return rawHTML(nav) + package_links + package_desc 
예제 #42
0
파일: StackHeader.py 프로젝트: 130s/roswiki
def macro_StackHeader(macro, arg1):
  stack_name = get_unicode(macro.request, arg1)
  stack_url = None

  try:
    import yaml
  except:
    return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

  if not stack_name:
    return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]"    
  
  stack_url = stack_html_link(stack_name)
  url = stack_link(stack_name) + "/stack.yaml"
  
  try:
    usock = urllib2.urlopen(url)
    ydata = usock.read()
    usock.close()
  except:
    return 'Newly proposed, mistyped, or obsolete stack. Could not find "' + stack_name + '" in rosdoc: '+url 

  data = yaml.load(ydata)
  if not data or type(data) != dict:
    return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: "+str(url)
  # keys
  # - manifest keys
  brief = data.get('brief', stack_name)
  authors = data.get('authors', 'unknown')
  try:
    if type(authors) != unicode:
      authors = unicode(authors, 'utf-8')
  except UnicodeDecodeError:
    authors = ''
  license = data.get('license', 'unknown')
  description = data.get('description', '')
  try:
    if type(description) != unicode:
      description = unicode(description, 'utf-8')
  except UnicodeDecodeError:
    description = ''
  depends = data.get('depends', [])
  depends_on = data.get('depends_on', [])
  review_status = data.get('review_status', 'unreviewed')
  review_notes = data.get('review_notes', '') or ''

  # set() logic is to get around temporary bug
  packages = list(set(data.get('packages', [])))
  # filter out test packages
  packages = [s for s in packages if not s.startswith('test_')]
  packages.sort()

  p = macro.formatter.paragraph
  url = macro.formatter.url
  div = macro.formatter.div
  em = macro.formatter.emphasis
  br = macro.formatter.linebreak
  strong = macro.formatter.strong
  li = macro.formatter.listitem
  ul = macro.formatter.bullet_list
  h = macro.formatter.heading
  text = macro.formatter.text
  rawHTML = macro.formatter.rawHTML

  top = strong(1)+text(stack_name)+strong(0)

  parts = []
  for pkg in packages:
    parts.append(wiki_url(macro, pkg))
  if stack_name.lower() != 'sandbox':
    nav = em(1) + top 
    if parts:
      nav += text(': ')+parts[0]
      for part in parts[1:]:
        nav += text(' | ')+part
    nav += em(0)
  else:
    nav = strong(1)+text(stack_name)+strong(0)
  
  # - links
  troubleshooting = Page(macro.request, '%s/Troubleshooting'%stack_name).link_to(macro.request, text='Troubleshooting')
  tutorials = Page(macro.request, '%s/Tutorials'%stack_name).link_to(macro.request, text='Tutorials')
  review_link = Page(macro.request, '%s/Reviews'%stack_name).link_to(macro.request, text='Reviews')
  changelist = Page(macro.request, '%s/ChangeList'%stack_name).link_to(macro.request, text='Change List')
  roadmap = Page(macro.request, '%s/Roadmap'%stack_name).link_to(macro.request, text='Roadmap')
  review_str = review_link + text(' ('+review_status+')')
  
  try:
    desc = macro.formatter.heading(1, 2, id="summary")+text('Stack Summary')+macro.formatter.heading(0, 2)+\
      p(1,id="package-info")+rawHTML(description)+p(0)+\
      p(1,id="package-info")+ul(1)+\
      li(1)+text("Author: "+authors)+li(0)+\
      li(1)+text("License: "+license)+li(0)+\
      ul(0)+p(0)
  except UnicodeDecodeError:
    desc = h(1, 2)+text("Stack Summary")+h(0,2)+p(1)+text('Error retrieving stack summary')+p(0)
  #TODO: Changelist, Roadmap, Releases
  try:
    links = div(1, id="package-links")+strong(1)+text('Stack Links')+strong(0)+\
      ul(1)+\
      li(1)+tutorials+li(0)+\
      li(1)+troubleshooting+li(0)+\
      li(1)+changelist+li(0)+\
      li(1)+roadmap+li(0)+\
      li(1)+review_str+li(0)+\
      ul(0)
  #TODO
  #<li><a href="%(dependency_tree)s">Dependency Tree</a></li>
  except UnicodeDecodeError:
    links = div(1, id="package-links")+div(0)

  if depends:
    depends.sort()
    links += strong(1)+text("Dependencies")+strong(0)+ul(1)
    for d in depends:
      links += li(1)+wiki_url(macro,d,shorten=20)+li(0)
    links += ul(0)
  if depends_on:
    depends_on.sort()
    links += strong(1)+text("Used by")+strong(0)+ul(1)
    for d in depends_on:
      links += li(1)+wiki_url(macro,d,shorten=20)+li(0)

  links+=div(0)

  #html_str = u''.join([s for s in [nav, links, desc ]])
  return rawHTML(nav) + rawHTML(links) + desc
예제 #43
0
def macro_StackNaviPackageNames(macro, arg1):
  stack_name = get_unicode(macro.request, arg1)
  stack_url = None

  try:
    import yaml
  except:
    return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

  if not stack_name:
    return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]"    

  try:
    data = load_stack_manifest(stack_name)
  except UtilException as e:
    return str(e)

  if not data or type(data) != dict:
    return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: "+str(url)
  # keys
  # - manifest keys
  brief = data.get('brief', stack_name)
  authors = data.get('authors', 'unknown')
  try:
    if type(authors) != unicode:
      authors = unicode(authors, 'utf-8')
  except UnicodeDecodeError:
    authors = ''
  license = data.get('license', 'unknown')
  description = data.get('description', '')
  try:
    if type(description) != unicode:
      description = unicode(description, 'utf-8')
  except UnicodeDecodeError:
    description = ''
  depends = data.get('depends', [])
  depends_on = data.get('depends_on', [])
  review_status = data.get('review_status', 'unreviewed')
  review_notes = data.get('review_notes', '') or ''

  # set() logic is to get around temporary bug
  packages = list(set(data.get('packages', [])))
  # filter out test packages
  packages = [s for s in packages if not s.startswith('test_')]
  packages.sort()

  p = macro.formatter.paragraph
  url = macro.formatter.url
  div = macro.formatter.div
  em = macro.formatter.emphasis
  br = macro.formatter.linebreak
  strong = macro.formatter.strong
  li = macro.formatter.listitem
  ul = macro.formatter.bullet_list
  h = macro.formatter.heading
  text = macro.formatter.text
  rawHTML = macro.formatter.rawHTML

  top = strong(1)+wiki_url(macro,stack_name)+strong(0)

  parts = []
  for pkg in packages:
    parts.append(wiki_url(macro, pkg))
  if stack_name.lower() != 'sandbox':
    nav =''
    if parts:
      nav += parts[0]
      for part in parts[1:]:
        nav += text(', ')+part
  else:
    nav = strong(1)+text(stack_name)+strong(0)
  
  try:
    desc = macro.formatter.heading(1, 3, id="summary")+wiki_url(macro,stack_name)+macro.formatter.heading(0, 3)+\
      p(1,id="stack-info")+rawHTML(description)+p(0)
#+ macro.formatter.div(0)

  except UnicodeDecodeError:
    desc = h(1, 2)+text("Stack Summary")+h(0,2)+p(1)+text('Error retrieving stack summary')+p(0)

  #TODO: Changelist, Roadmap, Releases

  return (stack_name, packages, desc)

  #html_str = u''.join([s for s in [nav, links, desc ]])
  return desc #+ rawHTML(nav)
예제 #44
0
def macro_StackHeader(macro, arg1):
    stack_name = get_unicode(macro.request, arg1)
    stack_url = None

    try:
        import yaml
    except:
        return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]"

    stack_url = stack_html_link(stack_name)
    url = stack_link(stack_name) + "/stack.yaml"

    try:
        usock = urllib2.urlopen(url)
        ydata = usock.read()
        usock.close()
    except:
        return 'Newly proposed, mistyped, or obsolete stack. Could not find "' + stack_name + '" in rosdoc: ' + url

    data = yaml.load(ydata)
    if not data or type(data) != dict:
        return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: " + str(
            url)
    # keys
    # - manifest keys
    brief = data.get('brief', stack_name)
    authors = data.get('authors', 'unknown')
    try:
        if type(authors) != unicode:
            authors = unicode(authors, 'utf-8')
    except UnicodeDecodeError:
        authors = ''
    license = data.get('license', 'unknown')
    description = data.get('description', '')
    try:
        if type(description) != unicode:
            description = unicode(description, 'utf-8')
    except UnicodeDecodeError:
        description = ''
    depends = data.get('depends', [])
    depends_on = data.get('depends_on', [])
    review_status = data.get('review_status', 'unreviewed')
    review_notes = data.get('review_notes', '') or ''

    # set() logic is to get around temporary bug
    packages = list(set(data.get('packages', [])))
    # filter out test packages
    packages = [s for s in packages if not s.startswith('test_')]
    packages.sort()

    p = macro.formatter.paragraph
    url = macro.formatter.url
    div = macro.formatter.div
    em = macro.formatter.emphasis
    br = macro.formatter.linebreak
    strong = macro.formatter.strong
    li = macro.formatter.listitem
    ul = macro.formatter.bullet_list
    h = macro.formatter.heading
    text = macro.formatter.text
    rawHTML = macro.formatter.rawHTML

    top = strong(1) + text(stack_name) + strong(0)

    parts = []
    for pkg in packages:
        parts.append(wiki_url(macro, pkg))
    if stack_name.lower() != 'sandbox':
        nav = em(1) + top
        if parts:
            nav += text(': ') + parts[0]
            for part in parts[1:]:
                nav += text(' | ') + part
        nav += em(0)
    else:
        nav = strong(1) + text(stack_name) + strong(0)

    # - links
    troubleshooting = Page(macro.request, '%s/Troubleshooting' %
                           stack_name).link_to(macro.request,
                                               text='Troubleshooting')
    tutorials = Page(macro.request,
                     '%s/Tutorials' % stack_name).link_to(macro.request,
                                                          text='Tutorials')
    review_link = Page(macro.request,
                       '%s/Reviews' % stack_name).link_to(macro.request,
                                                          text='Reviews')
    changelist = Page(macro.request,
                      '%s/ChangeList' % stack_name).link_to(macro.request,
                                                            text='Change List')
    roadmap = Page(macro.request,
                   '%s/Roadmap' % stack_name).link_to(macro.request,
                                                      text='Roadmap')
    review_str = review_link + text(' (' + review_status + ')')

    try:
        desc = macro.formatter.heading(1, 2, id="summary")+text('Stack Summary')+macro.formatter.heading(0, 2)+\
          p(1,id="package-info")+rawHTML(description)+p(0)+\
          p(1,id="package-info")+ul(1)+\
          li(1)+text("Author: "+authors)+li(0)+\
          li(1)+text("License: "+license)+li(0)+\
          ul(0)+p(0)
    except UnicodeDecodeError:
        desc = h(1, 2) + text("Stack Summary") + h(
            0, 2) + p(1) + text('Error retrieving stack summary') + p(0)
    #TODO: Changelist, Roadmap, Releases
    try:
        links = div(1, id="package-links")+strong(1)+text('Stack Links')+strong(0)+\
          ul(1)+\
          li(1)+tutorials+li(0)+\
          li(1)+troubleshooting+li(0)+\
          li(1)+changelist+li(0)+\
          li(1)+roadmap+li(0)+\
          li(1)+review_str+li(0)+\
          ul(0)
    #TODO
    #<li><a href="%(dependency_tree)s">Dependency Tree</a></li>
    except UnicodeDecodeError:
        links = div(1, id="package-links") + div(0)

    if depends:
        depends.sort()
        links += strong(1) + text("Dependencies") + strong(0) + ul(1)
        for d in depends:
            links += li(1) + wiki_url(macro, d, shorten=20) + li(0)
        links += ul(0)
    if depends_on:
        depends_on.sort()
        links += strong(1) + text("Used by") + strong(0) + ul(1)
        for d in depends_on:
            links += li(1) + wiki_url(macro, d, shorten=20) + li(0)

    links += div(0)

    #html_str = u''.join([s for s in [nav, links, desc ]])
    return rawHTML(nav) + rawHTML(links) + desc
예제 #45
0
def macro_StackNaviPackageNames(macro, arg1):
    stack_name = get_unicode(macro.request, arg1)
    stack_url = None

    try:
        import yaml
    except:
        return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

    if not stack_name:
        return "ERROR in StackHeader. Usage: [[StackHeader(pkg_name)]]"

    try:
        data = load_stack_manifest(stack_name)
    except UtilException as e:
        return str(e)

    if not data or type(data) != dict:
        return "Unable to retrieve stack data. Auto-generated documentation may need to regenerate: " + str(
            url)
    # keys
    # - manifest keys
    brief = data.get('brief', stack_name)
    authors = data.get('authors', 'unknown')
    try:
        if type(authors) != unicode:
            authors = unicode(authors, 'utf-8')
    except UnicodeDecodeError:
        authors = ''
    license = data.get('license', 'unknown')
    description = data.get('description', '')
    try:
        if type(description) != unicode:
            description = unicode(description, 'utf-8')
    except UnicodeDecodeError:
        description = ''
    depends = data.get('depends', [])
    depends_on = data.get('depends_on', [])
    review_status = data.get('review_status', 'unreviewed')
    review_notes = data.get('review_notes', '') or ''

    # set() logic is to get around temporary bug
    packages = list(set(data.get('packages', [])))
    # filter out test packages
    packages = [s for s in packages if not s.startswith('test_')]
    packages.sort()

    p = macro.formatter.paragraph
    url = macro.formatter.url
    div = macro.formatter.div
    em = macro.formatter.emphasis
    br = macro.formatter.linebreak
    strong = macro.formatter.strong
    li = macro.formatter.listitem
    ul = macro.formatter.bullet_list
    h = macro.formatter.heading
    text = macro.formatter.text
    rawHTML = macro.formatter.rawHTML

    top = strong(1) + wiki_url(macro, stack_name) + strong(0)

    parts = []
    for pkg in packages:
        parts.append(wiki_url(macro, pkg))
    if stack_name.lower() != 'sandbox':
        nav = ''
        if parts:
            nav += parts[0]
            for part in parts[1:]:
                nav += text(', ') + part
    else:
        nav = strong(1) + text(stack_name) + strong(0)

    try:
        desc = macro.formatter.heading(1, 3, id="summary")+wiki_url(macro,stack_name)+macro.formatter.heading(0, 3)+\
          p(1,id="stack-info")+rawHTML(description)+p(0)


#+ macro.formatter.div(0)

    except UnicodeDecodeError:
        desc = h(1, 2) + text("Stack Summary") + h(
            0, 2) + p(1) + text('Error retrieving stack summary') + p(0)

    #TODO: Changelist, Roadmap, Releases

    return (stack_name, packages, desc)

    #html_str = u''.join([s for s in [nav, links, desc ]])
    return desc  #+ rawHTML(nav)
예제 #46
0
def macro_MsgSrvDoc(macro, arg1, arg2='true'):
  package_name = get_unicode(macro.request, arg1)
  print_title=(get_unicode(macro.request, arg2) or 'true') == 'true'
  if ' ' in package_name:
    #something changed in the API such that the above arg1, arg2 parsing no longer works
    splits = package_name.split(' ')
    if len(splits) > 2:
      return "ERROR in MsgSrvDoc. Usage: [[MsgSrvDoc(pkg_name print_title)]]"  
    package_name, print_title = splits
    print_title = print_title.lower() == 'true'

  package_url = None

  try:
    import yaml
  except:
    return 'python-yaml is not installed on the wiki. Please have an admin install on this machine'

  if not package_name:
    return "ERROR in MsgSrvDoc. Usage: [[MsgSrvDoc(pkg_name)]]"    
  
  package_url = package_html_link(package_name)
  manifest_file = package_manifest_file(package_name)
  
  try:
    with open(manifest_file) as f:
      ydata = f.read()
  except:
    return 'Newly proposed, mistyped, or obsolete package. Could not find package "' + package_name + '" in rosdoc: ' + manifest_file

  m = yaml.safe_load(unicode(ydata, 'utf-8'))
  if not m or type(m) != dict:
    return "Unable to retrieve package data from '%s'. Auto-generated documentation may need to regenerate" % manifest_file
  
  # - package data keys
  msgs = m.get('msgs', [])
  srvs = m.get('srvs', [])
  actions = m.get('actions', [])

  msgs.sort()
  srvs.sort()
  actions.sort()

  p = macro.formatter.paragraph
  url = macro.formatter.url
  div = macro.formatter.div
  em = macro.formatter.emphasis
  br = macro.formatter.linebreak
  strong = macro.formatter.strong
  li = macro.formatter.listitem
  ul = macro.formatter.bullet_list
  h = macro.formatter.heading
  text = macro.formatter.text
  table = macro.formatter.table
  tr = macro.formatter.table_row
  td = macro.formatter.table_cell
  rawHTML = macro.formatter.rawHTML

  # table of msgs/srvs
  msg_str = text('')
  if msgs or srvs or actions:
    if print_title:
      types = []
      if msgs:
        types.append('Message')
      if srvs:
        types.append('Service')
      if actions:
        types.append('Action')
      msg_str += h(1, 2, id="msg-types")+text('ROS %s Types' % ' / '.join(types))+h(0,2)
    msg_str += table(1)
    msg_str += tr(1)
    if msgs:
      msg_str += td(1)+strong(1)+text('ROS Message Types')+strong(0)+td(0)
    if srvs:
      msg_str += td(1)+strong(1)+text('ROS Service Types')+strong(0)+td(0)
    if actions:
      msg_str += td(1)+strong(1)+text('ROS Action Types')+strong(0)+td(0)
    msg_str += tr(0)
    msg_str += tr(1)
    if msgs:
      msg_str += rawHTML('<td valign="top">')
      for m in msgs:
        msg_str += msg_link(package_url, m)+rawHTML('<br />')
      msg_str += td(0)
    if srvs:
      msg_str += rawHTML('<td valign="top">')
      for s in srvs:
        msg_str += srv_link(package_url, s)+rawHTML('<br />')
      msg_str += td(0)
    if actions:
      msg_str += rawHTML('<td valign="top">')
      for a in actions:
        msg_str += action_link(package_url, a)+rawHTML('<br />')
      msg_str += td(0)
    msg_str += tr(0)+table(0)
  
  return msg_str
예제 #47
0
 def macro_Anchor(self, anchor=None):
     anchor = wikiutil.get_unicode(self.request, anchor, "anchor", u"anchor")
     return self.formatter.anchordef(anchor)
예제 #48
0
 def macro_Anchor(self, anchor=None):
     anchor = wikiutil.get_unicode(self.request, anchor, 'anchor',
                                   u'anchor')
     return self.formatter.anchordef(anchor)