Lowlights 2024-03-14 16:25:32 +06:00
parent 71694f09c3
commit fd83b11c4a
23 changed files with 26425 additions and 86 deletions

Binary file not shown.

26044
debug.log Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5724,3 +5724,218 @@ Traceback (most recent call last):
FileNotFoundError: [WinError 2] Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë: 'temp_invoice.html' FileNotFoundError: [WinError 2] Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë: 'temp_invoice.html'
WARNING 2024-03-07 13:43:03,802 log Not Found: /favicon.ico WARNING 2024-03-07 13:43:03,802 log Not Found: /favicon.ico
WARNING 2024-03-07 14:16:25,678 log Not Found: /about/ WARNING 2024-03-07 14:16:25,678 log Not Found: /about/
INFO 2024-03-07 14:23:21,732 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 14:51:45,073 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 14:52:05,942 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\urls.py changed, reloading.
INFO 2024-03-07 14:52:06,781 autoreload Watching for file changes with StatReloader
WARNING 2024-03-07 15:09:22,235 log Not Found: /favicon.ico
INFO 2024-03-07 15:21:24,376 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 15:32:48,767 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 15:56:26,232 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 15:59:13,792 autoreload Watching for file changes with StatReloader
WARNING 2024-03-07 16:00:22,353 log Not Found: /test/
WARNING 2024-03-07 16:00:22,414 log Not Found: /favicon.ico
INFO 2024-03-07 17:05:14,210 autoreload Watching for file changes with StatReloader
WARNING 2024-03-07 17:05:15,845 log Not Found: /test/
INFO 2024-03-07 17:12:04,397 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-07 17:12:05,032 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 17:16:07,037 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-07 17:16:07,685 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 17:16:14,853 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-07 17:16:15,395 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 17:17:35,050 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-07 17:17:35,607 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 17:18:15,440 autoreload C:\Users\fhjj3\djangoProject1\users\urls.py changed, reloading.
INFO 2024-03-07 17:18:15,991 autoreload Watching for file changes with StatReloader
WARNING 2024-03-07 17:18:25,344 log Not Found: /login/
WARNING 2024-03-07 17:18:37,362 log Not Found: /profile/
INFO 2024-03-07 17:21:13,878 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 17:22:25,019 autoreload Watching for file changes with StatReloader
INFO 2024-03-07 17:33:01,757 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-07 17:33:02,266 autoreload Watching for file changes with StatReloader
WARNING 2024-03-07 17:33:32,219 log Not Found: /oidc/
INFO 2024-03-07 17:37:03,877 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:13:02,692 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:13:37,832 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 09:13:38,392 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:13:51,952 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 09:13:52,388 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:14:11,218 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 09:14:12,034 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:14:20,204 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 09:14:20,789 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:17:50,550 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 09:17:51,130 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 09:18:30,398 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 09:18:31,137 autoreload Watching for file changes with StatReloader
ERROR 2024-03-10 09:18:33,336 log Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\main\views.py", line 18, in product_list
return render(request,'main/product/list.html',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\shortcuts.py", line 25, in render
content = loader.render_to_string(template_name, context, request, using=using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\defaulttags.py", line 479, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\urls\base.py", line 88, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\urls\resolvers.py", line 851, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for '' not found. '' is not a valid view function or pattern name.
WARNING 2024-03-10 09:18:33,623 log Not Found: /favicon.ico
INFO 2024-03-10 20:25:29,486 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:19:47,677 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:36:37,174 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:37:04,173 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 21:37:04,880 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:37:20,234 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 21:37:20,739 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:41:02,577 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-10 21:41:03,167 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:44:24,191 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 21:44:24,822 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:45:06,053 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 21:45:06,702 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 21:45:14,549 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.
INFO 2024-03-10 21:45:15,050 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 22:49:49,452 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 22:51:33,350 autoreload Watching for file changes with StatReloader
INFO 2024-03-10 22:52:48,830 autoreload Watching for file changes with StatReloader
WARNING 2024-03-10 22:53:07,221 log Not Found: /summ/
WARNING 2024-03-10 22:53:58,229 log Not Found: /summ/
INFO 2024-03-10 22:55:29,949 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-10 22:55:30,607 autoreload Watching for file changes with StatReloader
WARNING 2024-03-10 22:55:31,638 log Not Found: /summ/
INFO 2024-03-10 22:55:38,830 autoreload Watching for file changes with StatReloader
WARNING 2024-03-10 22:55:42,560 log Not Found: /summ/
INFO 2024-03-12 11:12:23,669 autoreload Watching for file changes with StatReloader
INFO 2024-03-12 11:13:10,048 autoreload Watching for file changes with StatReloader
INFO 2024-03-12 17:45:56,825 autoreload Watching for file changes with StatReloader
INFO 2024-03-12 18:08:53,134 autoreload Watching for file changes with StatReloader
INFO 2024-03-13 14:56:52,009 autoreload Watching for file changes with StatReloader
WARNING 2024-03-13 14:57:46,688 log Not Found: /favicon.ico
WARNING 2024-03-13 14:57:59,967 log Not Found: /favicon.ico
WARNING 2024-03-13 15:09:23,373 log Not Found: /accounts/keycloak/login/callback/
INFO 2024-03-14 14:14:26,285 autoreload Watching for file changes with StatReloader
ERROR 2024-03-14 14:14:29,517 log Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\main\views.py", line 20, in product_list
return render(request,'main/product/list.html',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\shortcuts.py", line 25, in render
content = loader.render_to_string(template_name, context, request, using=using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\template\defaulttags.py", line 479, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\urls\base.py", line 88, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fhjj3\djangoProject1\venv\Lib\site-packages\django\urls\resolvers.py", line 851, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'keycloak_login' not found. 'keycloak_login' is not a valid view function or pattern name.
WARNING 2024-03-14 14:14:29,713 log Not Found: /favicon.ico
INFO 2024-03-14 14:15:15,583 autoreload C:\Users\fhjj3\djangoProject1\users\urls.py changed, reloading.
INFO 2024-03-14 14:15:16,351 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:18:54,860 autoreload C:\Users\fhjj3\djangoProject1\users\urls.py changed, reloading.
INFO 2024-03-14 14:18:55,622 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:21:13,974 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-14 14:21:14,798 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:22:06,659 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-14 14:22:07,789 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:22:54,462 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-14 14:22:55,204 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:23:00,369 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-14 14:23:01,227 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:24:06,443 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:24:26,277 views Çàïðîñ óñïåøíî îáðàáîòàí 1
INFO 2024-03-14 14:24:41,003 autoreload C:\Users\fhjj3\djangoProject1\users\views.py changed, reloading.
INFO 2024-03-14 14:24:42,283 autoreload Watching for file changes with StatReloader
INFO 2024-03-14 14:25:00,106 autoreload C:\Users\fhjj3\djangoProject1\djangoProject1\settings.py changed, reloading.

View File

@ -0,0 +1,12 @@
{
"realm": "Harmony",
"auth-server-url": "https://auth.myterior.kz",
"ssl-required": "external",
"resource": "admin-cli",
"credentials": {
"secret": "wOVphEiLVBS1AlNKRpaQpD4yQh5Wm3TJ"
},
"confidential-port": 0
}

View File

@ -31,11 +31,12 @@ CART_SESSION_ID = 'cart'
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
'django.contrib.sites', 'django.contrib.sites',
'allauth', 'allauth',
'allauth.account', 'allauth.account',
'allauth.socialaccount', 'allauth.socialaccount',
'allauth.socialaccount.providers.openid_connect',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django_extensions', 'django_extensions',
@ -47,7 +48,7 @@ INSTALLED_APPS = [
'cart.apps.CartConfig', 'cart.apps.CartConfig',
'orders.apps.OrdersConfig', 'orders.apps.OrdersConfig',
'users.apps.UsersConfig', 'users.apps.UsersConfig',
'mozilla_django_oidc',
] ]
SESSION_COOKIE_AGE = 86400 # 24 часа в секундах SESSION_COOKIE_AGE = 86400 # 24 часа в секундах
@ -63,7 +64,6 @@ MIDDLEWARE = [
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'allauth.account.middleware.AccountMiddleware', 'allauth.account.middleware.AccountMiddleware',
] ]
ROOT_URLCONF = 'djangoProject1.urls' ROOT_URLCONF = 'djangoProject1.urls'
@ -166,53 +166,47 @@ KEYCLOAK_CONFIG = {
'CLIENT_ID': 'admin-cli', 'CLIENT_ID': 'admin-cli',
'CLIENT_SECRET': 'wOVphEiLVBS1AlNKRpaQpD4yQh5Wm3TJ', 'CLIENT_SECRET': 'wOVphEiLVBS1AlNKRpaQpD4yQh5Wm3TJ',
'CALLBACK_URL': 'http://127.0.0.1:8000/products/', 'CALLBACK_URL': 'http://127.0.0.1:8000/products/',
'POST_LOGOUT_REDIRECT_URI': 'http://127.0.0.1:8000/',
} }
LOGGING = { LOGGING = {
'version': 1, 'version': 1,
'disable_existing_loggers': False, 'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {message}',
'style': '{',
},
},
'handlers': { 'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
'file': { 'file': {
'level': 'INFO', 'level': 'DEBUG',
'class': 'logging.FileHandler', 'class': 'logging.FileHandler',
'filename': 'django.log', 'filename': 'debug.log',
'formatter': 'verbose',
}, },
}, },
'loggers': { 'loggers': {
'': { # 'root' logger 'django': {
'handlers': ['console', 'file'], 'handlers': ['file'],
'level': 'INFO', 'level': 'DEBUG',
'propagate': True,
}, },
}, },
} }
# settings.py
# ... ваш предыдущий код ...
AUTHENTICATION_BACKENDS = [
# ...
'allauth.account.auth_backends.AuthenticationBackend',
# ...
]
SOCIALACCOUNT_PROVIDERS = { SOCIALACCOUNT_PROVIDERS = {
'openid': { "openid_connect": {
'SERVERS': [ "APPS": [
{ {
'id': 'keycloak', "provider_id": "keycloak",
'name': 'Keycloak', "name": "Keycloak",
'openid_config_url': 'https://auth.myterior.kz/realms/Harmony/.well-known/openid-configuration', "client_id": "admin-cli",
'client_id': 'admin-cli', "secret": "wOVphEiLVBS1AlNKRpaQpD4yQh5Wm3TJ",
'client_secret': 'wOVphEiLVBS1AlNKRpaQpD4yQh5Wm3TJ', "settings": {
"server_url": "https://auth.myterior.kz/realms/Harmony/.well-known/openid-configuration",
},
} }
] ]
} }
} }

