Skip to content

Commit 8a16062

Browse files
committed
Massive Vue 3 migration
1 parent 6fa6c0b commit 8a16062

122 files changed

Lines changed: 4588 additions & 985 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,9 @@ Pre-change checklist (must answer mentally before finishing):
149149
Run a specific test like this: `podman-compose exec -T web python manage.py test --noinput -v 2 core.tests.test_elections_eligibility_org_reps`
150150
- Add ruff after you're done making changes: `podman-compose exec -T web ruff check --fix /app/astra_app`
151151
- Stop and restart everything: `podman-compose down && podman-compose up -d --build`. NEVER RUN `podman-compose down -v` as that will delete your database!
152+
153+
## APIs
154+
155+
This project should expose a JSON REST API (under `/api/`) to retrieve the data needed by the Vue 3 interface. The REST API should return **data only**, no URLs, no text labels, no UI concerns at all. The Vue 3 layer should take care of formatting the input data as needed, generating URLs using the data from the API, etc. The API should return the minimal data needed by the UI, but it's 100% the UI's job to format it and present it as needed.
156+
157+
The Djange page routes are a thin Vue shell, the REST endpoints are the data source.

astra_app/api_v1/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@
189189
views_membership.membership_request_rescind_api,
190190
name="api-membership-request-rescind",
191191
),
192+
path(
193+
"membership/requests/<int:pk>/detail",
194+
views_membership.membership_request_detail_api,
195+
name="api-membership-request-detail",
196+
),
192197
path(
193198
"membership/request/<int:pk>/approve",
194199
views_membership.membership_request_approve_api,

astra_app/core/membership_requests_datatables.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,6 @@ def serialize_note_group(
763763
}
764764
if include_membership_request_links:
765765
payload["membership_request_id"] = header_entry.get("membership_request_id")
766-
payload["membership_request_url"] = str(header_entry.get("membership_request_url") or "")
767766
return payload
768767

769768

astra_app/core/templates/core/ballot_verify.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@
1818
data-ballot-verify-hash-script-url="{% static 'verify-ballot-hash.py' %}"
1919
data-ballot-verify-chain-script-url="{% static 'verify-ballot-chain.py' %}"
2020
data-ballot-verify-audit-script-url="{% static 'verify-audit-log.py' %}"
21+
data-ballot-verify-election-detail-url-template="{{ election_detail_url_template }}"
22+
data-ballot-verify-audit-log-url-template="{{ election_audit_log_url_template }}"
2123
></div>
2224
{% endblock %}

astra_app/core/templates/core/election_vote.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,10 @@ <h1 class="m-0">Vote: {{ election.name }}</h1>
1414
{% endblock %}
1515

1616
{% block content %}
17-
<div data-election-vote-root data-election-vote-api-url="{% url 'api-election-vote' election.id %}"></div>
17+
<div
18+
data-election-vote-root
19+
data-election-vote-api-url="{% url 'api-election-vote' election.id %}"
20+
data-election-vote-detail-url-template="{{ election_detail_url_template }}"
21+
data-election-vote-verify-url="{{ ballot_verify_url }}"
22+
></div>
1823
{% endblock %}

astra_app/core/templates/core/elections_list.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,7 @@ <h1 class="m-0">Elections</h1>
2525
<div
2626
data-elections-root
2727
data-elections-api-url="{% url 'api-elections' %}"
28+
data-elections-detail-url-template="{{ election_detail_url_template }}"
29+
data-elections-edit-url-template="{{ election_edit_url_template }}"
2830
></div>
2931
{% endblock %}

astra_app/core/templates/core/elections_turnout_report.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ <h1 class="m-0">Election turnout report</h1>
2020
data-elections-turnout-report-root
2121
data-elections-turnout-report-api-url="{% url 'api-elections-turnout-report' %}"
2222
data-elections-turnout-report-elections-url="{% url 'elections' %}"
23+
data-elections-turnout-report-election-detail-url-template="{{ election_detail_url_template }}"
2324
></div>
2425
{% endblock %}
2526

astra_app/core/templates/core/group_detail.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
data-group-detail-members-api-url="{% url 'api-group-detail-members' group.cn %}"
2020
data-group-detail-action-url="{% url 'api-group-action' group.cn %}"
2121
data-group-detail-current-username="{{ request.user.get_username }}"
22+
data-group-detail-url-template="{{ group_detail_url_template }}"
23+
data-group-detail-edit-url-template="{{ group_edit_url_template }}"
24+
data-group-detail-agreement-detail-url-template="{{ agreement_detail_url_template }}"
25+
data-group-detail-agreements-list-url="{{ agreements_list_url }}"
2226
>
2327
<div class="text-muted">Loading group details...</div>
2428
</div>

astra_app/core/templates/core/groups.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<div
1616
data-groups-root
1717
data-groups-api-url="{% url 'api-groups' %}"
18+
data-groups-detail-url-template="{{ group_detail_url_template }}"
1819
>
1920
<div class="text-muted">Loading groups...</div>
2021
</div>

astra_app/core/templates/core/membership_audit_log_vue.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,8 @@ <h1 class="m-0">
2424
data-membership-audit-log-initial-q="{{ initial_q }}"
2525
data-membership-audit-log-initial-username="{{ initial_username }}"
2626
data-membership-audit-log-initial-organization="{{ initial_organization }}"
27+
data-membership-audit-log-user-profile-url-template="{{ user_profile_url_template }}"
28+
data-membership-audit-log-organization-detail-url-template="{{ organization_detail_url_template }}"
29+
data-membership-audit-log-membership-request-detail-url-template="{{ membership_request_detail_url_template }}"
2730
></div>
2831
{% endblock %}

0 commit comments

Comments
 (0)