forked from 42CTF/website
internationalization fixed, templates url fixed, messages recompiled
This commit is contained in:
parent
04cbde8326
commit
1caccc6428
|
@ -18,7 +18,7 @@
|
|||
<tbody>
|
||||
{% for s in solves %}
|
||||
<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.points }}</td>
|
||||
<td>{{ s.flag_date|date:"Y-m-d H:i:s" }}</td>
|
||||
|
|
|
@ -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
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -12,6 +12,9 @@ class CTF(models.Model):
|
|||
name = models.CharField(max_length=200)
|
||||
flag = models.CharField(max_length=100)
|
||||
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')
|
||||
ctf_url = models.URLField(blank=True)
|
||||
points = models.PositiveSmallIntegerField()
|
||||
|
|
Binary file not shown.
|
@ -9,7 +9,11 @@
|
|||
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
|
||||
</div>
|
||||
<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 class="ctf-footer">
|
||||
{% if request.user.is_authenticated %}
|
||||
|
@ -56,7 +60,7 @@
|
|||
<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>
|
||||
<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.score }}</td>
|
||||
<td>{{ s.flag_date }}</td>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
{% else %}
|
||||
<th scope="row"> </th>
|
||||
{% 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.solved_num }}</td>
|
||||
</tr>
|
||||
|
@ -42,7 +42,7 @@
|
|||
<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>
|
||||
<a class="list-group-item" href="{% url 'category' cat_slug=c.slug %}">{{ c.name }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<li class="list-group-item">{% trans "No category available." %}</li>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
@ -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;">✓</th>
|
||||
{% else %}
|
||||
<th scope="row" style="color:red;">✕</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 %}
|
|
@ -4,6 +4,20 @@ from django.contrib.auth.models import timezone
|
|||
from .models import Category, CTF, CTF_flags
|
||||
from .forms import submit_flag
|
||||
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):
|
||||
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)
|
||||
flagged = False
|
||||
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 CTF_flags.objects.filter(user=request.user, ctf=ctf_info):
|
||||
flagged = True
|
||||
|
@ -31,18 +46,18 @@ def ctf(request, cat_slug, ctf_slug):
|
|||
profil.last_submission_date = timezone.now()
|
||||
profil.score += ctf_info.points
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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.
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<li class="list-group-item active">{% trans "Latest challenges added" %}</li>
|
||||
{% if 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 %}
|
||||
{% else %}
|
||||
<li class="list-group-item">{% trans "No ctf available." %}</li>
|
||||
|
@ -33,7 +33,7 @@
|
|||
<ul class="list-group">
|
||||
<li class="list-group-item active">Top 10</li>
|
||||
{% 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 %}
|
||||
</ul>
|
||||
<ul class="list-group">
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from django.shortcuts import render
|
||||
from django.shortcuts import render, redirect
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from .models import new
|
||||
|
@ -27,6 +27,8 @@ def home(request):
|
|||
|
||||
def set_language(request, lang_code):
|
||||
next = '/'
|
||||
if request.GET.get('next'):
|
||||
next = request.GET.get('next')
|
||||
response = HttpResponseRedirect(next)
|
||||
if lang_code and check_for_language(lang_code):
|
||||
if next:
|
||||
|
@ -42,6 +44,7 @@ def set_language(request, lang_code):
|
|||
path=settings.LANGUAGE_COOKIE_PATH,
|
||||
domain=settings.LANGUAGE_COOKIE_DOMAIN,
|
||||
)
|
||||
return response
|
||||
return redirect('/'+lang_code+next)
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
#: accounts/templates/accounts/edit.html:21
|
||||
#: accounts/templates/accounts/login.html:18
|
||||
#: 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
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
@ -31,7 +31,7 @@ msgid "Email"
|
|||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
@ -54,7 +54,7 @@ msgstr ""
|
|||
|
||||
#: accounts/templates/accounts/edit.html:66
|
||||
#: 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
|
||||
msgid "Score"
|
||||
msgstr ""
|
||||
|
@ -78,7 +78,7 @@ msgid "Reset password"
|
|||
msgstr ""
|
||||
|
||||
#: 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_confirm.html:37
|
||||
#: templates/registration/password_reset_done.html:17
|
||||
|
@ -108,7 +108,7 @@ msgid "Points"
|
|||
msgstr ""
|
||||
|
||||
#: accounts/templates/accounts/profile.html:15
|
||||
#: ctfs/templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/ctfs/ctf_info.html:57
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
|
@ -166,39 +166,45 @@ msgstr ""
|
|||
msgid "Published date"
|
||||
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 !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23
|
||||
msgid "Already flagged"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
||||
msgid "Wrong flag ! You can do it !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/ctfs/ctf_info.html:49
|
||||
msgid "Solved by"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/ctfs/ctf_info.html:72
|
||||
msgid "Nobody have solved this CTF."
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/ctfs/ctf_info.html:78
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/ctfs/ctf_info.html:79
|
||||
msgid "Point reward"
|
||||
msgstr ""
|
||||
|
||||
|
@ -234,27 +240,19 @@ msgstr ""
|
|||
msgid "Flags counter"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:120
|
||||
msgid "Global Site"
|
||||
#: project/settings.py:111
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:121
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:122
|
||||
#: project/settings.py:112
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:123
|
||||
#: project/settings.py:113
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:124
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:125
|
||||
#: project/settings.py:114
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
|
@ -286,11 +284,11 @@ msgstr ""
|
|||
msgid "Scoreboard"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:86
|
||||
#: templates/base.html:80
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:93
|
||||
#: templates/base.html:87
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
#: accounts/templates/accounts/edit.html:21
|
||||
#: accounts/templates/accounts/login.html:18
|
||||
#: 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
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
@ -31,7 +31,7 @@ msgid "Email"
|
|||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
@ -54,7 +54,7 @@ msgstr ""
|
|||
|
||||
#: accounts/templates/accounts/edit.html:66
|
||||
#: 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
|
||||
msgid "Score"
|
||||
msgstr ""
|
||||
|
@ -78,7 +78,7 @@ msgid "Reset password"
|
|||
msgstr ""
|
||||
|
||||
#: 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_confirm.html:37
|
||||
#: templates/registration/password_reset_done.html:17
|
||||
|
@ -108,7 +108,7 @@ msgid "Points"
|
|||
msgstr ""
|
||||
|
||||
#: accounts/templates/accounts/profile.html:15
|
||||
#: ctfs/templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/ctfs/ctf_info.html:57
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
|
@ -166,39 +166,45 @@ msgstr ""
|
|||
msgid "Published date"
|
||||
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 !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23
|
||||
msgid "Already flagged"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
||||
msgid "Wrong flag ! You can do it !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/ctfs/ctf_info.html:49
|
||||
msgid "Solved by"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/ctfs/ctf_info.html:72
|
||||
msgid "Nobody have solved this CTF."
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/ctfs/ctf_info.html:78
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/ctfs/ctf_info.html:79
|
||||
msgid "Point reward"
|
||||
msgstr ""
|
||||
|
||||
|
@ -234,27 +240,19 @@ msgstr ""
|
|||
msgid "Flags counter"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:120
|
||||
msgid "Global Site"
|
||||
#: project/settings.py:111
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:121
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:122
|
||||
#: project/settings.py:112
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:123
|
||||
#: project/settings.py:113
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:124
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:125
|
||||
#: project/settings.py:114
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
|
@ -286,11 +284,11 @@ msgstr ""
|
|||
msgid "Scoreboard"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:86
|
||||
#: templates/base.html:80
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:93
|
||||
#: templates/base.html:87
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
#: accounts/templates/accounts/edit.html:21
|
||||
#: accounts/templates/accounts/login.html:18
|
||||
#: 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
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
@ -31,7 +31,7 @@ msgid "Email"
|
|||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
@ -54,7 +54,7 @@ msgstr ""
|
|||
|
||||
#: accounts/templates/accounts/edit.html:66
|
||||
#: 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
|
||||
msgid "Score"
|
||||
msgstr ""
|
||||
|
@ -78,7 +78,7 @@ msgid "Reset password"
|
|||
msgstr ""
|
||||
|
||||
#: 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_confirm.html:37
|
||||
#: templates/registration/password_reset_done.html:17
|
||||
|
@ -108,7 +108,7 @@ msgid "Points"
|
|||
msgstr ""
|
||||
|
||||
#: accounts/templates/accounts/profile.html:15
|
||||
#: ctfs/templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/ctfs/ctf_info.html:57
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
|
@ -166,39 +166,45 @@ msgstr ""
|
|||
msgid "Published date"
|
||||
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 !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23
|
||||
msgid "Already flagged"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
||||
msgid "Wrong flag ! You can do it !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/ctfs/ctf_info.html:49
|
||||
msgid "Solved by"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/ctfs/ctf_info.html:72
|
||||
msgid "Nobody have solved this CTF."
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/ctfs/ctf_info.html:78
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/ctfs/ctf_info.html:79
|
||||
msgid "Point reward"
|
||||
msgstr ""
|
||||
|
||||
|
@ -234,27 +240,19 @@ msgstr ""
|
|||
msgid "Flags counter"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:120
|
||||
msgid "Global Site"
|
||||
#: project/settings.py:111
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:121
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:122
|
||||
#: project/settings.py:112
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:123
|
||||
#: project/settings.py:113
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:124
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:125
|
||||
#: project/settings.py:114
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
|
@ -286,11 +284,11 @@ msgstr ""
|
|||
msgid "Scoreboard"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:86
|
||||
#: templates/base.html:80
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:93
|
||||
#: templates/base.html:87
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -21,11 +21,8 @@ msgstr ""
|
|||
#: accounts/templates/accounts/edit.html:21
|
||||
#: accounts/templates/accounts/login.html:18
|
||||
#: accounts/templates/accounts/register.html:22
|
||||
#: ctfs/templates/ctfs/ctf_info.html:50 ctfs/templates/ctfs/ctfs_list.html:12
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:50
|
||||
#: ctfs/templates/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
|
||||
#: templates/ctfs/ctf_info.html:50 templates/ctfs/ctfs_list.html:12
|
||||
msgid "Username"
|
||||
msgstr "Pseudo"
|
||||
|
||||
|
@ -34,10 +31,8 @@ msgid "Email"
|
|||
msgstr ""
|
||||
|
||||
#: accounts/templates/accounts/edit.html:30
|
||||
#: ctfs/templates/ctfs/ctf_info.html:51
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:51
|
||||
#: ctfs/templates/ctfs/ctf_info.html:55
|
||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
||||
#: templates/ctfs/ctf_info.html:51
|
||||
msgid "Website"
|
||||
msgstr "Site internet"
|
||||
|
||||
|
@ -59,11 +54,8 @@ msgstr "Connecter Discord"
|
|||
|
||||
#: accounts/templates/accounts/edit.html:66
|
||||
#: accounts/templates/accounts/profile.html:37
|
||||
#: ctfs/templates/ctfs/ctf_info.html:52 ctfs/templates/ctfs/ctfs_list.html:13
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:52
|
||||
#: ctfs/templates/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
|
||||
#: templates/ctfs/ctf_info.html:52 templates/ctfs/ctfs_list.html:13
|
||||
msgid "Score"
|
||||
msgstr "Score"
|
||||
|
||||
|
@ -116,9 +108,7 @@ msgid "Points"
|
|||
msgstr "Points"
|
||||
|
||||
#: accounts/templates/accounts/profile.html:15
|
||||
#: ctfs/templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:53
|
||||
#: templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/ctfs/ctf_info.html:57
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
|
@ -150,7 +140,9 @@ msgstr "Votre compte était inactif."
|
|||
msgid ""
|
||||
"The password must contain at least one letter and at least one digit or "
|
||||
"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
|
||||
msgid "A user with that email already exists."
|
||||
|
@ -173,87 +165,64 @@ msgid "Updated."
|
|||
msgstr "Mis à jour."
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:9
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:9 templates/ctfs/ctf_info.html:9
|
||||
msgid "Published date"
|
||||
msgstr "Date de publication"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:17
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:17
|
||||
#: 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 !"
|
||||
msgstr "Félicitations !"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:19
|
||||
#: templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23
|
||||
msgid "Already flagged"
|
||||
msgstr "Déjà résolu"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:21 ctfs/templates/ctfs/ctf_info.html:30
|
||||
#: 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
|
||||
#: ctfs/templates/ctfs/ctf_info.html:25 ctfs/templates/ctfs/ctf_info.html:34
|
||||
msgid "Start the challenge"
|
||||
msgstr "Démarrer le challenge"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23 ctfs/templates/ctfs/ctf_info.html:32
|
||||
#: 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
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27 ctfs/templates/ctfs/ctf_info.html:36
|
||||
msgid "Download"
|
||||
msgstr "Télécharger"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:27
|
||||
#: templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
||||
msgid "Wrong flag ! You can do it !"
|
||||
msgstr "Mauvais flag ! Vous pouvez le faire !"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:45
|
||||
#: templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/ctfs/ctf_info.html:49
|
||||
msgid "Solved by"
|
||||
msgstr "Résolu par"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:68
|
||||
#: templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/ctfs/ctf_info.html:72
|
||||
msgid "Nobody have solved this CTF."
|
||||
msgstr "Personne n'a résolu ce CTF."
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:74
|
||||
#: templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/ctfs/ctf_info.html:78
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/templates/ctfs/ctf_info.html:75
|
||||
#: templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/ctfs/ctf_info.html:79
|
||||
msgid "Point reward"
|
||||
msgstr "Points"
|
||||
|
||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
||||
#: ctfs/templates/templates/ctfs/ctfs_list.html:14
|
||||
#: templates/ctfs/ctfs_list.html:14
|
||||
msgid "Solved"
|
||||
msgstr "Résolu"
|
||||
|
||||
#: 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."
|
||||
msgstr "Il n'y a pas de challenges dans cette catégorie."
|
||||
|
||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
||||
#: ctfs/templates/templates/ctfs/ctfs_list.html:42
|
||||
#: templates/ctfs/ctfs_list.html:42
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
#: ctfs/templates/ctfs/ctfs_list.html:48
|
||||
#: ctfs/templates/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
||||
#: templates/ctfs/ctfs_list.html:48
|
||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
||||
msgid "No category available."
|
||||
msgstr "Il n'y a pas de catégorie disponible."
|
||||
|
||||
|
@ -273,19 +242,19 @@ msgstr "Pas de challenge disponible"
|
|||
msgid "Flags counter"
|
||||
msgstr "Compteur de flags"
|
||||
|
||||
#: project/settings.py:118
|
||||
#: project/settings.py:111
|
||||
msgid "English"
|
||||
msgstr "Anglais"
|
||||
|
||||
#: project/settings.py:119
|
||||
#: project/settings.py:112
|
||||
msgid "German"
|
||||
msgstr "Allemand"
|
||||
|
||||
#: project/settings.py:120
|
||||
#: project/settings.py:113
|
||||
msgid "French"
|
||||
msgstr "Français"
|
||||
|
||||
#: project/settings.py:121
|
||||
#: project/settings.py:114
|
||||
msgid "Russian"
|
||||
msgstr "Russe"
|
||||
|
||||
|
@ -357,7 +326,9 @@ msgstr "Soumettre"
|
|||
msgid ""
|
||||
"We've emailed you instructions for setting your password. You should receive "
|
||||
"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
|
||||
msgid "Reset"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
#: accounts/templates/accounts/edit.html:21
|
||||
#: accounts/templates/accounts/login.html:18
|
||||
#: 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
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
@ -31,7 +31,7 @@ msgid "Email"
|
|||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
@ -54,7 +54,7 @@ msgstr ""
|
|||
|
||||
#: accounts/templates/accounts/edit.html:66
|
||||
#: 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
|
||||
msgid "Score"
|
||||
msgstr ""
|
||||
|
@ -78,7 +78,7 @@ msgid "Reset password"
|
|||
msgstr ""
|
||||
|
||||
#: 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_confirm.html:37
|
||||
#: templates/registration/password_reset_done.html:17
|
||||
|
@ -108,7 +108,7 @@ msgid "Points"
|
|||
msgstr ""
|
||||
|
||||
#: accounts/templates/accounts/profile.html:15
|
||||
#: ctfs/templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/ctfs/ctf_info.html:57
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
|
@ -166,39 +166,45 @@ msgstr ""
|
|||
msgid "Published date"
|
||||
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 !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23
|
||||
msgid "Already flagged"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
||||
msgid "Wrong flag ! You can do it !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/ctfs/ctf_info.html:49
|
||||
msgid "Solved by"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/ctfs/ctf_info.html:72
|
||||
msgid "Nobody have solved this CTF."
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/ctfs/ctf_info.html:78
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/ctfs/ctf_info.html:79
|
||||
msgid "Point reward"
|
||||
msgstr ""
|
||||
|
||||
|
@ -234,27 +240,19 @@ msgstr ""
|
|||
msgid "Flags counter"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:120
|
||||
msgid "Global Site"
|
||||
#: project/settings.py:111
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:121
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:122
|
||||
#: project/settings.py:112
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:123
|
||||
#: project/settings.py:113
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:124
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:125
|
||||
#: project/settings.py:114
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
|
@ -286,11 +284,11 @@ msgstr ""
|
|||
msgid "Scoreboard"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:86
|
||||
#: templates/base.html:80
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:93
|
||||
#: templates/base.html:87
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -23,7 +23,7 @@ msgstr ""
|
|||
#: accounts/templates/accounts/edit.html:21
|
||||
#: accounts/templates/accounts/login.html:18
|
||||
#: 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
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
@ -33,7 +33,7 @@ msgid "Email"
|
|||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
@ -56,7 +56,7 @@ msgstr ""
|
|||
|
||||
#: accounts/templates/accounts/edit.html:66
|
||||
#: 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
|
||||
msgid "Score"
|
||||
msgstr "счет"
|
||||
|
@ -80,7 +80,7 @@ msgid "Reset password"
|
|||
msgstr ""
|
||||
|
||||
#: 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_confirm.html:37
|
||||
#: templates/registration/password_reset_done.html:17
|
||||
|
@ -110,7 +110,7 @@ msgid "Points"
|
|||
msgstr ""
|
||||
|
||||
#: accounts/templates/accounts/profile.html:15
|
||||
#: ctfs/templates/ctfs/ctf_info.html:53
|
||||
#: ctfs/templates/ctfs/ctf_info.html:57
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
|
@ -168,39 +168,45 @@ msgstr ""
|
|||
msgid "Published date"
|
||||
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 !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:19
|
||||
#: ctfs/templates/ctfs/ctf_info.html:23
|
||||
msgid "Already flagged"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:27
|
||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
||||
msgid "Wrong flag ! You can do it !"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:45
|
||||
#: ctfs/templates/ctfs/ctf_info.html:49
|
||||
msgid "Solved by"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:68
|
||||
#: ctfs/templates/ctfs/ctf_info.html:72
|
||||
msgid "Nobody have solved this CTF."
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:74
|
||||
#: ctfs/templates/ctfs/ctf_info.html:78
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: ctfs/templates/ctfs/ctf_info.html:75
|
||||
#: ctfs/templates/ctfs/ctf_info.html:79
|
||||
msgid "Point reward"
|
||||
msgstr ""
|
||||
|
||||
|
@ -236,27 +242,19 @@ msgstr ""
|
|||
msgid "Flags counter"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:120
|
||||
msgid "Global Site"
|
||||
#: project/settings.py:111
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:121
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:122
|
||||
#: project/settings.py:112
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:123
|
||||
#: project/settings.py:113
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:124
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: project/settings.py:125
|
||||
#: project/settings.py:114
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
|
@ -288,11 +286,11 @@ msgstr ""
|
|||
msgid "Scoreboard"
|
||||
msgstr ""
|
||||
|
||||
#: templates/base.html:86
|
||||
#: templates/base.html:80
|
||||
msgid "Logout"
|
||||
msgstr "Выйти"
|
||||
|
||||
#: templates/base.html:93
|
||||
#: templates/base.html:87
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -14,19 +14,14 @@ import os
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from local_settings import *
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# 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
|
||||
|
||||
INSTALLED_APPS = [
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
{% for s in scores %}
|
||||
<tr>
|
||||
<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>
|
||||
{% if s.user.userprofileinfo.portfolio_site %}
|
||||
<a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a>
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
{% if 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 %}
|
||||
{% else %}
|
||||
<a class="dropdown-item">{% translate "No category available." %}</a>
|
||||
|
@ -64,7 +64,7 @@
|
|||
{% get_available_languages as languages %}
|
||||
{% for lang_code, lang_name in languages %}
|
||||
<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 }}"/>
|
||||
</a>
|
||||
</li>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
@ -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;">✓</th>
|
||||
{% else %}
|
||||
<th scope="row" style="color:red;">✕</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 %}
|
Loading…
Reference in New Issue