Forráskód Böngészése

add more fonction and blug trac

Mr Duhaz 3 éve
szülő
commit
681d10a078
43 módosított fájl, 906 hozzáadás és 36 törlés
  1. BIN
      blog/__pycache__/__init__.cpython-310.pyc
  2. BIN
      blog/__pycache__/admin.cpython-310.pyc
  3. BIN
      blog/__pycache__/apps.cpython-310.pyc
  4. BIN
      blog/__pycache__/models.cpython-310.pyc
  5. BIN
      blog/__pycache__/urls.cpython-310.pyc
  6. BIN
      blog/__pycache__/views.cpython-310.pyc
  7. 1 1
      blog/admin.py
  8. 18 0
      blog/migrations/0008_blog_b_reading.py
  9. 18 0
      blog/migrations/0009_blog_b_contenu_img.py
  10. 18 0
      blog/migrations/0010_rename_b_contenu_img_blog_b_description_img.py
  11. BIN
      blog/migrations/__pycache__/0001_initial.cpython-310.pyc
  12. BIN
      blog/migrations/__pycache__/0002_auto_20211130_1818.cpython-310.pyc
  13. BIN
      blog/migrations/__pycache__/0003_auto_20211130_2005.cpython-310.pyc
  14. BIN
      blog/migrations/__pycache__/0004_alter_blog_b_cat.cpython-310.pyc
  15. BIN
      blog/migrations/__pycache__/0005_blog_b_publdate.cpython-310.pyc
  16. BIN
      blog/migrations/__pycache__/0006_alter_blog_options.cpython-310.pyc
  17. BIN
      blog/migrations/__pycache__/0007_alter_blog_b_cat.cpython-310.pyc
  18. BIN
      blog/migrations/__pycache__/0008_blog_b_reading.cpython-310.pyc
  19. BIN
      blog/migrations/__pycache__/0009_blog_b_contenu_img.cpython-310.pyc
  20. BIN
      blog/migrations/__pycache__/0010_rename_b_contenu_img_blog_b_description_img.cpython-310.pyc
  21. BIN
      blog/migrations/__pycache__/__init__.cpython-310.pyc
  22. 6 1
      blog/models.py
  23. 40 5
      blog/templates/listing.html
  24. 13 3
      blog/templates/read.html
  25. 1 1
      blog/urls.py
  26. 43 8
      blog/views.py
  27. BIN
      core/__pycache__/__init__.cpython-310.pyc
  28. BIN
      core/__pycache__/admin.cpython-310.pyc
  29. BIN
      core/__pycache__/apps.cpython-310.pyc
  30. BIN
      core/__pycache__/models.cpython-310.pyc
  31. BIN
      core/__pycache__/views.cpython-310.pyc
  32. BIN
      core/migrations/__pycache__/0001_initial.cpython-310.pyc
  33. BIN
      core/migrations/__pycache__/__init__.cpython-310.pyc
  34. 20 9
      core/templates/base.html
  35. 16 8
      core/templates/base_no_card.html
  36. BIN
      db.sqlite3
  37. BIN
      duhaz_blog/__pycache__/__init__.cpython-310.pyc
  38. BIN
      duhaz_blog/__pycache__/settings.cpython-310.pyc
  39. BIN
      duhaz_blog/__pycache__/urls.cpython-310.pyc
  40. BIN
      duhaz_blog/__pycache__/wsgi.cpython-310.pyc
  41. 1 0
      static/google4f7426e149147ec0.html
  42. 4 0
      static/robots.txt
  43. 707 0
      static/sitemap.xml

BIN
blog/__pycache__/__init__.cpython-310.pyc


BIN
blog/__pycache__/admin.cpython-310.pyc


BIN
blog/__pycache__/apps.cpython-310.pyc


BIN
blog/__pycache__/models.cpython-310.pyc


BIN
blog/__pycache__/urls.cpython-310.pyc


BIN
blog/__pycache__/views.cpython-310.pyc


+ 1 - 1
blog/admin.py

@@ -12,7 +12,7 @@ bt_b_not_publier.short_description = "Passer en Priver"
 
 class Blog_Admin(ImportExportModelAdmin):
 	form = Blog_Admin_Form
