Source

bugs.python.org / html / page.html

Full commit
erik.forsberg ae1df84 
erik.forsberg ad954ff 
erik.forsberg ae1df84 


erik.forsberg ad954ff 





erik.forsberg ae1df84 



erik.forsberg 6d528fb 
erik.forsberg ae1df84 

erik.forsberg 87ddcc0 





stefan.seefeld 2b08636 
erik.forsberg 87ddcc0 

erik.forsberg ad954ff 















stefan.seefeld 278d178 
erik.forsberg ad954ff 
stefan.seefeld 278d178 

erik.forsberg ad954ff 
stefan.seefeld 278d178 

erik.forsberg ad954ff 

erik.forsberg 87ddcc0 
stefan.seefeld 278d178 
erik.forsberg 87ddcc0 
stefan.seefeld 278d178 
stefan.seefeld 2b08636 
erik.forsberg 87ddcc0 


stefan.seefeld 2b08636 
erik.forsberg 87ddcc0 



stefan.seefeld 278d178 
erik.forsberg 87ddcc0 
stefan.seefeld 278d178 
erik.forsberg 87ddcc0 






erik.forsberg ad954ff 
stefan.seefeld 278d178 
erik.forsberg ad954ff 


stefan.seefeld 278d178 
erik.forsberg ad954ff 


stefan.seefeld 278d178 
erik.forsberg ad954ff 





stefan.seefeld 278d178 
erik.forsberg ad954ff 


stefan.seefeld 278d178 
erik.forsberg ad954ff 


















stefan.seefeld 278d178 
erik.forsberg ad954ff 



erik.forsberg 87ddcc0 
stefan.seefeld 278d178 
erik.forsberg 87ddcc0 
stefan.seefeld 278d178 
stefan.seefeld 2b08636 
erik.forsberg 87ddcc0 


stefan.seefeld 2b08636 
stefan.seefeld 278d178 
erik.forsberg 87ddcc0 
stefan.seefeld 278d178 
erik.forsberg ad954ff 


























erik.forsberg ae1df84 
erik.forsberg ad954ff 







erik.forsberg ae1df84 

erik.forsberg ad954ff 





erik.forsberg ae1df84 
erik.forsberg ad954ff 















erik.forsberg ae1df84 













stefan.seefeld 278d178 
erik.forsberg ae1df84 
erik.forsberg 6d528fb 








erik.forsberg ae1df84 

erik.forsberg 6d528fb 
stefan.seefeld 278d178 
erik.forsberg 6d528fb 




stefan.seefeld 278d178 
erik.forsberg 6d528fb 
stefan.seefeld 278d178 
erik.forsberg ae1df84 







erik.forsberg 6d528fb 
stefan.seefeld 278d178 

erik.forsberg ae1df84 



erik.forsberg 6d528fb 
erik.forsberg ae1df84 

erik.forsberg 6d528fb 

erik.forsberg ae1df84 





erik.forsberg 6d528fb 



























erik.forsberg ae1df84 

erik.forsberg 6d528fb 
stefan.seefeld 278d178 
erik.forsberg ae1df84 
























erik.forsberg ad954ff 
erik.forsberg ae1df84 




erik.forsberg ad954ff 
erik.forsberg ae1df84 




erik.forsberg ad954ff 
erik.forsberg ae1df84 
erik.forsberg 6d528fb 















stefan.seefeld 278d178 
erik.forsberg 6d528fb 


stefan.seefeld 278d178 
erik.forsberg 6d528fb 

stefan.seefeld 278d178 
erik.forsberg 6d528fb 
stefan.seefeld 278d178 
erik.forsberg 6d528fb 
<tal:block metal:define-macro="icing">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title metal:define-slot="head_title">title goes here</title>
<link media="screen" href="http://python.org/styles/screen-switcher-default.css" type="text/css" id="screen-switcher-stylesheet" rel="stylesheet" />
<link media="screen" href="http://python.org/styles/netscape4.css" type="text/css" rel="stylesheet" />
<link media="print" href="http://python.org/styles/print.css" type="text/css" rel="stylesheet" />
<link media="screen" href="http://python.org/styles/largestyles.css" type="text/css" rel="alternate stylesheet" title="large text" />
<link media="screen" href="http://python.org/styles/defaultfonts.css" type="text/css" rel="alternate stylesheet" title="default fonts" />
<link rel="stylesheet" type="text/css" href="@@file/style.css" />
<meta http-equiv="Content-Type"
 tal:attributes="content string:text/html;; charset=${request/client/charset}" />
