Mr Duhaz 1 éve
szülő
commit
ab50fe3c11

+ 1 - 0
.gitignore

@@ -51,3 +51,4 @@ duhaz_blog/__pycache__/urls.cpython-310.pyc
 duhaz_blog/__pycache__/urls.cpython-312.pyc
 duhaz_blog/__pycache__/wsgi.cpython-310.pyc
 duhaz_blog/__pycache__/wsgi.cpython-312.pyc
+core/migrations/__pycache__/0002_auto_20240110_2107.cpython-312.pyc

+ 23 - 1
core/admin.py

@@ -18,14 +18,36 @@ def bt_p_menu_poid_moin(modeladmin, request, queryset):
 		obj.save()
 bt_p_menu_poid_moin.short_description = "Diminuer le poid de 5"
 
+def bt_sd_poid_plus(modeladmin, request, queryset):
+	for obj in queryset:
+		obj.sd_poid=obj.sd_poid+5
+		obj.save()
+bt_sd_poid_plus.short_description = "Augmenter le poid de 5"
+def bt_sd_poid_moin(modeladmin, request, queryset):
+	for obj in queryset:
+		obj.sd_poid=obj.sd_poid-5
+		obj.save()
+bt_sd_poid_moin.short_description = "Diminuer le poid de 5"
 
 class Page_Admin(admin.ModelAdmin):
 	form = Page_Admin_Form
 	list_display = ('p_titre', 'p_titre_slugify', 'p_adresse', 'p_contenu', 'p_right', 'p_type', 'p_menu_poid', 'p_publier','p_see_title_and_des_in_templates')
-	list_filter = ('p_type', 'p_publier', 'p_see_title_and_des_in_templates')
+	list_filter = ('p_type', 'p_menu_parent', 'p_publier', 'p_see_title_and_des_in_templates')
 	actions = [bt_p_menu_poid_plus, bt_p_menu_poid_moin, bt_p_publier, bt_p_not_publier]
 admin.site.register(Page, Page_Admin)
 
+class Speed_Dial_Admin(admin.ModelAdmin):
+	pass
+	list_display = ('sd_titre', 'sd_adresse', 'sd_icone', 'sd_color', 'sd_poid')
+	actions = [bt_sd_poid_plus, bt_sd_poid_moin]
+admin.site.register(Speed_Dial, Speed_Dial_Admin)
+
+class Data_Admin(admin.ModelAdmin):
+	pass
+	exclude = ('d_titre_slugify',)
+	list_display = ('d_titre', 'd_titre_slugify', 'd_type', 'd_variable',)
+admin.site.register(Data, Data_Admin)
+
 class Contact_Admin(admin.ModelAdmin):
 	pass
 	list_display = ('c_type', 'c_name', 'c_email', 'c_description', 'c_statut',)

+ 59 - 0
core/migrations/0002_auto_20240110_2107.py

@@ -0,0 +1,59 @@
+# Generated by Django 3.2.23 on 2024-01-10 21:07
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Data',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('d_titre', models.CharField(max_length=128, unique=True, verbose_name='Nom')),
+                ('d_titre_slugify', models.CharField(blank=True, editable=False, max_length=128, verbose_name='Nom Slugify')),
+                ('d_type', models.CharField(max_length=64, verbose_name='Type')),
+                ('d_variable', models.CharField(max_length=64, verbose_name='Valeur')),
+            ],
+            options={
+                'verbose_name': 'Stocage de données',
+                'verbose_name_plural': 'Stocage de données',
+                'ordering': ['d_titre'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Speed_Dial',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('sd_titre', models.CharField(max_length=128, unique=True, verbose_name='Titre')),
+                ('sd_icone', models.CharField(blank=True, max_length=64, verbose_name="Code de l'icone")),
+                ('sd_color', models.CharField(choices=[('primary', 'Bleu'), ('secondary', 'Gris'), ('success', 'Vert'), ('danger', 'Rouge'), ('warning', 'Orange'), ('info', 'Bleu clair'), ('dark', 'Noir'), ('white', 'Blanc')], default='primary', max_length=10, verbose_name='Couleur du cadre')),
+                ('sd_adresse', models.CharField(max_length=256, verbose_name='Adresse')),
+                ('sd_poid', models.PositiveSmallIntegerField(default=50, verbose_name='Poid')),
+            ],
+            options={
+                'verbose_name': 'Speed Dial',
+                'verbose_name_plural': 'Speed Dial',
+            },
+        ),
+        migrations.AddField(
+            model_name='page',
+            name='p_menu_parent',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='core.page'),
+        ),
+        migrations.AlterField(
+            model_name='page',
+            name='p_icone',
+            field=models.CharField(blank=True, max_length=64, verbose_name="Code de l'icone"),
+        ),
+        migrations.AlterField(
+            model_name='page',
+            name='p_type',
+            field=models.CharField(choices=[('page', 'Une page'), ('sys', 'Une page interne'), ('lien', 'Un lien'), ('lien_ext', 'Un lien Externe')], default='page', max_length=8, verbose_name='Type de page'),
+        ),
+    ]

