Parcourir la source

menu and update

Mr Duhaz il y a 1 an
Parent
commit
5f485efddc
38 fichiers modifiés avec 64 ajouts et 25 suppressions
  1. 2 0
      .gitignore
  2. BIN
      core/__pycache__/__init__.cpython-310.pyc
  3. BIN
      core/__pycache__/__init__.cpython-39.pyc
  4. BIN
      core/__pycache__/admin.cpython-310.pyc
  5. BIN
      core/__pycache__/admin.cpython-311.pyc
  6. BIN
      core/__pycache__/apps.cpython-310.pyc
  7. BIN
      core/__pycache__/models.cpython-310.pyc
  8. BIN
      core/__pycache__/models.cpython-311.pyc
  9. BIN
      core/__pycache__/views.cpython-310.pyc
  10. BIN
      core/__pycache__/views.cpython-311.pyc
  11. BIN
      core/__pycache__/views.cpython-39.pyc
  12. 1 1
      core/admin.py
  13. 23 0
      core/migrations/0010_auto_20231222_1114.py
  14. BIN
      core/migrations/__pycache__/0001_initial.cpython-310.pyc
  15. BIN
      core/migrations/__pycache__/0002_auto_20220422_0914.cpython-310.pyc
  16. BIN
      core/migrations/__pycache__/0003_data.cpython-310.pyc
  17. BIN
      core/migrations/__pycache__/0004_auto_20221121_1234.cpython-310.pyc
  18. BIN
      core/migrations/__pycache__/0005_page_p_menu_stack.cpython-310.pyc
  19. BIN
      core/migrations/__pycache__/0006_speed_dial.cpython-310.pyc
  20. BIN
      core/migrations/__pycache__/0007_auto_20231201_1455.cpython-310.pyc
  21. BIN
      core/migrations/__pycache__/0008_speed_dial_sd_icone.cpython-310.pyc
  22. BIN
      core/migrations/__pycache__/0009_speed_dial_sd_color.cpython-310.pyc
  23. BIN
      core/migrations/__pycache__/0010_auto_20231222_1112.cpython-311.pyc
  24. BIN
      core/migrations/__pycache__/0010_auto_20231222_1114.cpython-311.pyc
  25. BIN
      core/migrations/__pycache__/__init__.cpython-310.pyc
  26. 1 1
      core/models.py
  27. 17 3
      core/templates/base.html
  28. BIN
      db.sqlite3
  29. BIN
      system/__pycache__/__init__.cpython-310.pyc
  30. BIN
      system/__pycache__/__init__.cpython-39.pyc
  31. BIN
      system/__pycache__/settings.cpython-310.pyc
  32. BIN
      system/__pycache__/settings.cpython-311.pyc
  33. BIN
      system/__pycache__/settings.cpython-39.pyc
  34. BIN
      system/__pycache__/urls.cpython-310.pyc
  35. BIN
      system/__pycache__/urls.cpython-39.pyc
  36. BIN
      system/__pycache__/wsgi.cpython-310.pyc
  37. BIN
      system/__pycache__/wsgi.cpython-311.pyc
  38. 20 20
      system/settings.py

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+db.sqlite3
+db.sqlite3

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


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


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


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


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


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


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


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


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


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


+ 1 - 1
core/admin.py

@@ -32,7 +32,7 @@ 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)
 

+ 23 - 0
core/migrations/0010_auto_20231222_1114.py

@@ -0,0 +1,23 @@
+# Generated by Django 3.2.16 on 2023-12-22 11:14
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0009_speed_dial_sd_color'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='page',
+            name='p_menu_stack',
+        ),
+        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'),
+        ),
+    ]

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


BIN
core/migrations/__pycache__/0002_auto_20220422_0914.cpython-310.pyc


BIN
core/migrations/__pycache__/0003_data.cpython-310.pyc


BIN
core/migrations/__pycache__/0004_auto_20221121_1234.cpython-310.pyc


BIN
core/migrations/__pycache__/0005_page_p_menu_stack.cpython-310.pyc


BIN
core/migrations/__pycache__/0006_speed_dial.cpython-310.pyc


BIN
core/migrations/__pycache__/0007_auto_20231201_1455.cpython-310.pyc


BIN
core/migrations/__pycache__/0008_speed_dial_sd_icone.cpython-310.pyc


BIN
core/migrations/__pycache__/0009_speed_dial_sd_color.cpython-310.pyc


