internationalization fixed, templates url fixed, messages recompiled

This commit is contained in:
ix 2021-09-07 19:52:40 +02:00
parent 768e62f369
commit dbdd6b06f8
23 changed files with 269 additions and 502 deletions

View File

@ -18,7 +18,7 @@
<tbody> <tbody>
{% for s in solves %} {% for s in solves %}
<tr> <tr>
<th scope="row"><a href="/ctfs/{{ s.ctf.category.slug }}/{{ s.ctf.slug }}">{{ s.ctf.name }}</a></th> <th scope="row"><a href="{% url 'ctf' cat_slug=s.ctf.category.slug ctf_slug=s.ctf.slug %}">{{ s.ctf.name }}</a></th>
<td>{{ s.ctf.category.name}}</td> <td>{{ s.ctf.category.name}}</td>
<td>{{ s.ctf.points }}</td> <td>{{ s.ctf.points }}</td>
<td>{{ s.flag_date|date:"Y-m-d H:i:s" }}</td> <td>{{ s.flag_date|date:"Y-m-d H:i:s" }}</td>

26
src/change_lang.py Normal file
View File

@ -0,0 +1,26 @@
from django.template import Library
from django.core.urlresolvers import resolve, reverse
from django.utils.translation import activate, get_language
register = Library()
@register.simple_tag(takes_context=True)
def change_lang(context, lang=None, *args, **kwargs):
"""
Get active page's url by a specified language
Usage: {% change_lang 'en' %}
"""
path = context['request'].path
url_parts = resolve( path )
url = path
cur_language = get_language()
try:
activate(lang)
url = reverse( url_parts.view_name, kwargs=url_parts.kwargs )
finally:
activate(cur_language)
return "%s" % url

View File

@ -0,0 +1,28 @@
# Generated by Django 3.2.7 on 2021-09-07 14:07
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ctfs', '0003_auto_20191003_1947'),
]
operations = [
migrations.AddField(
model_name='ctf',
name='description_de',
field=models.TextField(blank=True),
),
migrations.AddField(
model_name='ctf',
name='description_en',
field=models.TextField(blank=True),
),
migrations.AddField(
model_name='ctf',
name='description_ru',
field=models.TextField(blank=True),
),
]

View File

@ -12,6 +12,9 @@ class CTF(models.Model):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
flag = models.CharField(max_length=100) flag = models.CharField(max_length=100)
description = models.TextField(blank=True) description = models.TextField(blank=True)
description_en = models.TextField(blank=True)
description_ru = models.TextField(blank=True)
description_de = models.TextField(blank=True)
file = models.FileField(blank=True, upload_to='challenges') file = models.FileField(blank=True, upload_to='challenges')
ctf_url = models.URLField(blank=True) ctf_url = models.URLField(blank=True)
points = models.PositiveSmallIntegerField() points = models.PositiveSmallIntegerField()

View File

@ -9,7 +9,11 @@
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small> <small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
</div> </div>
<div class="ctf-body"> <div class="ctf-body">
{{ ctf.description|safe }} {% if description %}
{{ description|safe }}
{% else %}
{% trans "No translation available for this challenge. Try another lang (French or English)." %}
{% endif %}
</div> </div>
<div class="ctf-footer"> <div class="ctf-footer">
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
@ -56,7 +60,7 @@
<tbody> <tbody>
{% for s in solved_list %} {% for s in solved_list %}
<tr> <tr>
<th scope="row"><a class="profile_link" href="/accounts/profile/{{ s.user.username }}"> {{ s.user.username }}</a></th> <th scope="row"><a class="profile_link" href="{% url 'accounts:profile' user_name=s.user.username %}"> {{ s.user.username }}</a></th>
<td>{{ s.user.userprofileinfo.portfolio_site }}</td> <td>{{ s.user.userprofileinfo.portfolio_site }}</td>
<td>{{ s.user.userprofileinfo.score }}</td> <td>{{ s.user.userprofileinfo.score }}</td>
<td>{{ s.flag_date }}</td> <td>{{ s.flag_date }}</td>

4
src/ctfs/templates/ctfs/ctfs_list.html Normal file → Executable file
View File

@ -26,7 +26,7 @@
{% else %} {% else %}
<th scope="row"> </th> <th scope="row"> </th>
{% endif %} {% endif %}
<td><a href="/ctfs/{{ cat.slug }}/{{ ctf.slug }}">{{ ctf.name }}</td> <td><a href="{% url 'ctf' cat_slug=ctf.category.slug ctf_slug=ctf.slug %}">{{ ctf.name }}</td>
<td>{{ ctf.points }}</td> <td>{{ ctf.points }}</td>
<td>{{ ctf.solved_num }}</td> <td>{{ ctf.solved_num }}</td>
</tr> </tr>
@ -42,7 +42,7 @@
<li class="list-group-item active">{% trans "Categories" %}</li> <li class="list-group-item active">{% trans "Categories" %}</li>
{% if cats %} {% if cats %}
{% for c in cats %} {% for c in cats %}
<a class="list-group-item" href="/ctfs/{{ c.slug }}">{{ c.name }}</a> <a class="list-group-item" href="{% url 'category' cat_slug=c.slug %}">{{ c.name }}</a>
{% endfor %} {% endfor %}
{% else %} {% else %}
<li class="list-group-item">{% trans "No category available." %}</li> <li class="list-group-item">{% trans "No category available." %}</li>

View File

