diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 61b6c31..51fea69 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,21 +5,31 @@ repos: rev: v4.4.0 hooks: - id: double-quote-string-fixer +- repo: https://github.com/asottile/pyupgrade + rev: v3.3.1 + hooks: + - id: pyupgrade + args: ['--keep-percent-format', '--py39-plus'] +- repo: https://github.com/adamchainz/django-upgrade + rev: 1.13.0 + hooks: + - id: django-upgrade + args: ['--target-version', '3.2'] - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 23.1.0 hooks: - id: black - args: ['--target-version', 'py37', '--skip-string-normalization', '--line-length', '110'] + args: ['--target-version', 'py39', '--skip-string-normalization', '--line-length', '110'] - repo: https://github.com/PyCQA/isort rev: 5.12.0 hooks: - id: isort args: ['--profile', 'black', '--line-length', '110'] -- repo: https://github.com/asottile/pyupgrade - rev: v2.20.0 - hooks: - - id: pyupgrade - args: ['--keep-percent-format', '--py37-plus'] +- repo: https://github.com/rtts/djhtml + rev: '3.0.5' + hooks: + - id: djhtml + args: ['--tabwidth', '2'] - repo: https://git.entrouvert.org/pre-commit-debian.git rev: v0.3 hooks: diff --git a/src/authentic2_cut/__init__.py b/src/authentic2_cut/__init__.py index d807690..1caca1e 100644 --- a/src/authentic2_cut/__init__.py +++ b/src/authentic2_cut/__init__.py @@ -14,5 +14,3 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . - -default_app_config = 'authentic2_cut.apps.AppConfig' diff --git a/src/authentic2_cut/custom_settings.py b/src/authentic2_cut/custom_settings.py index 7e9c1bc..e539bd4 100644 --- a/src/authentic2_cut/custom_settings.py +++ b/src/authentic2_cut/custom_settings.py @@ -50,7 +50,7 @@ A2_CUT_PARTNERS = [ SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 48h pour les mails de reset de mot de passe -PASSWORD_RESET_TIMEOUT_DAYS = 2 +PASSWORD_RESET_TIMEOUT = 60 * 60 * 24 * 2 A2_EMAIL_CHANGE_TOKEN_LIFETIME = 3600 * 24 * 2 ACCOUNT_ACTIVATION_DAYS = 2 diff --git a/src/authentic2_cut/management/commands/cut-validation-request.py b/src/authentic2_cut/management/commands/cut-validation-request.py index e7733e1..aa1d892 100644 --- a/src/authentic2_cut/management/commands/cut-validation-request.py +++ b/src/authentic2_cut/management/commands/cut-validation-request.py @@ -27,7 +27,6 @@ class Command(BaseCommand): with atomic(): validation_request = ValidationRequest.objects.create(user=user, origin=oidc_client) for path in paths: - with open(path) as file_object: filename = os.path.basename(path) f = ContentFile(file_object.read(), name=filename) diff --git a/src/authentic2_cut/migrations/0001_initial.py b/src/authentic2_cut/migrations/0001_initial.py index 4bbe242..b664e7f 100644 --- a/src/authentic2_cut/migrations/0001_initial.py +++ b/src/authentic2_cut/migrations/0001_initial.py @@ -3,7 +3,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] diff --git a/src/authentic2_cut/migrations/0002_auto_20171116_1052.py b/src/authentic2_cut/migrations/0002_auto_20171116_1052.py index 33b23a5..551c74f 100644 --- a/src/authentic2_cut/migrations/0002_auto_20171116_1052.py +++ b/src/authentic2_cut/migrations/0002_auto_20171116_1052.py @@ -3,7 +3,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ('authentic2_cut', '0001_initial'), ] diff --git a/src/authentic2_cut/migrations/0003_auto_20180423_1532.py b/src/authentic2_cut/migrations/0003_auto_20180423_1532.py index 447f0ef..054c97c 100644 --- a/src/authentic2_cut/migrations/0003_auto_20180423_1532.py +++ b/src/authentic2_cut/migrations/0003_auto_20180423_1532.py @@ -3,7 +3,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), diff --git a/src/authentic2_cut/migrations/0004_auto_20180801_1147.py b/src/authentic2_cut/migrations/0004_auto_20180801_1147.py index 4e9d36f..d403717 100644 --- a/src/authentic2_cut/migrations/0004_auto_20180801_1147.py +++ b/src/authentic2_cut/migrations/0004_auto_20180801_1147.py @@ -3,7 +3,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ('authentic2_cut', '0003_auto_20180423_1532'), ] diff --git a/src/authentic2_cut/migrations/0005_auto_20200515_1616.py b/src/authentic2_cut/migrations/0005_auto_20200515_1616.py index d4fed03..c1a91e3 100644 --- a/src/authentic2_cut/migrations/0005_auto_20200515_1616.py +++ b/src/authentic2_cut/migrations/0005_auto_20200515_1616.py @@ -6,7 +6,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ('authentic2_cut', '0004_auto_20180801_1147'), ] diff --git a/src/authentic2_cut/migrations/0006_delete_journal.py b/src/authentic2_cut/migrations/0006_delete_journal.py index 91eec58..283201c 100644 --- a/src/authentic2_cut/migrations/0006_delete_journal.py +++ b/src/authentic2_cut/migrations/0006_delete_journal.py @@ -4,7 +4,6 @@ from django.db import migrations class Migration(migrations.Migration): - dependencies = [ ('authentic2_cut', '0005_auto_20200515_1616'), ] diff --git a/src/authentic2_cut/tables.py b/src/authentic2_cut/tables.py index 077f4f8..6d83a52 100644 --- a/src/authentic2_cut/tables.py +++ b/src/authentic2_cut/tables.py @@ -15,7 +15,7 @@ # along with this program. If not, see . import django_tables2 as tables -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from . import models diff --git a/src/authentic2_cut/templates/authentic2/cut-notify-usager-modification_body.html b/src/authentic2_cut/templates/authentic2/cut-notify-usager-modification_body.html index d3fcc9d..c2e0e75 100644 --- a/src/authentic2_cut/templates/authentic2/cut-notify-usager-modification_body.html +++ b/src/authentic2_cut/templates/authentic2/cut-notify-usager-modification_body.html @@ -1,12 +1,12 @@ {% extends "emails/body_base.html" %} {% block content %} -

