48 lines
2.1 KiB
Python
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),
|
|
]
|