@ -1,81 +0,0 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
<div class="ctf-head">
<h3>{{ ctf.name }}</h3>
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
</div>
<div class="ctf-body">
{{ ctf.description|safe }}
</div>
<div class="ctf-footer">
{% if request.user.is_authenticated %}
{% if valitated == True %}
<p>{% trans "Congratulation !" %}</p>
{% elif alvalitated == True %}
<p>{% trans "Already flagged" %}</p>
{% if ctf.ctf_url %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.ctf_url }}">{% trans "Start the challenge" %}</a></br>
{% elif ctf.file %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.file.url }}">{% trans "Download" %}</a></br>
{% endif %}
{% else %}
{% if failed %}
<p>{% trans "Wrong flag ! You can do it !" %}</p>
{% endif %}
{% if ctf.ctf_url %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.ctf_url }}">{% trans "Start the challenge" %}</a></br>
{% elif ctf.file %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.file.url }}">{% trans "Download" %}</a></br>
{% endif %}
<form method="post" class="submitflag-form">
{% csrf_token %}
<input type="text" name="flag" maxlength="48" required="" id="id_flag">
<input class="form-control" type="submit" value=">">
</form>
{% endif %}
{% endif %}
</div>
</div>
<div>
<h4>{% trans "Solved by" %}</h4>
{% if solved_list %}
<table class="table table-dark">
<thead>
<tr>
<th scope="col">{% trans "Username" %}</th>
<th scope="col">{% trans "Website" %}</th>
<th scope="col">{% trans "Score" %}</th>
<th scope="col">{% trans "Date" %}</th>
</tr>
</thead>
<tbody>
{% for s in solved_list %}
<tr>
<th scope="row"><a class="profile_link" href="/accounts/profile/{{ s.user.username }}"> {{ s.user.username }}</a></th>
<td>{{ s.user.userprofileinfo.portfolio_site }}</td>
<td>{{ s.user.userprofileinfo.score }}</td>
<td>{{ s.flag_date }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>{% trans "Nobody have solved this CTF." %}</p>
{% endif %}
</div>
</div>
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item">{% trans "Author" %} : {{ ctf.author.username }}</li>
<li class="list-group-item">{% trans "Point reward" %} : {{ ctf.points }}</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,53 +0,0 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
<div class="row">
<div class="col-sm-12 col-md-9 news-card">
<h3>{{ cat.name }}</h3>
{% if ctfs %}
<table class="table table-striped table-dark">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">{% trans "Username" %}</th>
<th scope="col">{% trans "Score" %}</th>
<th scope="col">{% trans "Solved" %}</th>
</tr>
</thead>
<tbody>
{% for ctf in ctfs %}
<tr>
{% if request.user.is_authenticated %}
{% if ctf.solved %}
<th scope="row" style="color:green;">&#10003;</th>
{% else %}
<th scope="row" style="color:red;">&#10005;</th>
{% endif %}
{% else %}
<th scope="row"> </th>
{% endif %}
<td><a href="/ctfs/{{ cat.slug }}/{{ ctf.slug }}">{{ ctf.name }}</td>
<td>{{ ctf.points }}</td>
<td>{{ ctf.solved_num }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>{% trans "No ctf available for this category." %}</p>
{% endif %}
</div>
<div class="col-sm-12 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item active">{% trans "Categories" %}</li>
{% if cats %}
{% for c in cats %}
<a class="list-group-item" href="/ctfs/{{ c.slug }}">{{ c.name }}</a>
{% endfor %}
{% else %}
<li class="list-group-item">{% trans "No category available." %}</li>
{% endif %}
</ul>
</div>
</div>
{% endblock %}

View File

@ -4,6 +4,20 @@ from django.contrib.auth.models import timezone
from .models import Category, CTF, CTF_flags from .models import Category, CTF, CTF_flags
from .forms import submit_flag from .forms import submit_flag
from accounts.models import UserProfileInfo from accounts.models import UserProfileInfo
from django.utils.translation import get_language
def get_description_by_lang(ctf):
lang = get_language()
ret = None
if lang == "fr":
ret = ctf.description
elif lang == "en":
ret = ctf.description_en
elif lang == "de":
ret = ctf.description_de
elif lang == "ru":
ret = ctf.description_ru
return ret
def category(request, cat_slug): def category(request, cat_slug):
cat = get_object_or_404(Category, slug=cat_slug) cat = get_object_or_404(Category, slug=cat_slug)
@ -17,6 +31,7 @@ def ctf(request, cat_slug, ctf_slug):
ctf_info = get_object_or_404(CTF, slug=ctf_slug) ctf_info = get_object_or_404(CTF, slug=ctf_slug)
flagged = False flagged = False
solved_list = CTF_flags.objects.filter(ctf=ctf_info).order_by('flag_date') solved_list = CTF_flags.objects.filter(ctf=ctf_info).order_by('flag_date')
description = get_description_by_lang(ctf_info)
if request.user.is_authenticated: if request.user.is_authenticated:
if CTF_flags.objects.filter(user=request.user, ctf=ctf_info): if CTF_flags.objects.filter(user=request.user, ctf=ctf_info):
flagged = True flagged = True
@ -31,18 +46,18 @@ def ctf(request, cat_slug, ctf_slug):
profil.last_submission_date = timezone.now() profil.last_submission_date = timezone.now()
profil.score += ctf_info.points profil.score += ctf_info.points
profil.save() profil.save()
return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'valitated': True}) return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'valitated': True, 'description': description})
else: else:
return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'failed': True}) return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'failed': True, 'description': description})
else: else:
form = submit_flag() form = submit_flag()
return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': True}) return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': True, 'description': description})
else: else:
form = submit_flag() form = submit_flag()
return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list}) return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'description': description})
else: else:
form = submit_flag() form = submit_flag()
return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': flagged}) return render(request, 'ctfs/ctf_info.html', {'form' : form, 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': flagged, 'description': description})
# Create your views here. # Create your views here.

View File

@ -24,7 +24,7 @@
<li class="list-group-item active">{% trans "Latest challenges added" %}</li> <li class="list-group-item active">{% trans "Latest challenges added" %}</li>
{% if ctfs %} {% if ctfs %}
{% for ctf in ctfs %} {% for ctf in ctfs %}
<a class="list-group-item" href="/ctfs/{{ ctf.category.slug }}/{{ ctf.slug }}">{{ ctf.name }}</a> <a class="list-group-item" href="{% url 'ctf' cat_slug=ctf.category.slug ctf_slug=ctf.slug %}">{{ ctf.name }}</a>
{% endfor %} {% endfor %}
{% else %} {% else %}
<li class="list-group-item">{% trans "No ctf available." %}</li> <li class="list-group-item">{% trans "No ctf available." %}</li>
@ -33,7 +33,7 @@
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item active">Top 10</li> <li class="list-group-item active">Top 10</li>
{% for t in top %} {% for t in top %}
<li class="list-group-item"># {{ forloop.counter }} <a class="profile_link" href="/accounts/profile/{{ t.user.username }}"> {{ t.user.username }}</a> <span style="position:absolute;right: 15px;">{{ t.score }}</span></li> <li class="list-group-item"># {{ forloop.counter }} <a class="profile_link" href="{% url 'accounts:profile' user_name=t.user.username %}"> {{ t.user.username }}</a> <span style="position:absolute;right: 15px;">{{ t.score }}</span></li>
{% endfor %} {% endfor %}
</ul> </ul>
<ul class="list-group"> <ul class="list-group">