<script tal:replace="structure request/base_javascript">
</script>
<metal:x define-slot="more-javascript" />

</head>
<body
tal:define="
kw_edit python:request.user.hasPermission('Edit', 'keyword');
kw_create python:request.user.hasPermission('Create', 'keyword');
kw_edit_link python:kw_edit and db.keyword.list();
columns string:id,activity,title,creator,status;
columns_showall string:id,activity,title,creator,assignee,status;
status_notresolved string:-1,1,2,3,4,5,6,7;
">
  <!--  Logo  -->
  <h1 id="logoheader">
<a accesskey="1" href="." id="logolink"><img src="http://python.org/images/python-logo.gif" alt="homepage" border="0" id="logo" /></a></h1>
<div id="left-hand-navigation">
  
    <!--  Main Menu NEED LEVEL TWO HEADER AND FOOTER -->
 <div id="menu">
  <ul class="level-one">
   <li class=""><a href="http://python.org/about" class="" title="About The Python Language">About</a></li>
   <li class=""><a href="http://python.org/news" class="" title="">News</a></li>
   <li class=""><a href="http://python.org/doc" class="" title="">Documentation</a></li>
   <li class=""><a href="http://python.org/download" class="" title="">Download</a></li>
   <li class=""><a href="http://python.org/community" class="" title="">Community</a></li>
   <li class=""><a href="http://python.org/psf" class="" title="Python Software Foundation">PSF</a></li>
   <li class=""><a href="http://python.org/links" class="" title="">Links</a></li>
   <li class=""><a href="http://python.org/dev" class="" title="Python Core Language Development">Core Development</a></li>
   <li class="selected"><a href="." class="selected" title="Python Bug Tracker">Bug Tracker</a>
    <ul class="level-two">
     <li tal:condition="python:request.user.hasPermission('View', 'bug')">
      <b i18n:translate="">Bugs</b>
       <ul class="level-three">
        <li tal:condition="python:request.user.hasPermission('Create', 'bug')">
         <a href="bug?@template=item" i18n:translate="">Create New</a>
        </li>
        <li>
    <li><a href="#"
       tal:attributes="href python:request.indexargs_url('bug', {
      '@sort': '-activity',
      '@group': 'severity',
      '@filter': 'status,assignee',
      '@columns': columns,
      '@search_text': '',
      'status': status_notresolved,
      'assignee': '-1',
      '@dispname': i18n.gettext('Show Unassigned'),
     })"
       i18n:translate="">Show Unassigned</a></li>
    <li><a href="#"
       tal:attributes="href python:request.indexargs_url('bug', {
      '@sort': '-activity',
      '@group': 'severity',
      '@filter': 'status',
      '@columns': columns_showall,
      '@search_text': '',
      'status': status_notresolved,
      '@dispname': i18n.gettext('Show All'),
     })"
       i18n:translate="">Show All</a></li>
        <li>
         <a href="bug?@template=search" i18n:translate="">Search</a>
        </li>
        <li>
         <form method="post" tal:attributes="action request/base">
          <input type="submit" class="form-small" value="Show bug:"
                 i18n:attributes="value"/>
          <input class="form-small" size="4"
                 type="text" name="@number"/>
          <input type="hidden" name="@type" value="bug"/>
          <input type="hidden" name="@action" value="show"/>
         </form>
        </li>
       </ul>
     </li>
     <li tal:condition="python:request.user.username=='anonymous'">
      <b i18n:translate="">User</b>
      <form method="post" tal:attributes="action request/base">
       <ul class="level-three">
      <li>
       <tal:span i18n:translate="">Login</tal:span><br/>
       <input size="10" name="__login_name"/><br/>
       <input size="10" type="password" name="__login_password"/><br/>
       <input type="hidden" name="@action" value="Login"/>
       <input type="checkbox" name="remember" id="remember"/>
       <label for="remember" i18n:translate="">Remember me?</label><br/>
       <input class="form-small" type="submit" value="Login" i18n:attributes="value"/><br/>
       <input type="hidden" name="__came_from" tal:attributes="value string:${request/base}${request/env/PATH_INFO}"/>
       <span tal:replace="structure request/indexargs_form" />
       </li>
       <li>
       <a href="user?@template=register"
          tal:condition="python:request.user.hasPermission('Create', 'user')"
          i18n:translate="">Register</a>
	</li>
       <li><a href="user?@template=forgotten" i18n:translate="">Lost&nbsp;your&nbsp;login?</a>
       </li>
       </ul>
      </form>
     </li>
     <li tal:condition="python:request.user.username != 'anonymous'">
   <b i18n:translate="">Hello, <span i18n:name="user"
    tal:replace="request/user/username">username</span></b><br/>
    <ul class="level-three">
    <li>
    <a href="#"
       tal:attributes="href python:request.indexargs_url('bug', {
      '@sort': '-activity',
      '@group': 'severity',
      '@filter': 'status,assignee',
      '@columns': 'id,activity,title,creator,status',
      '@search_text': '',
      'status': status_notresolved,
      'assignee': request.user.id,
      '@dispname': i18n.gettext('Your Bugs'),
     })"
    i18n:translate="">Your Bugs</a>
    </li>
    <li>
       <a tal:attributes="href string:user${request/user/id}"
          i18n:translate="">Your Details</a>
    </li>
    <li>
       <a tal:attributes="href python:request.indexargs_url('',
          {'@action':'logout'})" i18n:translate="">Logout</a>
    </li>
    </ul>
    </li>
     <li class=""
         tal:condition="python:request.user.hasPermission('View', 'query')">
   <span i18n:translate=""><b>Your Queries</b> (<a class="nomargin" href="query?@template=edit">edit</a>)</span><br/>
   <ul class="level-three" tal:repeat="qs request/user/queries">
    <li><a tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name}"
       tal:content="qs/name">link</a></li>
   </ul>
     </li>
     <li class=""
         tal:condition="python:request.user.hasPermission('View', 'user')">
   <b i18n:translate="">Administration</b>
   <ul class="level-three">
   <li tal:condition="python:request.user.hasPermission('Edit', None)">
    <a href="home?@template=classlist" i18n:translate="">Class List</a>
   </li>
   <li tal:condition="python:request.user.hasPermission('View', 'user')
                            or request.user.hasPermission('Edit', 'user')">
    <a href="user"  i18n:translate="">User List</a>
   </li>
   <li tal:condition="python:request.user.hasPermission('Create', 'user')"><a href="user?@template=item" i18n:translate="">Add User</a>
   </li>
   </ul>
     </li>
     <li class="">
   <b i18n:translate="">Help</b><br/>
   <a href="http://roundup.sourceforge.net/doc-1.0/"
    i18n:translate="">Roundup docs</a>
     </li>
    </ul>
   </li>
  </ul>
 </div> <!-- menu -->