-	list_display = ('b_titre', 'b_description', 'b_publier','b_publdate')
+	list_display = ('b_titre', 'b_description', 'b_publier','b_publdate','b_reading')
 	list_filter = ('b_publier','b_cat','b_publdate')
 	filter_horizontal = ('b_cat',)
 	actions = [bt_b_publier, bt_b_not_publier]

+ 18 - 0
blog/migrations/0008_blog_b_reading.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.2.4 on 2022-05-31 18:08
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('blog', '0007_alter_blog_b_cat'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='blog',
+            name='b_reading',
+            field=models.IntegerField(default=0, verbose_name='Nb Lectures'),
+        ),
+    ]

+ 18 - 0
blog/migrations/0009_blog_b_contenu_img.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.2.4 on 2022-06-08 19:13
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('blog', '0008_blog_b_reading'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='blog',
+            name='b_contenu_img',
+            field=models.URLField(blank=True, max_length=128, verbose_name='Url de la miniature'),
+        ),
+    ]

+ 18 - 0
blog/migrations/0010_rename_b_contenu_img_blog_b_description_img.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.2.4 on 2022-06-08 19:20
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('blog', '0009_blog_b_contenu_img'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='blog',
+            old_name='b_contenu_img',
+            new_name='b_description_img',
+        ),
+    ]

BIN
blog/migrations/__pycache__/0001_initial.cpython-310.pyc


BIN
blog/migrations/__pycache__/0002_auto_20211130_1818.cpython-310.pyc


BIN
blog/migrations/__pycache__/0003_auto_20211130_2005.cpython-310.pyc


BIN
blog/migrations/__pycache__/0004_alter_blog_b_cat.cpython-310.pyc


BIN
blog/migrations/__pycache__/0005_blog_b_publdate.cpython-310.pyc


BIN
blog/migrations/__pycache__/0006_alter_blog_options.cpython-310.pyc


BIN
blog/migrations/__pycache__/0007_alter_blog_b_cat.cpython-310.pyc


BIN
blog/migrations/__pycache__/0008_blog_b_reading.cpython-310.pyc


BIN
blog/migrations/__pycache__/0009_blog_b_contenu_img.cpython-310.pyc


BIN
blog/migrations/__pycache__/0010_rename_b_contenu_img_blog_b_description_img.cpython-310.pyc


BIN
blog/migrations/__pycache__/__init__.cpython-310.pyc


+ 6 - 1
blog/models.py

@@ -28,9 +28,11 @@ class Blog(models.Model) : #Architecture pour le blog
 	b_mots_clefs = models.CharField("Mots clefs", max_length = 512, blank = True)
 	b_cat = models.ManyToManyField(Cat_Blog, blank = True)
 	b_description = models.TextField("Description", blank = True)
+	b_description_img = models.URLField("Url de la miniature", max_length = 128, blank = True)
 	b_contenu = models.TextField("Contenu", blank = True)
 	b_right = models.TextField("Contenu à droite", blank = True)
 	b_publier = models.BooleanField("Publié", default = False)
+	b_reading = models.IntegerField("Nb Lectures", default = 0)
 	b_publdate = models.DateTimeField("Publié le", blank = True, null = True)
 
 	class Meta :
@@ -48,10 +50,13 @@ class Blog(models.Model) : #Architecture pour le blog
 		return '%s' % (self.b_titre)
 
 
+class Blog_search_Form(forms.Form):
+	b_search = forms.CharField(label='Votre recherche', max_length=100)
+
 class Blog_Admin_Form(forms.ModelForm):
 	class Meta:
 		model = Blog