View File

@ -1,4 +1,4 @@
from django.shortcuts import render from django.shortcuts import render, redirect
from django.conf import settings from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from .models import new from .models import new
@ -27,6 +27,8 @@ def home(request):
def set_language(request, lang_code): def set_language(request, lang_code):
next = '/' next = '/'
if request.GET.get('next'):
next = request.GET.get('next')
response = HttpResponseRedirect(next) response = HttpResponseRedirect(next)
if lang_code and check_for_language(lang_code): if lang_code and check_for_language(lang_code):
if next: if next:
@ -42,6 +44,7 @@ def set_language(request, lang_code):
path=settings.LANGUAGE_COOKIE_PATH, path=settings.LANGUAGE_COOKIE_PATH,
domain=settings.LANGUAGE_COOKIE_DOMAIN, domain=settings.LANGUAGE_COOKIE_DOMAIN,
) )
return response return redirect('/'+lang_code+next)
# Create your views here. # Create your views here.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-10 19:28+0000\n" "POT-Creation-Date: 2021-09-07 19:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,7 +21,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21 #: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18 #: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22 #: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12 #: ctfs/templates/ctfs/ctf_info.html:54 ctfs/templates/ctfs/ctfs_list.html:12
#: scoreboard/templates/scoreboard/scoreboard.html:12 #: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Username" msgid "Username"
msgstr "" msgstr ""
@ -31,7 +31,7 @@ msgid "Email"
msgstr "" msgstr ""
#: accounts/templates/accounts/edit.html:30 #: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:51 #: ctfs/templates/ctfs/ctf_info.html:55
#: scoreboard/templates/scoreboard/scoreboard.html:13 #: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Website" msgid "Website"
msgstr "" msgstr ""
@ -54,7 +54,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:66 #: accounts/templates/accounts/edit.html:66
#: accounts/templates/accounts/profile.html:37 #: accounts/templates/accounts/profile.html:37
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13 #: ctfs/templates/ctfs/ctf_info.html:56 ctfs/templates/ctfs/ctfs_list.html:13
#: scoreboard/templates/scoreboard/scoreboard.html:14 #: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Score" msgid "Score"
msgstr "" msgstr ""
@ -78,7 +78,7 @@ msgid "Reset password"
msgstr "" msgstr ""
#: accounts/templates/accounts/login.html:31 #: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:90 #: accounts/templates/accounts/register.html:38 templates/base.html:84
#: templates/registration/password_reset_complete.html:18 #: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:37 #: templates/registration/password_reset_confirm.html:37
#: templates/registration/password_reset_done.html:17 #: templates/registration/password_reset_done.html:17
@ -108,7 +108,7 @@ msgid "Points"
msgstr "" msgstr ""
#: accounts/templates/accounts/profile.html:15 #: accounts/templates/accounts/profile.html:15
#: ctfs/templates/ctfs/ctf_info.html:53 #: ctfs/templates/ctfs/ctf_info.html:57
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -166,39 +166,45 @@ msgstr ""
msgid "Published date" msgid "Published date"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:17 #: ctfs/templates/ctfs/ctf_info.html:15
msgid ""
"No translation available for this challenge. Try another lang (French or "
"English)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
msgid "Congratulation !" msgid "Congratulation !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:19 #: ctfs/templates/ctfs/ctf_info.html:23
msgid "Already flagged" msgid "Already flagged"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30 #: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
msgid "Start the challenge" msgid "Start the challenge"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32 #: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27 #: ctfs/templates/ctfs/ctf_info.html:31
msgid "Wrong flag ! You can do it !" msgid "Wrong flag ! You can do it !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:45 #: ctfs/templates/ctfs/ctf_info.html:49
msgid "Solved by" msgid "Solved by"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:68 #: ctfs/templates/ctfs/ctf_info.html:72
msgid "Nobody have solved this CTF." msgid "Nobody have solved this CTF."
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:74 #: ctfs/templates/ctfs/ctf_info.html:78
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:75 #: ctfs/templates/ctfs/ctf_info.html:79
msgid "Point reward" msgid "Point reward"
msgstr "" msgstr ""
@ -234,27 +240,19 @@ msgstr ""
msgid "Flags counter" msgid "Flags counter"
msgstr "" msgstr ""
#: project/settings.py:120 #: project/settings.py:111
msgid "Global Site" msgid "English"
msgstr "" msgstr ""
#: project/settings.py:121 #: project/settings.py:112
msgid "Italian"
msgstr ""
#: project/settings.py:122
msgid "German" msgid "German"
msgstr "" msgstr ""
#: project/settings.py:123 #: project/settings.py:113
msgid "French" msgid "French"
msgstr "" msgstr ""
#: project/settings.py:124 #: project/settings.py:114
msgid "Spanish"
msgstr ""
#: project/settings.py:125
msgid "Russian" msgid "Russian"
msgstr "" msgstr ""
@ -286,11 +284,11 @@ msgstr ""
msgid "Scoreboard" msgid "Scoreboard"
msgstr "" msgstr ""
#: templates/base.html:86 #: templates/base.html:80
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: templates/base.html:93 #: templates/base.html:87
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-10 19:28+0000\n" "POT-Creation-Date: 2021-09-07 19:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,7 +21,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21 #: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18 #: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22 #: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12 #: ctfs/templates/ctfs/ctf_info.html:54 ctfs/templates/ctfs/ctfs_list.html:12
#: scoreboard/templates/scoreboard/scoreboard.html:12 #: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Username" msgid "Username"
msgstr "" msgstr ""
@ -31,7 +31,7 @@ msgid "Email"
msgstr "" msgstr ""
#: accounts/templates/accounts/edit.html:30 #: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:51 #: ctfs/templates/ctfs/ctf_info.html:55
#: scoreboard/templates/scoreboard/scoreboard.html:13 #: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Website" msgid "Website"
msgstr "" msgstr ""
@ -54,7 +54,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:66 #: accounts/templates/accounts/edit.html:66
#: accounts/templates/accounts/profile.html:37 #: accounts/templates/accounts/profile.html:37
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13 #: ctfs/templates/ctfs/ctf_info.html:56 ctfs/templates/ctfs/ctfs_list.html:13
#: scoreboard/templates/scoreboard/scoreboard.html:14 #: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Score" msgid "Score"
msgstr "" msgstr ""
@ -78,7 +78,7 @@ msgid "Reset password"
msgstr "" msgstr ""
#: accounts/templates/accounts/login.html:31 #: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:90 #: accounts/templates/accounts/register.html:38 templates/base.html:84
#: templates/registration/password_reset_complete.html:18 #: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:37 #: templates/registration/password_reset_confirm.html:37
#: templates/registration/password_reset_done.html:17 #: templates/registration/password_reset_done.html:17
@ -108,7 +108,7 @@ msgid "Points"
msgstr "" msgstr ""
#: accounts/templates/accounts/profile.html:15 #: accounts/templates/accounts/profile.html:15
#: ctfs/templates/ctfs/ctf_info.html:53 #: ctfs/templates/ctfs/ctf_info.html:57
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -166,39 +166,45 @@ msgstr ""
msgid "Published date" msgid "Published date"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:17 #: ctfs/templates/ctfs/ctf_info.html:15
msgid ""
"No translation available for this challenge. Try another lang (French or "
"English)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
msgid "Congratulation !" msgid "Congratulation !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:19 #: ctfs/templates/ctfs/ctf_info.html:23
msgid "Already flagged" msgid "Already flagged"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30 #: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
msgid "Start the challenge" msgid "Start the challenge"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32 #: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27 #: ctfs/templates/ctfs/ctf_info.html:31
msgid "Wrong flag ! You can do it !" msgid "Wrong flag ! You can do it !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:45 #: ctfs/templates/ctfs/ctf_info.html:49
msgid "Solved by" msgid "Solved by"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:68 #: ctfs/templates/ctfs/ctf_info.html:72
msgid "Nobody have solved this CTF." msgid "Nobody have solved this CTF."
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:74 #: ctfs/templates/ctfs/ctf_info.html:78
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:75 #: ctfs/templates/ctfs/ctf_info.html:79
msgid "Point reward" msgid "Point reward"
msgstr "" msgstr ""
@ -234,27 +240,19 @@ msgstr ""
msgid "Flags counter" msgid "Flags counter"
msgstr "" msgstr ""
#: project/settings.py:120 #: project/settings.py:111
msgid "Global Site" msgid "English"
msgstr "" msgstr ""
#: project/settings.py:121 #: project/settings.py:112
msgid "Italian"
msgstr ""
#: project/settings.py:122
msgid "German" msgid "German"
msgstr "" msgstr ""
#: project/settings.py:123 #: project/settings.py:113
msgid "French" msgid "French"
msgstr "" msgstr ""
#: project/settings.py:124 #: project/settings.py:114
msgid "Spanish"
msgstr ""
#: project/settings.py:125
msgid "Russian" msgid "Russian"
msgstr "" msgstr ""
@ -286,11 +284,11 @@ msgstr ""
msgid "Scoreboard" msgid "Scoreboard"
msgstr "" msgstr ""
#: templates/base.html:86 #: templates/base.html:80
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: templates/base.html:93 #: templates/base.html:87
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-10 19:28+0000\n" "POT-Creation-Date: 2021-09-07 19:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,7 +21,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21 #: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18 #: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22 #: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12 #: ctfs/templates/ctfs/ctf_info.html:54 ctfs/templates/ctfs/ctfs_list.html:12
#: scoreboard/templates/scoreboard/scoreboard.html:12 #: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Username" msgid "Username"
msgstr "" msgstr ""
@ -31,7 +31,7 @@ msgid "Email"
msgstr "" msgstr ""
#: accounts/templates/accounts/edit.html:30 #: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:51 #: ctfs/templates/ctfs/ctf_info.html:55
#: scoreboard/templates/scoreboard/scoreboard.html:13 #: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Website" msgid "Website"
msgstr "" msgstr ""
@ -54,7 +54,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:66 #: accounts/templates/accounts/edit.html:66
#: accounts/templates/accounts/profile.html:37 #: accounts/templates/accounts/profile.html:37
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13 #: ctfs/templates/ctfs/ctf_info.html:56 ctfs/templates/ctfs/ctfs_list.html:13
#: scoreboard/templates/scoreboard/scoreboard.html:14 #: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Score" msgid "Score"
msgstr "" msgstr ""
@ -78,7 +78,7 @@ msgid "Reset password"
msgstr "" msgstr ""
#: accounts/templates/accounts/login.html:31 #: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:90 #: accounts/templates/accounts/register.html:38 templates/base.html:84
#: templates/registration/password_reset_complete.html:18 #: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:37 #: templates/registration/password_reset_confirm.html:37
#: templates/registration/password_reset_done.html:17 #: templates/registration/password_reset_done.html:17
@ -108,7 +108,7 @@ msgid "Points"
msgstr "" msgstr ""
#: accounts/templates/accounts/profile.html:15 #: accounts/templates/accounts/profile.html:15
#: ctfs/templates/ctfs/ctf_info.html:53 #: ctfs/templates/ctfs/ctf_info.html:57
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -166,39 +166,45 @@ msgstr ""
msgid "Published date" msgid "Published date"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:17 #: ctfs/templates/ctfs/ctf_info.html:15
msgid ""
"No translation available for this challenge. Try another lang (French or "
"English)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
msgid "Congratulation !" msgid "Congratulation !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:19 #: ctfs/templates/ctfs/ctf_info.html:23
msgid "Already flagged" msgid "Already flagged"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30 #: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
msgid "Start the challenge" msgid "Start the challenge"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32 #: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27 #: ctfs/templates/ctfs/ctf_info.html:31
msgid "Wrong flag ! You can do it !" msgid "Wrong flag ! You can do it !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:45 #: ctfs/templates/ctfs/ctf_info.html:49
msgid "Solved by" msgid "Solved by"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:68 #: ctfs/templates/ctfs/ctf_info.html:72
msgid "Nobody have solved this CTF." msgid "Nobody have solved this CTF."
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:74 #: ctfs/templates/ctfs/ctf_info.html:78
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:75 #: ctfs/templates/ctfs/ctf_info.html:79
msgid "Point reward" msgid "Point reward"
msgstr "" msgstr ""
@ -234,27 +240,19 @@ msgstr ""
msgid "Flags counter" msgid "Flags counter"
msgstr "" msgstr ""
#: project/settings.py:120 #: project/settings.py:111
msgid "Global Site" msgid "English"
msgstr "" msgstr ""
#: project/settings.py:121 #: project/settings.py:112
msgid "Italian"
msgstr ""
#: project/settings.py:122
msgid "German" msgid "German"
msgstr "" msgstr ""
#: project/settings.py:123 #: project/settings.py:113
msgid "French" msgid "French"
msgstr "" msgstr ""
#: project/settings.py:124 #: project/settings.py:114
msgid "Spanish"
msgstr ""
#: project/settings.py:125
msgid "Russian" msgid "Russian"
msgstr "" msgstr ""
@ -286,11 +284,11 @@ msgstr ""
msgid "Scoreboard" msgid "Scoreboard"
msgstr "" msgstr ""
#: templates/base.html:86 #: templates/base.html:80
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: templates/base.html:93 #: templates/base.html:87
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-06 18:30+0000\n" "POT-Creation-Date: 2021-09-07 19:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,11 +21,8 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21 #: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18 #: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22 #: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12 #: ctfs/templates/ctfs/ctf_info.html:54 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/templates/ctfs/ctf_info.html:50
#: ctfs/templates/templates/ctfs/ctfs_list.html:12
#: scoreboard/templates/scoreboard/scoreboard.html:12 #: scoreboard/templates/scoreboard/scoreboard.html:12
#: templates/ctfs/ctf_info.html:50 templates/ctfs/ctfs_list.html:12
msgid "Username" msgid "Username"
msgstr "Pseudo" msgstr "Pseudo"
@ -34,10 +31,8 @@ msgid "Email"
msgstr "" msgstr ""
#: accounts/templates/accounts/edit.html:30 #: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:51 #: ctfs/templates/ctfs/ctf_info.html:55
#: ctfs/templates/templates/ctfs/ctf_info.html:51
#: scoreboard/templates/scoreboard/scoreboard.html:13 #: scoreboard/templates/scoreboard/scoreboard.html:13
#: templates/ctfs/ctf_info.html:51
msgid "Website" msgid "Website"
msgstr "Site internet" msgstr "Site internet"
@ -59,11 +54,8 @@ msgstr "Connecter Discord"
#: accounts/templates/accounts/edit.html:66 #: accounts/templates/accounts/edit.html:66
#: accounts/templates/accounts/profile.html:37 #: accounts/templates/accounts/profile.html:37
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13 #: ctfs/templates/ctfs/ctf_info.html:56 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/templates/ctfs/ctf_info.html:52
#: ctfs/templates/templates/ctfs/ctfs_list.html:13
#: scoreboard/templates/scoreboard/scoreboard.html:14 #: scoreboard/templates/scoreboard/scoreboard.html:14
#: templates/ctfs/ctf_info.html:52 templates/ctfs/ctfs_list.html:13
msgid "Score" msgid "Score"
msgstr "Score" msgstr "Score"
@ -116,9 +108,7 @@ msgid "Points"
msgstr "Points" msgstr "Points"
#: accounts/templates/accounts/profile.html:15 #: accounts/templates/accounts/profile.html:15
#: ctfs/templates/ctfs/ctf_info.html:53 #: ctfs/templates/ctfs/ctf_info.html:57
#: ctfs/templates/templates/ctfs/ctf_info.html:53
#: templates/ctfs/ctf_info.html:53
msgid "Date" msgid "Date"
msgstr "Date" msgstr "Date"
@ -150,7 +140,9 @@ msgstr "Votre compte était inactif."
msgid "" msgid ""
"The password must contain at least one letter and at least one digit or " "The password must contain at least one letter and at least one digit or "
"punctuation character." "punctuation character."
msgstr "Le mot de passe doit contenir au moins une lettre, un chiffre et un signe de ponctuation." msgstr ""
"Le mot de passe doit contenir au moins une lettre, un chiffre et un signe de "
"ponctuation."
#: accounts/views/views.py:52 #: accounts/views/views.py:52
msgid "A user with that email already exists." msgid "A user with that email already exists."
@ -173,87 +165,64 @@ msgid "Updated."
msgstr "Mis à jour." msgstr "Mis à jour."
#: ctfs/templates/ctfs/ctf_info.html:9 #: ctfs/templates/ctfs/ctf_info.html:9
#: ctfs/templates/templates/ctfs/ctf_info.html:9 templates/ctfs/ctf_info.html:9
msgid "Published date" msgid "Published date"
msgstr "Date de publication" msgstr "Date de publication"
#: ctfs/templates/ctfs/ctf_info.html:17 #: ctfs/templates/ctfs/ctf_info.html:15
#: ctfs/templates/templates/ctfs/ctf_info.html:17 msgid ""
#: templates/ctfs/ctf_info.html:17 "No translation available for this challenge. Try another lang (French or "
"English)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
msgid "Congratulation !" msgid "Congratulation !"
msgstr "Félicitations !" msgstr "Félicitations !"
#: ctfs/templates/ctfs/ctf_info.html:19 #: ctfs/templates/ctfs/ctf_info.html:23
#: ctfs/templates/templates/ctfs/ctf_info.html:19
#: templates/ctfs/ctf_info.html:19
msgid "Already flagged" msgid "Already flagged"
msgstr "Déjà résolu" msgstr "Déjà résolu"
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30 #: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
#: ctfs/templates/templates/ctfs/ctf_info.html:21
#: ctfs/templates/templates/ctfs/ctf_info.html:30
#: templates/ctfs/ctf_info.html:21 templates/ctfs/ctf_info.html:30
msgid "Start the challenge" msgid "Start the challenge"
msgstr "Démarrer le challenge" msgstr "Démarrer le challenge"
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32 #: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
#: ctfs/templates/templates/ctfs/ctf_info.html:23
#: ctfs/templates/templates/ctfs/ctf_info.html:32
#: templates/ctfs/ctf_info.html:23 templates/ctfs/ctf_info.html:32
msgid "Download" msgid "Download"
msgstr "Télécharger" msgstr "Télécharger"
#: ctfs/templates/ctfs/ctf_info.html:27 #: ctfs/templates/ctfs/ctf_info.html:31
#: ctfs/templates/templates/ctfs/ctf_info.html:27
#: templates/ctfs/ctf_info.html:27
msgid "Wrong flag ! You can do it !" msgid "Wrong flag ! You can do it !"
msgstr "Mauvais flag ! Vous pouvez le faire !" msgstr "Mauvais flag ! Vous pouvez le faire !"
#: ctfs/templates/ctfs/ctf_info.html:45 #: ctfs/templates/ctfs/ctf_info.html:49
#: ctfs/templates/templates/ctfs/ctf_info.html:45
#: templates/ctfs/ctf_info.html:45
msgid "Solved by" msgid "Solved by"
msgstr "Résolu par" msgstr "Résolu par"
#: ctfs/templates/ctfs/ctf_info.html:68 #: ctfs/templates/ctfs/ctf_info.html:72
#: ctfs/templates/templates/ctfs/ctf_info.html:68
#: templates/ctfs/ctf_info.html:68
msgid "Nobody have solved this CTF." msgid "Nobody have solved this CTF."
msgstr "Personne n'a résolu ce CTF." msgstr "Personne n'a résolu ce CTF."
#: ctfs/templates/ctfs/ctf_info.html:74 #: ctfs/templates/ctfs/ctf_info.html:78
#: ctfs/templates/templates/ctfs/ctf_info.html:74
#: templates/ctfs/ctf_info.html:74
msgid "Author" msgid "Author"
msgstr "Auteur" msgstr "Auteur"
#: ctfs/templates/ctfs/ctf_info.html:75 #: ctfs/templates/ctfs/ctf_info.html:79
#: ctfs/templates/templates/ctfs/ctf_info.html:75
#: templates/ctfs/ctf_info.html:75
msgid "Point reward" msgid "Point reward"
msgstr "Points" msgstr "Points"
#: ctfs/templates/ctfs/ctfs_list.html:14 #: ctfs/templates/ctfs/ctfs_list.html:14
#: ctfs/templates/templates/ctfs/ctfs_list.html:14
#: templates/ctfs/ctfs_list.html:14
msgid "Solved" msgid "Solved"
msgstr "Résolu" msgstr "Résolu"
#: ctfs/templates/ctfs/ctfs_list.html:37 #: ctfs/templates/ctfs/ctfs_list.html:37
#: ctfs/templates/templates/ctfs/ctfs_list.html:37
#: templates/ctfs/ctfs_list.html:37
msgid "No ctf available for this category." msgid "No ctf available for this category."
msgstr "Il n'y a pas de challenges dans cette catégorie." msgstr "Il n'y a pas de challenges dans cette catégorie."
#: ctfs/templates/ctfs/ctfs_list.html:42 #: ctfs/templates/ctfs/ctfs_list.html:42
#: ctfs/templates/templates/ctfs/ctfs_list.html:42
#: templates/ctfs/ctfs_list.html:42
msgid "Categories" msgid "Categories"
msgstr "Catégories" msgstr "Catégories"
#: ctfs/templates/ctfs/ctfs_list.html:48 #: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
#: ctfs/templates/templates/ctfs/ctfs_list.html:48 templates/base.html:54
#: templates/ctfs/ctfs_list.html:48
msgid "No category available." msgid "No category available."
msgstr "Il n'y a pas de catégorie disponible." msgstr "Il n'y a pas de catégorie disponible."
@ -273,19 +242,19 @@ msgstr "Pas de challenge disponible"
msgid "Flags counter" msgid "Flags counter"
msgstr "Compteur de flags" msgstr "Compteur de flags"
#: project/settings.py:118 #: project/settings.py:111
msgid "English" msgid "English"
msgstr "Anglais" msgstr "Anglais"
#: project/settings.py:119 #: project/settings.py:112
msgid "German" msgid "German"
msgstr "Allemand" msgstr "Allemand"
#: project/settings.py:120 #: project/settings.py:113
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"
#: project/settings.py:121 #: project/settings.py:114
msgid "Russian" msgid "Russian"
msgstr "Russe" msgstr "Russe"
@ -357,7 +326,9 @@ msgstr "Soumettre"
msgid "" msgid ""
"We've emailed you instructions for setting your password. You should receive " "We've emailed you instructions for setting your password. You should receive "
"the email shortly!" "the email shortly!"
msgstr "Vous devrierz recevoir rapidement un email avec des instructions pour réinitialiser votre mot de passe." msgstr ""
"Vous devrierz recevoir rapidement un email avec des instructions pour "
"réinitialiser votre mot de passe."
#: templates/registration/password_reset_form.html:15 #: templates/registration/password_reset_form.html:15
msgid "Reset" msgid "Reset"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-10 19:28+0000\n" "POT-Creation-Date: 2021-09-07 19:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,7 +21,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21 #: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18 #: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22 #: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12 #: ctfs/templates/ctfs/ctf_info.html:54 ctfs/templates/ctfs/ctfs_list.html:12
#: scoreboard/templates/scoreboard/scoreboard.html:12 #: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Username" msgid "Username"
msgstr "" msgstr ""
@ -31,7 +31,7 @@ msgid "Email"
msgstr "" msgstr ""
#: accounts/templates/accounts/edit.html:30 #: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:51 #: ctfs/templates/ctfs/ctf_info.html:55
#: scoreboard/templates/scoreboard/scoreboard.html:13 #: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Website" msgid "Website"
msgstr "" msgstr ""
@ -54,7 +54,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:66 #: accounts/templates/accounts/edit.html:66
#: accounts/templates/accounts/profile.html:37 #: accounts/templates/accounts/profile.html:37
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13 #: ctfs/templates/ctfs/ctf_info.html:56 ctfs/templates/ctfs/ctfs_list.html:13
#: scoreboard/templates/scoreboard/scoreboard.html:14 #: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Score" msgid "Score"
msgstr "" msgstr ""
@ -78,7 +78,7 @@ msgid "Reset password"
msgstr "" msgstr ""
#: accounts/templates/accounts/login.html:31 #: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:90 #: accounts/templates/accounts/register.html:38 templates/base.html:84
#: templates/registration/password_reset_complete.html:18 #: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:37 #: templates/registration/password_reset_confirm.html:37
#: templates/registration/password_reset_done.html:17 #: templates/registration/password_reset_done.html:17
@ -108,7 +108,7 @@ msgid "Points"
msgstr "" msgstr ""
#: accounts/templates/accounts/profile.html:15 #: accounts/templates/accounts/profile.html:15
#: ctfs/templates/ctfs/ctf_info.html:53 #: ctfs/templates/ctfs/ctf_info.html:57
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -166,39 +166,45 @@ msgstr ""
msgid "Published date" msgid "Published date"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:17 #: ctfs/templates/ctfs/ctf_info.html:15
msgid ""
"No translation available for this challenge. Try another lang (French or "
"English)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
msgid "Congratulation !" msgid "Congratulation !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:19 #: ctfs/templates/ctfs/ctf_info.html:23
msgid "Already flagged" msgid "Already flagged"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30 #: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
msgid "Start the challenge" msgid "Start the challenge"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32 #: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27 #: ctfs/templates/ctfs/ctf_info.html:31
msgid "Wrong flag ! You can do it !" msgid "Wrong flag ! You can do it !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:45 #: ctfs/templates/ctfs/ctf_info.html:49
msgid "Solved by" msgid "Solved by"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:68 #: ctfs/templates/ctfs/ctf_info.html:72
msgid "Nobody have solved this CTF." msgid "Nobody have solved this CTF."
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:74 #: ctfs/templates/ctfs/ctf_info.html:78
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:75 #: ctfs/templates/ctfs/ctf_info.html:79
msgid "Point reward" msgid "Point reward"
msgstr "" msgstr ""
@ -234,27 +240,19 @@ msgstr ""
msgid "Flags counter" msgid "Flags counter"
msgstr "" msgstr ""
#: project/settings.py:120 #: project/settings.py:111
msgid "Global Site" msgid "English"
msgstr "" msgstr ""
#: project/settings.py:121 #: project/settings.py:112
msgid "Italian"
msgstr ""
#: project/settings.py:122
msgid "German" msgid "German"
msgstr "" msgstr ""
#: project/settings.py:123 #: project/settings.py:113
msgid "French" msgid "French"
msgstr "" msgstr ""
#: project/settings.py:124 #: project/settings.py:114
msgid "Spanish"
msgstr ""
#: project/settings.py:125
msgid "Russian" msgid "Russian"
msgstr "" msgstr ""
@ -286,11 +284,11 @@ msgstr ""
msgid "Scoreboard" msgid "Scoreboard"
msgstr "" msgstr ""
#: templates/base.html:86 #: templates/base.html:80
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: templates/base.html:93 #: templates/base.html:87
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-10 19:28+0000\n" "POT-Creation-Date: 2021-09-07 19:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,7 +23,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21 #: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18 #: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22 #: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12 #: ctfs/templates/ctfs/ctf_info.html:54 ctfs/templates/ctfs/ctfs_list.html:12
#: scoreboard/templates/scoreboard/scoreboard.html:12 #: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Username" msgid "Username"
msgstr "" msgstr ""
@ -33,7 +33,7 @@ msgid "Email"
msgstr "" msgstr ""
#: accounts/templates/accounts/edit.html:30 #: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:51 #: ctfs/templates/ctfs/ctf_info.html:55
#: scoreboard/templates/scoreboard/scoreboard.html:13 #: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Website" msgid "Website"
msgstr "" msgstr ""
@ -56,7 +56,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:66 #: accounts/templates/accounts/edit.html:66
#: accounts/templates/accounts/profile.html:37 #: accounts/templates/accounts/profile.html:37
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13 #: ctfs/templates/ctfs/ctf_info.html:56 ctfs/templates/ctfs/ctfs_list.html:13
#: scoreboard/templates/scoreboard/scoreboard.html:14 #: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Score" msgid "Score"
msgstr "счет" msgstr "счет"
@ -80,7 +80,7 @@ msgid "Reset password"
msgstr "" msgstr ""
#: accounts/templates/accounts/login.html:31 #: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:90 #: accounts/templates/accounts/register.html:38 templates/base.html:84
#: templates/registration/password_reset_complete.html:18 #: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:37 #: templates/registration/password_reset_confirm.html:37
#: templates/registration/password_reset_done.html:17 #: templates/registration/password_reset_done.html:17
@ -110,7 +110,7 @@ msgid "Points"
msgstr "" msgstr ""
#: accounts/templates/accounts/profile.html:15 #: accounts/templates/accounts/profile.html:15
#: ctfs/templates/ctfs/ctf_info.html:53 #: ctfs/templates/ctfs/ctf_info.html:57
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -168,39 +168,45 @@ msgstr ""
msgid "Published date" msgid "Published date"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:17 #: ctfs/templates/ctfs/ctf_info.html:15
msgid ""
"No translation available for this challenge. Try another lang (French or "
"English)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
msgid "Congratulation !" msgid "Congratulation !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:19 #: ctfs/templates/ctfs/ctf_info.html:23
msgid "Already flagged" msgid "Already flagged"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30 #: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
msgid "Start the challenge" msgid "Start the challenge"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32 #: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27 #: ctfs/templates/ctfs/ctf_info.html:31
msgid "Wrong flag ! You can do it !" msgid "Wrong flag ! You can do it !"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:45 #: ctfs/templates/ctfs/ctf_info.html:49
msgid "Solved by" msgid "Solved by"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:68 #: ctfs/templates/ctfs/ctf_info.html:72
msgid "Nobody have solved this CTF." msgid "Nobody have solved this CTF."
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:74 #: ctfs/templates/ctfs/ctf_info.html:78
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:75 #: ctfs/templates/ctfs/ctf_info.html:79
msgid "Point reward" msgid "Point reward"
msgstr "" msgstr ""
@ -236,27 +242,19 @@ msgstr ""
msgid "Flags counter" msgid "Flags counter"
msgstr "" msgstr ""
#: project/settings.py:120 #: project/settings.py:111
msgid "Global Site" msgid "English"
msgstr "" msgstr ""
#: project/settings.py:121 #: project/settings.py:112
msgid "Italian"
msgstr ""
#: project/settings.py:122
msgid "German" msgid "German"
msgstr "" msgstr ""
#: project/settings.py:123 #: project/settings.py:113
msgid "French" msgid "French"
msgstr "" msgstr ""
#: project/settings.py:124 #: project/settings.py:114
msgid "Spanish"
msgstr ""
#: project/settings.py:125
msgid "Russian" msgid "Russian"
msgstr "" msgstr ""
@ -288,11 +286,11 @@ msgstr ""
msgid "Scoreboard" msgid "Scoreboard"
msgstr "" msgstr ""
#: templates/base.html:86 #: templates/base.html:80
msgid "Logout" msgid "Logout"
msgstr "Выйти" msgstr "Выйти"
#: templates/base.html:93 #: templates/base.html:87
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr ""

