usethesource: Require agreement to download

This commit is contained in:
Ben Sturmfels 2023-11-10 16:35:22 +11:00
parent b8a626b955
commit e340f18ec9
Signed by: bsturmfels
GPG key ID: 023C05E2C9C068F0
3 changed files with 34 additions and 16 deletions

View file

@ -0,0 +1,13 @@
from django import forms
from .models import Comment
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['message']
class DownloadForm(forms.Form):
agree = forms.BooleanField(label="I promise and represent that I will not copy, distribute, modify, or otherwise use this source code candidate and/or firmware for any purpose other than to help SFC evaluate the source code candidate for compliance with the terms of the GNU General Public License (any version) (unless and until it is determined that the source code candidate and firmware are entirely governed by one or more software licenses that permit such use beyond such purpose).")

View file

@ -5,13 +5,19 @@
<section class="pa2 mt4 mb5">
<h2 class="f2 lh-title ttu mt0">Download</h2>
<p><strong>File</strong>: {{ download_url }}</p>
<p>By downloading this, you agree to use it only for the purposes of GPL compliance checking, unless otherwise permitted by the license.</p>
<div style="display: flex">
<a href="{% url 'usethesource:candidate' slug=candidate.slug %}" class="white bg-silver dib pv2 ph3 mb2 mr2">Back</a>
<a href="{{ download_url }}" class="white bg-green dib pv2 ph3 mb2">Download</a>
</div>
<form method="post" action="{% url 'usethesource:download' slug=candidate.slug download_type=download_type %}">
{% csrf_token %}
{% if form.agree.errors %}
<div class="br2 bg-washed-red ph4 pv3 mb2">{{ form.agree.errors }}</div>
{% endif %}
<div class="mb3" style="display: flex; align-items: start">
<span class="mr2">{{ form.agree }}</span> {{ form.agree.label_tag }}
</div>
<div style="display: flex">
<a href="{% url 'usethesource:candidate' slug=candidate.slug %}" class="b white bg-silver dib pv2 ph3 mb2 mr2">Back</a>
<button type="submit" class="b white bg-green dib pv2 ph3 bn mb2">Download</button>
</div>
</form>
</section>
{% endblock content %}

View file

@ -1,8 +1,8 @@
from django import forms
from django.contrib.admin.views.decorators import staff_member_required
from django.shortcuts import get_object_or_404, redirect, render
from .models import Candidate, Comment
from .forms import CommentForm, DownloadForm
def landing_page(request):
@ -17,20 +17,19 @@ def candidate_page(request, slug):
def download_page(request, slug, download_type):
candidate = get_object_or_404(Candidate, slug=slug)
url = candidate.source_url if download_type == 'source' else candidate.binary_url
form = DownloadForm()
if request.method == 'POST':
form = DownloadForm(request.POST)
url = candidate.source_url if download_type == 'source' else candidate.binary_url
if form.is_valid():
return redirect(url)
return render(
request,
'usethesource/download.html',
{'candidate': candidate, 'download_url': url},
{'form': form, 'candidate': candidate, 'download_type': download_type},
)
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['message']
@staff_member_required
def create_comment(request, slug):
candidate = get_object_or_404(Candidate, slug=slug)