diff --git a/README_RUS.md b/README_RUS.md
index ec0c8674a43e53ad7298cf1550350bbac6c21ddc..c1eacbb1622ff905cd7a765e1d5263053a0c67ed 100644
--- a/README_RUS.md
+++ b/README_RUS.md
@@ -1,6 +1,6 @@
 #### SimpleOPDS Catalog - Простой OPDS Каталог
 #### Author: Dmitry V.Shelepnev  
-#### Версия 0.47-devel
+#### Версия 0.5-devel, 2023
 
 [English README.md](README.md)
 
diff --git a/constance/apps.py b/constance/apps.py
index 25099a8c48342439a3aea916269cf4b4a4311816..a46723cf2716ee4c4912e7d1f4efa6dc7a8465eb 100644
--- a/constance/apps.py
+++ b/constance/apps.py
@@ -23,13 +23,13 @@ class ConstanceConfig(AppConfig):
         constance_dbs = getattr(settings, 'CONSTANCE_DBS', None)
         if constance_dbs is not None and using not in constance_dbs:
             return
-        if ContentType._meta.installed and Permission._meta.installed:
-            content_type, created = ContentType.objects.using(using).get_or_create(
-                app_label='constance',
-                model='config',
-            )
+        # if ContentType._meta.installed and Permission._meta.installed:
+        content_type, created = ContentType.objects.using(using).get_or_create(
+            app_label='constance',
+            model='config',
+        )
 
-            permission, created = Permission.objects.using(using).get_or_create(
-                content_type=content_type,
-                codename='change_config',
-                defaults={'name': 'Can change config'})
+        permission, created = Permission.objects.using(using).get_or_create(
+            content_type=content_type,
+            codename='change_config',
+            defaults={'name': 'Can change config'})
diff --git a/constance/management/commands/constance.py b/constance/management/commands/constance.py
index 0fc48f2c962d24206a810147abb0b3d965855798..9ddc3cad399b6fcb3b800bf872eb9d185f2e31a6 100644
--- a/constance/management/commands/constance.py
+++ b/constance/management/commands/constance.py
@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 
 from django.core.exceptions import ValidationError
 from django.core.management import BaseCommand, CommandError
-from django.utils.translation import ugettext as _
+from django.utils.translation import gettext as _
 from django import VERSION
 
 
diff --git a/constance/templates/admin/constance/change_list.html b/constance/templates/admin/constance/change_list.html
index 6f5b937ad915cbc337c161ca0e8a560973a04c62..33b6beb778a28260f59cb2584c0e3b03e3af95dc 100644
--- a/constance/templates/admin/constance/change_list.html
+++ b/constance/templates/admin/constance/change_list.html
@@ -1,5 +1,5 @@
 {% extends "admin/base_site.html" %}
-{% load admin_static admin_list i18n %}
+{% load static admin_list i18n %}
 
 {% block extrastyle %}
   {{ block.super }}
diff --git a/constance/templates/admin/constance/includes/results_list.html b/constance/templates/admin/constance/includes/results_list.html
index b13c4ee8801b9a7834bc8b99db8d6c201a3f627d..9ef478252903e618a091852684787d04f73cef24 100644
--- a/constance/templates/admin/constance/includes/results_list.html
+++ b/constance/templates/admin/constance/includes/results_list.html
@@ -1,4 +1,4 @@
-{% load admin_static admin_list static i18n %}
+{% load admin_list static i18n %}
 <div id="results">
     <table>
         <thead>
diff --git a/opds_catalog/sopdscan.py b/opds_catalog/sopdscan.py
index 706de37ec287da04f0d8c1c7827c8aabd8d8107e..b2e5d77a6d16ea4a644afb36dcb4b1f7f1240fc2 100644
--- a/opds_catalog/sopdscan.py
+++ b/opds_catalog/sopdscan.py
@@ -10,7 +10,7 @@ from book_tools.format import create_bookfile
 from book_tools.format.util import strip_symbols
 
 from django.db import transaction
-from django.utils.translation import ugettext as _
+from django.utils.translation import gettext as _
 
 from opds_catalog import fb2parse, opdsdb
 from opds_catalog import inpx_parser
diff --git a/requirements.txt b/requirements.txt
index 3f062f81cb9b510bba5014045bb096f988728a7c..00c401358932d1486036995df81f6ac83a6a7b29 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
-Django>=1.10
-Pillow>=2.9.0
-apscheduler>=3.3.0
-#django-constance[database]>=2.1
+Django>=4.1.0
+Pillow>=9.4
+apscheduler>=3.10.0
+django-constance[database]>=2.9
 django-picklefield
 lxml
-python-telegram-bot>=10
+python-telegram-bot>=20
diff --git a/sopds_web_backend/templates/admin/base.html b/sopds_web_backend/templates/admin/base.html
index 70e137cfe2eaf0d3e16c7e037bbb70801a8d4cb0..f7b8d8021e4b63417924b20a6367a85a6ec09c06 100644
--- a/sopds_web_backend/templates/admin/base.html
+++ b/sopds_web_backend/templates/admin/base.html
@@ -1,4 +1,5 @@
-{% load i18n static %}<!DOCTYPE html>
+{% load i18n static %}
+<!DOCTYPE html>
 {% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
 <html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
 <head>
diff --git a/sopds_web_backend/templates/sopds_logo.html b/sopds_web_backend/templates/sopds_logo.html
index 6920661c62b55db93d932f4d1bafcb1fc2593718..4994603fdbd19dc4b7e7a889ed6f2e3d13f3a30c 100644
--- a/sopds_web_backend/templates/sopds_logo.html
+++ b/sopds_web_backend/templates/sopds_logo.html
@@ -1,4 +1,4 @@
-{% load staticfiles %}
+{% load static %}
 {% load i18n %}
 
   <div class="show-for-medium medium-4 large-3 column" style="padding:0;"><img src="{% static "images/sopds_logo.gif" %}"></div>
diff --git a/sopds_web_backend/templates/sopds_main.html b/sopds_web_backend/templates/sopds_main.html
index 06cd22bfcfd8f71fdfaa19ec0623ee884cbd63f9..344b574252800fc087972a1629dfd6caf5f717f0 100644
--- a/sopds_web_backend/templates/sopds_main.html
+++ b/sopds_web_backend/templates/sopds_main.html
@@ -1,4 +1,4 @@
-{% load staticfiles %}
+{% load static %}
 {% load cache %}
 
 <!DOCTYPE html>