Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions apps/agreements/templates/agreements/_nav.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% load agreements %}
{# One navigation for every agreements page; `nav` marks the current item. #}
<nav class="section-navigation sidebar-widget" aria-label="Agreements">
<ul class="section-nav menu">
{% if token %}
<li><a href="{% url 'agreements:sign_link' token %}">Agreement to sign</a></li>
{% else %}
<li class="{% if nav == 'programs' %}current_item selected{% endif %}"><a href="{% url 'agreements:program_list' %}">Programs</a></li>
{% if user.is_authenticated %}
<li class="{% if nav == 'orders' %}current_item selected{% endif %}"><a href="{% url 'agreements:order_list' %}">Your orders</a></li>
{% endif %}
{% endif %}
</ul>
</nav>
{% if not token and user|can_prepare_agreements %}
<nav class="sidebar-widget staff-nav" aria-labelledby="staff-nav-title">
<h2 class="widget-title" id="staff-nav-title">PSF staff</h2>
<ul class="section-nav menu">
<li class="{% if nav == 'queue' %}current_item selected{% endif %}"><a href="{% url 'agreements:queue' %}">Agreements</a></li>
<li class="{% if nav == 'staff' %}current_item selected{% endif %}"><a href="{% url 'agreements:staff_orders' %}">All orders</a></li>
<li class="{% if nav == 'custom' %}current_item selected{% endif %}"><a href="{% url 'agreements:custom_create' %}">New contract</a></li>
<li class="{% if nav == 'terms' %}current_item selected{% endif %}"><a href="{% url 'agreements:terms_list' %}">Terms</a></li>
</ul>
</nav>
{% endif %}
14 changes: 2 additions & 12 deletions apps/agreements/templates/agreements/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{% block page_title %}{% block title %}Agreements{% endblock %} | Python Software Foundation{% endblock %}
{% block og_title %}PSF Agreements{% endblock %}

{% block body_attributes %}class="psf agreements"{% endblock %}
{% block body_attributes %}class="psf agreements default-page"{% endblock %}

{% block section-logo %}<a href="/psf-landing/"><img class="psf-logo" src="{{ STATIC_URL }}img/psf-logo.png" alt="Python Software Foundation"></a>{% endblock %}

Expand All @@ -27,17 +27,7 @@

{% block left_sidebar %}
<aside class="left-sidebar">
{% include "agreements/_nav.html" %}
{% block sidebar %}{% endblock %}
{% if user|can_prepare_agreements %}
<div class="section-navigation sidebar-widget">
<ul class="section-nav menu" role="menu">
<li class="{% if nav == 'queue' %}current_item selected{% endif %}" role="menuitem"><a href="{% url 'agreements:queue' %}">Agreements</a></li>
<li class="{% if nav == 'custom' %}current_item selected{% endif %}" role="menuitem"><a href="{% url 'agreements:custom_create' %}">New contract</a></li>
<li class="{% if nav == 'terms' %}current_item selected{% endif %}" role="menuitem"><a href="{% url 'agreements:terms_list' %}">Terms</a></li>
<li role="menuitem"><a href="{% url 'agreements:program_list' %}">Programs</a></li>
<li role="menuitem"><a href="{% url 'agreements:staff_orders' %}">Orders</a></li>
</ul>
</div>
{% endif %}
</aside>
{% endblock left_sidebar %}
13 changes: 11 additions & 2 deletions apps/agreements/templates/agreements/detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,17 @@
{% block title %}{{ agreement.title }}: {{ agreement.counterparty_name }}{% endblock %}

{% block crumbs %}
{% if can_prepare %}<li><a href="{% url 'agreements:queue' %}">Agreements</a><span class="prompt">&gt;&gt;&gt;</span></li>{% endif %}
<li>{{ agreement.counterparty_name }}</li>
{% if can_prepare %}
<li><a href="{% url 'agreements:queue' %}">Agreements</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li>{{ agreement.counterparty_name }}</li>
{% elif agreement.order %}
<li><a href="{% url 'agreements:program_list' %}">Programs</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{% url 'agreements:order_list' %}">Your orders</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{{ agreement.order.get_absolute_url }}">{{ agreement.order.legal_name }}</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li>Agreement</li>
{% else %}
<li>{{ agreement.counterparty_name }}</li>
{% endif %}
{% endblock %}

{% block content %}
Expand Down
20 changes: 3 additions & 17 deletions apps/agreements/templates/agreements/orders/base.html
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
{% extends "agreements/base.html" %}
{% load static agreements %}
{% load static %}

{% block title %}Service orders{% endblock %}
{% block body_attributes %}class="psf agreements agreement-orders"{% endblock %}
{% block body_attributes %}class="psf agreements agreement-orders default-page"{% endblock %}
{% block head %}{{ block.super }}<link rel="stylesheet" href="{% static 'agreements/package-builder.css' %}?v=8">{% endblock %}
{% block crumbs %}<li>Service orders</li>{% endblock %}

{% block left_sidebar %}
<aside class="left-sidebar" aria-label="Order navigation">
<div class="section-navigation sidebar-widget">
<ul class="section-nav menu">
<li class="{% if nav == 'programs' %}current_item selected{% endif %}"><a href="{% url 'agreements:program_list' %}">Programs</a></li>
{% if user.is_authenticated %}
<li class="{% if nav == 'orders' %}current_item selected{% endif %}"><a href="{% url 'agreements:order_list' %}">Your orders</a></li>
{% if user|can_prepare_agreements %}
<li class="{% if nav == 'staff' %}current_item selected{% endif %}"><a href="{% url 'agreements:staff_orders' %}">All orders</a></li>
<li><a href="{% url 'agreements:queue' %}">Agreements to countersign</a></li>
{% endif %}
{% endif %}
</ul>
</div>
{% block sidebar %}
<div class="sidebar-widget account-widget">
{% if user.is_authenticated %}
<p>Signed in as <strong>{{ user.get_full_name|default:user.get_username }}</strong><br>{{ user.email }}</p>
Expand All @@ -28,5 +15,4 @@
<a class="button" href="{% url 'account_login' %}?next={{ request.get_full_path|urlencode }}">Sign in</a>
{% endif %}
</div>
</aside>
{% endblock %}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
{% block crumbs %}
<li><a href="{% url 'agreements:program_list' %}">Programs</a><span class="prompt">&gt;&gt;&gt;</span></li>
{% if nav == "staff" %}
<li><a href="{% url 'agreements:staff_orders' %}">Orders</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{% url 'agreements:staff_orders' %}">All orders</a><span class="prompt">&gt;&gt;&gt;</span></li>
{% else %}
<li><a href="{% url 'agreements:order_list' %}">Your orders</a><span class="prompt">&gt;&gt;&gt;</span></li>
{% endif %}
Expand Down
12 changes: 11 additions & 1 deletion apps/agreements/templates/agreements/terms.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
{% extends "agreements/base.html" %}
{% block title %}{{ terms.title }}{% endblock %}
{% block crumbs %}<li>{{ terms.title }}</li>{% endblock %}
{% block crumbs %}
{% if token %}
<li><a href="{% url 'agreements:sign_link' token %}">Agreement to sign</a><span class="prompt">&gt;&gt;&gt;</span></li>
{% elif can_edit %}
<li><a href="{% url 'agreements:queue' %}">Agreements</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{% url 'agreements:terms_list' %}">Terms</a><span class="prompt">&gt;&gt;&gt;</span></li>
{% else %}
<li><a href="{% url 'agreements:program_list' %}">Programs</a><span class="prompt">&gt;&gt;&gt;</span></li>
{% endif %}
<li>{{ terms.title }}</li>
{% endblock %}

{% block sidebar %}
<div class="sidebar-widget contents-widget">
Expand Down
1 change: 1 addition & 0 deletions apps/agreements/templates/agreements/terms_compare.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{% extends "agreements/base.html" %}
{% block title %}Compare: {{ terms.title }}{% endblock %}
{% block crumbs %}
<li><a href="{% url 'agreements:queue' %}">Agreements</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{% url 'agreements:terms_list' %}">Terms</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{% url 'agreements:terms_edit' terms.slug %}">{{ terms.title }}</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li>Compare</li>
Expand Down
1 change: 1 addition & 0 deletions apps/agreements/templates/agreements/terms_edit.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
{% load agreements %}
{% block title %}Edit: {{ terms.title }}{% endblock %}
{% block crumbs %}
<li><a href="{% url 'agreements:queue' %}">Agreements</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li><a href="{% url 'agreements:terms_list' %}">Terms</a><span class="prompt">&gt;&gt;&gt;</span></li>
<li>{{ terms.title }}</li>
{% endblock %}
Expand Down
7 changes: 5 additions & 2 deletions apps/agreements/views/agreements.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,14 @@ def detail(request: HttpRequest, pk: UUID, status: int = 200, **bound: BaseForm
"""Review an agreement and act on it."""
agreement = _agreement_or_404(request, pk)
html, metadata_hidden = documents.render_agreement_preview(documents.final_markdown(agreement))
forms = action_forms(request, agreement, **bound)
# Only order agreements appear under "Your orders"; custom contracts have no list to mark.
nav = "queue" if forms["can_prepare"] else "orders" if hasattr(agreement, "order") else None
context = {
**action_forms(request, agreement, **bound),
**forms,
"html": html,
"metadata_hidden": metadata_hidden,
"nav": "queue",
"nav": nav,
}
return render(request, "agreements/detail.html", context, status=status)

Expand Down
6 changes: 4 additions & 2 deletions apps/agreements/views/terms.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def terms(request: HttpRequest, slug: str, version: str | None = None) -> HttpRe
"""Read one published version of terms; without a version, the current one."""
terms, shown = _readable_terms(request, slug, version)
html, toc = documents.render_html(shown.markdown)
staff = can_prepare(request.user)
response = render(
request,
"agreements/terms.html",
Expand All @@ -84,8 +85,9 @@ def terms(request: HttpRequest, slug: str, version: str | None = None) -> HttpRe
"is_current": shown == terms.current_version,
"html": html,
"toc": toc,
"can_edit": can_prepare(request.user),
"can_read_current": terms.is_public or can_prepare(request.user),
"can_edit": staff,
"can_read_current": terms.is_public or staff,
"nav": "terms" if staff else "programs",
},
)
return _terms_cache(request, response, terms)
Expand Down
Loading