catalog.shtml revision 852
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## -*- coding: utf-8 -*-
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## CDDL HEADER START
b87761f9bbef949f31dae297e619ac3f5e9c2b2eTimo Sirainen## The contents of this file are subject to the terms of the
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## Common Development and Distribution License (the "License").
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## You may not use this file except in compliance with the License.
de5f478d9e7ae7b8e58082e0b30b6ce1f034236aTimo Sirainen## You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## See the License for the specific language governing permissions
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## and limitations under the License.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## When distributing Covered Code, include this CDDL HEADER in each
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## If applicable, add the following below this CDDL HEADER, with the
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## fields enclosed by brackets "[]" replaced with your own identifying
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## information: Portions Copyright [yyyy] [name of copyright owner]
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen## CDDL HEADER END
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen## Copyright 2009 Sun Microsystems, Inc. All rights reserved.
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen## Use is subject to license terms.
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen import urllib
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen 'manifest': "Manifest"
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen<%inherit file="layout.shtml"/>\
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen<%page args="g_vars"/>\
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen catalog = g_vars["catalog"]
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen config = g_vars["config"]
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen request = g_vars["request"]
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen<%def name="page_title(g_vars)"><%
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen return "Package Catalog"
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen<div id="yui-main">
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <div class="yui-b">
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <p>Information about packages is not available when the server is operating in mirror mode.</p>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen versions = self.shared.get_releases(g_vars)
1fb5e50695bbbc0da082e5a6f19f29d2bb2f6531Timo Sirainen selected_val = request.params.get("version", None)
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen show_all_versions = request.params.get("show_all_versions", None)
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen selected_match = None
1fb5e50695bbbc0da082e5a6f19f29d2bb2f6531Timo Sirainen for v in versions:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ver, val, label = v
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if selected_val == val:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen selected_match = ver
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if versions and (not selected_val or not selected_match):
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen # Either a version wasn't already selected, or the version
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen # provided didn't match a valid one, so default to the first in
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen selected_match = versions[0][0]
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen selected_val = versions[0][1]
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen% if versions:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <form action="catalog.shtml">
2ccb478c35972517721ce415d81fcbd11a73fad3Timo Sirainen <label for="version">Release and Branch</label>
37e8420b32a0fa3442c405616980e45beb494104Timo Sirainen <select id="version" name="version">
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen for v in versions:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ver, val, label = v
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if val == selected_val:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen attrs = 'selected="selected" '
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen context.write("""<option %svalue="%s">%s</option>""" % (
1fb5e50695bbbc0da082e5a6f19f29d2bb2f6531Timo Sirainen attrs, val, label))
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <input id="submit-browse" type="submit"
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen name="action" value="Browse"/>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <input id="show-all-versions" type="checkbox"
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen% if show_all_versions:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen checked="checked"
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen name="show_all_versions" value="1"/>
e22ec7998afd426c53c658483ce66b6e404e27c6Timo Sirainen <label for="show-all-versions" title="By
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen default, only the latest versions of packages are shown. To show all versions,
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen check this checkbox.">Show all versions</label>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <div class="yui-b results">
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <table summary="A list of packages available in the repository
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen restricted by the specified listing criteria.">
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <tr class="first">
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <th>Name</th>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <th>Version</th>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen% for op in fmri_ops:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <th>${fmri_ops[op]}</th>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen # Output each FMRI that we have in the catalog.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if selected_val and selected_match:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ver = selected_match
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen pattern = "*,%s-%s" % (ver.build_release, ver.branch)
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen flist = catalog.get_matching_version_fmris(pattern)
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if not show_all_versions:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen for f in flist:
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen if f.pkg_name not in found:
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen flist = nlist
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen flist = [f for f in catalog.fmris()]
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen rclass = None
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen for pfmri in flist:
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen if rclass is None or rclass == ' class="odd"':
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen rclass = ' class="odd"'
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen # Start FMRI entry
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen phref = self.shared.rpath(g_vars, "info/0/%s" % (
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen urllib.quote(str(pfmri)[len("pkg:/"):], "")))
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen <td><a href="%s">%s</a></td>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen""" % (rclass, phref, pfmri.pkg_name, pfmri.version)))
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen # Output all available operations for an FMRI.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen for op in fmri_ops:
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen <td><a href="%s">%s</a></td>
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen""" % (self.shared.rpath(g_vars, "%s/0/%s" % (op,
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen urllib.quote(str(pfmri)[len("pkg:/"):], ""))), fmri_ops[op])))
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen # End FMRI entry
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen <tr class="last">
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen <td colspan="4">${len(flist)} package(s)</td>