View File

@ -14,19 +14,14 @@ import os
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from local_settings import * from local_settings import *
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production # Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [

View File

@ -18,7 +18,7 @@
{% for s in scores %} {% for s in scores %}
<tr> <tr>
<th scope="row"># {{ forloop.counter0|add:scores.start_index }}</th> <th scope="row"># {{ forloop.counter0|add:scores.start_index }}</th>
<th><a class="profile_link" href="/accounts/profile/{{ s.user.username }}"> {{ s.user.username }}</a></th> <th><a class="profile_link" href="{% url 'accounts:profile' user_name=s.user.username %}"> {{ s.user.username }}</a></th>
<td> <td>
{% if s.user.userprofileinfo.portfolio_site %} {% if s.user.userprofileinfo.portfolio_site %}
<a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a> <a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a>

View File

@ -48,7 +48,7 @@
<div class="dropdown-menu" aria-labelledby="navbarDropdown"> <div class="dropdown-menu" aria-labelledby="navbarDropdown">
{% if cats %} {% if cats %}
{% for c in cats %} {% for c in cats %}
<a class="dropdown-item" href="/ctfs/{{ c.slug }}">{{ c.name }}</a> <a class="dropdown-item" href="{% url 'category' cat_slug=c.slug %}">{{ c.name }}</a>
{% endfor %} {% endfor %}
{% else %} {% else %}
<a class="dropdown-item">{% translate "No category available." %}</a> <a class="dropdown-item">{% translate "No category available." %}</a>
@ -64,7 +64,7 @@
{% get_available_languages as languages %} {% get_available_languages as languages %}
{% for lang_code, lang_name in languages %} {% for lang_code, lang_name in languages %}
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="flag_link" href="{% url 'set_language' lang_code %}"> <a class="flag_link" href="{% url 'set_language' lang_code %}?next={{request.path|slice:"3:"}}">
<img class="flag_img" src="{% static "img/"|add:lang_code|add:".svg" %}" alt="flag {{ lang_name }}"/> <img class="flag_img" src="{% static "img/"|add:lang_code|add:".svg" %}" alt="flag {{ lang_name }}"/>
</a> </a>
</li> </li>