View File

@ -9,7 +9,7 @@ urlpatterns = [
path('orders/', include('orders.urls', namespace='orders')), path('orders/', include('orders.urls', namespace='orders')),
path('auth/', include('users.urls')), path('auth/', include('users.urls')),
path('', include('main.urls', namespace='main')), path('', include('main.urls', namespace='main')),
path('accounts/', include('allauth.urls')),
] ]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -37,7 +37,7 @@
/* Стили для основного контента и боковой панели категорий */ /* Стили для основного контента и боковой панели категорий */
.main-content { .main-content {
display: flex; display: flex;
flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
} }

View File

@ -1,33 +1,52 @@
{% extends "main/base.html" %} <!-- Предполагается, что у вас есть базовый шаблон --> {% extends "main/base.html" %}
{% load static %} {% load static %}
{% block title %}О магазине{% endblock %} {% block title %}О магазине{% endblock %}
{% block content %} {% block content %}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.1.3/css/bootstrap.min.css">
<div class="container py-5"> <style>
<h2 class="mb-4">О магазине "Гармония Эзотерики"</h2> .bg-semi-transparent {
<p> background: rgba(236, 219, 255, 0.8); /* Белый фон с небольшой прозрачностью */
"Гармония Эзотерики" - это ваш уникальный магазин товаров для практикующих эзотерику и всех, кто интересуется мистическими аспектами жизни. Мы предлагаем широкий ассортимент товаров, включая кристаллы, таро карты, эзотерические книги, амулеты и многое другое. border-radius: 15px; /* Скругленные углы для контейнера */
</p> padding: 20px; /* Дополнительный внутренний отступ */
<p> }
Наш магазин создан для тех, кто ищет гармонию в себе и вокруг. Мы верим, что правильные инструменты и знания могут открыть дверь в мир энергий, интуиции и самопознания. .contact-icon {
</p> width: 24px; /* Установите размер иконок */
margin-right: 10px; /* Отступ справа от иконки */
}
</style>
<h3 class="mt-5 mb-3">Контакты</h3> <div class="container py-5 position-relative">
<ul> <div class="bg-semi-transparent">
<li>Email: info@harmony-esoterics.com</li> <h2 class="mb-4 border-bottom pb-2">О магазине "Гармония Эзотерики"</h2>
<li>Телефон: +7 (999) 999-99-99</li> <p class="text-muted">
<li>Адрес: Город N, Улица Мистическая, д. 42</li> "Гармония Эзотерики" - это ваш уникальный магазин товаров для практикующих эзотерику и всех, кто интересуется мистическими аспектами жизни. Мы предлагаем широкий ассортимент товаров, включая кристаллы, таро карты, эзотерические книги, амулеты и многое другое.
</ul> </p>
<p class="text-muted">
Наш магазин создан для тех, кто ищет гармонию в себе и вокруг. Мы верим, что правильные инструменты и знания могут открыть дверь в мир энергий, интуиции и самопознания.
</p>
<h3 class="mt-5 mb-3">Следите за нами в социальных сетях</h3> <h3 class="mt-5 mb-3">Контакты</h3>
<p>Узнавайте о новинках, акциях и мероприятиях первыми!</p> <ul class="list-unstyled">
<div> <li><img src="https://example.com/path/to/email-icon.png" alt="" class="contact-icon"> Email: info@harmony-esoterics.com</li>
<a href="https://instagram.com/yourinstagram" class="btn btn-outline-dark btn-sm mb-2" target="_blank">Instagram <i class="fa fa-instagram"></i></a> <li><img src="https://example.com/path/to/phone-icon.png" alt="" class="contact-icon"> Телефон: +7 (999) 999-99-99</li>
<a href="https://facebook.com/yourfacebookpage" class="btn btn-outline-dark btn-sm mb-2" target="_blank">Facebook <i class="fa fa-facebook"></i></a> <li><img src="https://example.com/path/to/location-icon.png" alt="" class="contact-icon"> Адрес: Город N, Улица Мистическая, д. 42</li>
<!-- Добавьте другие социальные сети по аналогии --> </ul>
<h3 class="mt-5 mb-3">Следите за нами в социальных сетях</h3>
<div>
<a href="https://instagram.com/" class="btn btn-outline-dark btn-sm mb-2" target="_blank">Instagram <i class="fab fa-instagram"></i></a>
<a href="https://facebook.com/" class="btn btn-outline-dark btn-sm mb-2" target="_blank">Facebook <i class="fab fa-facebook-f"></i></a>
<!-- Добавьте другие социальные сети по аналогии -->
</div>
</div> </div>
</div> </div>
<script src="https://kit.fontawesome.com/your-fontawesome-kit-code.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.1.3/js/bootstrap.min.js"></script>
{% endblock %} {% endblock %}

