Coverage for app/venv/lib/python3.14/site-packages/weblate/trans/views/agreement.py: 48%
23 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
4from __future__ import annotations
6from typing import TYPE_CHECKING
8from django.contrib.auth.decorators import login_required
9from django.shortcuts import render
10from django.views.decorators.cache import never_cache
12from weblate.trans.forms import ContributorAgreementForm
13from weblate.trans.models import Component, ContributorAgreement
14from weblate.trans.util import redirect_next
15from weblate.utils.views import parse_path
17if TYPE_CHECKING: 17 ↛ 18line 17 didn't jump to line 18 because the condition on line 17 was never true
18 from weblate.auth.models import AuthenticatedHttpRequest
21@never_cache
22@login_required
23def agreement_confirm(request: AuthenticatedHttpRequest, path):
24 component = parse_path(request, path, (Component,))
26 has_agreed = ContributorAgreement.objects.has_agreed(request.user, component)
28 if request.method == "POST":
29 form = ContributorAgreementForm(request.POST)
30 if form.is_valid() and not has_agreed:
31 ContributorAgreement.objects.create(user=request.user, component=component)
32 return redirect_next(request.GET.get("next"), component.get_absolute_url())
33 else:
34 form = ContributorAgreementForm(
35 initial={"next": request.GET.get("next"), "confirm": has_agreed}
36 )
38 return render(
39 request,
40 "contributor-agreement.html",
41 {"form": form, "object": component, "has_agreed": has_agreed},
42 )