o
    ˷e                     @   sZ   d dl mZ d dlmZ G dd deZG dd deZG dd deZegZd	d
 Z	dS )    )ProviderAccount)OAuth2Providerc                   @   s   e Zd ZdZdS )Scopez/authenticateN)__name__
__module____qualname__USERINFO_PROFILE r	   r	   e/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/orcid/provider.pyr      s    r   c                   @   s   e Zd Zdd Zdd ZdS )OrcidAccountc                 C   s   t | jjddgS )Norcid-identifieruri)extract_from_dictaccount
extra_dataselfr	   r	   r
   get_profile_url
   s   zOrcidAccount.get_profile_urlc                 C   s   | j jS N)r   uidr   r	   r	   r
   to_str      zOrcidAccount.to_strN)r   r   r   r   r   r	   r	   r	   r
   r   	   s    r   c                   @   s0   e Zd ZdZdZeZdd Zdd Zdd Z	d	S )
OrcidProviderorcidz	Orcid.orgc                 C   s   t jgS r   )r   r   r   r	   r	   r
   get_default_scope   r   zOrcidProvider.get_default_scopec                 C   s   t |ddgS )Nr   path)r   )r   datar	   r	   r
   extract_uid   s   zOrcidProvider.extract_uidc                 C   sB   t t|g dt|g dt|g dd}t dd | D S )N)personemailsemailr   r    )r   namezfamily-namevalue)r   r!   zgiven-namesr"   )r    	last_name
first_namec                 s   s     | ]\}}|r||fV  qd S r   r	   ).0keyr"   r	   r	   r
   	<genexpr>&   s    z6OrcidProvider.extract_common_fields.<locals>.<genexpr>)dictr   items)r   r   common_fieldsr	   r	   r
   extract_common_fields   s   	z#OrcidProvider.extract_common_fieldsN)
r   r   r   idr!   r   account_classr   r   r+   r	   r	   r	   r
   r      s    r   c              
   C   s8   | }z|D ]}|| }q|W S  t ttfy   Y dS w )zo
    Navigate `data`, a multidimensional array (list or dictionary), and returns
    the object at `path`.
     )KeyError
IndexError	TypeError)r   r   r"   r&   r	   r	   r
   r   ,   s   
r   N)
$allauth.socialaccount.providers.baser   /allauth.socialaccount.providers.oauth2.providerr   objectr   r   r   provider_classesr   r	   r	   r	   r
   <module>   s    