
    qh                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJrJr  SS jr " S S\5      r " S S\5      rg)    )settings)authenticate)ContentType)ModelHttpResponse)redirectresolve_url)TemplateDoesNotExistenginesloaderget_random_string)	force_str)Promiseget_language)BaseStrategyBaseTemplateStrategyNc                 P    [         S   R                  U5      nUR                  X S9$ )zKTake a template in the form of a string and render it for the
given contextdjangocontextrequest)r   from_stringrender)r   htmlr   templates       H/var/www/html/env/lib/python3.13/site-packages/social_django/strategy.pyrender_template_stringr       s*     x ,,T2H??7?<<    c                        \ rS rSrS rS rSrg)DjangoTemplateStrategy   c                 t    [         R                  " U5      nUR                  X R                  R                  S9$ )Nr   )r   get_templater   strategyr   )selftplr   r   s       r   render_template&DjangoTemplateStrategy.render_template   s-    &&s+w8M8MNNr!   c                 B    [        U R                  R                  X5      $ N)r    r'   r   )r(   r   r   s      r   render_string$DjangoTemplateStrategy.render_string   s    %dmm&;&;TKKr!    N)__name__
__module____qualname____firstlineno__r*   r.   __static_attributes__r0   r!   r   r#   r#      s    OLr!   r#   c                      ^  \ rS rSr\rSU 4S jjrS rSS jrS r	S r
S rS rS	 rS
 rS rS rSS jrS rS rSS jrS rS rS rSS jrS\R4                  4S jrS rS rS rSrU =r $ )DjangoStrategy   c                 d   > X l         U(       a  UR                  O0 U l        [        TU ]  X5        g r-   )r   sessionsuper__init__)r(   storager   r)   	__class__s       r   r<   DjangoStrategy.__init__"   s$    *1wr&r!   c                     [        [        U5      nUR                  S5      (       a+  [        U[        5      (       a  [        U5      n[        U5      nU$ )N_URL)getattrr   endswith
