Files
khatibi/admin_panel/migrations/0071_sms_settings_permission.py
T
2026-10-11 19:04:20 +03:30

48 lines
2.1 KiB
Python

"""افزودن پرمیشن جداگانهٔ ``ManageSMSSettings`` برای صفحات تنظیمات/قالب‌های پیامک.
پیش از این، همهٔ مسیرهای پیامک با ``ManageSMS`` کنترل می‌شد. از این پس صفحات
«تنظیمات سامانه» و «قالب‌ها» با ``ManageSMSSettings`` جدا می‌شوند تا مدیر بتواند
دسترسی به آن‌ها را فقط به کاربران مشخصی بدهد، بدون دادن کل اختیارات پیامک.
"""
from django.db import migrations
from django.db.models import F
def ensure_permission(apps, schema_editor):
"""رکورد Permission جدید را (اگر نبود) می‌سازد و نام نمایشی‌اش را اصلاح می‌کند."""
Permission = apps.get_model('auth', 'Permission')
ContentType = apps.get_model('contenttypes', 'ContentType')
content_type, _created = ContentType.objects.get_or_create(
app_label='admin_panel', model='smsproviderconfig',
)
Permission.objects.get_or_create(
content_type=content_type,
codename='ManageSMSSettings',
defaults={'name': 'ManageSMSSettings'},
)
# نام نمایشی هر دو پرمیشن پیامک را با قرارداد پروژه هم‌راستا می‌کند.
Permission.objects.filter(
content_type=content_type, codename__in=['ManageSMS', 'ManageSMSSettings'],
).update(name=F('codename'))
class Migration(migrations.Migration):
dependencies = [
('admin_panel', '0070_sms_types_seven'),
]
operations = [
migrations.AlterModelOptions(
name='smsproviderconfig',
options={
'permissions': [('ManageSMS', 'ManageSMS'),
('ManageSMSSettings', 'ManageSMSSettings')],
'verbose_name': 'تنظیمات سامانه پیامک',
'verbose_name_plural': 'تنظیمات سامانه پیامک',
},
),
migrations.RunPython(ensure_permission, migrations.RunPython.noop),
]