</div> <!-- left-hand-navigation -->

<div id="content-body">
<div id="body-main">
<div id="content">
<div id="breadcrumb"><span metal:define-slot="body_title">body title</span></div>
 <p tal:condition="options/error_message | nothing" class="error-message"
    tal:repeat="m options/error_message" tal:content="structure m" />
 <p tal:condition="options/ok_message | nothing" class="ok-message">
  <span tal:repeat="m options/ok_message"
        tal:content="structure string:$m <br/ > " />
  <a class="form-small" tal:attributes="href request/current_url"
     i18n:translate="">clear this message</a>
 </p>
 <tal:block metal:define-slot="content">Page content goes here</tal:block>
</div> <!-- content-body -->
</div> <!-- body-main -->
</div> <!-- content -->

<pre tal:condition="request/form/debug | nothing" tal:content="request">
</pre>

</body>
</html>
</tal:block>

<!--
The following macros are intended to be used in search pages.

The invoking context must define a "name" variable which names the
property being searched.

See bug.search.html in the classic template for examples.
-->

<!-- creates a th and a label: -->
<th metal:define-macro="th_label"
    tal:define="required required | python:[]"
    tal:attributes="class python:(name in required) and 'required' or nothing">
  <label tal:attributes="for name" tal:content="label" i18n:translate="">text</label>
	<metal:x define-slot="behind_the_label" />
</th>

<td metal:define-macro="search_input">
  <input tal:attributes="value python:request.form.getvalue(name) or nothing;
                         name name;
                         id name"/>
</td>

<td metal:define-macro="search_date">
  <input tal:attributes="value python:request.form.getvalue(name) or nothing;
                         name name;
                         id name"/>
  <a class="classhelp"
	 tal:attributes="href python:'''javascript:help_window('bug?@template=calendar&property=%s&form=itemSynopsis', 300, 200)'''%name">(cal)</a>
</td>