View File

@ -42,7 +42,7 @@
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a class="dropdown-item text-white" href="#">Контактная информация</a></li> <li><a class="dropdown-item text-white" href="{% url "main:about" %}">Контактная информация</a></li>
</ul> </ul>
</li> </li>
@ -60,7 +60,7 @@
<li><a class="dropdown-item text-white" href="#">Личный кабинет</a></li> <li><a class="dropdown-item text-white" href="#">Личный кабинет</a></li>
<li><a class="dropdown-item text-white" href="{% url 'keycloak_login' %}">Войти</a></li> <li><a class="dropdown-item text-white" href="{% url 'keycloak_login' %}">Войти</a></li>
<li><a class="dropdown-item text-white" href="#">Выйти</a></li> <li><a class="dropdown-item text-white" href="{% url 'keycloak_logout' %}">Выйти</a></li>
</ul> </ul>
</li> </li>
@ -93,7 +93,7 @@
<!-- Адаптация под мобильные устройства --> <!-- Адаптация под мобильные устройства -->
<div class="col-12 col-sm-4 col-md-3 col-lg-2"> <div class="col-12 col-sm-4 col-md-3 col-lg-2">
<div class="list-group"> <div class="list-group">
<a href="#" class="list-group-item list-group-item-action active w-100% " aria-current="true">Категории</a> <a href="#" class="list-group-item list-group-item-action active " aria-current="true">Категории</a>
{% for category in categories %} {% for category in categories %}
<a href="{% url 'main:product_list_by_category' category.slug %}" class="list-group-item list-group-item-action">{{ category.name }}</a> <a href="{% url 'main:product_list_by_category' category.slug %}" class="list-group-item list-group-item-action">{{ category.name }}</a>
{% endfor %} {% endfor %}

