Добавил куки и политику конфиденциальности
This commit is contained in:
parent
61c7af35c1
commit
fdacffdf58
BIN
programmer/static/programmer/images/black_logo.ico
Normal file
BIN
programmer/static/programmer/images/black_logo.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 194 KiB |
BIN
programmer/static/programmer/images/black_logo.png
Normal file
BIN
programmer/static/programmer/images/black_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
programmer/static/programmer/images/black_logo2.ico
Normal file
BIN
programmer/static/programmer/images/black_logo2.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@ -15,14 +15,14 @@
|
||||
<meta property="og:description" content="{% block og_description %}{{ meta_description|default:'Профессиональный программист 1С с более чем 10-летним опытом' }}{% endblock %}">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="{{ request.build_absolute_uri }}">
|
||||
<meta property="og:image" content="{% static 'programmer/images/og-image.jpg' %}">
|
||||
<!-- <meta property="og:image" content="{% static 'programmer/images/og-image.jpg' %}">-->
|
||||
<meta property="og:site_name" content="Программист 1С - Николай Сердюк">
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="{{title}}">
|
||||
<meta name="twitter:description" content="{% block twitter_description %}{{ meta_description|default:'Профессиональный программист 1С с более чем 10-летним опытом' }}{% endblock %}">
|
||||
<meta name="twitter:image" content="{% static 'programmer/images/og-image.jpg' %}">
|
||||
<!-- <meta name="twitter:image" content="{% static 'programmer/images/og-image.jpg' %}">-->
|
||||
|
||||
<!-- Дополнительные SEO-теги -->
|
||||
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
|
||||
@ -365,6 +365,65 @@
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Cookie consent bottom */
|
||||
.cookie-bottom {
|
||||
position: fixed;
|
||||
bottom: 20px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
z-index: 9999;
|
||||
width: auto;
|
||||
max-width: 450px;
|
||||
min-width: 300px;
|
||||
background-color: var(--bg-card, #ffffff);
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
|
||||
border: 1px solid var(--border-light, #e0e0e0);
|
||||
animation: slideUpFade 0.3s ease;
|
||||
}
|
||||
|
||||
@keyframes slideUpFade {
|
||||
from { opacity: 0; transform: translate(-50%, 20px); }
|
||||
to { opacity: 1; transform: translate(-50%, 0); }
|
||||
}
|
||||
|
||||
.cookie-bottom-content {
|
||||
padding: 1.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cookie-bottom-content h3 {
|
||||
margin: 0 0 0.75rem 0;
|
||||
font-size: 1.25rem;
|
||||
color: var(--text-primary, #333);
|
||||
}
|
||||
|
||||
.cookie-bottom-content p {
|
||||
margin: 0 0 1.5rem 0;
|
||||
font-size: 0.95rem;
|
||||
line-height: 1.5;
|
||||
color: var(--text-secondary, #666);
|
||||
}
|
||||
|
||||
.cookie-bottom-content a {
|
||||
color: var(--primary, #007bff);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.cookie-bottom-content .btn {
|
||||
width: 100%;
|
||||
padding: 0.75rem;
|
||||
font-size: 1rem;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.cookie-bottom {
|
||||
max-width: 90%;
|
||||
bottom: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
{% block extra_css %}
|
||||
@ -430,8 +489,8 @@
|
||||
<div class="container">
|
||||
<nav class="nav">
|
||||
<a href="{% url 'home' %}" class="logo">
|
||||
<img src="{% static 'programmer/images/main.ico' %}" alt="Logo" class="logo-img">
|
||||
<span class="logo-text">SNA</span>
|
||||
<img src="{% static 'programmer/images/black_logo.ico' %}" alt="Logo" class="logo-img">
|
||||
<span class="logo-text">СНА Технологии</span>
|
||||
</a>
|
||||
|
||||
<!-- Десктопное меню -->
|
||||
@ -650,5 +709,27 @@
|
||||
"description": "Выражаю благодарность программисту 1С Николаю Сердюк за профессиональную работу и качественное решение поставленных задач..."
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const bottomConsent = document.getElementById('cookie-consent-bottom');
|
||||
const acceptBtn = document.getElementById('cookie-accept-bottom');
|
||||
|
||||
if (!localStorage.getItem('cookieConsent')) {
|
||||
bottomConsent.style.display = 'block';
|
||||
}
|
||||
|
||||
if (acceptBtn) {
|
||||
acceptBtn.addEventListener('click', function() {
|
||||
localStorage.setItem('cookieConsent', 'true');
|
||||
bottomConsent.style.display = 'none';
|
||||
});
|
||||
}
|
||||
|
||||
// Можно добавить закрытие по клику вне (но для плашки обычно не нужно)
|
||||
// Если хотите, можно сделать крестик в углу
|
||||
});
|
||||
</script>
|
||||
{% include 'programmer/includes/cookie_consent.html' %}
|
||||
</body>
|
||||
</html>
|
||||
12
programmer/templates/programmer/includes/cookie_consent.html
Normal file
12
programmer/templates/programmer/includes/cookie_consent.html
Normal file
@ -0,0 +1,12 @@
|
||||
{% load static %}
|
||||
<div id="cookie-consent-bottom" class="cookie-bottom" style="display: none;">
|
||||
<div class="cookie-bottom-content">
|
||||
<h3>Использование cookies</h3>
|
||||
<p>
|
||||
Этот сайт использует cookies. Продолжая, вы соглашаетесь с
|
||||
<a href="{% url 'privacy' %}" target="_blank">политикой конфиденциальности</a>
|
||||
и политикой обработки cookies. Вы можете запретить сохранение cookies в настройках своего браузера.
|
||||
</p>
|
||||
<button id="cookie-accept-bottom" class="btn btn-primary">Принять и продолжить</button>
|
||||
</div>
|
||||
</div>
|
||||
77
programmer/templates/programmer/privacy.html
Normal file
77
programmer/templates/programmer/privacy.html
Normal file
@ -0,0 +1,77 @@
|
||||
{% extends 'programmer/base.html' %}
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>Политика в отношении обработки персональных данных</h1>
|
||||
|
||||
<h2>1. Общие положения</h2>
|
||||
<p>
|
||||
Настоящая политика определяет порядок обработки персональных данных и меры по обеспечению их безопасности, предпринимаемые ИП Сердюк Николай Александрович (далее — Оператор).
|
||||
</p>
|
||||
<ul>
|
||||
<li>Оператор: Сердюк Николай Александрович.</li>
|
||||
<li>ИНН: 613404767427.</li>
|
||||
<li>Сайт: <a href="https://nikdizell.ru">nikdizell.ru</a>.</li>
|
||||
<li>Адрес: 346755, Ростовская область, р-н Азовский, с. Новониколаевка, ул. Ленина, д. 16.</li>
|
||||
<li>Телефон: +7 (960) 469-40-88.</li>
|
||||
</ul>
|
||||
|
||||
<h2>2. Цели обработки персональных данных</h2>
|
||||
<p>
|
||||
Обработка персональных данных осуществляется в следующих целях:
|
||||
</p>
|
||||
<ul>
|
||||
<li>предоставление услуг;</li>
|
||||
<li>заключение договоров;</li>
|
||||
<li>информационная рассылка.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Виды обрабатываемых персональных данных</h2>
|
||||
<p>
|
||||
Оператор может обрабатывать следующие персональные данные:
|
||||
</p>
|
||||
<ul>
|
||||
<li>фамилия, имя, отчество;</li>
|
||||
<li>номер телефона;</li>
|
||||
<li>адрес электронной почты.</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Способы обработки персональных данных</h2>
|
||||
<p>
|
||||
Обработка персональных данных осуществляется автоматизированным способом.
|
||||
</p>
|
||||
|
||||
<h2>5. Права субъектов персональных данных</h2>
|
||||
<p>
|
||||
Субъекты персональных данных имеют право:
|
||||
</p>
|
||||
<ul>
|
||||
<li>на получение информации, касающейся обработки их персональных данных;</li>
|
||||
<li>на уточнение, блокирование или уничтожение своих персональных данных в случае, если они являются неполными, устаревшими, неточными, незаконно полученными или не являются необходимыми для заявленной цели обработки;</li>
|
||||
<li>на отзыв согласия на обработку персональных данных;</li>
|
||||
<li>на защиту своих прав и законных интересов, в том числе на возмещение убытков и компенсацию морального вреда в судебном порядке;</li>
|
||||
<li>на обжалование действий или бездействия Оператора в уполномоченный орган по защите прав субъектов персональных данных или в судебном порядке.</li>
|
||||
</ul>
|
||||
|
||||
<h2>6. Меры по обеспечению безопасности персональных данных</h2>
|
||||
<p>
|
||||
Оператор принимает необходимые правовые, организационные и технические меры для защиты персональных данных от неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, копирования, предоставления, распространения персональных данных, а также от иных неправомерных действий.
|
||||
</p>
|
||||
|
||||
<h2>7. Срок обработки персональных данных</h2>
|
||||
<p>
|
||||
Срок обработки персональных данных определяется достижением целей, для которых были собраны персональные данные, если иной срок не предусмотрен договором или действующим законодательством.
|
||||
</p>
|
||||
|
||||
<h2>8. Порядок отзыва согласия на обработку персональных данных</h2>
|
||||
<p>
|
||||
Субъект персональных данных может отозвать своё согласие на обработку данных, направив Оператору соответствующее уведомление.
|
||||
</p>
|
||||
|
||||
<h2>9. Заключительные положения</h2>
|
||||
<p>
|
||||
Политика действует бессрочно до замены её новой версией. Актуальная версия Политики размещена на сайте <a href="https://nikdizell.ru">nikdizell.ru</a>.
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
@ -29,6 +29,7 @@ urlpatterns = [
|
||||
path('register/', views.RegisterView.as_view(), name='register'),
|
||||
path('profile/', views.ProfileView.as_view(), name='profile'),
|
||||
path('profile/edit/', views.ProfileEditView.as_view(), name='profile_edit'),
|
||||
path('privacy/', PrivacyPolicyView.as_view(), name='privacy'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@ -264,6 +264,10 @@ class ProfileEditView(LoginRequiredMixin, PageViewTrackingMixin, MenuContextMixi
|
||||
return self.render_to_response(context)
|
||||
|
||||
|
||||
class PrivacyPolicyView(TemplateView):
|
||||
template_name = 'programmer/privacy.html'
|
||||
|
||||
|
||||
@require_POST
|
||||
def callback_request(request: HttpRequest) -> HttpResponse:
|
||||
"""
|
||||
|
||||
BIN
static/programmer/images/black_logo.ico
Normal file
BIN
static/programmer/images/black_logo.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 194 KiB |
BIN
static/programmer/images/black_logo.png
Normal file
BIN
static/programmer/images/black_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
static/programmer/images/black_logo2.ico
Normal file
BIN
static/programmer/images/black_logo2.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Loading…
x
Reference in New Issue
Block a user