Explorar o código

add grp to wiki

HPNL hai 5 meses
pai
achega
ce2488c574
Modificáronse 6 ficheiros con 58 adicións e 8 borrados
  1. 1 0
      .gitignore
  2. 2 2
      admin.py
  3. 20 0
      migrations/0007_wiki_w_grp.py
  4. 3 0
      models.py
  5. 8 0
      templates/listing.html
  6. 24 6
      views.py

+ 1 - 0
.gitignore

@@ -28,3 +28,4 @@ migrations/__pycache__/0003_auto_20240123_1638.cpython-39.pyc
 migrations/__pycache__/0004_alter_wiki_w_contenu.cpython-39.pyc
 migrations/__pycache__/0005_alter_wiki_w_publdate.cpython-39.pyc
 migrations/__pycache__/0006_auto_20240313_1057.cpython-39.pyc
+migrations/__pycache__/0007_wiki_w_grp.cpython-312.pyc

+ 2 - 2
admin.py

@@ -12,8 +12,8 @@ bt_w_not_publier.short_description = "Passer en Priver"
 
 class Wiki_Admin(ImportExportModelAdmin):
 	form = Wiki_Admin_Form
-	list_display = ('w_titre', 'w_description', 'w_publier','w_publdate','w_reading')
-	list_filter = ('w_publier','w_cat','w_publdate')
+	list_display = ('w_grp','w_titre', 'w_description', 'w_publier','w_publdate','w_reading')
+	list_filter = ('w_publier','w_grp','w_cat','w_publdate')
 	exclude = ('w_publier','w_reading',)
 	filter_horizontal = ('w_cat',)
 	actions = [bt_w_publier, bt_w_not_publier]

+ 20 - 0
migrations/0007_wiki_w_grp.py

@@ -0,0 +1,20 @@
+# Generated by Django 3.2.23 on 2024-05-23 06:52
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0021_auto_20240423_1338'),
+        ('wiki', '0006_auto_20240313_1057'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='wiki',
+            name='w_grp',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='core.groupe', verbose_name='Regroupement'),
+        ),
+    ]

+ 3 - 0
models.py

@@ -5,6 +5,8 @@ from django.template.defaultfilters import slugify
 
 from trumbowyg.widgets import TrumbowygWidget
 
+from core.models import Groupe
+
 class Cat_Wiki(models.Model) :
 	cw_titre = models.CharField("Titre", max_length = 128, unique = True)
 	cw_titre_slgify = models.CharField("Titre Slugify", max_length = 128, blank = True, editable = False)
@@ -25,6 +27,7 @@ class Cat_Wiki(models.Model) :
 class Wiki(models.Model) : #Architecture pour le Wiki
 	w_titre = models.CharField("Titre", max_length = 128, unique = True)
 	w_titre_slugify = models.CharField("Titre Slugify", max_length = 128, blank = True, editable = False)
+	w_grp = models.ForeignKey(Groupe,verbose_name="Regroupement", blank = True, null = True, on_delete=models.PROTECT)
 	w_cat = models.ManyToManyField(Cat_Wiki, verbose_name="Catégories" , blank = True)
 	w_description = models.TextField("Résumé", blank = True)
 	w_contenu = models.TextField("Contenu", blank = True)

+ 8 - 0
templates/listing.html

@@ -69,6 +69,14 @@
 	<p>
 	{% endif %}
 	<p class="card-text">{{page.p_right|safe}}</p>
+	{% if page.groupe %}
+		<h4> <i class="fas fa-tags"></i> Les Groupes </h4>
+		<p class="card-text">
+		{% for grp in page.groupe %}
+			<a href="{{request.path}}?grp={{grp.g_nom_slugify}}" class="btn btn-dark mb-2" tabindex="-1" role="button" aria-disabled="true">{{grp.g_nom}}</a>
+		{% endfor %}
+		<a href="{{request.path}}" class="btn btn-dark mb-2" tabindex="-1" role="button" aria-disabled="true">Aucun</a>
+	{% endif %}
 	<h4> <i class="fas fa-tags"></i> Les Catégories </h4>
 	<p class="card-text">
 	{% for cat in page.wiki_cat %}

+ 24 - 6
views.py

@@ -15,7 +15,8 @@ from django.contrib.auth.models import User
 from django.db.models import Q
 
 #from wiki.forms import *
-from core.views import gen_page_base, gen_page_sys
+
+from core.views import gen_page_base, gen_page_sys, get_groupe
 from wiki.models import *
 
 def wiki_index(request, cat):
@@ -31,6 +32,8 @@ def wiki_index(request, cat):
 	page.p_description = strip_tags(page.p_right)
 	page.p_mots_clefs = ""
 	
+	page.groupe = get_groupe()
+	page.p_get_groupe = request.GET.get('grp')
 
 	w_search = request.GET.get('w_search')
 
@@ -41,19 +44,34 @@ def wiki_index(request, cat):
 		page.wiki_search = Wiki_search_Form()
 	if cat == "index":
 		if w_search != None:
-			wiki_art = Wiki.objects.filter( w_publier = True ).filter(q).order_by( 'w_titre' )
+			if page.p_get_groupe != None:
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter(w_grp__g_nom_slugify = page.p_get_groupe).filter(q).order_by( 'w_titre' )
+			else :
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter(q).order_by( 'w_titre' )
 		else :
-			wiki_art = Wiki.objects.filter( w_publier = True ).order_by( 'w_titre' )
+			if page.p_get_groupe != None:
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter(w_grp__g_nom_slugify = page.p_get_groupe).order_by( 'w_titre' )
+			else :
+				wiki_art = Wiki.objects.filter( w_publier = True ).order_by( 'w_titre' )
 		page.wiki_cat = Cat_Wiki.objects.all()[:15]
 
 	elif cat == "all":
-		wiki_art = Wiki.objects.filter( w_publier = True ).order_by( 'w_titre' )
+		if page.p_get_groupe != None:
+			wiki_art = Wiki.objects.filter( w_publier = True ).filter(w_grp__g_nom_slugify = page.p_get_groupe).order_by( 'w_titre' )
+		else :
+			wiki_art = Wiki.objects.filter( w_publier = True ).order_by( 'w_titre' )
 		page.wiki_cat = Cat_Wiki.objects.all()[:15]
 	else :
 		if w_search != None:
-			wiki_art = Wiki.objects.filter( w_publier = True ).filter( w_cat__cw_titre_slgify = cat ).filter(q).order_by( 'w_titre' )
+			if page.p_get_groupe != None:
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter(w_grp__g_nom_slugify = page.p_get_groupe).filter( w_cat__cw_titre_slgify = cat ).filter(q).order_by( 'w_titre' )
+			else :
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter( w_cat__cw_titre_slgify = cat ).filter(q).order_by( 'w_titre' )
 		else :
-			wiki_art = Wiki.objects.filter( w_publier = True ).filter( w_cat__cw_titre_slgify = cat ).order_by( 'w_titre' )
+			if page.p_get_groupe != None:
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter(w_grp__g_nom_slugify = page.p_get_groupe).filter( w_cat__cw_titre_slgify = cat ).order_by( 'w_titre' )
+			else :
+				wiki_art = Wiki.objects.filter( w_publier = True ).filter( w_cat__cw_titre_slgify = cat ).order_by( 'w_titre' )
 		page.wiki_cat = Cat_Wiki.objects.filter( cw_titre_slgify = cat )[:15]
 		page.retour = "wiki_index"