View File

@ -0,0 +1,11 @@
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>CALLBACK</h1>
</body>
</html>

View File

@ -12,11 +12,12 @@
<p class="product-price">{{ product.price }}₸</p> <p class="product-price">{{ product.price }}₸</p>
<p class="product-description">{{ product.description|linebreaks }}</p> <p class="product-description">{{ product.description|linebreaks }}</p>
<div class="product-actions"> <div class="product-actions">
<form action="{% url 'cart:cart_add' product.id %}" method="post"> <form action="{% url 'cart:cart_add' product.id %}" method="post">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="quantity" value="1">
<input type="submit" value="Добавить в корзину" class="btn btn-primary"> <input type="hidden" name="override" value="False">
</form> <button style="color: #00ffb6" type="submit" class="btn btn-primary btn-sm">Добавить в корзину</button>
</form>
<a href="{% url 'main:product_list' %}" class="btn btn-secondary">Продолжить покупки</a> <a href="{% url 'main:product_list' %}" class="btn btn-secondary">Продолжить покупки</a>
<a href="{% url "orders:order_create"%}" class="btn btn-secondary">Оформить заказ</a> <a href="{% url "orders:order_create"%}" class="btn btn-secondary">Оформить заказ</a>
</div> </div>

View File

@ -5,7 +5,7 @@
<link rel="stylesheet" href="{% static 'deps/css/my_css.css' %}"> <link rel="stylesheet" href="{% static 'deps/css/my_css.css' %}">
<link rel="stylesheet" href="{% static 'deps/css/exo.css' %}"> <link rel="stylesheet" href="{% static 'deps/css/exo.css' %}">
<div class="main-content d-flex flex-column-reverse flex-sm-row align-items-center"> <div class="main-content d-flex flex-column-reverse flex-sm-row ">
<div id="main" class="product-list"> <div id="main" class="product-list">
<div class="row"> <div class="row">
{% for product in products %} {% for product in products %}

