From f410e3c5daba83e61ade7c2457a41c1e4a69361a Mon Sep 17 00:00:00 2001 From: Ambulance Clerc Date: Mon, 2 May 2022 08:31:03 +0200 Subject: [PATCH] Modification form group pour voir les utilisateurs --- Reskreen/settings.py | 34 +++++++++++++++++-------------- custom_admin/__init__.py | 0 custom_admin/admin.py | 44 ++++++++++++++++++++++++++++++++++++++++ custom_admin/apps.py | 6 ++++++ 4 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 custom_admin/__init__.py create mode 100644 custom_admin/admin.py create mode 100644 custom_admin/apps.py diff --git a/Reskreen/settings.py b/Reskreen/settings.py index 91a1df7..e26e9c3 100644 --- a/Reskreen/settings.py +++ b/Reskreen/settings.py @@ -25,7 +25,11 @@ SECRET_KEY = 'django-insecure-j4jd&+4j^t_=@zr(#q@n!8e*58vkql6&_6w-t14ju8pw%ei%^s # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True +cfg_dev_mode = False + ALLOWED_HOSTS = ["192.168.3.125","rh.ambulance-clerc.ch"] +if cfg_dev_mode: + ALLOWED_HOSTS.append("127.0.0.1") CSRF_TRUSTED_ORIGINS = ['https://rh.ambulance-clerc.ch'] @@ -41,6 +45,7 @@ INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'vehicles.apps.VehiclesConfig', 'collabs.apps.CollabsConfig', + 'custom_admin.apps.CustomAdminConfig', 'rangefilter', @@ -80,23 +85,22 @@ WSGI_APPLICATION = 'Reskreen.wsgi.application' # Database # https://docs.djangoproject.com/en/4.0/ref/settings/#databases - -""" -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', +if cfg_dev_mode: + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } } -} -""" -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'OPTIONS': { - 'read_default_file': 'my.cnf', - }, +else: + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'OPTIONS': { + 'read_default_file': 'my.cnf', + }, + } } -} # Password validation diff --git a/custom_admin/__init__.py b/custom_admin/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/custom_admin/admin.py b/custom_admin/admin.py new file mode 100644 index 0000000..9e4ba3a --- /dev/null +++ b/custom_admin/admin.py @@ -0,0 +1,44 @@ + +from django import forms +from django.contrib import admin +from django.contrib.auth.admin import GroupAdmin as origGroupAdmin +from django.contrib.auth.models import Group, User + + +class GroupAdminForm(forms.ModelForm): + """ + ModelForm that adds an additional multiple select field for managing + the users in the group. + """ + users = forms.ModelMultipleChoiceField( + User.objects.all(), + widget=admin.widgets.FilteredSelectMultiple('Users', False), + required=False, + ) + + + def __init__(self, *args, **kwargs): + super(GroupAdminForm, self).__init__(*args, **kwargs) + if self.instance.pk: + initial_users = self.instance.user_set.values_list('pk', flat=True) + self.initial['users'] = initial_users + + + def save(self, *args, **kwargs): + kwargs['commit'] = True + return super(GroupAdminForm, self).save(*args, **kwargs) + + + def save_m2m(self): + self.instance.user_set.clear() + self.instance.user_set.add(*self.cleaned_data['users']) + + +class GroupAdmin(origGroupAdmin): + """ + Customized GroupAdmin class that uses the customized form to allow + management of users within a group. + """ + form = GroupAdminForm +admin.site.unregister(Group) +admin.site.register(Group, GroupAdmin) \ No newline at end of file diff --git a/custom_admin/apps.py b/custom_admin/apps.py new file mode 100644 index 0000000..521d563 --- /dev/null +++ b/custom_admin/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CustomAdminConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'custom_admin'