
    ,`ohc                     *   d dl mZmZ d dlmZmZmZmZmZm	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mZmZ d dlmZmZmZmZmZ d dlmZ d d	lmZ d d
l m!Z!m"Z" d dl#m$Z$ d dl%m&Z&  e       Z'e'jQ                  de&       e        edd       edd       eddd       ee!de"d       ee       ee$      fdede)de)de*de*dede+fd        Z,e'jQ                  d!e&       ee       e        ed"d#       ee$       e ed$d%g&            fdedede)de+d'e-f
d(       Z.e'jQ                  d)e&       ee       ed*d+,       e ed-g&            fded.e)d'e-fd/       Z/e'ja                  de&       ee       ee$       e ed$g&            fd0edede+d'e-fd1       Z1e'je                  d)e&       ed*d2,       ee       ee$       e ed%g&            fd0ed.e)dede+d'e-f
d3       Z3e'ji                  de&       ed*d4,       ee       e ed5g&            fd6e)ded'e-fd7       Z5e'ja                  d8e&       ee       edd9       e ed%g&            fded:e)d'e-fd;       Z6e'ja                  d<d=d>?       ee      fdefd@       Z7y)A    )ListOptional)	APIRouterDependsHTTPExceptionPathQuerystatus)Session)PermissionGuard)PermissionSchema
RoleSchema)RoleAssignRequestSchemaRoleCreateRequestSchemaRoleListFilterSchemaRoleUpdateRequestSchema)DeleteRoleResponsePermissionsListResponseResponseDataRoleResponseRolesListResponse)role_service)get_db)DEFAULT_PER_PAGEMAX_PER_PAGE)get_current_user)ResponseModel/)response_modelz-created_atzZSort column name with direction. Prepend '-' to sort descending. E.g: ?sort_by=-created_at)defaultdescriptionNz-Additional related fields that are requested.   zPage number)r    ger!   zItems per page)r    r#   ler!   filterssort_byfieldspageper_pagedbcurrent_userc           	         K   t        j                  || |r|j                  d      ng ||||       d{   }t        |t        j
                  d      S 7  w)zV
    List all available roles

    This API supports page number pagination style
    ,)r*   r%   r&   r'   r(   r)   r+   NRecord fetched successfullydatastatus_codemessage)r   
list_rolessplitr   r
   HTTP_200_OK)r%   r&   r'   r(   r)   r*   r+   responses           f/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/role_permission/routers/role_router.pyr3   r3      sa     0 ",,&-c"2! H 6#5#5?\ s   3AA!Az/permissionsdisplay_orderzVSort column name with direction. Prepend '-' to sort descending. E.g: ?sort_by=-modulerole_create	role_edit)permissionsis_permittedc                    K   t        j                  | |||       d{   }t        |t        j                  d      S 7  w)z(
    List all available permissions
    )r*   r%   r&   r+   Nr.   r/   )r   list_permissionsr   r
   r5   )r*   r%   r&   r+   r<   r6   s         r7   r>   r>   D   sD      "22b'SZiuvvH6#5#5?\  w   AA !Az/{slug}.zSlug of the role to fetch)r!   	role_viewslugc                    K   t        j                  | |       d{   }t        |t        j                  d      S 7  w)z"
    Fetch a role by its slug
    )r*   rA   Nr.   r/   )r   fetch_role_by_slugr   r
   r5   )r*   rA   r<   r6   s       r7   rC   rC   X   s>      "44FFH6#5#5?\  G   A >!A payloadc                    K   t        j                  || |       d{   }t        |t        j                  d      S 7  w)z
    Create a new role
    )r*   rE   r+   NzRecord creaed successfullyr/   )r   create_roler   r
   HTTP_201_CREATED)rE   r*   r+   r<   r6   s        r7   rG   rG   g   sH      "--! H
 6#:#:D` s   A?!AzSlug of the role to editc                    K   t        j                  ||| |       d{   }t        |t        j                  d      S 7  w)z
    Update a role
    )r*   rA   rE   r+   NzRecord updated successfullyr/   )r   update_roler   r
   r5   )rE   rA   r*   r+   r<   r6   s         r7   rJ   rJ   {   sC      "--$^jkkH6#5#5?\  lr?   zCComma separated list of the role ids to remove. E.g: .../?ids=1,2,3role_deleteslugsc                    K   t        j                  ||        d{   }t        |t        j                  d      S 7  w)z*
    Remove a role resource by its id
    )r*   rL   NzRecord deleted successfullyr/   )r   remove_roler   r
   r5   )rL   r*   r<   r6   s       r7   remove_role_by_idrO      s>      "--5AAH6#5#5?\  BrD   z/run-map-role-permissionzZSpecific setting to be reset by its key as a comma separated list. Eg: ?keys=branding,infokeysc                    K   t        j                  | |       d{   }t        |t        j                  d      S 7  w)z+
    Reset role permissions to default
    )r*   rP   Nr.   r/   )r   run_map_role_permissionsr   r
   r5   )r*   rP   r<   r6   s       r7   run_role_permissionsrS      sE      ":: H 6#5#5?\ 	rD   z/seedzSeed templatesz-Seed the database with initial template data.)summaryr!   c                 0    t        j                  |       }|S )z7
    Seed the database with initial template data.
    )r   seed_default_roles)r*   results     r7   seed_templatesrX      s     ,,R0FM    )8typingr   r   fastapir   r   r   r   r	   r
   sqlalchemy.orm.sessionr   src.apps.role_permission.guardr   'src.apps.role_permission.schemas.commonr   r   )src.apps.role_permission.schemas.requestsr   r   r   r   *src.apps.role_permission.schemas.responsesr   r   r   r   r   !src.apps.role_permission.servicesr   src.core.dependenciesr   src.utils.constantsr   r   src.utils.guardr   $src.apps.base.schemas.response_modelr   routergetstrintdictr3   boolr>   rC   postrG   putrJ   deleterO   rS   rX    rY   r7   <module>rp      s   ! J J * : P   ; ( > , >	 C.$+Ip 2abaA=A $	 &/ !12"!"" " " " 	" " /"J N=9&/$+Il !!12 m[=Y!Z[!    :& Im4&/S&AB k]!KL
  5 S/ &/ !12 m_!MN	$  	 0& Im4 S&@A&/ !12 k]!KL$
 	 	
  5  s=1Y &/ m_!MN
 	  2"    
 &/p !k]!KL
 	& ?   &/
rY   