View File

@ -4,12 +4,15 @@ from . import views
app_name = 'main' app_name = 'main'
urlpatterns = [ urlpatterns = [
path('', views.product_list, name='product_list'), path('callback/', views.callback, name='callback'),
path('', views.product_list, name='product_list'),
path('about/', views.about, name='about'),
path('products/', views.product_list, name='product_list'), path('products/', views.product_list, name='product_list'),
path('<slug:category_slug>/', views.product_list, path('<slug:category_slug>/', views.product_list,
name='product_list_by_category'), name='product_list_by_category'),
path('<int:id>/<slug:slug>/', views.product_detail, path('<int:id>/<slug:slug>/', views.product_detail,
name='product_detail'), path('about/', views.about, name='about'), name='product_detail'),
path('about/', views.about, name='about'),
] ]

View File

@ -1,5 +1,7 @@
import json
from django.shortcuts import render,get_object_or_404 from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse from django.http import HttpResponse, JsonResponse
from .models import Category, Product from .models import Category, Product
from cart.forms import CartAddProductForm from cart.forms import CartAddProductForm
@ -35,4 +37,6 @@ def product_detail(request, id, slug):
# Функция для страницы "О нас" # Функция для страницы "О нас"
def about(request): def about(request):
return render(request, 'main/about.html') # предполагается, что у вас есть шаблон about.html в папке main return render(request, 'main/about.html')
def callback(request):
return render(request,'main/callback.html')