Bonjour,

+

Bonjour,

-

-Un agent vient de modifier votre compte de la manière suivante : -

+

+ Un agent vient de modifier votre compte de la manière suivante : +

- + {% endblock %} diff --git a/src/authentic2_cut/templates/authentic2/cut_manager_user_edit_core.html b/src/authentic2_cut/templates/authentic2/cut_manager_user_edit_core.html index 625cba8..9d7806a 100644 --- a/src/authentic2_cut/templates/authentic2/cut_manager_user_edit_core.html +++ b/src/authentic2_cut/templates/authentic2/cut_manager_user_edit_core.html @@ -5,13 +5,13 @@ {% endblock %} {% block content %} - -{{ block.super }} + + {{ block.super }} {% endblock %} diff --git a/src/authentic2_cut/templates/authentic2/cut_manager_user_validation.html b/src/authentic2_cut/templates/authentic2/cut_manager_user_validation.html index 7f69a9c..207e718 100644 --- a/src/authentic2_cut/templates/authentic2/cut_manager_user_validation.html +++ b/src/authentic2_cut/templates/authentic2/cut_manager_user_validation.html @@ -15,72 +15,72 @@ {% block content %} -

Validation demandée par {{ validation_request.origin }} le {{ validation_request.created }}, identifiant externe de la demande {{ validation_request.external_id }}.

+

Validation demandée par {{ validation_request.origin }} le {{ validation_request.created }}, identifiant externe de la demande {{ validation_request.external_id }}.

-{% if validation_request.validated %} - {% with agent=validation_request.validated_by %} -

Demande {{ validation_request.get_status_display }} le {{ validation_request.validated }} par {{ agent.get_full_name }}

- {% endwith %} -{% else %} - {% if validation_request.taken_by != user and validation_request.is_taken %} -

Demande en cours de traitement par {{ validation_request.taken_by }} depuis le {{ validation_request.taken }}

+ {% if validation_request.validated %} + {% with agent=validation_request.validated_by %} +

Demande {{ validation_request.get_status_display }} le {{ validation_request.validated }} par {{ agent.get_full_name }}

+ {% endwith %} + {% else %} + {% if validation_request.taken_by != user and validation_request.is_taken %} +

Demande en cours de traitement par {{ validation_request.taken_by }} depuis le {{ validation_request.taken }}

+ {% endif %} {% endif %} -{% endif %} - -
+ $overlay.appendTo($('body')); + $overlay.on('click', function () { + $overlay.remove(); + }); + event.preventDefault(); + }) + +

Pièces jointes

- {% for attachment in attachments %} - - - - {% endfor %} + {% for attachment in attachments %} + + + + {% endfor %}

-
-

Identité

-
-{{ block.super }} -
+
+

Identité

