
    >Tf                         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mZmZmZ d dlmZmZmZ d d	lT d
Z G d de          Z G d de          Z G d de          Z G d deeee          ZdS )    )GenericForeignKey)ValidationError)models)reverse)gettext_lazy)
ObjectType)ChangeLoggedModelNestedGroupModelOrganizationalModelPrimaryModel)CustomFieldsMixinExportTemplatesMixin	TagsMixin)*)ContactAssignmentContactContactGroupContactRolec                   2    e Zd ZdZ G d d          Zd ZdS )r   z.
    An arbitrary collection of Contacts.
    c                   f    e Zd ZdgZ ej        dd          fZ ed          Z ed          Z	dS )ContactGroup.Metaname)parentr   z*%(app_label)s_%(class)s_unique_parent_namefieldsr   zcontact groupzcontact groupsN
__name__
__module____qualname__orderingr   UniqueConstraintconstraints_verbose_nameverbose_name_plural     </var/www/html/netbox-4.1.3/netbox/tenancy/models/contacts.pyMetar      s]        8#F#)A  
 q))a 011r'   r)   c                 0    t          d| j        g          S )Nztenancy:contactgroupargsr   pkselfs    r(   get_absolute_urlzContactGroup.get_absolute_url#   s    -TWI>>>>r'   N)r   r   r   __doc__r)   r1   r&   r'   r(   r   r      sU         	2 	2 	2 	2 	2 	2 	2 	2? ? ? ? ?r'   r   c                   2    e Zd ZdZd Z G d d          ZdS )r   z>
    Functional role for a Contact assigned to an object.
    c                 0    t          d| j        g          S )Nztenancy:contactroler+   r-   r/   s    r(   r1   zContactRole.get_absolute_url+   s    ,DG9====r'   c                   >    e Zd ZdZ ed          Z ed          ZdS )ContactRole.Metar   zcontact rolezcontact rolesN)r   r   r   r    r#   r$   r%   r&   r'   r(   r)   r6   .   s4        q((a00r'   r)   N)r   r   r   r2   r1   r)   r&   r'   r(   r   r   '   sU         > > >1 1 1 1 1 1 1 1 1 1r'   r   c                      e Zd ZdZ ej        dej        ddd          Z ej         e	d          d          Z
 ej         e	d	          dd
          Z ej         e	d          dd
          Z ej         e	d          d          Z ej         e	d          dd
          Z ej         e	d          d          ZdZ G d d          Zd Zd ZdS )r   zC
    Contact information for a particular object(s) in NetBox.
    ztenancy.ContactGroupcontactsT)to	on_deleterelated_nameblanknullr   d   )r$   
max_lengthtitle)r$   r@   r=   phone2   email)r$   r=   address   link)groupr   rA   rB   rD   rE   rG   c                   f    e Zd ZdgZ ej        dd          fZ ed          Z ed          Z	dS )Contact.Metar   )rH   r   z)%(app_label)s_%(class)s_unique_group_namer   contactr9   Nr   r&   r'   r(   r)   rJ   _   sX        8#F#(@  
 q||a
mmr'   r)   c                     | j         S Nr7   r/   s    r(   __str__zContact.__str__j   s
    yr'   c                 0    t          d| j        g          S Nztenancy:contactr+   r-   r/   s    r(   r1   zContact.get_absolute_urlm   s    (y9999r'   N)r   r   r   r2   r   
ForeignKeySET_NULLrH   	CharFieldr#   r   rA   rB   
EmailFieldrD   rE   URLFieldrG   clone_fieldsr)   rN   r1   r&   r'   r(   r   r   4   s         F!/  E 6QvYY  D FQwZZ  E
 FQwZZ  E
 FQwZZ  E fQy\\  G
 6?QvYY  D
L	, 	, 	, 	, 	, 	, 	, 	,  : : : : :r'   r   c                   R    e Zd Z ej        dej                  Z ej                    Z e	dd          Z
 ej        dej        d          Z ej        d	ej        d          Z ej         ed
          ded          ZdZ G d d          Zd Zd Z fdZ fdZ xZS )r   zcontenttypes.ContentType)r:   r;   object_type	object_id)ct_fieldfk_fieldztenancy.Contactassignments)r:   r;   r<   ztenancy.ContactRolepriorityrC   T)r$   r@   choicesr=   )rX   rY   roler]   c                       e Zd ZdZ ej        d          fZ ej        dd          fZ e	d          Z
 e	d          Zd	S )
ContactAssignment.Meta)rK   r]   r_   r.   )rX   rY   )r   )rX   rY   rK   r_   z2%(app_label)s_%(class)s_unique_object_contact_roler   zcontact assignmentzcontact assignmentsN)r   r   r   r    r   Indexindexesr!   r"   r#   r$   r%   r&   r'   r(   r)   ra      sx        8FL <===
 $F#FI  
 q-..a 566r'   r)   c                     | j         r&| j         d|                                  d| j         S t	          | j         d| j                   S )Nz (z) -> z -> )r]   rK   get_priority_displayobjectstrr/   s    r(   rN   zContactAssignment.__str__   sY    = 	VlUUd&?&?&A&AUUUUUdl5555666r'   c                 :    t          d| j        j        g          S rP   )r   rK   r.   r/   s    r(   r1   z"ContactAssignment.get_absolute_url   s    (/@AAAAr'   c                     t                                                       | j        t          j                            d          vr5t          t          d                              | j                            d S )Nr9   z9Contacts cannot be assigned to this object type ({type}).)type)	supercleanrX   r   objectswith_featurer   r#   format)r0   	__class__s    r(   rl   zContactAssignment.clean   sq     :#5#B#B:#N#NNN!MNNUU[_[kUll   ONr'   c                 b    t                                          |          }| j        |_        |S rM   )rk   to_objectchangerf   related_object)r0   actionobjectchangerp   s      r(   rr   z!ContactAssignment.to_objectchange   s*    ww..v66&*k#r'   )r   r   r   r   rQ   CASCADErX   PositiveBigIntegerFieldrY   r   rf   PROTECTrK   r_   rS   r#   ContactPriorityChoicesr]   rV   r)   rN   r1   rl   rr   __classcell__)rp   s   @r(   r   r   q   sm       #&#%.  K /.00I  F  f."  G
 6 ."  D
  vQz]]&	  H DL7 7 7 7 7 7 7 77 7 7
B B B            r'   r   N)"django.contrib.contenttypes.fieldsr   django.core.exceptionsr   	django.dbr   django.urlsr   django.utils.translationr   r#   core.modelsr   netbox.modelsr	   r
   r   r   netbox.models.featuresr   r   r   tenancy.choices__all__r   r   r   r   r&   r'   r(   <module>r      s   @ @ @ @ @ @ 2 2 2 2 2 2             6 6 6 6 6 6 " " " " " " ` ` ` ` ` ` ` ` ` ` ` ` U U U U U U U U U U    ? ? ? ? ?# ? ? ?&
1 
1 
1 
1 
1% 
1 
1 
1:: :: :: :: ::l :: :: ::z? ? ? ? ?)+?L] ? ? ? ? ?r'   