-		exclude = ['b_titre_slugify']
+		exclude = ['b_titre_slugify','b_reading']
 		widgets = {
 			'b_contenu': TrumbowygWidget(),
 			'b_right': TrumbowygWidget(),

+ 40 - 5
blog/templates/listing.html

@@ -2,22 +2,30 @@
 {% load crispy_forms_tags %}
 {% load static %}
 
+{% block exted_menu %}
+{% for cat in page.blog_cat %}
+	<li class="nav-item"><a class="nav-link" href="{% url 'blog_tag' cat.cb_titre_slgify %}">{{cat.cb_titre}}</a></li>
+{% endfor %}
+<li class="nav-item"><a class="nav-link" href="{% url 'blog_tag' 'all' %}">Tous les articles</a></li>
+{% endblock %}
+
 {% block main %}
 {% if page.blog_art %}
 	{% for item in page.blog_art %}
 		<div class="card mb-2" style="background-color: rgba(250,250,250,0.88);" >
 			<div class="card-header">
-				<h2>{{item.b_titre}}</h2>
+				<a class="text-dark text-decoration-none" href="{% url 'blog_play' item.b_titre_slugify %}"><h2>{{item.b_titre}}</h2></a>
 			</div>
 			<div class="card-body">
 			<p class="card-text">
 			<a class="text-dark text-decoration-none" href="{% url 'blog_play' item.b_titre_slugify %}">
+				{% if item.b_description_img != "" %}<p><img src="{{item.b_description_img}}"></p>{% endif %}
 				{{item.b_description|safe}}
 			</a>
 			</p>
 			</div>
 			<div class="card-footer">
-				Publier le {{item.b_publdate|date:"m N Y à H:i"}} {% if item.b_cat.all %} | {%for cat in item.b_cat.all %}<a class="text-dark text-decoration-none" href="{% url 'blog_tag' cat.cb_titre_slgify %}">{{ cat.cb_titre }}</a>{% if not forloop.last %}, {% endif %}{% endfor %}{% endif %}
+				Publié, il y'a {{item.b_publdate|timesince }} {% if item.b_cat.all %} | {%for cat in item.b_cat.all %}<a class="text-dark text-decoration-none" href="{% url 'blog_tag' cat.cb_titre_slgify %}">{{ cat.cb_titre }}</a>{% if not forloop.last %}, {% endif %}{% endfor %}{% endif %}
 			</div>
 		</div>
 	{% endfor %}
@@ -28,15 +36,42 @@
 {% if page.p_right != "" %}
 <div class="card" style="background-color: rgba(250,250,250,0.88);" >
 <div class="card-body">
+	<form action="." method="get">
+		<div class="row align-items-center">
+			
+			<div class="col-lg-8 col-sm-12">
+				{{page.blog_search|crispy}}
+			</div>
+			<div class="col mt-sm-1">
+				<input type="submit" class="btn btn-success w-100" value="Rechercher">
+			</div>
+		</div>
+	</form>
+	<hr>
 	<p class="card-text">{{page.p_right|safe}}</p>
-	<h4> Les Catégories </h4>
-	<p>
+	<h4> <i class="fas fa-tags"></i> Les Catégories </h4>
+	<p class="card-text">
 	{% for cat in page.blog_cat %}
 		<a href="{% url 'blog_tag' cat.cb_titre_slgify %}" class="btn btn-dark mb-2" tabindex="-1" role="button" aria-disabled="true">{{cat.cb_titre}}</a>
 	{% endfor %}
+	
+	{% if page.blog_filter == True %}
+		<a href="{% url 'blog_index' %}" class="btn btn-danger mb-2" tabindex="-1" role="button" aria-disabled="true"><i class="fas fa-filter text-white"></i> Retirer les filtres</a>
+	{% else %}
+		<a href="{% url 'blog_tag' 'all' %}" class="btn btn-dark mb-2" tabindex="-1" role="button" aria-disabled="true">Tous les articles</a>
+	{% endif %}
+
+	</p>
+
+	<h4> <i class="fas fa-bomb"></i> Les articles les plus consulté </h4>
+	<p class="card-text">
+	{% for item in page.blog_top10 %}
+		<i class="far fa-play-circle"></i> <a class="text-dark" data-bs-toggle="tooltip" data-bs-placement="top" title="{{item.b_titre}}" href="{% url 'blog_play' item.b_titre_slugify %}">{{item.b_titre|truncatechars:40}}</a><br>
+	{% endfor %}
 	</p>
+
 	{% if page.retour %}
-	<p>
+	<p class="card-text">
 		<a href="{% url page.retour %}" class="btn btn-dark mb-2" tabindex="-1" role="button" aria-disabled="true"><i class="fas fa-undo-alt"></i> Retour</a>
 
 	</p>

+ 13 - 3
blog/templates/read.html

@@ -16,16 +16,26 @@
 {% block right_panel %}
 <div class="card" style="background-color: rgba(250,250,250,0.88);" >
 <div class="card-body">
+	
 	<p class="card-text">{{page.p_right|safe}}</p>
+	{% for item in page.blog_art %}
+	{% if item.b_description_img != "" %}
+		<p><img src="{{item.b_description_img}}"></p>
+		<p>{{item.b_description|safe}}</p>
+	{% endif %}
+	<p>
+		<b>Nombre de Lectures </b>: {{item.b_reading}}<br>
+		<b>Date de mise en ligne </b>: {{item.b_publdate|date:"m N Y à H:i"}}
+	</p>
 	<h5> Les Catégories </h5>
 	<p>
-	{% for item in page.blog_art %}
 		{% for cat in item.b_cat.all %}
-			<a href="#" class="btn btn-dark" tabindex="-1" role="button" aria-disabled="true">{{cat.cb_titre}}</a>
+			<a href="{% url 'blog_tag' cat.cb_titre_slgify %}" class="btn btn-dark" tabindex="-1" role="button" aria-disabled="true">{{cat.cb_titre}}</a>
 		{% endfor %}
 	{% endfor %}
 	</p>
-	<p><a href="{% url 'blog_index' %}" class="btn btn-dark" tabindex="-1" role="button" aria-disabled="true"><i class="fas fa-undo"></i> Retour</a></p>
+	<hr>
+	<a href="{% url page.retour %}" class="btn btn-dark mb-2" tabindex="-1" role="button" aria-disabled="true"><i class="fas fa-undo-alt"></i> Retour</a>
 </div>
 </div>
 {% endblock %}

+ 1 - 1
blog/urls.py

@@ -5,7 +5,7 @@ from blog import views
 
 urlpatterns = [
 
-	path('', views.blog_index, {'bcat': "all",}, name='blog_index'),
+	path('', views.blog_index, {'bcat': "index",}, name='blog_index'),
 
 	path('update', views.blog_update, name='blog_update'),
 

+ 43 - 8
blog/views.py

@@ -1,8 +1,11 @@
 from django.shortcuts import render
 from django.template import loader
 from django.urls import reverse
+from django.utils.html import strip_tags
 from django.http import HttpResponse, HttpResponseRedirect
 from django.contrib import messages
+from django.db.models import Q
+
 
 
 from django.contrib.auth import authenticate, login, logout
@@ -15,23 +18,45 @@ from blog.models import *
 
 def blog_index(request, bcat):
 
-	print(bcat)
-
 	template = loader.get_template('listing.html')
 	page = gen_page_base()
 	page.p_adresse = reverse('blog_index')
 	page.p_titre = "Les articles du Blog"
 	page.p_contenu = ""
 	page.p_right = "Retrouvez les tous les articles de mon blog"
+	page.p_description = strip_tags(page.p_right)
+	page.p_mots_clefs = "blog, news, "
+
+	
+
+	if request.method == 'GET':
+		search = request.GET['b_search']
+		q_search = Q(b_titre__icontains=search) | Q(b_mots_clefs__icontains=search)| Q(b_description__icontains=search)| Q(b_cat__cb_titre__icontains=search)
+		page.blog_search = Blog_search_Form(initial={'b_search': search})
+	else :
+		page.blog_search = Blog_search_Form()
+
+	if bcat == "index":
+		if not q_search :
+			page.blog_art = Blog.objects.filter( b_publier = True ).order_by( '-b_publdate' )[:15]
+		else :
+			page.blog_art = Blog.objects.filter(q_search).filter( b_publier = True ).order_by( '-b_publdate' )[:15]
+		page.blog_cat = Cat_Blog.objects.all()[:15]
 
-	if bcat == "all":
-		page.blog_art = Blog.objects.filter( b_publier = True ).order_by( '-b_publdate' )[:15]
+	elif bcat == "all":
+		page.blog_art = Blog.objects.filter( b_publier = True ).order_by( '-b_publdate' )
 		page.blog_cat = Cat_Blog.objects.all()[:15]
 	else :
 		page.blog_art = Blog.objects.filter( b_publier = True ).filter( b_cat__cb_titre_slgify = bcat ).order_by( '-b_publdate' )[:15]
 		page.blog_cat = Cat_Blog.objects.filter( cb_titre_slgify = bcat )[:15]
+		page.blog_filter = True
 		page.retour = "blog_index"
 
+	for cat in page.blog_cat.all():
+		page.p_mots_clefs = page.p_mots_clefs + cat.cb_titre + ', '
+
+	page.blog_top10 = Blog.objects.filter( b_publier = True ).order_by( '-b_reading' )[:10]
+
 	html = template.render({
 		'page': page,
 		'user': request.user,
@@ -45,12 +70,23 @@ def blog_play(request, bart):
 	page = gen_page_base()
 	page.p_adresse = reverse('blog_index')
 	page.blog_art = Blog.objects.filter( b_titre_slugify = bart)[:1]
-
+	page.retour = "blog_index"
 
 	for art in page.blog_art:
 		page.p_titre = art.b_titre
 		page.p_contenu = art.b_description
-		page.p_right = art.b_right
+		page.p_description = strip_tags(art.b_description)
+		if art.b_right != "":
+			page.p_right = art.b_right
+		else:
+			page.p_right = "&nbsp;"
+
+		page.p_mots_clefs = ""
+		for cat in art.b_cat.all():
+			page.p_mots_clefs = page.p_mots_clefs + cat.cb_titre + ', '
+
+		art.b_reading = art.b_reading + 1
+		art.save()
 
 	html = template.render({
 		'page': page,
@@ -59,12 +95,11 @@ def blog_play(request, bart):
 		
 	return HttpResponse(html)
 
-
 def blog_update(request):
 	arts = Blog.objects.all()
 	for art in arts:
 		print(art.b_titre_slugify)
 		art.b_contenu = art.b_contenu.replace('é"','é').replace('à"','à').replace('ê"','ê').replace('è"','è').replace('ô"', 'ô').replace('«"', '«').replace('»"', '»')
-		art.b_contenu = art.b_contenu.replace('rsquo','|||').replace('|||','').replace('"',"'").replace("''","'")
+		#art.b_contenu = art.b_contenu.replace('rsquo','|||').replace('|||','').replace('"',"'").replace("''","'")
 		art.save()
 	return HttpResponse("OK")

BIN
core/__pycache__/__init__.cpython-310.pyc


BIN
core/__pycache__/admin.cpython-310.pyc


BIN
core/__pycache__/apps.cpython-310.pyc


BIN
core/__pycache__/models.cpython-310.pyc


BIN
core/__pycache__/views.cpython-310.pyc


BIN
core/migrations/__pycache__/0001_initial.cpython-310.pyc


BIN
core/migrations/__pycache__/__init__.cpython-310.pyc


+ 20 - 9
core/templates/base.html

@@ -5,13 +5,16 @@
 <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 %}">
+<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 %}
@@ -44,6 +47,7 @@
 		{% endfor %}
 		</ul>
 		{% endif %}
+		{% comment %}
 		<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" aria-labelledby="navbarDropdownMenuLink">
@@ -52,21 +56,25 @@
 						<a class="dropdown-item" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a>
 					{% endif %}
 				{% else %}
-					{% comment %} <a class="dropdown-item" href="{% url 'core_login' %}?next={{ request.path }}" ><i class="fas fa-sign-in-alt" ></i> Se connecter</a>
-					<a class="dropdown-item" href="{% url 'core_registration' %}?next={{ request.path }}" ><i class="fas fa-edit" ></i> Inscription</a> {% endcomment %}
+					<a class="dropdown-item" href="{% url 'core_login' %}?next={{ request.path }}" ><i class="fas fa-sign-in-alt" ></i> Se connecter</a>
+					<a class="dropdown-item" href="{% url 'core_registration' %}?next={{ request.path }}" ><i class="fas fa-edit" ></i> Inscription</a>
 				{% endif %}
 			</div>
 		</div>
+		{% endcomment %}
 		
 		</div>
+		{% 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;">
-				{% if page.p_menu_haut %}
+				
 				<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 %}
@@ -77,8 +85,10 @@
 					<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>
-				{% endif %}
+				
+				
 			</div>
 		</div>
 		<nav class="navbar navbar-dark" style="background-color: #093554;">
@@ -86,6 +96,7 @@
 			<span class="navbar-toggler-icon"></span>
 			 </button>
 		</nav>
+		{% endif %}
 	</div>
 	</div>
 	</nav>
@@ -95,9 +106,9 @@
 	<div class="row p-2">
 		{% block left_panel %}
 		{% endblock %}
-		<div class="col-lg-8 p-0">
+		<div class="col-lg-8 p-lg-1 p-md-0 mb-1">
 			{% if messages %}
-				<div class="card-body messages p-0 mr-3 ml-3">
+				<div class="card-body messages p-0 mr-3 ml-sm-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>
@@ -115,8 +126,8 @@
 				{% block main %}{% endblock %}
 			</div>
 		</div>
-		{% if not request.user.is_authenticated or page.p_right %}
-		<div class="col-lg-4">
+		{% if page.p_right %}
+		<div class="col-lg-4 p-lg-1 p-md-0">
 			<div class="card" style="background-color: rgba(250,250,250,0.88);" >
 				{% block right_panel %}
 				{% endblock %}

+ 16 - 8
core/templates/base_no_card.html

@@ -12,6 +12,7 @@
 <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 %}
@@ -35,7 +36,7 @@
 <header style="color: #fff; font-family: Kufam', cursive;">
 	<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #093554;"> 
 		<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>
+		<a class="navbar-brand sticky-top" 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">
@@ -44,6 +45,7 @@
 		{% endfor %}
 		</ul>
 		{% endif %}
+		{% comment %}
 		<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" aria-labelledby="navbarDropdownMenuLink">
@@ -52,21 +54,25 @@
 						<a class="dropdown-item" href="{% url 'admin:index' %}" ><i class="fas fa-cog" ></i> Admin</a>
 					{% endif %}
 				{% else %}
-					{% comment %} <a class="dropdown-item" href="{% url 'core_login' %}?next={{ request.path }}" ><i class="fas fa-sign-in-alt" ></i> Se connecter</a>
-					<a class="dropdown-item" href="{% url 'core_registration' %}?next={{ request.path }}" ><i class="fas fa-edit" ></i> Inscription</a> {% endcomment %}
+					<a class="dropdown-item" href="{% url 'core_login' %}?next={{ request.path }}" ><i class="fas fa-sign-in-alt" ></i> Se connecter</a>
+					<a class="dropdown-item" href="{% url 'core_registration' %}?next={{ request.path }}" ><i class="fas fa-edit" ></i> Inscription</a>
 				{% endif %}
 			</div>
 		</div>
+		{% endcomment %}
 		
 		</div>
+		{% 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;">
-				{% if page.p_menu_haut %}
+				
 				<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 %}
@@ -77,15 +83,17 @@
 					<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>
-				{% endif %}
+				
 			</div>
 		</div>
-		<nav class="navbar navbar-dark" style="background-color: #093554;">
+		<nav class="navbar navbar-dark justify-content-end" style="background-color: #093554;">
 			<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>
@@ -95,7 +103,7 @@
 	<div class="row p-2">
 		{% block left_panel %}
 		{% endblock %}
-		<div class="col-lg-8 p-0">
+		<div class="col-lg-8 p-lg-1 p-md-0 mb-sm-1">
 			{% if messages %}
 				<div class="card-body messages p-0 mr-3 ml-3">
 				{% for message in messages %}
@@ -109,7 +117,7 @@
 			{% block main %}{% endblock %}
 		</div>
 		{% if not request.user.is_authenticated or page.p_right %}
-		<div class="col-lg-4">
+		<div class="col-lg-4 p-lg-1 p-md-0">
 			<div class="card" style="background-color: rgba(250,250,250,0.88);" >
 				{% block right_panel %}
 				{% endblock %}

BIN
db.sqlite3


BIN
duhaz_blog/__pycache__/__init__.cpython-310.pyc


BIN
duhaz_blog/__pycache__/settings.cpython-310.pyc


BIN
duhaz_blog/__pycache__/urls.cpython-310.pyc


BIN
duhaz_blog/__pycache__/wsgi.cpython-310.pyc


+ 1 - 0
static/google4f7426e149147ec0.html

@@ -0,0 +1 @@
+google-site-verification: google4f7426e149147ec0.html

+ 4 - 0
static/robots.txt

@@ -0,0 +1,4 @@
+User-agent: *
+Disallow: 
+Disallow: /admin/
+Sitemap: https://www.duhaz.fr/sitemap.xml

+ 707 - 0
static/sitemap.xml

@@ -0,0 +1,707 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset
+      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
+            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
+<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
+
+
+<url>
+  <loc>https://www.duhaz.fr/blog/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>1.00</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-generer-des-cles-ssh-pour-lautorisation-git</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/installer-un-bloquer-de-pub-sur-le-rpi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/linux</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/serveur</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/docker</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/voila-enfin-de-retour-migre-et-demenage</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/nouvelle</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/menage-vous-avez-dit-menage</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/migration-dun-serveur-sous-centos-vers-rocky-linux</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-installer-proxmox-sur-un-serveur-dedie</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/virtual</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/ajout-dune-iso-sur-votre-host-proxmox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mon-retour-dans-le-monde-des-hackintosh</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/hackintosh</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/ou-est-passe-android-tv</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/android</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-utiliser-les-noms-de-vos-conteneurs-pour-qui-communique-ensemble</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/django</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/se-connecter-sans-mot-de-passe-avec-le-client-ssh-present-dans-windows-10</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/astuces</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/utiliser-le-client-ssh-natif-de-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mettre-a-jour-son-image-sur-docker</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/un-petit-coup-de-menage</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/update-avoir-un-bureau-a-distance-en-rdp-sur-linux-compatible-avec-debian-9-et-ubuntu-18-et-plus</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/streaming</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/youtube</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/synology</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/jeu</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/hors-serie</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/creer-une-clef-usb-avec-macos-high-sierra-sur-windows-10-avec-transmac</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/montage-et-modification-de-la-partition-efi-sur-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-creer-une-cle-usb-avec-macos-sierra-1012-sur-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-creer-un-cle-usb-avec-macos-sierra-1012-sur-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/presentation-du-logiciel-spacedesk-windows-pc-html5-android</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/presentation-du-logiciel-airserver-pc-mac-iphone-android</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-avec-docker-sous-windows-10</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/creation-dun-windows-to-go-sur-une-cle-usb-non-certifie</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-installation-de-django-sur-un-environnement-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-mettre-a-jour-ca-machine-virtuel-sous-mojave</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/acceder-a-un-volume-lvm</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mariadb-activer-lauthentification</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tester-les-performances-disques-de-son-serveur-ou-pc-sur-linux</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/surveille-sous-linux-letat-de-sante-des-disques-dur-dun-serveur-dedie</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-installer-docker-sous-linux</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/installation-de-docker-sous-linux</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-un-bureau-a-distance-sur-linux-compatible-avec-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/docker-django-python-mezzanine-coreos-je-vous-dis-quoi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-son-propre-serveur-de-mail</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-un-bureau-a-distance-sur-linux-compatible-avec-remote-desktop-protocol</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/installer-obs-studio-sous-linux-ubuntu</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-mettre-a-jour-debian-7-vers-80-jessie</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/devenir-votre-propre-hebergeur</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/coreoos-et-docker-mais-cest-quoi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mette-a-jour-php-sur-centos-6-avec-plesk-115-ou-12</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-un-certificat-de-securite-gratuit-pour-votre-site</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/tag/ssl</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/docker-en-ligne-de-commande-cest-bien-en-graphique-cest-mieux</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/editer-ces-fichiers-depuis-nimporte-ou</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/vlog-cest-la-rentreeee-enfin-pour-la-chaine</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/hackintosh-synology-feed-rss-ssl-et-bricolage</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/batir-un-abris-pour-le-jacuzzi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/retrouvez-moi-sur-discord</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/nouvelles-du-site-et-de-la-chaine</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/articles-comment-avoir-128-mo-de-vram-sur-macos-avec-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-avoir-128-mo-de-vram-sur-macos-avec-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/update-comment-installer-macos-10143-mojave-sur-virtualbox-sous-windows</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-macos-mojave-1014-sur-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mise-a-jour-du-paquet-de-virtualbox-pour-dsm-617-15284</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-macos-sierra-1013-sur-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/convertir-un-fichier-img-au-format-vdi-pour-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/changer-la-resolution-de-votre-mac-os-sur-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-macos-sierra-1012-sur-virtualbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-un-synology-sur-une-machine-virtuelle</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-virtualbox-sur-un-synology-en-dsm-6x-fr-hd</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/ajout-dune-iso-sur-votre-host-proxmox/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/installez-nimporte-quelle-version-des-pilotes-web-nvidia</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/ajoute-votre-carte-son-sur-votre-hackintosh</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/installez-nimporte-quelle-version-des-pilotes-web-nvidia-larticle</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/creer-un-cle-usb-avec-macos-high-sierra-1013-sur-windows-sans-transmac</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/macos-deplacer-et-redimensionner-les-fenetres-en-toute-simplicite</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/convertir-une-image-dmg-au-format-img</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/etre-en-4k-sur-virtualbox-pour-votre-macos</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-ajouter-votre-carte-reseau-sur-votre-macos-sierra-1012</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/android-tv-x86-oreo</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/installer-android-tv-sur-un-pc-oui-cest-possible</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/phoenixos-un-android-dans-votre-pc</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/android-x86-60-rc1-debarque-android-601-marshmallow-pour-son-pc</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/augmenter-lespace-libre-de-son-android</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep6-dessine-moi-un-formulaire</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep5-on-ajout-le-style-et-une-gestion-de-page</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep4-mise-en-place-des-templates</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep3-notre-1ere-page</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep2-creons-notre-projet</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep1-django-cest-bien-mais-cest-quoi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-serie-ep0-presentions-de-lenvironnement-de-travail-et-des-outils</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/vous-prendrez-bien-un-peu-de-django</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-gerer-les-connections</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-deploiement-gunicorn-supervisor-nginx-wsgi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-migrez-simplement-vos-applis-django-dun-type-de-base-de-donne-a-une-autre</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/django-ajouter-une-information-dans-le-resulta-dune-querry</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/la-validation-des-ssl</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/enchainer-des-fonctions-javascript</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/copier-vos-videos-de-votre-chaine-youtube-sur-twitch-gratuitement</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-faire-du-multi-streaming-de-live</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-un-bureau-a-distance-sur-linux-compatible-avec-remote-desktop-protocol/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/jouez-en-streaming-avec-moonlight</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/joue-en-streaming-avec-steam-hors-de-chez-vous</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/je-stream-depuis-un-serveur-dedie</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/je-joue-sur-mon-serveur-dedier</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/jouer-a-distance-avec-parsec</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/des-outils-pour-vos-ssl</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/les-types-de-ssl</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/de-retour-sur-parkitect</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/un-ssl-cest-quoi</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/bios-uefi-sur-virtual-machine-manager</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mettre-a-jour-votre-xpenology-de-la-version-61-15047-a-613-15152-et-plus</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/joue-a-civilisation-depuis-votre-navigateur</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/jai-installe-chromium-os-sur-mon-pc</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/faire-une-console-retrogaming-sur-un-pc-avec-recalbox</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/faire-une-console-retrogaming-avec-un-pc</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/adapter-un-plugin-non-compatible-avec-minecraft-19</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/faire-un-serveur-minecraft-en-19-avec-des-plugins</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/xenia-un-emulateur-xbox-360-compatible-60-fps</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/comment-surfer-anonymement-avec-tor</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/logjam-nouvelle-faille-dans-le-chiffrement-des-sites-web</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/mon-navigateur-affiche-des-alertes-de-securite-sur-mes-sites</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.64</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-macos-mojave-1014-sur-virtualbox/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/du-ssl-pour-tous-avec-lets-encrypt</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/disabling-sslv2-and-sslv3-protocols-on-cherokee</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/desactivation-des-protocoles-sslv2-et-sslv3-sur-cherokee</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/nouvelle-vulnerabilite-dans-le-monde-des-ssl</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/avoir-macos-sierra-1013-sur-virtualbox/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/etre-en-4k-sur-virtualbox-pour-votre-macos/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/je-stream-depuis-un-serveur-dedie/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/je-joue-sur-mon-serveur-dedier/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/phoenixos-un-android-dans-votre-pc/</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+<url>
+  <loc>https://www.duhaz.fr/blog/%20http://www.silicon.fr/logjam-nouvelle-faille-chiffrement-sites-web-116608.html</loc>
+  <lastmod>2022-05-18T19:23:23+00:00</lastmod>
+  <priority>0.51</priority>
+</url>
+
+
+</urlset>