]> git.parisson.com Git - teleforma.git/commitdiff
django 4.2, poetry upate feature/dj4
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Mon, 30 Sep 2024 06:56:08 +0000 (08:56 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Mon, 30 Sep 2024 06:56:08 +0000 (08:56 +0200)
24 files changed:
app/local_settings.py.sample
app/settings.py
app/wsgi.sh
poetry.lock
pyproject.toml
teleforma/admin.py
teleforma/exam/models.py
teleforma/exam/views.py
teleforma/fields.py
teleforma/forms.py
teleforma/models/ae.py
teleforma/models/appointment.py
teleforma/models/chat.py
teleforma/models/core.py
teleforma/models/crfpa.py
teleforma/models/messages.py
teleforma/models/notification.py
teleforma/models/pro.py
teleforma/models/profile.py.bak
teleforma/templatetags/teleforma_tags.py
teleforma/views/core.py
teleforma/views/crfpa.py
teleforma/views/payment.py
teleforma/webclass/models.py

index 1ecfb00c34b6c6c2286df936a3b26becadc27dfc..2eb5accfe326b8661a4247a09447f2694c6807c5 100644 (file)
@@ -20,7 +20,7 @@
 # along with this program. If not, see <http://www.gnu.org/licenses/>.
 
 import os
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from datetime import datetime, date
 
 DEBUG = True if os.environ.get('DEBUG') == 'True' else False
@@ -47,7 +47,7 @@ DEBUG = True if os.environ.get('DEBUG') == 'True' else False
 # along with this program. If not, see <http://www.gnu.org/licenses/>.
 
 import os
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from datetime import datetime, date
 
 DEBUG = True if os.environ.get('DEBUG') == 'True' else False
index 4e6991c3a6f3ad2bf46613407be6f591d8f6713d..094909ec4e9acaa6a1ed696a66a98ea69aedde0d 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 # Django settings for sandbox project.
 
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
 import warnings
 import os
 import sys
@@ -400,7 +400,7 @@ def show_user_as(user):
     if user.quotas.count() and not professor and not user.is_superuser:
         return "#"+str(user.id)
     else:
-        return force_text(user)
+        return force_str(user)
 
 SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
 #SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
index 4a4d605d4e66e90ff53c4c6f66c7806d4df0dc73..fee6c1c6f249594836b7d26d8b0b955d0fe0082d 100755 (executable)
@@ -35,7 +35,7 @@ debug_log='/var/log/app/debug.log'
 
 # app start
 if [ "$1" = "--runserver" ]; then
-    python $manage runserver 0.0.0.0:8000 --noasgi
+    python $manage runserver 0.0.0.0:8000
 else
     # static files auto update
     # watchmedo shell-command --patterns="$patterns" --recursive \
index f7164874f8110617685fa801977ffca783ec9528..cd263af1e1f9ea18d82e5165a182bc83cf7aed84 100644 (file)
@@ -331,17 +331,17 @@ pycparser = "*"
 
 [[package]]
 name = "channels"
-version = "3.0.4"
+version = "3.0.5"
 description = "Brings async, event-driven capabilities to Django. Django 2.2 and up only."
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 files = [
-    {file = "channels-3.0.4-py3-none-any.whl", hash = "sha256:0ff0422b4224d10efac76e451575517f155fe7c97d369b5973b116f22eeaf86c"},
-    {file = "channels-3.0.4.tar.gz", hash = "sha256:fdd9a94987a23d8d7ebd97498ed8b8cc83163f37e53fc6c85098aba7a3bb8b75"},
+    {file = "channels-3.0.5-py3-none-any.whl", hash = "sha256:3813b8025bf85509769793aca720e6c3b1c5bde1cb253a961252bf0242b60a26"},
+    {file = "channels-3.0.5.tar.gz", hash = "sha256:a3dc3339cc033e7c2afe083fb3dedf74fc5009815967e317e080e7bfdc92ea26"},
 ]
 
 [package.dependencies]
-asgiref = ">=3.3.1,<4"
+asgiref = ">=3.5.0,<4"
 daphne = ">=3.0,<4"
 Django = ">=2.2"
 
@@ -350,13 +350,13 @@ tests = ["async-timeout", "coverage (>=4.5,<5.0)", "pytest", "pytest-asyncio", "
 
 [[package]]
 name = "channels-redis"
-version = "3.4.0"
+version = "3.4.1"
 description = "Redis-backed ASGI channel layer implementation"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "channels_redis-3.4.0-py3-none-any.whl", hash = "sha256:6e4565b7c11c6bcde5d48556cb83bd043779697ff03811867d2f895aa6170d56"},
-    {file = "channels_redis-3.4.0.tar.gz", hash = "sha256:5dffd4cc16174125bd4043fc8fe7462ca7403cf801d59a9fa7410ed101fa6a57"},
+    {file = "channels_redis-3.4.1-py3-none-any.whl", hash = "sha256:ba7e2ad170f273c372812dd32aaac102d68d4e508172abb1cfda3160b7333890"},
+    {file = "channels_redis-3.4.1.tar.gz", hash = "sha256:78e4a2f2b2a744fe5a87848ec36b5ee49f522c6808cefe6c583663d0d531faa8"},
 ]
 
 [package.dependencies]
