
    h                        d 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
 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 d Z eedd      Zd ed      fd ed      fd ed      fd ed      ffZ G d de      Z G d de      Zy)zV
Enables the user to add a "Link" plugin that displays a link
using the HTML <a> tag.
    )settings)ValidationError)models)	force_str)gettext)gettext_lazy)	CMSPlugin)AttributesField   )	LinkField)get_link)IntranetURLValidatorc                  J    dt        d      fg} | t        t        dg       z  } | S )NdefaultDefaultDJANGOCMS_LINK_TEMPLATES)_getattrr   )choicess    E/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_link/models.pyget_templatesr      s8    	AiL!G w"
 G
 N    (DJANGOCMS_LINK_INTRANET_HOSTNAME_PATTERNN_blankzOpen in new window_selfzOpen in same window_parentzDelegate to parent_topzDelegate to topc                       e Zd ZdZdZ ee      gZ ej                   e
d       e        e       d   d   d      Z ej                   e
d      d	d
      Z e e
d            Z ej                   e
d      ed	d      Z e e
d      d	ddg      Z ej(                  edd	ej,                        Z G d d      Zd Zd ZddZ fdZ fdZ xZS )AbstractLink)nameF)intranet_host_reTemplater      )verbose_namer   r   
max_lengthzDisplay nameT)r$   blankr%   Link)r$   Target)r$   r   r&   r%   
Attributeshreftarget)r$   r&   excluded_keysz%(app_label)s_%(class)s)related_nameparent_link	on_deletec                       e Zd ZdZy)AbstractLink.MetaTN__name__
__module____qualname__abstract r   r   Metar1   `   s    r   r8   c                 H    | j                   xs t        | j                        S N)r    strpk)selfs    r   __str__zAbstractLink.__str__c   s    yy(CL(r   c                     | j                         }| j                  r|r| j                   d| dS | j                  xs |xs t        d      S )Nz ()z<link is missing>)r   r    r   )r=   links     r   get_short_descriptionz"AbstractLink.get_short_descriptionf   sG    }}99ii[4&**yy@D@G,?$@@r   c                 .    t        | j                  |      S r:   )r   rA   )r=   site_ids     r   r   zAbstractLink.get_linkl   s    		7++r   c                     t         |           | j                  s,| j                  st	        t        t        d            d      y y )NzLink is required.required)code)supercleanlink_is_optionalrA   r   r   r   )r=   	__class__s    r   rI   zAbstractLink.cleano   sA    $$TYY!!/01  .7$r   c                 x    t        |   |i | | j                  | j                  j	                  d      _        y )NrA   )rH   __init__rJ   _meta	get_fieldr&   )r=   argswkargsrK   s      r   rM   zAbstractLink.__init__w   s2    $)&)-1-B-B

V$*r   r:   )r3   r4   r5   search_fieldsrJ   r   HOSTNAMEurl_validatorsr   	CharFieldr   r   templater    r   rA   TARGET_CHOICESr+   r
   
attributesOneToOneFieldr	   CASCADEcmsplugin_ptrr8   r>   rB   r   rI   rM   __classcell__)rK   s   @r   r   r   -   s   M  	h7N  vz]"1%	H 6~&D vYD Vx[	F !|_x(J )F((...	M )A,C Cr   r   c                        e Zd Z G d d      Zy)r'   c                       e Zd ZdZy)	Link.MetaFNr2   r7   r   r   r8   r_   }   s    r   r8   N)r3   r4   r5   r8   r7   r   r   r'   r'   |   s     r   r'   )__doc__django.confr   django.core.exceptionsr   	django.dbr   django.utils.encodingr   django.utils.translationr   r   r   
cms.modelsr	   !djangocms_attributes_field.fieldsr
   fieldsr   helpersr   
validatorsr   r   r   rS   rW   r   r'   r7   r   r   <module>rk      s   
 ! 2  + , 6   =   ,	 8GN q%&'a%&'&'(Q !"	LC9 LC^< r   