o
    õÁh  ã                   @   sN   d dl mZ d dlmZ d dlmZ G dd„ deƒZG dd„ deƒZegZdS )	é    )ÚProviderAccount)ÚDoubanOAuth2Adapter)ÚOAuth2Providerc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚDoubanAccountc                 C   ó   | j j d¡S )NÚalt©ÚaccountÚ
extra_dataÚget©Úself© r   úf/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/douban/provider.pyÚget_profile_url   ó   zDoubanAccount.get_profile_urlc                 C   r   )NÚlarge_avatarr   r   r   r   r   Úget_avatar_url
   r   zDoubanAccount.get_avatar_urlN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   s,   e Zd ZdZdZeZeZdd„ Z	dd„ Z
dS )ÚDoubanProviderÚdoubanÚDoubanc                 C   s   |d S )NÚidr   ©r   Údatar   r   r   Úextract_uid   s   zDoubanProvider.extract_uidc                 C   s   |d |  dd¡dœS )a½  
        Extract data from profile json to populate user instance.

        In Douban profile API:

        - id: a digital string, will never change
        - uid: defaults to id, but can be changed once, used in profile
          url, like slug
        - name: display name, can be changed every 30 days

        So we should use `id` as username here, other than `uid`.
        Also use `name` as `first_name` for displaying purpose.
        r   ÚnameÚ )ÚusernameÚ
first_name)r   r   r   r   r   Úextract_common_fields   s   
þz$DoubanProvider.extract_common_fieldsN)r   r   r   r   r   r   Úaccount_classr   Úoauth2_adapter_classr   r"   r   r   r   r   r      s    r   N)	Ú$allauth.socialaccount.providers.baser   Ú,allauth.socialaccount.providers.douban.viewsr   Ú/allauth.socialaccount.providers.oauth2.providerr   r   r   Úprovider_classesr   r   r   r   Ú<module>   s    
