o
    ëË·e  ã                   @   sB   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)ÚOAuth2Providerc                       s,   e Zd Zdd„ Zdd„ Z‡ fdd„Z‡  ZS )ÚDoubanAccountc                 C   ó   | j j d¡S )NÚalt©ÚaccountÚ
extra_dataÚget©Úself© r   úf/var/www/ideatree/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_urlc                    s   t t| ƒ ¡ }| jj d|¡S )NÚname)Úsuperr   Úto_strr   r	   r
   )r   Údflt©Ú	__class__r   r   r      s   zDoubanAccount.to_str)Ú__name__Ú
__module__Ú__qualname__r   r   r   Ú__classcell__r   r   r   r   r      s    r   c                   @   s(   e Zd ZdZd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    r   Ú )Ú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#   r'   r   r   r   r   r      s    r   N)Ú$allauth.socialaccount.providers.baser   Ú/allauth.socialaccount.providers.oauth2.providerr   r   r   Úprovider_classesr   r   r   r   Ú<module>   s
    
