diff --git a/.flake8 b/.flake8 index 84b4b4411..3a87b269b 100644 --- a/.flake8 +++ b/.flake8 @@ -1,3 +1,4 @@ [flake8] exclude = docs max-line-length = 119 +extend-ignore = E203 diff --git a/.github/contributors.json b/.github/contributors.json index 48e9faad3..fab5e5f56 100644 --- a/.github/contributors.json +++ b/.github/contributors.json @@ -1453,5 +1453,15 @@ "name": "zhaoruibing", "github_login": "zhaoruibing", "twitter_username": "" + }, + { + "name": "MinWoo Sung", + "github_login": "SungMinWoo", + "twitter_username": "" + }, + { + "name": "itisnotyourenv", + "github_login": "itisnotyourenv", + "twitter_username": "" } ] \ No newline at end of file diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 38fc87e9b..1e7bfd7ac 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -999,6 +999,13 @@ Listed in alphabetical order. + + itisnotyourenv + + itisnotyourenv + + + Ivan Khomutov @@ -1468,6 +1475,13 @@ Listed in alphabetical order. + + MinWoo Sung + + SungMinWoo + + + monosans diff --git a/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile index 3636ce1ef..67571feed 100644 --- a/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile @@ -1,5 +1,5 @@ # define an alias for the specific python version used in this file. -FROM python:3.11.4-slim-bullseye as python +FROM python:3.11.5-slim-bullseye as python # Python build stage FROM python as python-build-stage diff --git a/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile index f9895a083..1652ac2ce 100644 --- a/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile @@ -1,5 +1,5 @@ # define an alias for the specific python version used in this file. -FROM python:3.11.4-slim-bullseye as python +FROM python:3.11.5-slim-bullseye as python # Python build stage diff --git a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile index a48cbc4af..49950b9af 100644 --- a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile @@ -25,7 +25,7 @@ RUN npm run build {%- endif %} # define an alias for the specific python version used in this file. -FROM python:3.11.4-slim-bullseye as python +FROM python:3.11.5-slim-bullseye as python # Python build stage FROM python as python-build-stage diff --git a/{{cookiecutter.project_slug}}/config/settings/base.py b/{{cookiecutter.project_slug}}/config/settings/base.py index cabc214a1..3dba40d5a 100644 --- a/{{cookiecutter.project_slug}}/config/settings/base.py +++ b/{{cookiecutter.project_slug}}/config/settings/base.py @@ -30,7 +30,8 @@ LANGUAGE_CODE = "es-MX" # from django.utils.translation import gettext_lazy as _ # LANGUAGES = [ # ('en', _('English')), -# ('pt-br', _('Português')), +# ('fr-fr', _('French')), +# ('pt-br', _('Portuguese')), # ] # https://docs.djangoproject.com/en/dev/ref/settings/#site-id SITE_ID = 1 diff --git a/{{cookiecutter.project_slug}}/config/settings/test.py b/{{cookiecutter.project_slug}}/config/settings/test.py index 92211ec76..68126182e 100644 --- a/{{cookiecutter.project_slug}}/config/settings/test.py +++ b/{{cookiecutter.project_slug}}/config/settings/test.py @@ -29,6 +29,11 @@ EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend" # ------------------------------------------------------------------------------ TEMPLATES[0]["OPTIONS"]["debug"] = True # type: ignore # noqa: F405 +# MEDIA +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#media-url +MEDIA_URL = 'http://media.testserver' + {%- if cookiecutter.frontend_pipeline == 'Webpack' %} # django-webpack-loader # ------------------------------------------------------------------------------ diff --git a/{{cookiecutter.project_slug}}/locale/fr_FR/LC_MESSAGES/django.po b/{{cookiecutter.project_slug}}/locale/fr_FR/LC_MESSAGES/django.po new file mode 100644 index 000000000..67434d505 --- /dev/null +++ b/{{cookiecutter.project_slug}}/locale/fr_FR/LC_MESSAGES/django.po @@ -0,0 +1,335 @@ +# Translations for the {{ cookiecutter.project_name }} project +# Copyright (C) {% now 'utc', '%Y' %} {{ cookiecutter.author_name }} +# {{ cookiecutter.author_name }} <{{ cookiecutter.email }}>, {% now 'utc', '%Y' %}. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: {{ cookiecutter.version }}\n" +"Language: fr-FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +#: {{cookiecutter.project_slug}}/templates/account/account_inactive.html:5 +#: {{cookiecutter.project_slug}}/templates/account/account_inactive.html:8 +msgid "Account Inactive" +msgstr "Compte inactif" + +#: {{cookiecutter.project_slug}}/templates/account/account_inactive.html:10 +msgid "This account is inactive." +msgstr "Ce compte est inactif." + +#: {{cookiecutter.project_slug}}/templates/account/email.html:7 +msgid "Account" +msgstr "Compte" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:10 +msgid "E-mail Addresses" +msgstr "Adresses e-mail" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:13 +msgid "The following e-mail addresses are associated with your account:" +msgstr "Les adresses e-mail suivantes sont associées à votre compte :" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:27 +msgid "Verified" +msgstr "Vérifié" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:29 +msgid "Unverified" +msgstr "Non vérifié" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:31 +msgid "Primary" +msgstr "Primaire" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:37 +msgid "Make Primary" +msgstr "Changer Primaire" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:38 +msgid "Re-send Verification" +msgstr "Renvoyer vérification" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:39 +msgid "Remove" +msgstr "Supprimer" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:46 +msgid "Warning:" +msgstr "Avertissement:" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:46 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" +"Vous n'avez actuellement aucune adresse e-mail configurée. Vous devriez ajouter " +"une adresse e-mail pour reçevoir des notifications, réinitialiser votre mot " +"de passe, etc." + +#: {{cookiecutter.project_slug}}/templates/account/email.html:51 +msgid "Add E-mail Address" +msgstr "Ajouter une adresse e-mail" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:56 +msgid "Add E-mail" +msgstr "Ajouter e-mail" + +#: {{cookiecutter.project_slug}}/templates/account/email.html:66 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "Voulez-vous vraiment supprimer l'adresse e-mail sélectionnée ?" + +#: {{cookiecutter.project_slug}}/templates/account/email_confirm.html:6 +#: {{cookiecutter.project_slug}}/templates/account/email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "Confirmez votre adresse email" + +#: {{cookiecutter.project_slug}}/templates/account/email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" +"Veuillez confirmer que %(email)s est un e-mail " +"adresse de l'utilisateur %(user_display)s." + +#: {{cookiecutter.project_slug}}/templates/account/email_confirm.html:20 +msgid "Confirm" +msgstr "Confirm" + +#: {{cookiecutter.project_slug}}/templates/account/email_confirm.html:27 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" +"Ce lien de confirmation par e-mail a expiré ou n'est pas valide. Veuillez" + "émettre une nouvelle demande de confirmation " +"par e-mail." + +#: {{cookiecutter.project_slug}}/templates/account/login.html:7 +#: {{cookiecutter.project_slug}}/templates/account/login.html:11 +#: {{cookiecutter.project_slug}}/templates/account/login.html:56 +#: {{cookiecutter.project_slug}}/templates/base.html:72 +msgid "Sign In" +msgstr "S'identifier" + +#: {{cookiecutter.project_slug}}/templates/account/login.html:17 +msgid "Please sign in with one of your existing third party accounts:" +msgstr "Veuillez vous connecter avec l'un de vos comptes tiers existants :" + +#: {{cookiecutter.project_slug}}/templates/account/login.html:19 +#, python-format +msgid "" +"Or, sign up for a %(site_name)s account and " +"sign in below:" +msgstr "" +"Ou, créez un compte %(site_name)s et " +"connectez-vous ci-dessous :" + +#: {{cookiecutter.project_slug}}/templates/account/login.html:32 +msgid "or" +msgstr "ou" + +#: {{cookiecutter.project_slug}}/templates/account/login.html:41 +#, python-format +msgid "" +"If you have not created an account yet, then please sign up first." +msgstr "" +"Si vous n'avez pas encore créé de compte, veuillez d'abord vous inscrire." + +#: {{cookiecutter.project_slug}}/templates/account/login.html:55 +msgid "Forgot Password?" +msgstr "Mot de passe oublié?" + +#: {{cookiecutter.project_slug}}/templates/account/logout.html:5 +#: {{cookiecutter.project_slug}}/templates/account/logout.html:8 +#: {{cookiecutter.project_slug}}/templates/account/logout.html:17 +#: {{cookiecutter.project_slug}}/templates/base.html:61 +msgid "Sign Out" +msgstr "Se déconnecter" + +#: {{cookiecutter.project_slug}}/templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "Êtes-vous certain de vouloir vous déconnecter?" + +#: {{cookiecutter.project_slug}}/templates/account/password_change.html:6 +#: {{cookiecutter.project_slug}}/templates/account/password_change.html:9 +#: {{cookiecutter.project_slug}}/templates/account/password_change.html:14 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key.html:5 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key.html:8 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key_done.html:4 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key_done.html:7 +msgid "Change Password" +msgstr "Changer le mot de passe" + +#: {{cookiecutter.project_slug}}/templates/account/password_reset.html:7 +#: {{cookiecutter.project_slug}}/templates/account/password_reset.html:11 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_done.html:6 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_done.html:9 +msgid "Password Reset" +msgstr "Réinitialisation du mot de passe" + +#: {{cookiecutter.project_slug}}/templates/account/password_reset.html:16 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" +"Mot de passe oublié? Entrez votre adresse e-mail ci-dessous, et nous vous " +"enverrons un e-mail vous permettant de le réinitialiser." + +#: {{cookiecutter.project_slug}}/templates/account/password_reset.html:21 +msgid "Reset My Password" +msgstr "Réinitialiser mon mot de passe" + +#: {{cookiecutter.project_slug}}/templates/account/password_reset.html:24 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" +"Veuillez nous contacter si vous rencontrez des difficultés pour réinitialiser" +"votre mot de passe." + +#: {{cookiecutter.project_slug}}/templates/account/password_reset_done.html:15 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" +"Nous vous avons envoyé un e-mail. Veuillez nous contacter si vous ne le " +"recevez pas d'ici quelques minutes." + +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key.html:8 +msgid "Bad Token" +msgstr "Token Invalide" + +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key.html:12 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Le lien de réinitialisation du mot de passe n'était pas valide, peut-être parce " +"qu'il a déjà été utilisé. Veuillez faire une " +"nouvelle demande de réinitialisation de mot de passe." + +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key.html:18 +msgid "change password" +msgstr "changer le mot de passe" + +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key.html:21 +#: {{cookiecutter.project_slug}}/templates/account/password_reset_from_key_done.html:8 +msgid "Your password is now changed." +msgstr "Votre mot de passe est maintenant modifié." + +#: {{cookiecutter.project_slug}}/templates/account/password_set.html:6 +#: {{cookiecutter.project_slug}}/templates/account/password_set.html:9 +#: {{cookiecutter.project_slug}}/templates/account/password_set.html:14 +msgid "Set Password" +msgstr "Définir le mot de passe" + +#: {{cookiecutter.project_slug}}/templates/account/signup.html:6 +msgid "Signup" +msgstr "S'inscrire" + +#: {{cookiecutter.project_slug}}/templates/account/signup.html:9 +#: {{cookiecutter.project_slug}}/templates/account/signup.html:19 +#: {{cookiecutter.project_slug}}/templates/base.html:67 +msgid "Sign Up" +msgstr "S'inscrire" + +#: {{cookiecutter.project_slug}}/templates/account/signup.html:11 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "" +"Vous avez déjà un compte? Alors veuillez vous connecter." + +#: {{cookiecutter.project_slug}}/templates/account/signup_closed.html:5 +#: {{cookiecutter.project_slug}}/templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "Inscriptions closes" + +#: {{cookiecutter.project_slug}}/templates/account/signup_closed.html:10 +msgid "We are sorry, but the sign up is currently closed." +msgstr "Désolé, mais l'inscription est actuellement fermée." + +#: {{cookiecutter.project_slug}}/templates/account/verification_sent.html:5 +#: {{cookiecutter.project_slug}}/templates/account/verification_sent.html:8 +#: {{cookiecutter.project_slug}}/templates/account/verified_email_required.html:5 +#: {{cookiecutter.project_slug}}/templates/account/verified_email_required.html:8 +msgid "Verify Your E-mail Address" +msgstr "Vérifiez votre adresse e-mail" + +#: {{cookiecutter.project_slug}}/templates/account/verification_sent.html:10 +msgid "" +"We have sent an e-mail to you for verification. Follow the link provided to " +"finalize the signup process. Please contact us if you do not receive it " +"within a few minutes." +msgstr "Nous vous avons envoyé un e-mail pour vérification. Suivez le lien fourni " +"pour finalisez le processus d'inscription. Veuillez nous contacter si vous ne le " +"recevez pas d'ici quelques minutes." + +#: {{cookiecutter.project_slug}}/templates/account/verified_email_required.html:12 +msgid "" +"This part of the site requires us to verify that\n" +"you are who you claim to be. For this purpose, we require that you\n" +"verify ownership of your e-mail address. " +msgstr "" +"Cette partie du site nous oblige à vérifier que\n" +"vous êtes qui vous prétendez être. Nous vous demandons donc de\n" +"vérifier la propriété de votre adresse e-mail." + +#: {{cookiecutter.project_slug}}/templates/account/verified_email_required.html:16 +msgid "" +"We have sent an e-mail to you for\n" +"verification. Please click on the link inside this e-mail. Please\n" +"contact us if you do not receive it within a few minutes." +msgstr "" +"Nous vous avons envoyé un e-mail pour\n" +"vérification. Veuillez cliquer sur le lien contenu dans cet e-mail. Veuillez nous\n" +"contacter si vous ne le recevez pas d'ici quelques minutes." + +#: {{cookiecutter.project_slug}}/templates/account/verified_email_required.html:20 +#, python-format +msgid "" +"Note: you can still change your e-" +"mail address." +msgstr "" +"Remarque : vous pouvez toujours changer votre e-" +"adresse e-mail." + +#: {{cookiecutter.project_slug}}/templates/base.html:57 +msgid "My Profile" +msgstr "Mon Profil" + +#: {{cookiecutter.project_slug}}/users/admin.py:17 +msgid "Personal info" +msgstr "Personal info" + +#: {{cookiecutter.project_slug}}/users/admin.py:19 +msgid "Permissions" +msgstr "Permissions" + +#: {{cookiecutter.project_slug}}/users/admin.py:30 +msgid "Important dates" +msgstr "Dates importantes" + +#: {{cookiecutter.project_slug}}/users/apps.py:7 +msgid "Users" +msgstr "Utilisateurs" + +#: {{cookiecutter.project_slug}}/users/forms.py:24 +#: {{cookiecutter.project_slug}}/users/tests/test_forms.py:36 +msgid "This username has already been taken." +msgstr "Ce nom d'utilisateur est déjà pris." + +#: {{cookiecutter.project_slug}}/users/models.py:15 +msgid "Name of User" +msgstr "Nom de l'utilisateur" + +#: {{cookiecutter.project_slug}}/users/views.py:23 +msgid "Information successfully updated" +msgstr "Informations mises à jour avec succès" diff --git a/{{cookiecutter.project_slug}}/requirements/base.txt b/{{cookiecutter.project_slug}}/requirements/base.txt index 9099c9af5..9b07cdc8c 100644 --- a/{{cookiecutter.project_slug}}/requirements/base.txt +++ b/{{cookiecutter.project_slug}}/requirements/base.txt @@ -31,7 +31,7 @@ uvicorn[standard]==0.23.2 # https://github.com/encode/uvicorn django==4.2.4 # pyup: < 5.0 # https://www.djangoproject.com/ django-environ==0.10.0 # https://github.com/joke2k/django-environ django-model-utils==4.3.1 # https://github.com/jazzband/django-model-utils -django-allauth==0.54.0 # https://github.com/pennersr/django-allauth +django-allauth==0.55.0 # https://github.com/pennersr/django-allauth django-crispy-forms==2.0 # https://github.com/django-crispy-forms/django-crispy-forms crispy-bootstrap5==0.7 # https://github.com/django-crispy-forms/crispy-bootstrap5 {%- if cookiecutter.frontend_pipeline == 'Django Compressor' %} diff --git a/{{cookiecutter.project_slug}}/requirements/local.txt b/{{cookiecutter.project_slug}}/requirements/local.txt index 2dd288d5e..42cb493c8 100644 --- a/{{cookiecutter.project_slug}}/requirements/local.txt +++ b/{{cookiecutter.project_slug}}/requirements/local.txt @@ -8,7 +8,7 @@ psycopg[c]==3.1.9 # https://github.com/psycopg/psycopg psycopg[binary]==3.1.9 # https://github.com/psycopg/psycopg {%- endif %} {%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %} -watchfiles==0.19.0 # https://github.com/samuelcolvin/watchfiles +watchfiles==0.20.0 # https://github.com/samuelcolvin/watchfiles {%- endif %} # Testing diff --git a/{{cookiecutter.project_slug}}/runtime.txt b/{{cookiecutter.project_slug}}/runtime.txt index 431fc7e8c..3124d55e9 100644 --- a/{{cookiecutter.project_slug}}/runtime.txt +++ b/{{cookiecutter.project_slug}}/runtime.txt @@ -1 +1 @@ -python-3.11.4 +python-3.11.5 diff --git a/{{cookiecutter.project_slug}}/setup.cfg b/{{cookiecutter.project_slug}}/setup.cfg index 829064213..2412f1746 100644 --- a/{{cookiecutter.project_slug}}/setup.cfg +++ b/{{cookiecutter.project_slug}}/setup.cfg @@ -4,6 +4,7 @@ [flake8] max-line-length = 119 exclude = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules,venv,.venv +extend-ignore = E203 [pycodestyle] max-line-length = 119