diff --git a/README.md b/README.md index 500260ab6ba613cab63a3aa701918b4da778e035..9f0432a227ad3e534d6482cb64e32bc28500ecf7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ DJANGO 配置管理 依托 `django-kelove-setting` 模块,可快速定制 `Django` 应用配置,并在 `Django Admin` 中统一管理应用的配置信息 -[![Django Kelove Setting Version](https://img.shields.io/badge/stable-v0.1.0-blue.svg)](https://gitee.com/itxq/django-kelove-setting) +[![Django Kelove Setting Version](https://img.shields.io/badge/stable-v0.1.1-blue.svg)](https://gitee.com/itxq/django-kelove-setting) [![Python Version](https://img.shields.io/badge/Python-3.6+-blue.svg)](https://www.python.org/) [![Django Version](https://img.shields.io/badge/Django-v3.1+-important.svg)](https://www.djangoproject.com/) [![LICENSE](https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg)](https://gitee.com/itxq/django-kelove-setting/blob/master/LICENSE) diff --git a/django_kelove_setting/admin.py b/django_kelove_setting/admin.py index c93663b0e505e693e52a1bbda82c59385ef896db..8e8f55d5eb709ac74d2722b1527753128d255ecb 100644 --- a/django_kelove_setting/admin.py +++ b/django_kelove_setting/admin.py @@ -162,6 +162,31 @@ class SettingsModelAdmin(ModelAdmin): obj.created_user = user super().save_model(request, obj, form, change) + def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None): + title = context.get('title', '') + sub_title = getattr(obj, 'settings_title', '') + if sub_title and title: + context['title'] = f'{title} - {sub_title}' + return super().render_change_form(request, context, add, change, form_url, obj) + + def get_queryset(self, request): + qs = super().get_queryset(request) + qs = qs.filter( + settings_key__in=self.__get_all_permissions(request, 'view') + ).select_related('created_user', 'updated_user') + return qs + + @staticmethod + def __get_all_permissions(request, permission_type='view'): + settings_items = SettingsModel.objects.all() + permissions = [ + i.settings_key + for i + in settings_items + if request.user.has_perm(i.get_settings_permission_code(permission_type)) + ] + return permissions + if not site.is_registered(SettingsModel): site.register(SettingsModel, SettingsModelAdmin) diff --git a/django_kelove_setting/setting_forms.py b/django_kelove_setting/setting_forms.py index 7c0944f934783b8cf861c6bc9f50e4963adc31d3..33742581a6e4a9a850bb4e028e1173732e5d7b38 100644 --- a/django_kelove_setting/setting_forms.py +++ b/django_kelove_setting/setting_forms.py @@ -32,10 +32,13 @@ class Settings(ModelForm): def __init__(self, data=None, files=None, **kwargs): initial = kwargs.get('initial', {}) instance = kwargs.get('instance', None) - kwargs['initial'] = { + initial = { **initial, **self.init_form_initial(instance=instance) } + for k, v in initial.items(): + setattr(instance, k, v) + kwargs['initial'] = initial super().__init__(data=data, files=files, **kwargs) def clean(self): diff --git a/pyproject.toml b/pyproject.toml index f56a46e794bf967624364bb23b552316fec92336..9f0ed31beb8f6af2ea0ce02707d7c8ff15822b98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "django-kelove-setting" -version = "0.1.0" +version = "0.1.1" description = "DJANGO 配置管理"