Files
Django/jituan/management/commands/seed_super_admin.py

56 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""将指定手机号设为超级管理员(功能权限 + 集团视图)。"""
import uuid
from django.core.management.base import BaseCommand
from django.db import transaction
from django.utils import timezone
from gvsdsdk.models import Role, Permission, RolePermission, UserRole
from jituan.constants import SUPER_ADMIN_PHONES
from users.business_models import User
class Command(BaseCommand):
help = '将 SUPER_ADMIN_PHONES 设为 IsSuperuser并绑定「管理员」角色含 000001'
def handle(self, *args, **options):
admin_role = Role.objects.filter(RoleName='管理员', RoleStatus=1).first()
super_perm = Permission.objects.filter(PermCode='000001', PermStatus=1).first()
if admin_role and super_perm:
if not RolePermission.objects.filter(
RoleUUID=admin_role.RoleUUID, PermUUID=super_perm.PermUUID,
).exists():
RolePermission.objects.create(
RolePermUUID=uuid.uuid4().bytes,
RoleUUID=admin_role.RoleUUID,
PermUUID=super_perm.PermUUID,
CreateTime=timezone.now(),
)
self.stdout.write(self.style.SUCCESS('已为「管理员」角色绑定 000001 权限'))
updated = 0
for phone in SUPER_ADMIN_PHONES:
users = list(User.query.filter(Phone=phone))
if not users:
self.stdout.write(self.style.WARNING(f'未找到手机号 {phone}'))
continue
for user in users:
with transaction.atomic():
user.IsSuperuser = True
user.IsStaff = True
user.save(update_fields=['IsSuperuser', 'IsStaff'])
if admin_role and not UserRole.objects.filter(
UserUUID=user.UserUUID, RoleUUID=admin_role.RoleUUID,
).exists():
UserRole.objects.create(
UserRoleUUID=uuid.uuid4().bytes,
UserUUID=user.UserUUID,
RoleUUID=admin_role.RoleUUID,
CreateTime=timezone.now(),
)
updated += 1
self.stdout.write(self.style.SUCCESS(
f'已设置超管: {phone} (UserUID={user.UserUID})'
))
self.stdout.write(self.style.SUCCESS(f'完成,更新 {updated} 个账号'))