o
    Ci                     @   sP   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 G dd deZdS )	zY
Management command to seed RBAC permissions and roles
Usage: python manage.py seed_rbac
    )BaseCommand)transaction)
PermissionRole)DEFAULT_PERMISSIONSDEFAULT_ROLESc                   @   s   e Zd ZdZdd ZdS )Commandz1Seed RBAC permissions and roles into the databasec              
   O   s  | j | jd t  | j d d}d}tD ]\}}}}tjj	|||dd\}	}
|
r5|d7 }q|d7 }q| j | jd| d| d	 | j d
 d}d}t
 D ]?\}}tjj	||d |d dd\}}
|d dkr~|jtj  ntjj|d d}|j| |
r|d7 }qY|d7 }qY| j | jd| d| d | j | jd | j dtj   | j dtj   | j d tj D ]}|j }| j d|j d| d	 qW d    d S 1 sw   Y  d S )NzStarting RBAC seeding...zCreating permissions...r   )namemodule)codedefaults   u   ✓ Created z permissions, updated z permissionszCreating roles...descriptionis_system_role)r   default)r	   r   permissionsALL)code__inz roles, updated z rolesz
=== RBAC Seeding Complete ===zTotal Permissions: zTotal Roles: z
Roles created:u     • z  )stdoutwritestyleSUCCESSr   atomicr   r   objectsupdate_or_creater   itemsr   r   setallfiltercountr	   )selfargsoptionscreated_permsupdated_permsr   r	   categoryr   permcreatedcreated_rolesupdated_roles	role_namerole_configroleperms
perm_count r/   L/var/www/Datamplify/authentication/management/commands/create_permissions.pyhandle   s^   




	


"zCommand.handleN)__name__
__module____qualname__helpr1   r/   r/   r/   r0   r      s    r   N)__doc__django.core.management.baser   	django.dbr   authentication.modelsr   r    authentication.permission_modelsr   r   r   r/   r/   r/   r0   <module>   s    