View File

@ -4,6 +4,8 @@ from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path('test/', views.test_payment, name='test-payment'),
path('login/', views.keycloak_login, name='keycloak_login'), path('login/', views.keycloak_login, name='keycloak_login'),
path('keycloak_logout/', views.keycloak_logout, name='keycloak_logout'),
path('products/', views.keycloak_redirect, name='keycloak_redirect'),
] ]

View File

@ -1,28 +1,62 @@
# views.py import json
import logging
from django.http import JsonResponse
from django.shortcuts import redirect from django.shortcuts import redirect
from django.urls import reverse from django.conf import settings
from keycloak import KeycloakOpenID from keycloak import KeycloakOpenID
from django.http import HttpResponse from urllib.parse import urlencode, urljoin
from django.contrib.auth.decorators import login_required from django.contrib.auth import logout
from djangoProject1 import settings
@login_required
def test_payment(request):
# Assuming the user's username is what you want to return
return HttpResponse(request.user.username)
# Inside your_app/views.py
logger = logging.getLogger(__name__)
def keycloak_login(request): def keycloak_login(request):
keycloak_openid = KeycloakOpenID( keycloak_openid = KeycloakOpenID(
server_url=settings.KEYCLOAK_CONFIG['SERVER_URL'], server_url=settings.KEYCLOAK_CONFIG['SERVER_URL'],
client_id=settings.KEYCLOAK_CONFIG['CLIENT_ID'], client_id=settings.KEYCLOAK_CONFIG['CLIENT_ID'],
realm_name=settings.KEYCLOAK_CONFIG['REALM'], realm_name=settings.KEYCLOAK_CONFIG['REALM'],
client_secret_key=settings.KEYCLOAK_CONFIG['CLIENT_SECRET'] client_secret_key=settings.KEYCLOAK_CONFIG['CLIENT_SECRET']
) )
auth_url = keycloak_openid.auth_url(redirect_uri=settings.KEYCLOAK_CONFIG['CALLBACK_URL'])
return redirect(auth_url)
redirect_uri = settings.KEYCLOAK_CONFIG['CALLBACK_URL']
auth_url = keycloak_openid.auth_url(redirect_uri=redirect_uri)
logger.info('Запрос успешно обработан')
return redirect(auth_url)
def keycloak_logout(request):
logout(request)
keycloak_server_url = settings.KEYCLOAK_CONFIG['SERVER_URL']
realm_name = settings.KEYCLOAK_CONFIG['REALM']
redirect_uri = settings.KEYCLOAK_CONFIG['POST_LOGOUT_REDIRECT_URI']
params = {'redirect_uri': redirect_uri}
keycloak_logout_url = (
f'{keycloak_server_url}/realms/{realm_name}/protocol/openid-connect/logout'
f'?{urlencode(params)}'
)
return redirect(keycloak_logout_url)
from django.http import HttpResponse
from django.views.decorators.http import require_http_methods
import logging
@require_http_methods(["GET"])
def keycloak_redirect(request):
# Extract the authorization code from the query parameters
authorization_code = request.GET.get('code')
if authorization_code:
# Proceed with the token exchange process here
print(authorization_code)
logger.info(' 2 Запрос успешно обработан')
return HttpResponse("Authorization code received.")
else:
return HttpResponse("Authorization code not found.", status=400)