diff --git a/.github/workflows/reusable-build-and-deploy.yml b/.github/workflows/reusable-build-and-deploy.yml index dc0e7b9b..f3d82320 100644 --- a/.github/workflows/reusable-build-and-deploy.yml +++ b/.github/workflows/reusable-build-and-deploy.yml @@ -96,6 +96,7 @@ jobs: CATALOGUE_URL: ${{ vars.CATALOGUE_URL }} DEBUG: ${{ vars.DEBUG }} DJANGO_ALLOWED_HOSTS: ${{ vars.DJANGO_ALLOWED_HOSTS }} + CSRF_TRUSTED_ORIGINS: ${{ vars.CSRF_TRUSTED_ORIGINS }} DJANGO_LOG_LEVEL: ${{ vars.DJANGO_LOG_LEVEL }} SENTRY_DSN_WORKAROUND: ${{ vars.SENTRY_DSN_WORKAROUND }} SECRET_KEY: ${{ secrets.SECRET_KEY }} diff --git a/core/settings.py b/core/settings.py index 77f9b8c1..95200680 100644 --- a/core/settings.py +++ b/core/settings.py @@ -39,6 +39,7 @@ "django.contrib.staticfiles", "django.contrib.humanize", "home.apps.HomeConfig", + "feedback.apps.FeedbackConfig", "django_prometheus", "users", "waffle", @@ -254,3 +255,5 @@ USE_I18N = True LANGUAGE_CODE = "en" LOCALE_PATHS = [BASE_DIR / "locale"] + +CSRF_TRUSTED_ORIGINS = os.environ.get("CSRF_TRUSTED_ORIGINS", "").split(" ") diff --git a/core/urls.py b/core/urls.py index d4af4c95..593393dd 100644 --- a/core/urls.py +++ b/core/urls.py @@ -18,10 +18,12 @@ from django.contrib import admin from django.urls import include, path +app_name = "core" urlpatterns = [ path("admin/", view=admin.site.urls), path("azure_auth/", include("azure_auth.urls", namespace="azure_auth")), + path("feedback/", include("feedback.urls", namespace="feedback")), path("", include("home.urls", namespace="home")), path("", include("django_prometheus.urls")), ] diff --git a/deployments/templates/deployment.yml b/deployments/templates/deployment.yml index 509bebd4..a687b8df 100644 --- a/deployments/templates/deployment.yml +++ b/deployments/templates/deployment.yml @@ -46,6 +46,8 @@ spec: value: "$AZURE_REDIRECT_URI" - name: AZURE_AUTHORITY value: "$AZURE_AUTHORITY" + - name: CSRF_TRUSTED_ORIGINS + value: "${CSRF_TRUSTED_ORIGINS}" - name: SECRET_KEY valueFrom: secretKeyRef: diff --git a/feedback/__init__.py b/feedback/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/feedback/admin.py b/feedback/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/feedback/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/feedback/apps.py b/feedback/apps.py new file mode 100644 index 00000000..d26ac3cb --- /dev/null +++ b/feedback/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class FeedbackConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "feedback" diff --git a/feedback/forms.py b/feedback/forms.py new file mode 100644 index 00000000..b3c80f29 --- /dev/null +++ b/feedback/forms.py @@ -0,0 +1,25 @@ +from django.forms import ModelForm +from django.forms.widgets import RadioSelect + +from .models import Feedback + + +def formfield(field, **kwargs): + """ + Wrapper around the db model's formfield method that maps db fields to form fields. + + This is a workaround to prevent a blank choice being included in the ChoiceField. + By default, if the model field has no default value (or blank is set to True), + then it will include this empty value, even if we have customised the widget is customised. + """ + return field.formfield(initial=None, **kwargs) + + +class FeedbackForm(ModelForm): + class Meta: + model = Feedback + fields = ["satisfaction_rating", "how_can_we_improve"] + widgets = { + "satisfaction_rating": RadioSelect(attrs={"class": "govuk-radios__input"}) + } + formfield_callback = formfield diff --git a/feedback/management/__init__.py b/feedback/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/feedback/management/commands/__init__.py b/feedback/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/feedback/management/commands/export_feedback.py b/feedback/management/commands/export_feedback.py new file mode 100644 index 00000000..7e2190e4 --- /dev/null +++ b/feedback/management/commands/export_feedback.py @@ -0,0 +1,17 @@ +import csv +from sys import stdout + +from django.core.management.base import BaseCommand + +from feedback.models import Feedback + + +class Command(BaseCommand): + help = "Export feedback survey data" + + def handle(self, *args, **options): + writer = csv.writer(stdout) + writer.writerow(["satisfaction_rating", "how_can_we_improve"]) + + for feedback in Feedback.objects.all(): + writer.writerow([feedback.satisfaction_rating, feedback.how_can_we_improve]) diff --git a/feedback/migrations/0001_initial.py b/feedback/migrations/0001_initial.py new file mode 100644 index 00000000..0479cf7a --- /dev/null +++ b/feedback/migrations/0001_initial.py @@ -0,0 +1,44 @@ +# Generated by Django 5.0.7 on 2024-08-13 11:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Feedback", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "satisfaction_rating", + models.IntegerField( + choices=[ + (5, "Very satisfied"), + (4, "Satisfied"), + (3, "Neither satisfied or dissatisfied"), + (2, "Dissatisfied"), + (1, "Very dissatisfied"), + ], + verbose_name="Satisfaction survey", + ), + ), + ( + "how_can_we_improve", + models.TextField(verbose_name="How can we improve this service?"), + ), + ], + ), + ] diff --git a/feedback/migrations/__init__.py b/feedback/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/feedback/models.py b/feedback/models.py new file mode 100644 index 00000000..066b4cb3 --- /dev/null +++ b/feedback/models.py @@ -0,0 +1,23 @@ +from django.db import models +from django.utils.translation import gettext as _ + + +class Feedback(models.Model): + SATISFACTION_RATINGS = [ + (5, "Very satisfied"), + (4, "Satisfied"), + (3, "Neither satisfied or dissatisfied"), + (2, "Dissatisfied"), + (1, "Very dissatisfied"), + ] + + satisfaction_rating = models.IntegerField( + choices=SATISFACTION_RATINGS, + verbose_name=_("Satisfaction survey"), + null=False, + blank=False, + ) + + how_can_we_improve = models.TextField( + verbose_name=_("How can we improve this service?"), null=False, blank=True + ) diff --git a/feedback/templates/feedback.html b/feedback/templates/feedback.html new file mode 100644 index 00000000..5fe96849 --- /dev/null +++ b/feedback/templates/feedback.html @@ -0,0 +1,69 @@ +{% extends "base/base.html" %} +{% load static %} +{% load i18n %} + +{% block content %} +
+
+

