
    $g                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ ddZ G d de          Z G d de          ZdS )    )settings)authenticate)ContentType)ModelHttpResponse)redirectresolve_url)TemplateDoesNotExistenginesloaderget_random_string)	force_str)Promiseget_language)BaseStrategyBaseTemplateStrategyNc                 p    t           d                             |          }|                    ||           S )zOTake 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       V/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/social_django/strategy.pyrender_template_stringr       s2     x ,,T22H??7G?<<<    c                       e Zd Zd Zd ZdS )DjangoTemplateStrategyc                 l    t          j        |          }|                    || j        j                  S )Nr   )r   get_templater   strategyr   )selftplr   r   s       r   render_templatez&DjangoTemplateStrategy.render_template   s-    &s++w8MNNNr!   c                 8    t          | j        j        ||          S N)r    r&   r   )r'   r   r   s      r   render_stringz$DjangoTemplateStrategy.render_string   s    %dm&;T7KKKr!   N)__name__
__module____qualname__r)   r,    r!   r   r#   r#      s:        O O OL L L L Lr!   r#   c                        e Zd ZeZd fd	Zd ZddZd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZddZd Zd ZddZd Zd Zd ZddZdej        fdZd Zd Zd Z xZS )DjangoStrategyNc                 z    || _         |r|j        ni | _        t                                          ||           d S r+   )r   sessionsuper__init__)r'   storager   r(   	__class__s       r   r6   zDjangoStrategy.__init__"   s<    *19wr#&&&&&r!   c                     t          t          |          }|                    d          r3t          |t                    rt          |          }t          |          }|S )N_URL)getattrr   endswith
isinstancer   r   r
   r'   namevalues      r   get_settingzDjangoStrategy.get_setting'   sV    $''==   	'%)) )!%((&&Er!   Tc                     | j         si S |r>| j         j                                        }|                    | j         j                   n)| j         j        dk    r| j         j        }n| j         j        }|S )NPOST)r   GETcopyupdaterC   method)r'   mergedatas      r   request_datazDjangoStrategy.request_data0   st    | 	I 	$<#((**DKK)****\ F**<$DD<#Dr!   c                 F    | j         r| j                                         S d S r+   )r   get_hostr'   s    r   request_hostzDjangoStrategy.request_host<   s*    < 	+<((***	+ 	+r!   c                 4    | j                                         S )zIs the request using HTTPS?)r   	is_securerM   s    r   request_is_securez DjangoStrategy.request_is_secure@   s    |%%'''r!   c                     | j         j        S )zpath of the current request)r   pathrM   s    r   request_pathzDjangoStrategy.request_pathD   s    |  r!   c                 4    | j                                         S )zPort in use for this request)r   get_portrM   s    r   request_portzDjangoStrategy.request_portH   s    |$$&&&r!   c                 >    | j         j                                        S )zRequest GET data)r   rD   rE   rM   s    r   request_getzDjangoStrategy.request_getL   s    |$$&&&r!   c                 >    | j         j                                        S )zRequest POST data)r   rC   rE   rM   s    r   request_postzDjangoStrategy.request_postP   s    | %%'''r!   c                      t          |          S r+   )r	   )r'   urls     r   r	   zDjangoStrategy.redirectT   s    }}r!   c                 $    t          |d          S )Nztext/html;charset=UTF-8)content_typer   )r'   contents     r   r   zDjangoStrategy.htmlW   s    G2KLLLLr!   c                     |s|st          d          |pi }	 t          j        |          }|                    || j                  S # t
          t          f$ r t          | j        ||          cY S w xY w)Nz#Missing template or html parametersr   )
ValueErrorr   r%   r   r   	TypeErrorr   r    )r'   r(   r   r   r   s        r   render_htmlzDjangoStrategy.render_htmlZ   s     	D4 	DBCCC-R	G*3//H??7DL?III/0 	G 	G 	G)$,gFFFFF	Gs   /A	 	'A32A3c                 B    | |d<   | j         |d<   ||d<   t          |i |S )Nr&   r7   backend)r7   r   )r'   rf   argskwargss       r   r   zDjangoStrategy.authenticated   s5    !z Ly#yT,V,,,r!   c                     ||d<   ||fS )Nr   r0   )r'   r   rg   rh   s       r   clean_authenticate_argsz&DjangoStrategy.clean_authenticate_argsj   s    #yV|r!   c                 8    | j                             ||          S r+   )r4   get)r'   r?   defaults      r   session_getzDjangoStrategy.session_geto   s    |g...r!   c                 `    || j         |<   t          | j         d          rd| j         _        d S d S )NmodifiedT)r4   hasattrrp   r>   s      r   session_setzDjangoStrategy.session_setr   s<    "T4<,, 	)$(DL!!!	) 	)r!   c                 8    | j                             |d           S r+   )r4   pop)r'   r?   s     r   session_popzDjangoStrategy.session_popw   s    |d+++r!   c                 8    | j                             ||          S r+   )r4   
setdefaultr>   s      r   session_setdefaultz!DjangoStrategy.session_setdefaultz   s    |&&tU333r!   c                 H    | j         r| j                             |          S |S r+   )r   build_absolute_uri)r'   rS   s     r   rz   z!DjangoStrategy.build_absolute_uri}   s'    < 	<224888Kr!      c                 "    t          ||          S r+   r   )r'   lengthcharss      r   random_stringzDjangoStrategy.random_string   s     ///r!   c                     t          |t                    r,|j        t          j                            |          j        d}|S )zConverts values that are instance of Model to a dictionary
        with enough information to retrieve the instance back later.)pkctype)r=   r   r   r   objectsget_for_model)r'   vals     r   to_session_valuezDjangoStrategy.to_session_value   s?     c5!! 	U+*=*K*KC*P*P*STTC
r!   c                     t          |t                    rbd|v r^d|v rZt          j                            |d                   }|                                }|j                            |d                   }|S )z9Converts back the instance saved by self._ctype function.r   r   )r   )r=   dictr   r   
get_for_idmodel_class_default_managerrl   )r'   r   r   
ModelClasss       r   from_session_valuez!DjangoStrategy.from_session_value   sr    c4   	@TS[[W^^'223w<@@E**,,J-11SY1??C
r!   c                     t                      S )zReturn current languager   rM   s    r   r   zDjangoStrategy.get_language   s    ~~r!   )NN)T)NNNr+   )r-   r.   r/   r#   DEFAULT_TEMPLATE_STRATEGYr6   rA   rJ   rN   rQ   rT   rW   rY   r[   r	   r   rd   r   rj   rn   rr   ru   rx   rz   r   ALLOWED_CHARSr   r   r   r   __classcell__)r8   s   @r   r2   r2      s        6' ' ' ' ' '
  
 
 
 
+ + +( ( (! ! !' ' '' ' '( ( (  M M MG G G G- - -  
/ / / /) ) )
, , ,4 4 4    $&\-G 0 0 0 0          r!   r2   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#   r2   r0   r!   r   <module>r      sz               , , , , , , : : : : : : " " " " " " $ $ $ $ $ $ 2 2 2 2 2 2 2 2 A A A A A A A A A A 1 1 1 1 1 1 + + + + + + + + + + + + 1 1 1 1 1 1 C C C C C C C C= = = =L L L L L1 L L Lx x x x x\ x x x x xr!   