<td metal:define-macro="search_popup">
  <!--
    context needs to specify the popup "columns" as a comma-separated
    string (eg. "id,title" or "id,name,description") as well as name
  -->
  <input tal:attributes="value python:request.form.getvalue(name) or nothing;
                         name name;
                         id name"/>
  <span tal:replace="structure python:db.bug.classhelp(columns,
                                      property=name)" />
</td>

<td metal:define-macro="search_select">
  <select tal:attributes="name name; id name"
          tal:define="value python:request.form.getvalue(name)">
    <option value="" i18n:translate="">don't care</option>
    <metal:slot define-slot="extra_options" />
    <option value="" i18n:translate="" disabled="disabled">------------</option>
    <option tal:repeat="s python:db[db_klass].list()"
            tal:attributes="value s/id; selected python:value == s.id"
            tal:content="python:s[db_content]"></option>
  </select>
</td>

<!-- like search_select, but translates the further values.
Could extend it (METAL 1.1 attribute "extend-macro")
-->
<td metal:define-macro="search_select_translated">
  <select tal:attributes="name name; id name"
          tal:define="value python:request.form.getvalue(name)">
    <option value="" i18n:translate="">don't care</option>
    <metal:slot define-slot="extra_options" />
    <option value="" i18n:translate="" disabled="disabled">------------</option>
    <option tal:repeat="s python:db[db_klass].list()"
            tal:attributes="value s/id; selected python:value == s.id"
						tal:content="python:s[db_content]"
						i18n:translate=""></option>
  </select>
</td>

<!-- currently, there is no convenient API to get a list of all roles -->
<td metal:define-macro="search_select_roles"
	  tal:define="onchange onchange | nothing">
  <select name=roles id=roles tal:attributes="onchange onchange">
    <option value="" i18n:translate="">don't care</option>
    <option value="" i18n:translate="" disabled="disabled">------------</option>
    <option value="User">User</option>
    <option value="Admin">Admin</option>
    <option value="Anonymous">Anonymous</option>
  </select>
</td>

<td metal:define-macro="search_multiselect">
  <input tal:attributes="value python:request.form.getvalue(name) or nothing;
                         name name;
                         id name"/>
  <span tal:replace="structure python:db[db_klass].classhelp(db_content,
                                        property=name, width='600')" />
</td>

<td metal:define-macro="search_checkboxes">
 <ul class="search-checkboxes"
     tal:define="value python:request.form.getvalue(name);
                 values python:value and value.split(',') or []">
 <li tal:repeat="s python:db[db_klass].list()">
  <input type="checkbox" tal:attributes="name name; id string:$name-${s/id};
    value s/id; checked python:s.id in values" />
  <label tal:attributes="for string:$name-${s/id}"
         tal:content="python:s[db_content]" />
 </li>
 <li metal:define-slot="no_value_item">
  <input type="checkbox" value="-1" tal:attributes="name name;
     id string:$name--1; checked python:value == '-1'" />
  <label tal:attributes="for string:$name--1" i18n:translate="">no value</label>
 </li>
 </ul>
</td>

<td metal:define-macro="column_input">
  <input type="checkbox" name="@columns"
         tal:attributes="value name;
                         checked python:name in cols"/>
</td>

<td metal:define-macro="sort_input">
  <input type="radio" name="@sort"
         tal:attributes="value name;
                         checked python:name == sort_on"/>
</td>

<td metal:define-macro="group_input">
  <input type="radio" name="@group"
         tal:attributes="value name;
                         checked python:name == group_on"/>
</td>

<!--
The following macros are intended for user editing.

The invoking context must define a "name" variable which names the
property being searched; the "edit_ok" variable tells whether the
current user is allowed to edit.

See user.item.html in the classic template for examples.
-->
<script metal:define-macro="user_utils" type="text/javascript" src="@@file/user_utils.js"></script>

<!-- src: value will be re-used for other input fields -->
<input metal:define-macro="user_src_input"
    type="text" tal:attributes="onblur python:edit_ok and 'split_name(this)';
    id name; name name; value value; readonly not:edit_ok"
    value="heinz.kunz"/>
<!-- normal: no re-using -->
<input metal:define-macro="user_normal_input" type="text"
    tal:attributes="id name; name name; value value; readonly not:edit_ok"
    value="heinz"/>
<!-- password: type; no initial value -->
    <input metal:define-macro="user_pw_input" type="password"
    tal:attributes="id name; name name; readonly not:edit_ok" value=""/>
    <input metal:define-macro="user_confirm_input" type="password"
    tal:attributes="id name; name string:@confirm@$name; readonly not:edit_ok" value=""/>