@@ -637,19 +637,19 @@ files = [
 
 [[package]]
 name = "django"
-version = "3.2.25"
-description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
+version = "4.2.16"
+description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
 files = [
-    {file = "Django-3.2.25-py3-none-any.whl", hash = "sha256:a52ea7fcf280b16f7b739cec38fa6d3f8953a5456986944c3ca97e79882b4e38"},
-    {file = "Django-3.2.25.tar.gz", hash = "sha256:7ca38a78654aee72378594d63e51636c04b8e28574f5505dff630895b5472777"},
+    {file = "Django-4.2.16-py3-none-any.whl", hash = "sha256:1ddc333a16fc139fd253035a1606bb24261951bbc3a6ca256717fa06cc41a898"},
+    {file = "Django-4.2.16.tar.gz", hash = "sha256:6f1616c2786c408ce86ab7e10f792b8f15742f7b7b7460243929cb371e7f1dad"},
 ]
 
 [package.dependencies]
-asgiref = ">=3.3.2,<4"
-pytz = "*"
-sqlparse = ">=0.2.2"
+asgiref = ">=3.6.0,<4"
+sqlparse = ">=0.3.1"
+tzdata = {version = "*", markers = "sys_platform == \"win32\""}
 
 [package.extras]
 argon2 = ["argon2-cffi (>=19.1.0)"]
@@ -657,41 +657,41 @@ bcrypt = ["bcrypt"]
 
 [[package]]
 name = "django-debug-toolbar"
-version = "3.2.1"
+version = "3.8.1"
 description = "A configurable set of panels that display various debug information about the current request/response."
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 files = [
-    {file = "django-debug-toolbar-3.2.1.tar.gz", hash = "sha256:a5ff2a54f24bf88286f9872836081078f4baa843dc3735ee88524e89f8821e33"},
-    {file = "django_debug_toolbar-3.2.1-py3-none-any.whl", hash = "sha256:e759e63e3fe2d3110e0e519639c166816368701eab4a47fed75d7de7018467b9"},
+    {file = "django_debug_toolbar-3.8.1-py3-none-any.whl", hash = "sha256:879f8a4672d41621c06a4d322dcffa630fc4df056cada6e417ed01db0e5e0478"},
+    {file = "django_debug_toolbar-3.8.1.tar.gz", hash = "sha256:24ef1a7d44d25e60d7951e378454c6509bf536dce7e7d9d36e7c387db499bc27"},
 ]
 
 [package.dependencies]
-Django = ">=2.2"
-sqlparse = ">=0.2.0"
+django = ">=3.2.4"
+sqlparse = ">=0.2"
 
 [[package]]
 name = "django-jazzmin"
-version = "2.4.7"
+version = "2.6.2"
 description = "Drop-in theme for django admin, that utilises AdminLTE 3 & Bootstrap 4 to make yo' admin look jazzy"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 files = [
-    {file = "django-jazzmin-2.4.7.tar.gz", hash = "sha256:585d0c998875d6ada49ffa7b1bc6c21dcb90a53ba4d0f42f6b0d8fcfc212fa4c"},
-    {file = "django_jazzmin-2.4.7-py3-none-any.whl", hash = "sha256:90f3ceee87517aa4183d22eef8ec34067588a37ef02484ac47502865be211148"},
+    {file = "django_jazzmin-2.6.2-py3-none-any.whl", hash = "sha256:f7eb509b8a2e92260c2e836dc856fc9ca8888e572094201f9021d7b620bb96b2"},
+    {file = "django_jazzmin-2.6.2.tar.gz", hash = "sha256:2bfc33c4e6d59ee647930402d372692ae3514ea45940040eb7f50b481f6ef53b"},
 ]
 
 [package.dependencies]
-django = ">=2"
+django = ">=3"
 
 [[package]]
 name = "django-json-rpc"
-version = "0.7.1"
+version = "0.7.2"
 description = "A simple JSON-RPC implementation for Django"
 optional = false
 python-versions = "*"
 files = [
-    {file = "django-json-rpc-0.7.1.tar.gz", hash = "sha256:08c01ad1dd1c534e852b5304fb371aa4f7f582ff617bc4a800ce349d643f06fe"},
+    {file = "django-json-rpc-0.7.2.tar.gz", hash = "sha256:f148adc3adbcf596400a30e0f6123f75706ef912260e1d14dda01252c4495be9"},
 ]
 
 [package.dependencies]
@@ -713,12 +713,13 @@ python-nvd3 = "0.14.2"
 
 [[package]]
 name = "django-postman"
-version = "4.2"
+version = "4.5"
 description = "User-to-User messaging system for Django, with gateway to AnonymousUser, moderation and thread management, user & exchange filters, inbox/sent/archives/trash folders, support for apps: auto-complete, notification, mailer."
 optional = false
 python-versions = "*"
 files = [
-    {file = "django-postman-4.2.tar.gz", hash = "sha256:bc351c261325eba78ac70f2a8236482d74fca5e2ca5172311cf9a67f32f6fc32"},
+    {file = "django_postman-4.5-py3-none-any.whl", hash = "sha256:3d20ea230a39193e5d192590f8cbad0b0d9fedb5a493799388b767c8ee47282b"},
+    {file = "django_postman-4.5.tar.gz", hash = "sha256:5b6f3ae9c5ebef5744ad5af88ee8063bf0171f09bcec020ed2457a93386b1b13"},
 ]
 
 [package.dependencies]
@@ -726,16 +727,17 @@ Django = "*"
 
 [[package]]
 name = "django-recaptcha"
-version = "2.0.6"
+version = "4.0.0"
 description = "Django recaptcha form field/widget app."
 optional = false
 python-versions = "*"
 files = [
-    {file = "django_recaptcha-2.0.6-py2.py3-none-any.whl", hash = "sha256:567784963fd5400feaf92e8951d8dbbbdb4b4c48a76e225d4baa63a2c9d2cd8c"},
+    {file = "django-recaptcha-4.0.0.tar.gz", hash = "sha256:5316438f97700c431d65351470d1255047e3f2cd9af0f2f13592b637dad9213e"},
+    {file = "django_recaptcha-4.0.0-py3-none-any.whl", hash = "sha256:0d912d5c7c009df4e47accd25029133d47a74342dbd2a8edc2877b6bffa971a3"},
 ]
 
 [package.dependencies]
-django = ">1.11,<4.0"
+django = "*"
 
 [[package]]
 name = "django-storages"
@@ -763,15 +765,18 @@ sftp = ["paramiko (>=1.15)"]
 
 [[package]]
 name = "django-tinymce"
-version = "3.3.0"
-description = "A Django application that contains a widget to render a form field as a TinyMCE editor."
+version = "3.7.1"
+description = "A Django application that contains a widget to render a"
 optional = false
-python-versions = "*"
+python-versions = ">=3.8"
 files = [
-    {file = "django-tinymce-3.3.0.tar.gz", hash = "sha256:77cca137e97e92e43e42c98a232df3e66b80c987ad0f03709a4b73435f8e4060"},
-    {file = "django_tinymce-3.3.0-py3-none-any.whl", hash = "sha256:3684d6611162cd3566b068cfeaf9309d415f1d415191a1f8a8c9140246774679"},
+    {file = "django-tinymce-3.7.1.tar.gz", hash = "sha256:29086daffb337bdd2178413e600693dff846aa4efd557c3924b8c3cba9a37e8c"},
+    {file = "django_tinymce-3.7.1-py3-none-any.whl", hash = "sha256:beb4d27cdacd4f8b00c90378f02898cb448e9f01a1a8a65eff4c38ca3c8edbc9"},
 ]
 
+[package.dependencies]
+django = ">=3.2"
+
 [[package]]
 name = "django-unique-session"
 version = "1.0"
@@ -800,18 +805,17 @@ user-agents = "*"
 
 [[package]]
 name = "djangorestframework"
-version = "3.13.1"
+version = "3.15.2"
 description = "Web APIs for Django, made easy."
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
 files = [
-    {file = "djangorestframework-3.13.1-py3-none-any.whl", hash = "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa"},
-    {file = "djangorestframework-3.13.1.tar.gz", hash = "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee"},
+    {file = "djangorestframework-3.15.2-py3-none-any.whl", hash = "sha256:2b8871b062ba1aefc2de01f773875441a961fefbf79f5eed1e32b2f096944b20"},
+    {file = "djangorestframework-3.15.2.tar.gz", hash = "sha256:36fe88cd2d6c6bec23dca9804bab2ba5517a8bb9d8f47ebc68981b56840107ad"},
 ]
 
 [package.dependencies]
-django = ">=2.2"
-pytz = "*"
+django = ">=4.2"
 
 [[package]]
 name = "docutils"
@@ -1564,26 +1568,24 @@ wcwidth = "*"
 
 [[package]]
 name = "psycopg2"
-version = "2.8.6"
+version = "2.9.9"
 description = "psycopg2 - Python-PostgreSQL Database Adapter"
 optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+python-versions = ">=3.7"
 files = [
-    {file = "psycopg2-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:068115e13c70dc5982dfc00c5d70437fe37c014c808acce119b5448361c03725"},
-    {file = "psycopg2-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:d160744652e81c80627a909a0e808f3c6653a40af435744de037e3172cf277f5"},
-    {file = "psycopg2-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:b8cae8b2f022efa1f011cc753adb9cbadfa5a184431d09b273fb49b4167561ad"},
-    {file = "psycopg2-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:f22ea9b67aea4f4a1718300908a2fb62b3e4276cf00bd829a97ab5894af42ea3"},
-    {file = "psycopg2-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:26e7fd115a6db75267b325de0fba089b911a4a12ebd3d0b5e7acb7028bc46821"},
-    {file = "psycopg2-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:00195b5f6832dbf2876b8bf77f12bdce648224c89c880719c745b90515233301"},
-    {file = "psycopg2-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a49833abfdede8985ba3f3ec641f771cca215479f41523e99dace96d5b8cce2a"},
-    {file = "psycopg2-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:f974c96fca34ae9e4f49839ba6b78addf0346777b46c4da27a7bf54f48d3057d"},
-    {file = "psycopg2-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:6a3d9efb6f36f1fe6aa8dbb5af55e067db802502c55a9defa47c5a1dad41df84"},
-    {file = "psycopg2-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:56fee7f818d032f802b8eed81ef0c1232b8b42390df189cab9cfa87573fe52c5"},
-    {file = "psycopg2-2.8.6-cp38-cp38-win32.whl", hash = "sha256:ad2fe8a37be669082e61fb001c185ffb58867fdbb3e7a6b0b0d2ffe232353a3e"},
-    {file = "psycopg2-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:56007a226b8e95aa980ada7abdea6b40b75ce62a433bd27cec7a8178d57f4051"},
-    {file = "psycopg2-2.8.6-cp39-cp39-win32.whl", hash = "sha256:2c93d4d16933fea5bbacbe1aaf8fa8c1348740b2e50b3735d1b0bf8154cbf0f3"},
-    {file = "psycopg2-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:d5062ae50b222da28253059880a871dc87e099c25cb68acf613d9d227413d6f7"},
-    {file = "psycopg2-2.8.6.tar.gz", hash = "sha256:fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"},
+    {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
+    {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
+    {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
+    {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
+    {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"},
+    {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"},
+    {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
+    {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
+    {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
+    {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
+    {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
+    {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
+    {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
 ]
 
 [[package]]
@@ -1663,13 +1665,13 @@ windows-terminal = ["colorama (>=0.4.6)"]
 
 [[package]]
 name = "pymemcache"
-version = "3.4.4"
+version = "3.5.2"
 description = "A comprehensive, fast, pure Python memcached client"
 optional = false
 python-versions = "*"
 files = [
-    {file = "pymemcache-3.4.4-py2.py3-none-any.whl", hash = "sha256:f0ad9d37e11ae227c000ec54a6dd90e7d24ad34d6c628482b16335001840fccd"},
-    {file = "pymemcache-3.4.4.tar.gz", hash = "sha256:8185a099a4823789560cb051d98daa51e2e4d4aa9fc6027c86766892408d984e"},
+    {file = "pymemcache-3.5.2-py2.py3-none-any.whl", hash = "sha256:3fca0215845d7b2ecd5f4c627fcf4ce2345a703a897b7e116380115b5a197be2"},
+    {file = "pymemcache-3.5.2.tar.gz", hash = "sha256:8923ab59840f0d5338f1c52dba229fa835545b91c3c2f691c118e678d0fb974e"},
 ]
 
 [package.dependencies]
@@ -1695,13 +1697,13 @@ test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"]
 
 [[package]]
 name = "pypdf"
-version = "4.2.0"
+version = "4.3.1"
 description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files"
 optional = false
 python-versions = ">=3.6"
 files = [
-    {file = "pypdf-4.2.0-py3-none-any.whl", hash = "sha256:dc035581664e0ad717e3492acebc1a5fc23dba759e788e3d4a9fc9b1a32e72c1"},
-    {file = "pypdf-4.2.0.tar.gz", hash = "sha256:fe63f3f7d1dcda1c9374421a94c1bba6c6f8c4a62173a59b64ffd52058f846b1"},
+    {file = "pypdf-4.3.1-py3-none-any.whl", hash = "sha256:64b31da97eda0771ef22edb1bfecd5deee4b72c3d1736b7df2689805076d6418"},
+    {file = "pypdf-4.3.1.tar.gz", hash = "sha256:b2f37fe9a3030aa97ca86067a56ba3f9d3565f9a791b305c7355d8392c30d91b"},
 ]
 
 [package.dependencies]
@@ -1784,17 +1786,6 @@ files = [
 [package.dependencies]
 Unidecode = ">=0.04.16"
 
-[[package]]
-name = "pytz"
-version = "2024.2"
-description = "World timezone definitions, modern and historical"
-optional = false
-python-versions = "*"
-files = [
-    {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"},
-    {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"},
-]
-
 [[package]]
 name = "pyyaml"
 version = "6.0.2"
@@ -2014,15 +2005,20 @@ files = [
 
 [[package]]
 name = "sorl-thumbnail"
-version = "12.10.0"
+version = "12.11.0"
 description = "Thumbnails for Django"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "sorl-thumbnail-12.10.0.tar.gz", hash = "sha256:de95a49217fdfeced222fa3ceaa01d312ee2f8aad56ba34d6c70f2dee9a84938"},
-    {file = "sorl_thumbnail-12.10.0-py3-none-any.whl", hash = "sha256:733eb2eee392d4a874f88fb3ed6f0572fa9c361b06e0411b83e435ba69c51f52"},
+    {file = "sorl_thumbnail-12.11.0-py3-none-any.whl", hash = "sha256:e3e375013ca3f14bca9f98fe9861153adac3a6ea4af5e9dc3f31cb605df765b5"},
+    {file = "sorl_thumbnail-12.11.0.tar.gz", hash = "sha256:191b89c27ecb40b5c2a35549d557d17c4841c6aff439b2e17b938b91eea463b3"},
 ]
 
+[package.extras]
+pgmagick = ["pgmagick"]
+pil = ["pillow"]
+wand = ["wand"]
+
 [[package]]
 name = "sqlparse"
 version = "0.5.1"
@@ -2166,6 +2162,17 @@ files = [
     {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
 ]
 
+[[package]]
+name = "tzdata"
+version = "2024.2"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+files = [
+    {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"},
+    {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"},
+]
+
 [[package]]
 name = "ua-parser"
 version = "0.18.0"
@@ -2179,13 +2186,13 @@ files = [
 
 [[package]]
 name = "unidecode"
-version = "1.2.0"
+version = "1.3.8"
 description = "ASCII transliterations of Unicode text"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.5"
 files = [
-    {file = "Unidecode-1.2.0-py2.py3-none-any.whl", hash = "sha256:12435ef2fc4cdfd9cf1035a1db7e98b6b047fe591892e81f34e94959591fad00"},
-    {file = "Unidecode-1.2.0.tar.gz", hash = "sha256:8d73a97d387a956922344f6b74243c2c6771594659778744b2dbdaad8f6b727d"},
+    {file = "Unidecode-1.3.8-py3-none-any.whl", hash = "sha256:d130a61ce6696f8148a3bd8fe779c99adeb4b870584eeb9526584e9aa091fd39"},
+    {file = "Unidecode-1.3.8.tar.gz", hash = "sha256:cfdb349d46ed3873ece4586b96aa75258726e2fa8ec21d6f00a591d98806c2f4"},
 ]
 
 [[package]]
@@ -2221,13 +2228,13 @@ ua-parser = ">=0.10.0"
 
 [[package]]
 name = "uvicorn"
-version = "0.18.1"
+version = "0.18.3"
 description = "The lightning-fast ASGI server."
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "uvicorn-0.18.1-py3-none-any.whl", hash = "sha256:013c4ea0787cc2dc456ef4368e18c01982e6be57903e4d3183218e543eb889b7"},
-    {file = "uvicorn-0.18.1.tar.gz", hash = "sha256:35703e6518105cfe53f16a5a9435db3e2e227d0784f1fd8fbc1214b1fdc108df"},
+    {file = "uvicorn-0.18.3-py3-none-any.whl", hash = "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af"},
+    {file = "uvicorn-0.18.3.tar.gz", hash = "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b"},
 ]
 
 [package.dependencies]
@@ -2236,13 +2243,13 @@ colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win
 h11 = ">=0.8"
 httptools = {version = ">=0.4.0", optional = true, markers = "extra == \"standard\""}
 python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
-PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
+pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
 uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""}
 watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
 websockets = {version = ">=10.0", optional = true, markers = "extra == \"standard\""}
 
 [package.extras]
-standard = ["PyYAML (>=5.1)", "colorama (>=0.4)", "httptools (>=0.4.0)", "python-dotenv (>=0.13)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.0)"]
+standard = ["colorama (>=0.4)", "httptools (>=0.4.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.0)"]
 
 [[package]]
 name = "uvloop"
@@ -2290,12 +2297,12 @@ test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)"
 
 [[package]]
 name = "uwsgi"
-version = "2.0.25.1"
+version = "2.0.27"
 description = "The uWSGI server"
 optional = false
 python-versions = "*"
 files = [
-    {file = "uwsgi-2.0.25.1.tar.gz", hash = "sha256:d653d2d804c194c8cbe2585fa56efa2650313ae75c686a9d7931374d4dfbfc6e"},
+    {file = "uwsgi-2.0.27.tar.gz", hash = "sha256:3ee5bfb7e6e9c93478c22aa8183eef35b95a2d5b14cca16172e67f135565c458"},
 ]
 
 [[package]]
@@ -2617,4 +2624,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
 [metadata]
 lock-version = "2.0"
 python-versions = "^3.10"
-content-hash = "6bc6cbf6fbe9ed773cacf9451ece9f8e29997e5426ad0dddb40529ea90a7bf3c"
+content-hash = "52bff48222a6c9868c318974684f9c5073fa0501e6a9c3a4b228973b829efff8"
index 4dd7217070ed92b7eec715a4313a80c683f1f596..0927ececa2368009b1f6e865ce4fc6a01464b45d 100644 (file)
@@ -8,37 +8,37 @@ readme = "README.md"
 
 [tool.poetry.dependencies]
 python = "^3.10"
-bigbluebutton-api-python = "0.0.11"
-channels = "3.0.4"
-channels-redis = "3.4.0"
-docutils = "0.17.1"
-django = "3.2.25"
-djangorestframework = "3.13.1"
-django-debug-toolbar = "3.2.1"
-dj-pagination = "2.5.0"
-django-jazzmin = "2.4.7"
-django-json-rpc = "0.7.1"
-django-nvd3 = "0.9.7"
-django-postman = "4.2"
-django-tinymce = "3.3.0"
-django-unique-session = "1.0.0"
-django-user-agents = "0.4.0"
-django-recaptcha = "2.0.6"
-jxmlease = "1.0.3"
-numpy = "1.26.4"
-pypdf = "4.2.0"
-pymemcache = "3.4.4"
+bigbluebutton-api-python = "^0.0.11"
+channels = "^3.0.4"
+channels-redis = "^3.4.0"
+docutils = "^0.17.1"
+django = "^4.2.16"
+djangorestframework = "^3.13.1"
+django-debug-toolbar = "^3.2.1"
+dj-pagination = "^2.5.0"
+django-jazzmin = "^2.4.7"
+django-json-rpc = "^0.7.1"
+django-nvd3 = "^0.9.7"
+django-postman = "^4.2"
+django-tinymce = "^3.3.0"
+django-unique-session = "^1.0.0"
+django-user-agents = "^0.4.0"
+django-recaptcha = "^4.0.0"
+jxmlease = "^1.0.3"
+numpy = "^1.26.4"
+pypdf = "^4.2.0"
+pymemcache = "^3.4.4"
 requests = "^2.31.0"
-sorl-thumbnail = "12.10.0"
-unidecode = "1.2.0"
-weasyprint = "52.5"
-xlrd = "2.0.1"
-xlwt = "1.3.0"
-psycopg2 = "2.8.6"
-redis = "3.5.3"
-uwsgi = "2.0.25.1"
-uvicorn = {version = "0.18.1", extras = ["standard"]}
-httpx = "0.23.3"
+sorl-thumbnail = "^12.10.0"
+unidecode = "^1.2.0"
+weasyprint = "^52.5"
+xlrd = "^2.0.1"
+xlwt = "^1.3.0"
+psycopg2 = "^2.8.6"
+redis = "^3.5.3"
+uwsgi = "^2.0.25.1"
+uvicorn = {version = "^0.18.1", extras = ["standard"]}
+httpx = "^0.23.3"
 django-storages = {extras = ["s3"], version = "^1.14.2"}
 boto3 = "^1.34.89"
 ipython = "^8.23.0"
index d396415ec3b9f92e0296b1a0649c21e50a996063..da4194a56fa72ce73ea88d0ad654c3e4bda70d70 100644 (file)
@@ -14,7 +14,7 @@ from django.contrib.auth.models import User
 from django.core import serializers
 from django.urls import reverse
 from django.http import HttpResponse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.utils.html import format_html
 
 from collections import OrderedDict
index d8abfba68dc3345b9652ec8fd4f9f7830cbb5cea..5226ce60f60664a1b7824fa9e31724bab1865e51 100755 (executable)
@@ -51,7 +51,7 @@ from django.db.models.signals import post_save
 from django.template.loader import render_to_string
 from django.urls.base import reverse_lazy
 from django.utils.translation import ugettext
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from postman.models import Message
 from postman.utils import notify_user
 from teleforma.models.core import Course, Period
index 73ffee919a7089ca91bd6c4e2eb39ce383c519ca..c5f37263a3c036d8ddec6c5921ca2c9f00fd4df5 100755 (executable)
@@ -17,7 +17,7 @@ from django.shortcuts import get_object_or_404, redirect
 from django.urls import reverse_lazy
 from django.utils.decorators import method_decorator
 from django.utils.translation import ugettext
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.views.generic.base import View
 from django.views.generic.edit import CreateView, UpdateView
 from django.views.generic.list import ListView
index 03e89a710f001bb6dd7d29fde0b0d4553974c6cc..fb3fe2aff734dc4f28dda156e26f9775de6c56f8 100644 (file)
@@ -7,7 +7,7 @@ from django import forms
 from django.contrib.auth import get_user_model
 from django.core import exceptions
 from django.forms import Textarea
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 
 class ShortTextField(models.TextField):
index d1703e375c208c4341d1736066d7cdc383d6b1ba..43b738b5c078c320ec0657ff2832c55a5734ba12 100644 (file)
@@ -11,7 +11,7 @@ from django.forms import (BooleanField, CharField, ChoiceField, DateField,
                           FileInput, ImageField, ModelChoiceField, ModelForm,
                           ModelMultipleChoiceField)
 from django.template.defaultfilters import slugify
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.utils.timezone import datetime
 from PIL import Image
 from postman.fields import BasicCommaSeparatedUserField
index 3dc4baa32a238d384dbd0492e61dfb7ada140e5c..05f23d3595b329c31f890e037bf86a2987cdab9c 100644 (file)
@@ -36,7 +36,7 @@
 
 import django.db.models as models
 from django.contrib.auth.models import User
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 from ..models import app_label
 from ..models.core import MetaCore
index 018348e8509953eb87978d56d0764e1fffc8f9a7..45735f12d52ee81aa22dcca7a0a8102891aca1f2 100644 (file)
@@ -6,7 +6,7 @@ from django.contrib.auth.models import User
 from django.core.cache import cache
 from django.db import models
 from django.utils.functional import cached_property
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 from ..models import app_label
 from ..models.core import MetaCore, Period
index 145d2cc494b004f254d0220b8ce79ac1c44a1c32..c9eeedf0d35060f740f5297fee85eb45755b6b21 100644 (file)
@@ -3,7 +3,7 @@ from django.contrib.auth.models import User
 from django.contrib.sites.models import Site
 from django.db import models
 from django.urls.base import reverse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 from ..models import MetaCore
 from ..models.core import app_label
index 778af7d88bd1f0f3a9bc93152f5526d06087a9e7..0d2f1c6e3ce77dc0b374d1fecc90abba3c1fa8f0 100644 (file)
@@ -53,7 +53,7 @@ from django.db import models
 from django.forms.fields import FileField
 from django.template.defaultfilters import slugify
 from django.urls import reverse_lazy, reverse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.db.models.signals import post_save
 # from quiz.models import Quiz
 
index 5b8c3f57881af2d6051414725bffde159aff7049..b6ea81424b3970a03625cb713fcb5702dfe674c9 100644 (file)
@@ -42,7 +42,7 @@ from django.db import transaction
 from django.contrib.auth.models import User
 from django.db.models import signals
 from django.urls.base import reverse_lazy
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from tinymce.models import HTMLField
 from django.core.cache import cache
 
index f9c5eeeaeeb415dc3bca510af9970474ec9566b7..51ca98772a5d65b71e6de2680b7d5a3a6e7bfecc 100644 (file)
@@ -5,7 +5,7 @@ from django.contrib.auth.models import User
 from django.contrib.sites.models import Site
 from django.db import models
 from django.urls import reverse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from postman.models import Message
 from postman.utils import notify_user
 
index d66a8600285eb56af80a918f72811b2e222164d7..72a7c7acb8d2402fdadeaae5f8cbf05c9f603c3a 100644 (file)
@@ -2,7 +2,7 @@
 from datetime import datetime, timedelta
 from django.contrib.auth.models import User
 from django.db import models
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 from ..models import MetaCore
 from ..models.core import app_label
index b2ef7189d41381a9e2dfdbf26b2b498ba58de4a9..7dcf1ea74c95f29730d23afed184f9977576aab6 100644 (file)
@@ -36,7 +36,7 @@
 
 import django.db.models as models
 from django.contrib.auth.models import User
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 from ..fields import DurationField
 from ..models import app_label
index 501e4d09ba05bf16556df012b81fb8a21e054bce..539f95787cef230fab5c1d46abbe1b86c4474ff2 100644 (file)
@@ -1,7 +1,7 @@
 from django.db import models
 from django.contrib.auth.models import User
 from teleforma.models.core import MetaCore
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 
 class UserProfile(models.Model):
     "User profile extension"
index f34f1d647d1eabbcc6e62a53ee5ba4d06b068b59..ba5afa06fa5e3ca9d0c7307c578b9e649a33777c 100644 (file)
@@ -44,9 +44,9 @@ from django.contrib.auth.models import User
 from django.db.models.query_utils import Q
 from django.shortcuts import get_object_or_404
 from django.urls.base import reverse
-from django.utils.encoding import force_text, smart_str
+from django.utils.encoding import force_str, smart_str
 from django.utils.safestring import mark_safe
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from docutils.core import publish_parts
 
 from teleforma.views.core import get_course_conferences
@@ -422,7 +422,7 @@ def render_flatpage(content):
 
     parts = publish_parts(source=smart_str(
         parsed), writer_name="html4css1", settings_overrides={})
-    return mark_safe('<div class="rst-content">\n' + force_text(parts["html_body"]) + '</div>')
+    return mark_safe('<div class="rst-content">\n' + force_str(parts["html_body"]) + '</div>')
 
 
 render_flatpage.is_safe = True
index 8283aa91d2a7024d3f452201404bd2b251d33c31..69ecc13d3d9b870c464ac0ce4ca9a302f4415e83 100644 (file)
@@ -52,7 +52,7 @@ from django.contrib.sites.shortcuts import get_current_site
 from django.template import loader
 from django.urls import reverse
 from django.utils.decorators import method_decorator
-from django.utils.translation import ugettext, ugettext_lazy as _
+from django.utils.translation import ugettext, gettext_lazy as _
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import TemplateResponseMixin, TemplateView, View
 from django.views.generic.detail import DetailView
index bb507b67a6c21796c3fc624cc1e8d5bab7e165b5..c4aad8a92df77b251561f310f3a90417095e107d 100644 (file)
@@ -49,7 +49,7 @@ from django.shortcuts import get_object_or_404, redirect, render
 from django.template.defaultfilters import slugify
 from django.urls.base import reverse, reverse_lazy
 from django.utils.decorators import method_decorator
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import TemplateView, View
 from django.views.generic.detail import DetailView
index 54b3c4f2df1242856c3006c2617f29119488b3f7..e3002af06db2e297eb5af8083ded9b79385b50a3 100644 (file)
@@ -17,7 +17,7 @@ from django.template.context import RequestContext
 from django.template.loader import render_to_string
 from django.urls.base import reverse
 from django.utils.decorators import method_decorator
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.detail import DetailView
 
index 5ff01ed5ddd87b6f90d534dc25abd38d11e444c5..f3a284cdcacebe62938990ffcd68bd8e9ebec1ed 100644 (file)
@@ -14,7 +14,7 @@ from django.db.models.signals import post_save
 from django.dispatch import receiver
 from django.template.defaultfilters import slugify
 from django.utils import translation
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from jxmlease import XMLDictNode, XMLListNode
 from teleforma.fields import DurationField, ShortTextField
 from teleforma.models import session_choices