View File

@ -1,81 +0,0 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
<div class="ctf-head">
<h3>{{ ctf.name }}</h3>
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
</div>
<div class="ctf-body">
{{ ctf.description|safe }}
</div>
<div class="ctf-footer">
{% if request.user.is_authenticated %}
{% if valitated == True %}
<p>{% trans "Congratulation !" %}</p>
{% elif alvalitated == True %}
<p>{% trans "Already flagged" %}</p>
{% if ctf.ctf_url %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.ctf_url }}">{% trans "Start the challenge" %}</a></br>
{% elif ctf.file %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.file.url }}">{% trans "Download" %}</a></br>
{% endif %}
{% else %}
{% if failed %}
<p>{% trans "Wrong flag ! You can do it !" %}</p>
{% endif %}
{% if ctf.ctf_url %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.ctf_url }}">{% trans "Start the challenge" %}</a></br>
{% elif ctf.file %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.file.url }}">{% trans "Download" %}</a></br>
{% endif %}
<form method="post" class="submitflag-form">
{% csrf_token %}
<input type="text" name="flag" maxlength="48" required="" id="id_flag">
<input class="form-control" type="submit" value=">">
</form>
{% endif %}
{% endif %}
</div>
</div>
<div>
<h4>{% trans "Solved by" %}</h4>
{% if solved_list %}
<table class="table table-dark">
<thead>
<tr>
<th scope="col">{% trans "Username" %}</th>
<th scope="col">{% trans "Website" %}</th>
<th scope="col">{% trans "Score" %}</th>
<th scope="col">{% trans "Date" %}</th>
</tr>
</thead>
<tbody>
{% for s in solved_list %}
<tr>
<th scope="row"><a class="profile_link" href="/accounts/profile/{{ s.user.username }}"> {{ s.user.username }}</a></th>
<td>{{ s.user.userprofileinfo.portfolio_site }}</td>
<td>{{ s.user.userprofileinfo.score }}</td>
<td>{{ s.flag_date }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>{% trans "Nobody have solved this CTF." %}</p>
{% endif %}
</div>
</div>
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item">{% trans "Author" %} : {{ ctf.author.username }}</li>
<li class="list-group-item">{% trans "Point reward" %} : {{ ctf.points }}</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,53 +0,0 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
<div class="row">
<div class="col-sm-12 col-md-9 news-card">
<h3>{{ cat.name }}</h3>
{% if ctfs %}
<table class="table table-striped table-dark">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">{% trans "Username" %}</th>
<th scope="col">{% trans "Score" %}</th>
<th scope="col">{% trans "Solved" %}</th>
</tr>
</thead>
<tbody>
{% for ctf in ctfs %}
<tr>
{% if request.user.is_authenticated %}
{% if ctf.solved %}
<th scope="row" style="color:green;">&#10003;</th>
{% else %}
<th scope="row" style="color:red;">&#10005;</th>
{% endif %}
{% else %}
<th scope="row"> </th>
{% endif %}
<td><a href="/ctfs/{{ cat.slug }}/{{ ctf.slug }}">{{ ctf.name }}</td>
<td>{{ ctf.points }}</td>
<td>{{ ctf.solved_num }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>{% trans "No ctf available for this category." %}</p>
{% endif %}
</div>
<div class="col-sm-12 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item active">{% trans "Categories" %}</li>
{% if cats %}
{% for c in cats %}
<a class="list-group-item" href="/ctfs/{{ c.slug }}">{{ c.name }}</a>
{% endfor %}
{% else %}
<li class="list-group-item">{% trans "No category available." %}</li>
{% endif %}
</ul>
</div>
</div>
{% endblock %}