+ 49 - 3
core/models.py

@@ -2,7 +2,6 @@ from django.db import models
 from django import forms
 
 from django.template.defaultfilters import slugify
-
 from trumbowyg.widgets import TrumbowygWidget
 
 menu_pos = (
@@ -16,15 +15,48 @@ page_type = (
 	(u'page', u'Une page'),
 	(u'sys', u'Une page interne'),
 	(u'lien', u'Un lien'),
+	(u'lien_ext', u'Un lien Externe'),
+)
+
+page_color = (
+	(u'primary', u'Bleu'),
+	(u'secondary', u'Gris'),
+	(u'success', u'Vert'),
+	(u'danger', u'Rouge'),
+	(u'warning', u'Orange'),
+	(u'info', u'Bleu clair'),
+	(u'dark', u'Noir'),
+	(u'white', u'Blanc'),
 )
 
+class Data (models.Model) : #stocage de donnée dynamique
+	d_titre = models.CharField("Nom", max_length = 128, unique = True)
+	d_titre_slugify = models.CharField("Nom Slugify", max_length = 128, blank = True, editable = False)
+	d_type = models.CharField("Type", max_length = 64)
+	d_variable = models.CharField("Valeur", max_length = 64)
+
+	class Meta :
+		verbose_name = 'Stocage de données'
+		verbose_name_plural = 'Stocage de données'
+		ordering = ['d_titre']
+
+	def save(self, *args, **kwargs) :
+		self.d_titre_slugify = slugify(self.d_titre)
+		super(Data, self).save(*args, **kwargs)
+
+	def __unicode__(self):
+		return self.d_titre
+	def __str__(self):
+		return '%s' % (self.d_titre)
+
 class Page (models.Model) : #Architecture pour les pages static est dynamique
 	p_titre = models.CharField("Titre", max_length = 128, unique = True)
 	p_titre_slugify = models.CharField("Titre Slugify", max_length = 128, blank = True, editable = False)
-	p_icone = models.CharField("Code de l'icone", max_length = 32, blank = True)
-	p_type = models.CharField("Type de page",choices=page_type, max_length=4, default='page')
+	p_icone = models.CharField("Code de l'icone", max_length = 64, blank = True)
+	p_type = models.CharField("Type de page",choices=page_type, max_length=8, default='page')
 	p_adresse = models.CharField("Adresse", max_length = 64)
 	p_menu_position = models.CharField("A utiliser dans un menu ?",choices=menu_pos, max_length=4, default='no')
+	p_menu_parent = models.ForeignKey('self', blank = True, null=True, on_delete=models.PROTECT)
 	p_menu_poid = models.PositiveSmallIntegerField("Poid si utilisé dans les menus", default=50)
 	p_mots_clefs = models.CharField("Mots clefs", max_length = 512, blank = True)
 	p_description = models.TextField("Description", blank = True)
@@ -50,6 +82,20 @@ class Page (models.Model) : #Architecture pour les pages static est dynamique
 		return self.p_titre
 	def __str__(self):
 		return '%s' % (self.p_titre)
+	
+class Speed_Dial (models.Model) : # model pour génération de page SpeedDial
+	sd_titre = models.CharField("Titre", max_length = 128, unique = True)
+	sd_icone = models.CharField("Code de l'icone", max_length = 64, blank = True)
+	sd_color = models.CharField("Couleur du cadre",choices=page_color, max_length=10, default='primary')
+	sd_adresse = models.CharField("Adresse", max_length = 256)
+	sd_poid = models.PositiveSmallIntegerField("Poid", default=50)
+	
+	def __str__(self):
+		return self.sd_titre
+
+	class Meta:
+		verbose_name = "Speed Dial"
+		verbose_name_plural = "Speed Dial"
 
 class Contact (models.Model): # model de contact et retour de bug
 	c_type_liste = (

+ 91 - 100
core/templates/base.html

@@ -2,97 +2,104 @@
 <!DOCTYPE html>
 <html lang="fr" class="h-100">
 <head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-<meta name="keywords" content="{%if page.p_mots_clefs%}{{page.p_mots_clefs}}{% endif %}">
-<meta name="description" content="{% if page.p_description %}{{page.p_description|truncatewords:50}}{% endif %}">
-{% block add_meta_description %}{% endblock %}
-<title>{% if page.p_meta_title %}{{page.p_meta_title}} | {% elif page.p_titre %}{{page.p_titre}} | {% endif %}M'sieur Duhaz</title>
-<link rel="shortcut icon" href="/static/favicon.ico">
-<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
-<link href="//fonts.googleapis.com/css2?family=Kufam&display=swap" rel="stylesheet">
-
-<script src="https://kit.fontawesome.com/7cf2a101ac.js"></script>
-<script src="https://unpkg.com/@popperjs/core@2"></script>
-{% if not request.user.is_authenticated %}
-<script data-ad-client="ca-pub-0171697375250839" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
-{% endif %}
-<style type="text/css">
-	img {
-		display: block;
-		max-width: 100%;
-		height: auto;
-	}
-	body {
-		background-image: url('{% static 'background.jpeg'%}');
-		background-color:black;
-		background-position: center;
-		background-size: cover;
-		background-repeat: no-repeat;
-		background-attachment: fixed;
-	}
-</style>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+	<meta name="keywords" content="{%if page.p_mots_clefs%}{{page.p_mots_clefs}}{% endif %}">
+	<meta name="description" content="{% if page.p_description %}{{page.p_description}}{% endif %}">
+	{% block add_meta_description %}{% endblock %}
+	<title>Tools.Duhaz.fr{% if page.p_meta_title %} | {{page.p_meta_title}}{% elif page.p_titre %} | {{page.p_titre}}{% endif %}</title>
+	<link rel="shortcut icon" href="/static/favicon.ico">
+	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
+	<link href="//fonts.googleapis.com/css2?family=Kufam&display=swap" rel="stylesheet">
+	<script src="https://kit.fontawesome.com/7cf2a101ac.js"></script>
+	{% if not request.user.is_authenticated %}
+		<script data-ad-client="ca-pub-0171697375250839" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+	{% endif %}
+	<style type="text/css">
+		img {
+			display: block;
+			max-width: 100%;
+			height: auto;
+		}
+		body {
+			background-color:black;
+			background-image: url('{% static page.c_bgimagelogo %}'), url('{% static page.c_bgimage %}') ;
+			background-position: 96% 95%, center ;
+			background-size: 20%,cover;
+			background-repeat: no-repeat;
+			background-attachment: fixed;
+			font-size: 15px;
+		}
+	</style>
 </head>
 <body class="d-flex flex-column h-100">
-<header style="color: #fff; font-family: Kufam', cursive;">
-	<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #093554;"> 
+	<header style="color: #fff; font-family: Kufam', cursive;">
+	<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: {{page.c_bgcolor}};"> 
 		<div class="container-fluid">
-		<a class="navbar-brand" href="{% url 'core_index' %}"><i class="fas fa-laptop-house"></i> M'sieur Duhaz, le blog </a>
 		<div class="collapse navbar-collapse" id="navbarSupportedContent">
-			{% if page.p_menu_haut %}
-				<ul class="navbar-nav mr-auto">
-				{% regroup page.p_menu_haut by p_menu_parent as menu_with_parent %}
-		
-				{% for p_menu_parent in menu_with_parent%}
-					{% if p_menu_parent.grouper != none %}
-					<div class="navbar-nav dropdown">
-					<a class="nav-link dropdown-toggle mr-5" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars" ></i> {{ p_menu_parent.grouper }}</a>
-						<div class="dropdown-menu" style="margin-top: 28px; margin-left: 5px;" aria-labelledby="navbarDropdownMenuLink">
-						{% for item in p_menu_parent.list|dictsortreversed:"p_menu_poid" %}
-							<a class="dropdown-item" {%if item.p_type == "lien_ext" %}target="_blank"{% endif %}  href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
-						{% endfor %}
-						</div>
-					</div>
-					{% else %}
-						{% for item in p_menu_parent.list %}
-							<li class="nav-item"><a class="nav-link" {%if item.p_type == "lien_ext" %}target="_blank"{% endif %}  href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
-						{% endfor %}
-					{% endif %}
+		<a class="navbar-brand" href="{% url 'core_index' %}"><i class="{{page.c_sitelogo}}"></i> {{page.c_sitename}} </a>
+		{% if page.p_menu_haut %}
+		<ul class="navbar-nav mr-auto">
+		{% regroup page.p_menu_haut by p_menu_parent as menu_with_parent %}
+
+		{% for p_menu_parent in menu_with_parent%}
+			{% if p_menu_parent.grouper != none %}
+			<div class="navbar-nav dropdown">
+			<a class="nav-link dropdown-toggle mr-5" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars" ></i> {{ p_menu_parent.grouper }}</a>
+				<div class="dropdown-menu" style="margin-top: 28px; margin-left: 5px;" aria-labelledby="navbarDropdownMenuLink">
+				{% for item in p_menu_parent.list|dictsortreversed:"p_menu_poid" %}
+					<a class="dropdown-item" {%if item.p_type == "lien_ext" %}target="_blank"{% endif %}  href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
+				{% endfor %}
+				</div>
+			</div>
+			{% else %}
+				{% for item in p_menu_parent.list %}
+					<li class="nav-item"><a class="nav-link" {%if item.p_type == "lien_ext" %}target="_blank"{% endif %}  href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
 				{% endfor %}
-				</ul>
 			{% endif %}
+		{% endfor %}
+		</ul>
+		{% endif %}
+		{% if page.c_menulogin == 'True' %}
+			<div class="navbar-nav dropdown">
+				<a class="nav-link dropdown-toggle mr-5" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-id-badge" ></i> Mon profil</a>
+				<div class="dropdown-menu" style="margin-top: 28px; margin-left: 5px;" aria-labelledby="navbarDropdownMenuLink">
+					{% if not request.user.is_authenticated %}
+						<a class="dropdown-item" href="{% url 'core_login' %}" ><i class="fas fa-sign-in-alt"></i> Connexion</a>
+					{% elif request.user.is_authenticated %}
+						<a class="dropdown-item" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a>
+						<a class="dropdown-item" href="{% url 'core_logout' %}" ><i class="fas fa-sign-out-alt"></i> Déconexion</a>
+					{% endif %}
+				</div>
 			</div>
-		{% if page.p_menu_haut or page.blog_cat %}
+		{% endif %}
+		</div>
 		<div class="pos-f-t d-lg-none justify-content-end">
 		<div class="collapse" id="navbarToggleExternalContent">
-			<div class="p-4" style="background-color: #093554;">
-				
-				<ul class="navbar-nav">
-				{% for item in page.p_menu_haut %}
-					<li class="nav-item"><a class="nav-link" href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
-				{% endfor %}
-				{% block exted_menu %}{% endblock %}
-				{% comment %}
-				<hr>
-				{% if request.user.is_authenticated %}
-					{% if request.user.is_staff %}
-						<li class="nav-item"><a class="nav-link" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a></li>
+			<div class="p-3" style="background-color: {{page.c_bgcolor}};">
+				{% if page.p_menu_haut %}
+					<ul class="navbar-nav">
+					{% for item in page.p_menu_haut %}
+						<li class="nav-item"><a class="nav-link" {%if item.p_type == "lien_ext" %}target="_blank"{% endif %} href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
+					{% endfor %}
+					{% if page.c_menulogin == 'True' %}
+						<hr>
+						{% if not request.user.is_authenticated %}
+							<li class="nav-item"><a class="nav-link" href="{% url 'core_login' %}" ><i class="fas fa-sign-in-alt"></i> Connexion</a></li>
+						{% elif request.user.is_authenticated %}
+							<li class="nav-item"><a class="nav-link" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a></li>
+							<li class="nav-item"><a class="nav-link" href="{% url 'core_logout' %}" ><i class="fas fa-sign-out-alt"></i> Déconexion</a></li>
+						{% endif %}
 					{% endif %}
-					<li class="nav-item"><a class="nav-link" href="{% url 'core_logout' %}?next={{ request.path }}" ><i class="fas fa-sign-out-alt" ></i> Log out</a></li>
-				{% else %}
-					<li class="nav-item"><a class="nav-link" href="{% url 'core_login' %}?next={{ request.path }}" ><i class="fas fa-sign-in-alt" ></i> Se connecter</a></li>
-					<li class="nav-item"><a class="nav-link" href="{% url 'core_registration' %}?next={{ request.path }}" ><i class="fas fa-edit" ></i> Inscription</a></li>
+					</ul>
 				{% endif %}
-				{% endcomment %}
-				</ul>
 			</div>
 		</div>
-		<nav class="navbar navbar-dark" style="background-color: #093554;">
+		<nav class="navbar navbar-dark" style="background-color: {{page.c_bgcolor}};">
 			<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
 			<span class="navbar-toggler-icon"></span>
 			 </button>
 		</nav>
-		{% endif %}
 	</div>
 	</div>
 	</nav>
@@ -102,9 +109,9 @@
 	<div class="row p-2">
 		{% block left_panel %}
 		{% endblock %}
-		<div class="col-lg-8 p-lg-1 p-md-0 mb-1">
+		<div class="col-lg-9 p-0">
 			{% if messages %}
-				<div class="card-body messages p-0 mr-3 ml-sm-3">
+				<div class="card-body messages p-0 mr-3 ml-3">
 				{% for message in messages %}
 					<div class="m-2 alert alert-dismissable alert-{{ message.tags }}" data-alert="alert">
 					<button type="button" class="close" data-dismiss="alert" >&times;</button>
@@ -119,40 +126,26 @@
 						<h2>{% block title %}{% if page.p_icone != "" %}<i class="{{page.p_icone}}"></i> {% endif %}{{page.p_titre|safe}}{% endblock %}</h2>
 				</div>
 				{% endif %}
-				{% block main %}{% endblock %}
+				{% if page.p_include %}
+					{% include page.p_include %}
+				{% else %}
+					{% block main %}{% endblock %}
+				{% endif %}
 			</div>
 		</div>
-		{% if page.p_right %}
-		<div class="col-lg-4 p-lg-1 p-md-0">
+		{% if not request.user.is_authenticated or page.p_right %}
+		<div class="col-lg-3">
 			<div class="card" style="background-color: rgba(250,250,250,0.88);" >
 				{% block right_panel %}
 				{% endblock %}
-				{% if not request.user.is_authenticated and not "account/" in request.path %}
-					<div class="card-body">
-						<h5 class="card-title"> Une Pub </h5>
-						<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
-						<!-- Pub-1 -->
-						<ins class="adsbygoogle"
-							style="display:block"
-							data-ad-client="ca-pub-0171697375250839"
-							data-ad-slot="9918621322"
-							data-ad-format="auto"
-							data-full-width-responsive="true">
-						</ins>
-						<script>
-							(adsbygoogle = window.adsbygoogle || []).push({});
-						</script>
-					</div>
-				{% endif %}
 			</div>
 		</div>
 		{% endif %}
 	</div>
 </div>
 </main>
-<footer class="footer mt-auto py-1 text-white" style="background-color: rgba(45, 57, 72, 0.91);">
+<footer class="footer mt-auto py-1 text-white" style="background-color: {{page.c_bgcolor}};">
 	<div class="container">
-		Blog.Duhaz.fr - Jan. 2024
 		{% if page.p_menu_pied %}
 		{% for item in page.p_menu_pied %}
 			<a class="link-light" href="{{item.p_adresse}}">{{item.p_titre}}</a>{% if not forloop.last %}, {% endif %}
@@ -164,8 +157,6 @@
 <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
-<script>
-</script>
 {% block script %}
 {% endblock %}
 </body>

+ 27 - 29
core/templates/base_no_card.html

@@ -24,20 +24,21 @@
 		height: auto;
 	}
 	body {
-		background-image: url('{% static 'background.jpeg'%}');
 		background-color:black;
-		background-position: center;
-		background-size: cover;
+		background-image: url('{% static page.c_bgimagelogo %}'), url('{% static page.c_bgimage %}') ;
+		background-position: 96% 95%, center ;
+		background-size: 20%,cover;
 		background-repeat: no-repeat;
 		background-attachment: fixed;
+		font-size: 15px;
 	}
 </style>
 </head>
 <body class="d-flex flex-column h-100">
-<header style="color: #fff; font-family: Kufam', cursive;">
-	<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #093554;"> 
+	<header style="color: #fff; font-family: Kufam', cursive;">
+	<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: {{page.c_bgcolor}};"> 
 		<div class="container-fluid">
-		<a class="navbar-brand sticky-top" href="{% url 'core_index' %}"><i class="fas fa-laptop-house"></i> M'sieur Duhaz, le blog </a>
+			<a class="navbar-brand" href="{% url 'core_index' %}"><i class="{{page.c_sitelogo}}"></i> {{page.c_sitename}} </a>
 		<div class="collapse navbar-collapse" id="navbarSupportedContent">
 		{% if page.p_menu_haut %}
 			<ul class="navbar-nav mr-auto">
@@ -65,30 +66,27 @@
 		{% if page.p_menu_haut or page.blog_cat %}
 		<div class="pos-f-t d-lg-none justify-content-end">
 		<div class="collapse" id="navbarToggleExternalContent">
-			<div class="p-4" style="background-color: #093554;">
-				
-				<ul class="navbar-nav">
-				{% for item in page.p_menu_haut %}
-					<li class="nav-item"><a class="nav-link" href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
-				{% endfor %}
-				{% block exted_menu %}{% endblock %}
-				{% comment %}
-				<hr>
-				{% if request.user.is_authenticated %}
-					{% if request.user.is_staff %}
-						<li class="nav-item"><a class="nav-link" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a></li>
+			<div class="collapse" id="navbarToggleExternalContent">
+				<div class="p-3" style="background-color: {{page.c_bgcolor}};">
+					{% if page.p_menu_haut %}
+						<ul class="navbar-nav">
+						{% for item in page.p_menu_haut %}
+							<li class="nav-item"><a class="nav-link" {%if item.p_type == "lien_ext" %}target="_blank"{% endif %} href="{{item.p_adresse}}">{% if item.p_icone %}<i class="{{item.p_icone}}" ></i> {% endif %}{{item.p_titre}}</a></li>
+						{% endfor %}
+						{% if page.c_menulogin == 'True' %}
+							<hr>
+							{% if not request.user.is_authenticated %}
+								<li class="nav-item"><a class="nav-link" href="{% url 'core_login' %}" ><i class="fas fa-sign-in-alt"></i> Connexion</a></li>
+							{% elif request.user.is_authenticated %}
+								<li class="nav-item"><a class="nav-link" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a></li>
+								<li class="nav-item"><a class="nav-link" href="{% url 'core_logout' %}" ><i class="fas fa-sign-out-alt"></i> Déconexion</a></li>
+							{% endif %}
+						{% endif %}
+						</ul>
 					{% endif %}
-					<li class="nav-item"><a class="nav-link" href="{% url 'core_logout' %}?next={{ request.path }}" ><i class="fas fa-sign-out-alt" ></i> Log out</a></li>
-				{% else %}
-					<li class="nav-item"><a class="nav-link" href="{% url 'core_login' %}?next={{ request.path }}" ><i class="fas fa-sign-in-alt" ></i> Se connecter</a></li>
-					<li class="nav-item"><a class="nav-link" href="{% url 'core_registration' %}?next={{ request.path }}" ><i class="fas fa-edit" ></i> Inscription</a></li>
-				{% endif %}
-				{% endcomment %}
-				</ul>
-				
-			</div>
+				</div>
 		</div>
-		<nav class="navbar navbar-dark justify-content-end" style="background-color: #093554;">
+		<nav class="navbar navbar-dark justify-content-end" style="background-color: {{page.c_bgcolor}};">
 			<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
 			<span class="navbar-toggler-icon"></span>
 			 </button>
@@ -143,7 +141,7 @@
 	</div>
 </div>
 </main>
-<footer class="footer mt-auto py-1 text-white" style="background-color: rgba(45, 57, 72, 0.91);">
+<footer class="footer mt-auto py-1 text-white" style="background-color: {{page.c_bgcolor}};">
 	<div class="container">
 		Blog.Duhaz.fr - Jan. 2024
 		{% if page.p_menu_pied %}

+ 89 - 1
core/views.py

@@ -11,18 +11,92 @@ from django.contrib.auth.models import User
 
 from core.models import *
 
+def get_get_value(request):
+	get_value = {}
+	if request.method == 'GET':
+		get = request.GET
+		for element in get:
+			get_value[element] = get[element]
+			print(get_value)
+	return get_value
+
 def gen_menu(position):
 	try:
-		menu = Page.objects.exclude(p_publier = 0).filter(p_menu_position = position).order_by('-p_menu_poid')
+		menu = Page.objects.all().exclude(p_publier = 0).filter(p_menu_position = position).order_by('p_menu_parent')
 	except:
 		menu = Page.objects.none()
 	return menu
 
+def gen_speeddial():
+	try:
+		speeddial = Speed_Dial.objects.order_by('-sd_poid')
+	except:
+		speeddial = Speed_Dial.objects.none()
+	return speeddial
+
+def get_data_value(name):
+	try:
+		data = Data.objects.get(d_titre_slugify = name)
+	except:
+		data = Data()
+		if name == "site-name":
+			data.d_titre = name
+			data.d_type = "txt"
+			data.d_variable = "Duhaz Core"
+			data.save()
+		elif name == "site-logo":
+			data.d_titre = name
+			data.d_type = "txt"
+			data.d_variable = "far fa-clone"
+			data.save()
+		elif name == "background-color":
+			data.d_titre = name
+			data.d_type = "txt"
+			data.d_variable = "#999"
+			data.save()
+		elif name == "background":
+			data.d_titre = name
+			data.d_type = "txt"
+			data.d_variable = "background.jpeg"
+			data.save()
+		elif name == "background-logo":
+			data.d_titre = name
+			data.d_type = "txt"
+			data.d_variable = "logo-txt-Mrduhaz.png"
+			data.save()
+		elif name == "login-menu":
+			data.d_titre = name
+			data.d_type = "txt"
+			data.d_variable = "True"
+			data.save()
+		else :
+			data.d_variable = "Blop"
+	return data.d_variable
+
+
+def update_data_value(name, value):
+	try:
+		data = Data.objects.get(d_titre_slugify = name)
+		data.d_variable = value
+		data.save()
+	except:
+		data = Data.objects.none()
+		data.d_variable = "Blop"
+	return data.d_variable
+
 def gen_page_base():
 	page = Page.objects.none()
 	page.p_menu_haut = gen_menu('haut')
 	page.p_menu_pied = gen_menu('pied')
 	page.p_see_title_and_des_in_templates = True
+
+	page.c_sitename = get_data_value('site-name')
+	page.c_sitelogo = get_data_value('site-logo')
+	page.c_bgcolor = get_data_value('background-color')
+	page.c_bgimage = get_data_value('background')
+	page.c_bgimagelogo = get_data_value('background-logo')
+	page.c_menulogin = get_data_value('login-menu')
+
 	return page
 
 def gen_page_sys(p_titre_slugify):
@@ -38,12 +112,20 @@ def gen_page_sys(p_titre_slugify):
 	page.p_menu_haut = gen_menu('haut')
 	page.p_menu_pied = gen_menu('pied')
 	page.p_meta_title = page.p_titre
+
+	page.c_sitename = get_data_value('site-name')
+	page.c_sitelogo = get_data_value('site-logo')
+	page.c_bgcolor = get_data_value('background-color')
+	page.c_bgimage = get_data_value('background')
+	page.c_bgimagelogo = get_data_value('background-logo')
+	page.c_menulogin = get_data_value('login-menu')
 	
 	return page
 
 
 def index(request):
 	page = gen_page_sys('bienvenus')
+	page.speeddial = gen_speeddial()
 
 	template = loader.get_template('page.html')
 	context = {
@@ -60,6 +142,12 @@ def page(request, p_url):
 		page.p_menu_haut = gen_menu('haut')
 		page.p_menu_pied = gen_menu('pied')
 		page.p_meta_title = page.p_titre
+		page.c_sitename = get_data_value('site-name')
+		page.c_sitelogo = get_data_value('site-logo')
+		page.c_bgcolor = get_data_value('background-color')
+		page.c_bgimage = get_data_value('background')
+		page.c_bgimagelogo = get_data_value('background-logo')
+		page.c_menulogin = get_data_value('login-menu')
 	except:
 		page = gen_page_base()
 		page.p_contenu = "<h1>Erreur la page demandé n'existe pas </h1>"

BIN
static/background-old.jpeg


BIN
static/logo-txt-Mrduhaz.png