{{h1_value}}

+
+ +
+
+ + {% if form.errors %} +
+
+

+ {% translate "There is a problem" %} +

+
+

{% translate 'Make sure you have filled in all the fields.' %}

+
+
+
+ {% endif %} + +
+
+ +

+ {{form.satisfaction_rating.label}} +

+
+ {% for error in form.satisfaction_rating.errors %} +

+ Error: {{error}} +

+ {% endfor %} +
+ {% for radio in form.satisfaction_rating %} +
+ {{radio.tag}} + +
+ {% endfor %} +
+
+
+
+

+ +

+
+ {% translate 'Do not include personal or financial information, like your National Insurance number or credit card details.' %} +
+ +
+ + {% csrf_token %} +
+
+
+{% endblock content %} diff --git a/feedback/templates/thanks.html b/feedback/templates/thanks.html new file mode 100644 index 00000000..5385a91c --- /dev/null +++ b/feedback/templates/thanks.html @@ -0,0 +1,16 @@ +{% extends "base/base.html" %} +{% load i18n %} +{% load static %} + +{% block content %} +
+
+

+ {% translate 'Thank you for your feedback' %} +

+ +

{% translate 'Your feedback will help us improve the service.' %}

+
+ +
+{% endblock content %} \ No newline at end of file diff --git a/feedback/tests.py b/feedback/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/feedback/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/feedback/urls.py b/feedback/urls.py new file mode 100644 index 00000000..367ea324 --- /dev/null +++ b/feedback/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from . import views + +app_name = "feedback" + +urlpatterns = [ + path("", views.feedback_form_view, name="feedback"), + path("thanks", views.thank_you_view, name="thanks"), +] diff --git a/feedback/views.py b/feedback/views.py new file mode 100644 index 00000000..9057ab4c --- /dev/null +++ b/feedback/views.py @@ -0,0 +1,38 @@ +import logging + +from django.http import HttpResponse +from django.shortcuts import redirect, render +from django.utils.translation import gettext as _ + +from .forms import FeedbackForm + +log = logging.getLogger(__name__) + + +def feedback_form_view(request) -> HttpResponse: + if request.method == "POST": + form = FeedbackForm(request.POST) + if form.is_valid(): + form.save() + return redirect("feedback:thanks") + else: + log.error(f"Unexpected invalid feedback form submission: {form.errors}") + else: + form = FeedbackForm() + + return render( + request, + "feedback.html", + { + "h1_value": _("Give feedback on Find MOJ data"), + "form": form, + }, + ) + + +def thank_you_view(request) -> HttpResponse: + return render( + request, + "thanks.html", + {"h1_value": _("Thank you for your feedback")}, + ) diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index bca38153..ce4373ce 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Find MoJ data\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-13 12:31+0100\n" +"POT-Creation-Date: 2024-08-14 10:18+0100\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,6 +32,43 @@ msgstr "Page not found" msgid "Server error" msgstr "Server error" +#: feedback/models.py:16 +msgid "Satisfaction survey" +msgstr "Satisfaction survey" + +#: feedback/models.py:22 +msgid "How can we improve this service?" +msgstr "How can we improve this service?" + +#: feedback/templates/feedback.html:18 +msgid "There is a problem" +msgstr "There is a problem" + +#: feedback/templates/feedback.html:21 +msgid "Make sure you have filled in all the fields." +msgstr "Make sure you have filled in all the fields." + +#: feedback/templates/feedback.html:58 +msgid "" +"Do not include personal or financial information, like your National " +"Insurance number or credit card details." +msgstr "" +"Do not include personal or financial information, like your National " +"Insurance number or credit card details." + +#: feedback/templates/thanks.html:8 feedback/views.py:37 +msgid "Thank you for your feedback" +msgstr "Thank you for your feedback" + +#: feedback/templates/thanks.html:11 +msgid "Your feedback will help us improve the service." +msgstr "Your feedback will help us improve the service." + +# Page heading +#: feedback/views.py:27 +msgid "Give feedback on Find MOJ data" +msgstr "Give feedback on Find MOJ data" + # Entity type displayed with as a tag component #: home/service/details.py:65 templates/partial/search_result.html:21 msgid "Database" @@ -53,13 +90,13 @@ msgid "Metadata specification" msgstr "Metadata specification" # Page title -#: home/service/search.py:171 templates/base/navigation.html:66 +#: home/service/search.py:171 templates/base/navigation.html:69 #: templates/details_base.html:14 msgid "Search" msgstr "Search" # Page title -#: home/views.py:25 templates/base/navigation.html:61 +#: home/views.py:25 templates/base/navigation.html:64 msgid "Home" msgstr "Home" @@ -162,8 +199,12 @@ msgstr "Ministry of Justice" msgid "Find MOJ data" msgstr "Find MoJ data" -# Header link #: templates/base/navigation.html:36 +msgid "Feedback" +msgstr "Feedback" + +# Header link +#: templates/base/navigation.html:39 msgid "Sign out" msgstr "Sign out" @@ -577,1576 +618,3 @@ msgstr "first name" #: users/models.py:12 msgid "last name" msgstr "last name" - -#: venv/lib/python3.11/site-packages/_pytest/config/argparsing.py:475 -#, python-format -msgid "ambiguous option: %(option)s could match %(matches)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/_termui_impl.py:518 -#, python-brace-format -msgid "{editor}: Editing failed" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/_termui_impl.py:522 -#, python-brace-format -msgid "{editor}: Editing failed: {e}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1120 -#: venv/lib/python3.11/site-packages/typer/core.py:244 -msgid "Aborted!" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1309 -#: venv/lib/python3.11/site-packages/click/decorators.py:559 -msgid "Show this message and exit." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1340 -#: venv/lib/python3.11/site-packages/click/core.py:1370 -#, python-brace-format -msgid "(Deprecated) {text}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1387 -#: venv/lib/python3.11/site-packages/typer/core.py:575 -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:91 -msgid "Options" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1413 -#, python-brace-format -msgid "Got unexpected extra argument ({args})" -msgid_plural "Got unexpected extra arguments ({args})" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/click/core.py:1429 -msgid "DeprecationWarning: The command {name!r} is deprecated." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1636 -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:92 -msgid "Commands" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1668 -msgid "Missing command." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:1746 -msgid "No such command {name!r}." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:2310 -msgid "Value must be an iterable." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:2331 -#, python-brace-format -msgid "Takes {nargs} values but 1 was given." -msgid_plural "Takes {nargs} values but {len} were given." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/click/core.py:2778 -#: venv/lib/python3.11/site-packages/typer/core.py:519 -#, python-brace-format -msgid "env var: {var}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:2808 -#: venv/lib/python3.11/site-packages/typer/core.py:116 -msgid "(dynamic)" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:2821 -#: venv/lib/python3.11/site-packages/typer/core.py:359 -#: venv/lib/python3.11/site-packages/typer/core.py:540 -#, python-brace-format -msgid "default: {default}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/core.py:2834 -#: venv/lib/python3.11/site-packages/typer/core.py:361 -#: venv/lib/python3.11/site-packages/typer/core.py:549 -msgid "required" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/decorators.py:465 -#, python-format -msgid "%(prog)s, version %(version)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/decorators.py:528 -msgid "Show the version and exit." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:44 -#: venv/lib/python3.11/site-packages/click/exceptions.py:80 -#, python-brace-format -msgid "Error: {message}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:72 -#, python-brace-format -msgid "Try '{command} {option}' for help." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:121 -#, python-brace-format -msgid "Invalid value: {message}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:123 -#, python-brace-format -msgid "Invalid value for {param_hint}: {message}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:179 -msgid "Missing argument" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:181 -msgid "Missing option" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:183 -msgid "Missing parameter" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:185 -#, python-brace-format -msgid "Missing {param_type}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:192 -#, python-brace-format -msgid "Missing parameter: {param_name}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:212 -#, python-brace-format -msgid "No such option: {name}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:224 -#, python-brace-format -msgid "Did you mean {possibility}?" -msgid_plural "(Possible options: {possibilities})" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:262 -msgid "unknown error" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/exceptions.py:269 -msgid "Could not open file {filename!r}: {message}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/parser.py:231 -msgid "Argument {name!r} takes {nargs} values." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/parser.py:413 -msgid "Option {name!r} does not take a value." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/parser.py:474 -msgid "Option {name!r} requires an argument." -msgid_plural "Option {name!r} requires {nargs} arguments." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/click/shell_completion.py:319 -msgid "Shell completion is not supported for Bash versions older than 4.4." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/shell_completion.py:326 -msgid "Couldn't detect Bash version, shell completion is not supported." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/termui.py:158 -msgid "Repeat for confirmation" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/termui.py:174 -msgid "Error: The value you entered was invalid." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/termui.py:176 -#, python-brace-format -msgid "Error: {e.message}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/termui.py:187 -msgid "Error: The two entered values do not match." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/termui.py:243 -msgid "Error: invalid input" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/termui.py:773 -msgid "Press any key to continue..." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:266 -#, python-brace-format -msgid "" -"Choose from:\n" -"\t{choices}" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:298 -msgid "{value!r} is not {choice}." -msgid_plural "{value!r} is not one of {choices}." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/click/types.py:392 -msgid "{value!r} does not match the format {format}." -msgid_plural "{value!r} does not match the formats {formats}." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/click/types.py:414 -msgid "{value!r} is not a valid {number_type}." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:470 -#, python-brace-format -msgid "{value} is not in the range {range}." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:611 -msgid "{value!r} is not a valid boolean." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:635 -msgid "{value!r} is not a valid UUID." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:822 -msgid "file" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:824 -msgid "directory" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:826 -msgid "path" -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:877 -msgid "{name} {filename!r} does not exist." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:886 -msgid "{name} {filename!r} is a file." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:894 -#, python-brace-format -msgid "{name} '{filename}' is a directory." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:903 -msgid "{name} {filename!r} is not readable." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:912 -msgid "{name} {filename!r} is not writable." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:921 -msgid "{name} {filename!r} is not executable." -msgstr "" - -#: venv/lib/python3.11/site-packages/click/types.py:988 -#, python-brace-format -msgid "{len_type} values are required, but {len_value} was given." -msgid_plural "{len_type} values are required, but {len_value} were given." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/contrib/messages/apps.py:16 -msgid "Messages" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/contrib/sitemaps/apps.py:8 -msgid "Site Maps" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/contrib/staticfiles/apps.py:9 -msgid "Static Files" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/contrib/syndication/apps.py:7 -msgid "Syndication" -msgstr "" - -#. Translators: String used to replace omitted page numbers in elided page -#. range generated by paginators, e.g. [1, 2, '…', 5, 6, 7, '…', 9, 10]. -#: venv/lib/python3.11/site-packages/django/core/paginator.py:30 -msgid "…" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/paginator.py:32 -msgid "That page number is not an integer" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/paginator.py:33 -msgid "That page number is less than 1" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/paginator.py:34 -msgid "That page contains no results" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:22 -msgid "Enter a valid value." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:104 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:760 -msgid "Enter a valid URL." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:165 -msgid "Enter a valid integer." -msgstr "" - -# User model field -#: venv/lib/python3.11/site-packages/django/core/validators.py:176 -#, fuzzy -#| msgid "email address" -msgid "Enter a valid email address." -msgstr "email address" - -#. Translators: "letters" means latin letters: a-z and A-Z. -#: venv/lib/python3.11/site-packages/django/core/validators.py:259 -msgid "" -"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:267 -msgid "" -"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " -"hyphens." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:279 -#: venv/lib/python3.11/site-packages/django/core/validators.py:306 -msgid "Enter a valid IPv4 address." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:286 -#: venv/lib/python3.11/site-packages/django/core/validators.py:307 -msgid "Enter a valid IPv6 address." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:298 -#: venv/lib/python3.11/site-packages/django/core/validators.py:305 -msgid "Enter a valid IPv4 or IPv6 address." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:341 -msgid "Enter only digits separated by commas." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:347 -#, python-format -msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:382 -#, python-format -msgid "Ensure this value is less than or equal to %(limit_value)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:391 -#, python-format -msgid "Ensure this value is greater than or equal to %(limit_value)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:400 -#, python-format -msgid "Ensure this value is a multiple of step size %(limit_value)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:407 -#, python-format -msgid "" -"Ensure this value is a multiple of step size %(limit_value)s, starting from " -"%(offset)s, e.g. %(offset)s, %(valid_value1)s, %(valid_value2)s, and so on." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:439 -#, python-format -msgid "" -"Ensure this value has at least %(limit_value)d character (it has " -"%(show_value)d)." -msgid_plural "" -"Ensure this value has at least %(limit_value)d characters (it has " -"%(show_value)d)." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:457 -#, python-format -msgid "" -"Ensure this value has at most %(limit_value)d character (it has " -"%(show_value)d)." -msgid_plural "" -"Ensure this value has at most %(limit_value)d characters (it has " -"%(show_value)d)." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:480 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:355 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:394 -msgid "Enter a number." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:482 -#, python-format -msgid "Ensure that there are no more than %(max)s digit in total." -msgid_plural "Ensure that there are no more than %(max)s digits in total." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:487 -#, python-format -msgid "Ensure that there are no more than %(max)s decimal place." -msgid_plural "Ensure that there are no more than %(max)s decimal places." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:492 -#, python-format -msgid "" -"Ensure that there are no more than %(max)s digit before the decimal point." -msgid_plural "" -"Ensure that there are no more than %(max)s digits before the decimal point." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:563 -#, python-format -msgid "" -"File extension “%(extension)s” is not allowed. Allowed extensions are: " -"%(allowed_extensions)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/core/validators.py:624 -msgid "Null characters are not allowed." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/base.py:1477 -#: venv/lib/python3.11/site-packages/django/forms/models.py:906 -msgid "and" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/base.py:1479 -#, python-format -msgid "%(model_name)s with this %(field_labels)s already exists." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/constraints.py:20 -#, python-format -msgid "Constraint “%(name)s” is violated." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:133 -#, python-format -msgid "Value %(value)r is not a valid choice." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:134 -msgid "This field cannot be null." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:135 -msgid "This field cannot be blank." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:136 -#, python-format -msgid "%(model_name)s with this %(field_label)s already exists." -msgstr "" - -#. Translators: The 'lookup_type' is one of 'date', 'year' or -#. 'month'. Eg: "Title must be unique for pub_date year" -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:140 -#, python-format -msgid "" -"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:179 -#, python-format -msgid "Field of type: %(field_type)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1155 -#, python-format -msgid "“%(value)s” value must be either True or False." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1156 -#, python-format -msgid "“%(value)s” value must be either True, False, or None." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1158 -msgid "Boolean (Either True or False)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1208 -#, python-format -msgid "String (up to %(max_length)s)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1210 -msgid "String (unlimited)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1314 -msgid "Comma-separated integers" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1415 -#, python-format -msgid "" -"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " -"format." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1419 -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1554 -#, python-format -msgid "" -"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " -"date." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1423 -msgid "Date (without time)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1550 -#, python-format -msgid "" -"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." -"uuuuuu]][TZ] format." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1558 -#, python-format -msgid "" -"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" -"[TZ]) but it is an invalid date/time." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1563 -msgid "Date (with time)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1690 -#, python-format -msgid "“%(value)s” value must be a decimal number." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1692 -msgid "Decimal number" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1853 -#, python-format -msgid "" -"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." -"uuuuuu] format." -msgstr "" - -# Heading -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1857 -#, fuzzy -#| msgid "Description" -msgid "Duration" -msgstr "Description" - -# User model field -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1909 -#, fuzzy -#| msgid "email address" -msgid "Email address" -msgstr "email address" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1934 -msgid "File path" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2012 -#, python-format -msgid "“%(value)s” value must be a float." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2014 -msgid "Floating point number" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2054 -#, python-format -msgid "“%(value)s” value must be an integer." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2056 -msgid "Integer" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2152 -msgid "Big (8 byte) integer" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2169 -msgid "Small integer" -msgstr "" - -# User model field -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2177 -#, fuzzy -#| msgid "email address" -msgid "IPv4 address" -msgstr "email address" - -# User model field -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2208 -#, fuzzy -#| msgid "email address" -msgid "IP address" -msgstr "email address" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2301 -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2302 -#, python-format -msgid "“%(value)s” value must be either None, True or False." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2304 -msgid "Boolean (Either True, False or None)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2355 -msgid "Positive big integer" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2370 -msgid "Positive integer" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2385 -msgid "Positive small integer" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2401 -#, python-format -msgid "Slug (up to %(max_length)s)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2437 -msgid "Text" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2512 -#, python-format -msgid "" -"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " -"format." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2516 -#, python-format -msgid "" -"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " -"invalid time." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2520 -msgid "Time" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2628 -msgid "URL" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2652 -msgid "Raw binary data" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2717 -#, python-format -msgid "“%(value)s” is not a valid UUID." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2719 -msgid "Universally unique identifier" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/files.py:232 -msgid "File" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/files.py:393 -msgid "Image" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/json.py:26 -msgid "A JSON object" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/json.py:28 -msgid "Value must be valid JSON." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/related.py:939 -#, python-format -msgid "%(model)s instance with %(field)s %(value)r does not exist." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/related.py:941 -msgid "Foreign Key (type determined by related field)" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/related.py:1235 -msgid "One-to-one relationship" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/related.py:1292 -#, python-format -msgid "%(from)s-%(to)s relationship" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/related.py:1294 -#, python-format -msgid "%(from)s-%(to)s relationships" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/db/models/fields/related.py:1342 -msgid "Many-to-many relationship" -msgstr "" - -#. Translators: If found as last label character, these punctuation -#. characters will prevent the default label_suffix to be appended to the label -#: venv/lib/python3.11/site-packages/django/forms/boundfield.py:185 -msgid ":?.!" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:95 -msgid "This field is required." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:304 -msgid "Enter a whole number." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:475 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:1252 -msgid "Enter a valid date." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:498 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:1253 -msgid "Enter a valid time." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:525 -msgid "Enter a valid date/time." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:559 -msgid "Enter a valid duration." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:560 -#, python-brace-format -msgid "The number of days must be between {min_days} and {max_days}." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:629 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:630 -msgid "No file was submitted." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:631 -msgid "The submitted file is empty." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:633 -#, python-format -msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." -msgid_plural "" -"Ensure this filename has at most %(max)d characters (it has %(length)d)." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:638 -msgid "Please either submit a file or check the clear checkbox, not both." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:702 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:874 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:960 -#: venv/lib/python3.11/site-packages/django/forms/models.py:1585 -#, python-format -msgid "Select a valid choice. %(value)s is not one of the available choices." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:962 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:1081 -#: venv/lib/python3.11/site-packages/django/forms/models.py:1583 -msgid "Enter a list of values." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:1082 -msgid "Enter a complete value." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:1321 -msgid "Enter a valid UUID." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/fields.py:1351 -msgid "Enter a valid JSON." -msgstr "" - -#. Translators: This is the default suffix added to form field labels -#: venv/lib/python3.11/site-packages/django/forms/forms.py:94 -msgid ":" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/forms.py:231 -#, python-format -msgid "(Hidden field %(name)s) %(error)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/formsets.py:61 -#, python-format -msgid "" -"ManagementForm data is missing or has been tampered with. Missing fields: " -"%(field_names)s. You may need to file a bug report if the issue persists." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/formsets.py:65 -#, python-format -msgid "Please submit at most %(num)d form." -msgid_plural "Please submit at most %(num)d forms." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/forms/formsets.py:70 -#, python-format -msgid "Please submit at least %(num)d form." -msgid_plural "Please submit at least %(num)d forms." -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/forms/formsets.py:484 -#: venv/lib/python3.11/site-packages/django/forms/formsets.py:491 -msgid "Order" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/formsets.py:499 -msgid "Delete" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:899 -#, python-format -msgid "Please correct the duplicate data for %(field)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:904 -#, python-format -msgid "Please correct the duplicate data for %(field)s, which must be unique." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:911 -#, python-format -msgid "" -"Please correct the duplicate data for %(field_name)s which must be unique " -"for the %(lookup)s in %(date_field)s." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:920 -msgid "Please correct the duplicate values below." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:1357 -msgid "The inline value did not match the parent instance." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:1448 -msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/models.py:1587 -#, python-format -msgid "“%(pk)s” is not a valid value." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/utils.py:227 -#, python-format -msgid "" -"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " -"may be ambiguous or it may not exist." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/widgets.py:461 -msgid "Clear" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/widgets.py:462 -msgid "Currently" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/widgets.py:463 -msgid "Change" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/widgets.py:800 -msgid "Unknown" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/widgets.py:801 -msgid "Yes" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/forms/widgets.py:802 -msgid "No" -msgstr "" - -#. Translators: Please do not add spaces around commas. -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:876 -msgid "yes,no,maybe" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:906 -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:923 -#, python-format -msgid "%(size)d byte" -msgid_plural "%(size)d bytes" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:925 -#, python-format -msgid "%s KB" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:927 -#, python-format -msgid "%s MB" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:929 -#, python-format -msgid "%s GB" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:931 -#, python-format -msgid "%s TB" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/template/defaultfilters.py:933 -#, python-format -msgid "%s PB" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dateformat.py:74 -msgid "p.m." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dateformat.py:75 -msgid "a.m." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dateformat.py:80 -msgid "PM" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dateformat.py:81 -msgid "AM" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dateformat.py:153 -msgid "midnight" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dateformat.py:155 -msgid "noon" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:7 -msgid "Monday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:8 -msgid "Tuesday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:9 -msgid "Wednesday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:10 -msgid "Thursday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:11 -msgid "Friday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:12 -msgid "Saturday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:13 -msgid "Sunday" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:16 -msgid "Mon" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:17 -msgid "Tue" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:18 -msgid "Wed" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:19 -msgid "Thu" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:20 -msgid "Fri" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:21 -msgid "Sat" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:22 -msgid "Sun" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:25 -msgid "January" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:26 -msgid "February" -msgstr "" - -# Page title -#: venv/lib/python3.11/site-packages/django/utils/dates.py:27 -#, fuzzy -#| msgid "Search" -msgid "March" -msgstr "Search" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:28 -msgid "April" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:29 -msgid "May" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:30 -msgid "June" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:31 -msgid "July" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:32 -msgid "August" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:33 -msgid "September" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:34 -msgid "October" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:35 -msgid "November" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:36 -msgid "December" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:39 -msgid "jan" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:40 -msgid "feb" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:41 -msgid "mar" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:42 -msgid "apr" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:43 -msgid "may" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:44 -msgid "jun" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:45 -msgid "jul" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:46 -msgid "aug" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:47 -msgid "sep" -msgstr "" - -# Footer link -#: venv/lib/python3.11/site-packages/django/utils/dates.py:48 -#, fuzzy -#| msgid "Contact" -msgid "oct" -msgstr "Contact" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:49 -msgid "nov" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:50 -msgid "dec" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:53 -msgctxt "abbrev. month" -msgid "Jan." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:54 -msgctxt "abbrev. month" -msgid "Feb." -msgstr "" - -# Page title -#: venv/lib/python3.11/site-packages/django/utils/dates.py:55 -#, fuzzy -#| msgid "Search" -msgctxt "abbrev. month" -msgid "March" -msgstr "Search" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:56 -msgctxt "abbrev. month" -msgid "April" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:57 -msgctxt "abbrev. month" -msgid "May" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:58 -msgctxt "abbrev. month" -msgid "June" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:59 -msgctxt "abbrev. month" -msgid "July" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:60 -msgctxt "abbrev. month" -msgid "Aug." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:61 -msgctxt "abbrev. month" -msgid "Sept." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:62 -msgctxt "abbrev. month" -msgid "Oct." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:63 -msgctxt "abbrev. month" -msgid "Nov." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:64 -msgctxt "abbrev. month" -msgid "Dec." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:67 -msgctxt "alt. month" -msgid "January" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:68 -msgctxt "alt. month" -msgid "February" -msgstr "" - -# Page title -#: venv/lib/python3.11/site-packages/django/utils/dates.py:69 -#, fuzzy -#| msgid "Search" -msgctxt "alt. month" -msgid "March" -msgstr "Search" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:70 -msgctxt "alt. month" -msgid "April" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:71 -msgctxt "alt. month" -msgid "May" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:72 -msgctxt "alt. month" -msgid "June" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:73 -msgctxt "alt. month" -msgid "July" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:74 -msgctxt "alt. month" -msgid "August" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:75 -msgctxt "alt. month" -msgid "September" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:76 -msgctxt "alt. month" -msgid "October" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:77 -msgctxt "alt. month" -msgid "November" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/dates.py:78 -msgctxt "alt. month" -msgid "December" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/ipv6.py:8 -msgid "This is not a valid IPv6 address." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/text.py:123 -#, python-format -msgctxt "String to return when truncating text" -msgid "%(truncated_text)s…" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/text.py:323 -msgid "or" -msgstr "" - -#. Translators: This string is used as a separator between list elements -#: venv/lib/python3.11/site-packages/django/utils/text.py:342 -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:135 -msgid ", " -msgstr "" - -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:8 -#, python-format -msgid "%(num)d year" -msgid_plural "%(num)d years" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:9 -#, python-format -msgid "%(num)d month" -msgid_plural "%(num)d months" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:10 -#, python-format -msgid "%(num)d week" -msgid_plural "%(num)d weeks" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:11 -#, python-format -msgid "%(num)d day" -msgid_plural "%(num)d days" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:12 -#, python-format -msgid "%(num)d hour" -msgid_plural "%(num)d hours" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/utils/timesince.py:13 -#, python-format -msgid "%(num)d minute" -msgid_plural "%(num)d minutes" -msgstr[0] "" -msgstr[1] "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:29 -msgid "Forbidden" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:30 -msgid "CSRF verification failed. Request aborted." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:34 -msgid "" -"You are seeing this message because this HTTPS site requires a “Referer " -"header” to be sent by your web browser, but none was sent. This header is " -"required for security reasons, to ensure that your browser is not being " -"hijacked by third parties." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:40 -msgid "" -"If you have configured your browser to disable “Referer” headers, please re-" -"enable them, at least for this site, or for HTTPS connections, or for “same-" -"origin” requests." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:45 -msgid "" -"If you are using the tag or " -"including the “Referrer-Policy: no-referrer” header, please remove them. The " -"CSRF protection requires the “Referer” header to do strict referer checking. " -"If you’re concerned about privacy, use alternatives like for links to third-party sites." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:54 -msgid "" -"You are seeing this message because this site requires a CSRF cookie when " -"submitting forms. This cookie is required for security reasons, to ensure " -"that your browser is not being hijacked by third parties." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:60 -msgid "" -"If you have configured your browser to disable cookies, please re-enable " -"them, at least for this site, or for “same-origin” requests." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/csrf.py:66 -msgid "More information is available with DEBUG=True." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:44 -msgid "No year specified" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:64 -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:115 -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:214 -msgid "Date out of range" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:94 -msgid "No month specified" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:147 -msgid "No day specified" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:194 -msgid "No week specified" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:349 -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:380 -#, python-format -msgid "No %(verbose_name_plural)s available" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:652 -#, python-format -msgid "" -"Future %(verbose_name_plural)s not available because %(class_name)s." -"allow_future is False." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/dates.py:692 -#, python-format -msgid "Invalid date string “%(datestr)s” given format “%(format)s”" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/detail.py:56 -#, python-format -msgid "No %(verbose_name)s found matching the query" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/list.py:70 -msgid "Page is not “last”, nor can it be converted to an int." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/list.py:77 -#, python-format -msgid "Invalid page (%(page_number)s): %(message)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/generic/list.py:169 -#, python-format -msgid "Empty list and “%(class_name)s.allow_empty” is False." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/static.py:49 -msgid "Directory indexes are not allowed here." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/static.py:51 -#, python-format -msgid "“%(path)s” does not exist" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/static.py:68 -#: venv/lib/python3.11/site-packages/django/views/templates/directory_index.html:8 -#: venv/lib/python3.11/site-packages/django/views/templates/directory_index.html:11 -#, python-format -msgid "Index of %(directory)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:7 -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:220 -msgid "The install worked successfully! Congratulations!" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:206 -#, python-format -msgid "" -"View release notes for Django %(version)s" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:221 -#, python-format -msgid "" -"You are seeing this page because DEBUG=True is in your settings file and you have not " -"configured any URLs." -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:229 -msgid "Django Documentation" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:230 -msgid "Topics, references, & how-to’s" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:238 -msgid "Tutorial: A Polling App" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:239 -msgid "Get started with Django" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:247 -msgid "Django Community" -msgstr "" - -#: venv/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:248 -msgid "Connect, get help, or contribute" -msgstr "" - -#: venv/lib/python3.11/site-packages/isort/main.py:158 -msgid "show this help message and exit" -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/core.py:572 -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:90 -msgid "Arguments" -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:84 -msgid "(deprecated) " -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:85 -msgid "[default: {}]" -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:86 -msgid "[env var: {}]" -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:88 -msgid "[required]" -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:93 -msgid "Error" -msgstr "" - -#: venv/lib/python3.11/site-packages/typer/rich_utils.py:94 -msgid "Aborted." -msgstr "" - -# Heading -#~ msgid "Contact email for access requests" -#~ msgstr "Contact email for access requests" diff --git a/templates/base/navigation.html b/templates/base/navigation.html index 8503bee9..c7f7f909 100644 --- a/templates/base/navigation.html +++ b/templates/base/navigation.html @@ -29,9 +29,12 @@
-