o
    gf                     @   s   d Z zddlZW n ey'   zddlZW n ey$   ddlmZ Y nw Y nw ddlmZmZ ddlm	Z	m
Z
 ddlmZ dZdZd	Zd
ZG dd deZG dd deZdeiZdS )a  
Obtain
TRELLO_CONSUMER_KEY & TRELLO_CONSUMER_SECRET
at https://trello.com/1/appKey/generate
and put into settings.py

Also you can put something like 
TRELLO_AUTH_EXTRA_ARGUMENTS = {
    'name': '7WebPages Time Tracker',
    'expiration': 'never'
}

into settings.py
    N)
simplejson)ConsumerBasedOAuthOAuthBackend)dsa_urlopenbackend_setting)	urlencodez)https://trello.com/1/OAuthGetRequestTokenz(https://trello.com/1/OAuthGetAccessTokenz(https://trello.com/1/OAuthAuthorizeTokenz$https://api.trello.com/1/members/me/c                       s@   e Zd ZdZdZg dZdd Zdd Ze fdd	Z	  Z
S )
TrelloBackendz#Trello OAuth authentication backendtrello))usernamer
   )emailr   )fullName	full_namec                 C   sX   | d }d}d}t|dkr|d }t|dkr|d }| d| d||dS )z'Return user details from Trello accountr   Nr      r
   r   )r
   r   
first_name	last_name)getsplitlen)selfresponsename_arrr   r    r   d/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/trello.pyget_user_details,   s   zTrelloBackend.get_user_detailsc                 C   s   |d S )zPReturn the user id, Trello only provides username as a unique
        identifierr
   r   )r   detailsr   r   r   r   get_user_id<   s   zTrelloBackend.get_user_idc                    s<   t t| |}|rd|v rtdd |d dD }|S )zReturn the tokens needed to authenticate the access to any API the
        service might provide. Trello uses a pair of OAuthToken consisting
        on a oauth_token and oauth_token_secret.

        instance must be a UserSocialAuth instance.
        access_tokenc                 s   s    | ]}| d V  qdS )=N)r   ).0tokr   r   r   	<genexpr>K   s    z'TrelloBackend.tokens.<locals>.<genexpr>&)superr   tokensdictr   )clsinstancetoken	__class__r   r   r#   A   s   zTrelloBackend.tokens)__name__
__module____qualname____doc__name
EXTRA_DATAr   r   classmethodr#   __classcell__r   r   r(   r   r   #   s    r   c                   @   s0   e Zd ZdZeZeZeZ	e
ZdZdZdd ZdS )
TrelloAuthz%Trello OAuth authentication mechanismTRELLO_CONSUMER_KEYTRELLO_CONSUMER_SECRETc                 O   sN   |j }|t| | jd}td t| }ztt|W S  ty&   Y dS w )zLoads user data from service)r'   key?N)	r5   r   SETTINGS_KEY_NAMETRELLO_USER_DETAILS_URLr   r   loadr   
ValueError)r   r   argskwargsr'   paramsurlr   r   r   	user_dataY   s   
zTrelloAuth.user_dataN)r*   r+   r,   r-   TRELLO_AUTHORIZATION_URLAUTHORIZATION_URLTRELLO_REQUEST_TOKEN_URLREQUEST_TOKEN_URLTRELLO_ACCESS_TOKEN_URLACCESS_TOKEN_URLr   AUTH_BACKENDr7   SETTINGS_SECRET_NAMEr?   r   r   r   r   r2   P   s    r2   r	   )r-   jsonr   ImportErrordjango.utilssocial_auth.backendsr   r   social_auth.utilsr   r   urllibr   rB   rD   r@   r8   r   r2   BACKENDSr   r   r   r   <module>   s,    -