o
    RDi                     @   s>   d dl mZ d dlmZ d dlmZ e ZG dd deZdS )    )ValidationError)BaseCommand)get_application_modelc                   @   s    e Zd ZdZdd Zdd ZdS )Commandz:Shortcut to create a new application in a programmatic wayc                 C   s  |j dtdddd tjD  d |j dtddd	d tjD  d |j d
tdd |j dtdd |j dtdd |j dtddd |j dtdd |j ddddd |jdd |j dtdd |j dd d!d" |j d#td$dd%d tjD  d d S )&Nclient_typezThe client type, one of: %sz, c                 S      g | ]}|d  qS r    ).0ctyper	   r	   n/var/www/Datamplify/venv/lib/python3.10/site-packages/oauth2_provider/management/commands/createapplication.py
<listcomp>       z)Command.add_arguments.<locals>.<listcomp>)typehelpauthorization_grant_typez6The type of authorization grant to be used, one of: %sc                 S   r   r   r	   )r
   gtyper	   r	   r   r      r   z--client-idzThe ID of the new applicationz--userz#The user the application belongs toz--redirect-uriszHThe redirect URIs, this must be a space separated string e.g 'URI1 URI2'z--post-logout-redirect-uriszTThe post logout redirect URIs, this must be a space separated string e.g 'URI1 URI2' )r   r   defaultz--client-secretzThe secret for this applicationz--no-hash-client-secrethash_client_secretstore_falsezDon't hash the client secret)destactionr   T)r   z--namezThe name this applicationz--skip-authorization
store_truezZIf set, completely bypass the authorization form, even on the first use of the application)r   r   z--algorithmzAThe OIDC token signing algorithm for this application, one of: %sc                 S   s   g | ]
}|d  r|d  qS r   r	   )r
   atyper	   r	   r   r   H   s    )add_argumentstrjoinApplicationCLIENT_TYPESGRANT_TYPESset_defaultsALGORITHM_TYPES)selfparserr	   r	   r   add_arguments   s|   
zCommand.add_argumentsc              
   O   s4  dd t jjD }i }| D ]"\}}||v r1t|ts|r1|dkr*|d|i q|||i qt di |}z|  W n, tyk } z d	dd |j
 D }	| j| jd|	  W Y d }~d S d }~ww |j}
|  |d|j}| j| jd	|  d
|vr| j| jd|
  d S d S )Nc                 S   s   g | ]}|j qS r	   )name)r
   fieldr	   r	   r   r   N   s    z"Command.handle.<locals>.<listcomp>useruser_idz
 c                 S   s$   g | ]\}}d | d t | qS )z- z: )r   )r
   err_key	err_valuer	   r	   r   r   `   s   $ z(Please correct the following errors:
 %sr&   z(New application %s created successfully.client_secretzclient_secret: %sr	   )r   _metafieldsitems
isinstanceboolupdate
full_cleanr   r   message_dictstdoutwritestyleERRORr,   saveget	client_idSUCCESS)r#   argsoptionsapplication_fieldsapplication_datakeyvaluenew_applicationexcerrorscleartext_secretclient_name_or_idr	   r	   r   handleK   s6   &zCommand.handleN)__name__
__module____qualname__r   r%   rH   r	   r	   r	   r   r   
   s    >r   N)django.core.exceptionsr   django.core.management.baser   oauth2_provider.modelsr   r   r   r	   r	   r	   r   <module>   s
    