BIN
core/migrations/__pycache__/0010_auto_20231222_1112.cpython-311.pyc


BIN
core/migrations/__pycache__/0010_auto_20231222_1114.cpython-311.pyc


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


+ 1 - 1
core/models.py

@@ -56,8 +56,8 @@ class Page (models.Model) : #Architecture pour les pages static est dynamique
 	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_stack = models.BooleanField("Regroupé dans le menu", default = False)
 	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)

+ 17 - 3
core/templates/base.html

@@ -44,14 +44,28 @@
 		<a href="/" class="text-reset text-decoration-none"><i class="fas fa-file-medical-alt"></i>&nbsp;GestClin</a>&nbsp;|&nbsp;
 		{% if page.p_menu_haut %}
 		<ul class="navbar-nav mr-auto">
-		{% 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>
+		{% 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 %}
+					<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 %}
 		{% endfor %}
 		</ul>
 		{% endif %}
 		<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">
+			<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 %}

BIN
db.sqlite3


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


BIN
system/__pycache__/__init__.cpython-39.pyc


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


BIN
system/__pycache__/settings.cpython-311.pyc


BIN
system/__pycache__/settings.cpython-39.pyc


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


BIN
system/__pycache__/urls.cpython-39.pyc


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


BIN
system/__pycache__/wsgi.cpython-311.pyc


+ 20 - 20
system/settings.py

@@ -11,8 +11,8 @@ https://docs.djangoproject.com/en/3.2/ref/settings/
 """
 
 from pathlib import Path
-#import ldap
-#from django_auth_ldap.config import LDAPSearch
+import ldap
+from django_auth_ldap.config import LDAPSearch
 
 # Build paths inside the project like this: BASE_DIR / 'subdir'.
 BASE_DIR = Path(__file__).resolve().parent.parent
@@ -61,22 +61,22 @@ MIDDLEWARE = [
 	'django.middleware.clickjacking.XFrameOptionsMiddleware',
 ]
 
-#AUTH_LDAP_SERVER_URI = "ldap://172.16.106.102"
-#AUTH_LDAP_BIND_DN = "seafile.adm@intra.stjacques"
-#AUTH_LDAP_BIND_PASSWORD = "DxbYwD5V2t"
-#AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=Informatique,OU=Administratif,Ou=Gentilly,OU=Utilisateurs,DC=intra,DC=stjacques", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
+AUTH_LDAP_SERVER_URI = "ldap://172.16.106.102"
+AUTH_LDAP_BIND_DN = "seafile.adm@intra.stjacques"
+AUTH_LDAP_BIND_PASSWORD = "DxbYwD5V2t"
+AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=Informatique,OU=Administratif,Ou=Gentilly,OU=Utilisateurs,DC=intra,DC=stjacques", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
 
-#AUTH_LDAP_USER_ATTR_MAP = {
-#	"first_name": "givenName",
-#	"last_name": "sn",
-#	"email": "mail",
-#	"username": "sAMAccountName",
-#}
+AUTH_LDAP_USER_ATTR_MAP = {
+	"first_name": "givenName",
+	"last_name": "sn",
+	"email": "mail",
+	"username": "sAMAccountName",
+}
 
-#AUTH_LDAP_ALWAYS_UPDATE_USER = True
+AUTH_LDAP_ALWAYS_UPDATE_USER = True
 
 AUTHENTICATION_BACKENDS = [
-#	"django_auth_ldap.backend.LDAPBackend",
+	"django_auth_ldap.backend.LDAPBackend",
 	"django.contrib.auth.backends.ModelBackend",
 ]
 
@@ -113,12 +113,12 @@ DATABASES = {
 
 # EMAIL
 
-#EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
-#EMAIL_HOST = 'smtp.elsan.care'
-#EMAIL_PORT = '25'
-#EMAIL_USE_TLS = False
-#EMAIL_HOST_USER = 'smtp.gen@elsan.care'
-#EMAIL_HOST_PASSWORD = 'c!fgx1cPlsd%JxW4$SKf!'
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
+EMAIL_HOST = 'smtp.elsan.care'
+EMAIL_PORT = '25'
+EMAIL_USE_TLS = False
+EMAIL_HOST_USER = 'smtp.gen@elsan.care'
+EMAIL_HOST_PASSWORD = 'c!fgx1cPlsd%JxW4$SKf!'
 
 
 # Password validation