isinstancer   r   r
   r(   namevalues      r   get_settingDjangoStrategy.get_setting'   sC    $'==  %))!%(&Er!   c                 `   U R                   (       d  0 $ U(       aK  U R                   R                  R                  5       nUR                  U R                   R                  5        U$ U R                   R
                  S:X  a  U R                   R                  nU$ U R                   R                  nU$ )NPOST)r   GETcopyupdaterK   method)r(   mergedatas      r   request_dataDjangoStrategy.request_data0   s    ||I<<##((*DKK))*
 	 \\  F*<<$$D  <<##Dr!   c                 Z    U R                   (       a  U R                   R                  5       $ g r-   )r   get_hostr(   s    r   request_hostDjangoStrategy.request_host<   s!    <<<<((** r!   c                 6    U R                   R                  5       $ )zIs the request using HTTPS?)r   	is_securerV   s    r   request_is_secure DjangoStrategy.request_is_secure@   s    ||%%''r!   c                 .    U R                   R                  $ )zpath of the current request)r   pathrV   s    r   request_pathDjangoStrategy.request_pathD   s    ||   r!   c                 6    U R                   R                  5       $ )zPort in use for this request)r   get_portrV   s    r   request_portDjangoStrategy.request_portH   s    ||$$&&r!   c                 J    U R                   R                  R                  5       $ )zRequest GET data)r   rL   rM   rV   s    r   request_getDjangoStrategy.request_getL   s    ||$$&&r!   c                 J    U R                   R                  R                  5       $ )zRequest POST data)r   rK   rM   rV   s    r   request_postDjangoStrategy.request_postP   s    ||  %%''r!   c                     [        U5      $ r-   )r	   )r(   urls     r   r	   DjangoStrategy.redirectT   s    }r!   c                     [        USS9$ )Nztext/html;charset=UTF-8)content_typer   )r(   contents     r   r   DjangoStrategy.htmlW   s    G2KLLr!   c                    U(       d  U(       d  [        S5      eU=(       d    0 n [        R                  " U5      nUR                  X0R                  S9$ ! [
        [        4 a    [        U R                  X#5      s $ f = f)Nz#Missing template or html parametersr   )
ValueErrorr   r&   r   r   	TypeErrorr   r    )r(   r)   r   r   r   s        r   render_htmlDjangoStrategy.render_htmlZ   so    4BCC-R	G**3/H??7LL?II/0 	G)$,,FF	Gs   .A &A>=A>c                 F    XS'   U R                   US'   XS'   [        U0 UD6$ )Nr'   r=   backend)r=   r   )r(   rx   argskwargss       r   r   DjangoStrategy.authenticated   s0    !z LLy#yT,V,,r!   c                     XS'   X#4$ )Nr   r0   )r(   r   ry   rz   s       r   clean_authenticate_args&DjangoStrategy.clean_authenticate_argsj   s    #y|r!   c                 8    U R                   R                  X5      $ r-   )r:   get)r(   rF   defaults      r   session_getDjangoStrategy.session_geto   s    ||..r!   c                 z    X R                   U'   [        U R                   S5      (       a  SU R                   l        g g )NmodifiedT)r:   hasattrr   rE   s      r   session_setDjangoStrategy.session_setr   s0    "T4<<,,$(DLL! -r!   c                 :    U R                   R                  US 5      $ r-   )r:   pop)r(   rF   s     r   session_popDjangoStrategy.session_popw   s    ||d++r!   c                 8    U R                   R                  X5      $ r-   )r:   
setdefaultrE   s      r   session_setdefault!DjangoStrategy.session_setdefaultz   s    ||&&t33r!   c                 ^    U R                   (       a  U R                   R                  U5      $ U$ r-   )r   build_absolute_uri)r(   r^   s     r   r   !DjangoStrategy.build_absolute_uri}   s#    <<<<22488Kr!      c                     [        X5      $ r-   r   )r(   lengthcharss      r   random_stringDjangoStrategy.random_string   s     //r!   c                     [        U[        5      (       a6  UR                  [        R                  R                  U5      R                  S.nU$ )zwConverts values that are instance of Model to a dictionary
with enough information to retrieve the instance back later.)pkctype)rD   r   r   r   objectsget_for_model)r(   vals     r   to_session_valueDjangoStrategy.to_session_value   s;     c5!!+*=*=*K*KC*P*S*STC
r!   c                     [        U[        5      (       aZ  SU;   aT  SU;   aN  [        R                  R	                  US   5      nUR                  5       nUR                  R                  US   S9nU$ )z9Converts back the instance saved by self._ctype function.r   r   )r   )rD   dictr   r   
get_for_idmodel_class_default_managerr   )r(   r   r   
ModelClasss       r   from_session_value!DjangoStrategy.from_session_value   se    c4  TS[W^''223w<@E**,J--11SY1?C
r!   c                     [        5       $ )zReturn current languager   rV   s    r   r   DjangoStrategy.get_language   s
    ~r!   )r   r:   )NN)T)NNNr-   )!r1   r2   r3   r4   r#   DEFAULT_TEMPLATE_STRATEGYr<   rH   rR   rW   r[   r_   rc   rf   ri   r	   r   ru   r   r}   r   r   r   r   r   r   ALLOWED_CHARSr   r   r   r   r5   __classcell__)r>   s   @r   r7   r7      s     6'

+(!''(MG-
/)
,4 $&\-G-G 0 r!   r7   r-   )django.confr   django.contrib.authr   "django.contrib.contenttypes.modelsr   django.db.modelsr   django.httpr   django.shortcutsr	   r
   django.templater   r   r   django.utils.cryptor   django.utils.encodingr   django.utils.functionalr   django.utils.translationr   social_core.strategyr   r   r    r#   r7   r0   r!   r   <module>r      sN      , : " $ 2 A A 1 + + 1 C=L1 Lx\ xr!   