
    h                        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dZddZddd	Zddd
Z G d de      Zy# e
ef$ r dZ	Y *w xY w)    )annotations)apps)Site)models)FileNc                    t        | d      r(|r| j                  j                         S | j                  S | j                  S )Nadmin_manager)hasattrr	   current_contentobjects)modelr   s     F/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_link/helpers.pyget_managerr      sF    uo&  //1	
 $$	

 ==    c                    d| v r`| j                  dd      \  }}t        j                  |j                  dd       }t        |      j	                  |      j                         S y )N:   .)pk)splitr   	get_modelr   filterfirst)internal_linkr   r   s      r   get_rel_objr      s`    
m!''Q/	rC 345!((B(/5577 r   c                2   |(t         j                  j                         j                  }t	        | dt	        t	        | dd       dd             }| j                         }|r7|r5||k7  r0t         j                  j                  |      j                  }d| | }|S )Nsite_idnodez//)r   r   get_currentidgetattrget_absolute_url_get_site_by_iddomain)objr   obj_site_idlinkref_sites        r   get_obj_linkr)      s    ,,**,//YVT :ItLK !Dw 6<<//<CCH:dV$Kr   c                   | sy d| v r2| d   j                  d      r| d   j                  dd      S | d   xs d S d| v r	| d   xs d S d| v rt        | d         }n d| v rt        dt        | d         z         }ny t	        |d	      r6t        ||      | d<   | d   r| dxx   | j                  d
d      z  cc<   | d   S t	        |d      r|j                  | d<   | d   S d | d<   | d   S )Nexternal_linktel:  	__cache__r   	file_linkzfiler.file:r"   anchorurl)
startswithreplacer   strr
   r)   getr2   )link_field_valuer   r%   s      r   get_linkr8   -   s4   **O,77?#O4<<S"EE08D8&&,44***?;<	(	(-#.>{.K*LLMs&'(4S'(B%K([)-=-A-A(B-OO)
 K((	 
e	(+% K(( )-%K((r   c                  N     e Zd ZdZd fd	Zedd       Zedd       Zd Z xZ	S )LinkDictzdict subclass with two additional properties: url and type to easily infer the link type and
    the url of the link. The url property is cached to avoid multiple db lookups.c                   |j                  dd       }t        |   di | |rt        |t              r| j                  |       y t        |t              r|| d<   y t        |t              r|j                  | d<   y t        |t        j                        ri|j                  j                   d|j                  j                   d|j                   | d<   |j                         | d<   | d   r|r| dxx   |z  cc<   y y y y y )	Nr1   r+   r0   r   r   r   r/    )popsuper__init__
isinstancedictupdater5   r   r   r   Model_meta	app_label
model_namer"   )selfinitialkwargsr1   	__class__s       r   r?   zLinkDict.__init__N   s    Hd+"6"'4(G$GS)(/_%GT*$+JJ[!GV\\2}}../q1I1I0J!GJJ<X _% %,$<$<$>[!$%/% *0$ 3 r   c                     t        |       xs dS )Nr.   )r8   rG   s    r   r2   zLinkDict.urla   s    ~##r   c                    dD ]
  }|| v s|c S  d| v r@| d   j                  d      ry| d   j                  d      ry| d   j                  d      ryyy	)
N)r   r0   r+   r,   telzmailto:mailto#r1   r.   )r3   )rG   keys     r   typezLinkDict.typee   so    1 	Cd{
	 d"O$//7O$//	:O$//4"r   c                    | j                   S )z3If inserted into a Django template, expand the url.)r2   rL   s    r   __str__zLinkDict.__str__t   s    xxr   N)returnr5   )
__name__
__module____qualname____doc__r?   propertyr2   rR   rT   __classcell__)rJ   s   @r   r:   r:   J   s;    U0& $ $  r   r:   )F)r   models.Modelr   boolrV   zmodels.Manager)r   r5   rV   zmodels.Model | NonerU   )r%   r]   r   
int | NonerV   r5   )r7   rA   r   r_   rV   z
str | None)
__future__r   django.appsr   django.contrib.sites.modelsr   	django.dbr   filer.modelsr   ModuleNotFoundErrorImportErrorr   r   r)   r8   rA   r:   r<   r   r   <module>rg      sU    "  , !
8):,t ,A 	[) Ds   ? 	A
A