+
+ {{ block.super }} +
{% endblock %} {% block beforeform %} @@ -96,16 +96,16 @@ $('body').on('click', 'a.popup-image', function (event) { {% endblock %} {% block buttons %} - {% if not validation_request.validated %} -
- -
-

Refus

- {{ validation_form.as_p }} + {% if not validation_request.validated %} +
+ +
+

Refus

+ {{ validation_form.as_p }} -
- - -
- {% endif %} +
+ + +
+ {% endif %} {% endblock %} diff --git a/src/authentic2_cut/templates/authentic2/cut_manager_user_validations.html b/src/authentic2_cut/templates/authentic2/cut_manager_user_validations.html index d17690b..7b978d4 100644 --- a/src/authentic2_cut/templates/authentic2/cut_manager_user_validations.html +++ b/src/authentic2_cut/templates/authentic2/cut_manager_user_validations.html @@ -3,7 +3,7 @@ {% block appbar %}

Validation d'identité -

+ {% endblock %} {% block breadcrumb %} @@ -16,9 +16,9 @@

Filtres

{% if request.GET.all %} - Uniquement les demandes reçues + Uniquement les demandes reçues {% else %} - Toutes les demandes + Toutes les demandes {% endif %}

@@ -30,7 +30,7 @@ {% block main %} {% with row_link=1 %} diff --git a/src/authentic2_cut/urls.py b/src/authentic2_cut/urls.py index 45880f3..2b3d4cf 100644 --- a/src/authentic2_cut/urls.py +++ b/src/authentic2_cut/urls.py @@ -16,35 +16,35 @@ from authentic2.decorators import required from authentic2.manager.utils import manager_login_required -from django.conf.urls import url +from django.urls import path, re_path from . import api_views, views urlpatterns = required( manager_login_required, [ - url('^accounts/edit-core/$', views.edit_core, name='cut-edit-core'), - url('^accounts/edit-crown/$', views.edit_crown, name='cut-edit-crown'), - url(r'^manage/users/(?P\d+)/$', views.manager_user_detail, name='a2-manager-user-detail'), - url( + path('accounts/edit-core/', views.edit_core, name='cut-edit-core'), + path('accounts/edit-crown/', views.edit_crown, name='cut-edit-crown'), + path('manage/users//', views.manager_user_detail, name='a2-manager-user-detail'), + re_path( r'^manage/users/uuid:(?P[a-z0-9]+)/$', views.manager_user_detail, name='a2-manager-user-by-uuid-detail', ), - url( - r'^manage/users/(?P\d+)/edit-core/$', + path( + 'manage/users//edit-core/', views.manager_user_edit_core, name='cut-manager-user-edit-core', ), - url('^manage/validation/$', views.validation_homepage, name='cut-manager-user-validation'), - url('^manage/validation/next/$', views.next_validation, name='cut-manager-user-next-validation'), - url(r'^manage/validation/(?P\d+)/$', views.validation, name='cut-manager-user-validation'), - url( + path('manage/validation/', views.validation_homepage, name='cut-manager-user-validation'), + path('manage/validation/next/', views.next_validation, name='cut-manager-user-next-validation'), + path('manage/validation//', views.validation, name='cut-manager-user-validation'), + re_path( r'^manage/validation/attachment/(?P\d*)/(?P.*)$', views.validation_attachment, name='cut-manager-user-validation-attachment', ), - url( + re_path( r'^manage/validation/attachment-thumbnail/(?P\d*)/(?P.*)$', views.validation_attachment_thumbnail, name='cut-manager-user-validation-attachment-thumbnail', @@ -53,6 +53,6 @@ urlpatterns = required( ) urlpatterns += [ - url('^cgu/$', views.cgu, name='cut-cgu'), - url('^api/validate/$', api_views.validate, name='api-cut-validate'), + path('cgu/', views.cgu, name='cut-cgu'), + path('api/validate/', api_views.validate, name='api-cut-validate'), ] diff --git a/src/authentic2_cut/views.py b/src/authentic2_cut/views.py index a866fea..2785e9e 100644 --- a/src/authentic2_cut/views.py +++ b/src/authentic2_cut/views.py @@ -27,7 +27,7 @@ from django.core.exceptions import PermissionDenied from django.db.transaction import atomic from django.http import Http404, HttpResponse, HttpResponseRedirect from django.utils.timezone import now -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic.base import TemplateView from . import forms, models, tables, utils diff --git a/tests/settings.py b/tests/settings.py index a50712d..62aaf3e 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -4,7 +4,7 @@ ALLOWED_HOSTS = ['localhost'] DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'authentic2-cut', } } diff --git a/tests/test_api.py b/tests/test_api.py index 345c6c9..cf28da5 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -3,7 +3,7 @@ import uuid import pytest from django.contrib.auth import get_user_model -from django.utils.encoding import force_text +from django.utils.encoding import force_str from utils import login from authentic2_cut import models @@ -60,7 +60,7 @@ def helper_test_validation_image(glc_app, john, image_file, extension): 'external_id': external_id, 'justificatifs': [ { - 'b64_content': force_text(base64.b64encode(image_file)), + 'b64_content': force_str(base64.b64encode(image_file)), } ], }, @@ -109,13 +109,13 @@ def test_many_attachments(app, admin, glc_app, john, png_file, jpeg_file, pdf_fi 'external_id': external_id, 'justificatifs': [ { - 'b64_content': force_text(base64.b64encode(png_file)), + 'b64_content': force_str(base64.b64encode(png_file)), }, { - 'b64_content': force_text(base64.b64encode(jpeg_file)), + 'b64_content': force_str(base64.b64encode(jpeg_file)), }, { - 'b64_content': force_text(base64.b64encode(pdf_file)), + 'b64_content': force_str(base64.b64encode(pdf_file)), }, ], },