a
    YÒOc˜>  ã                   @   sV  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 d d	lmZ G d
d„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ deeƒZG dd„ deeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!G d d!„ d!eƒZ"G d"d#„ d#eƒZ#d$S )%é    )Úsettings)ÚURLValidator)Úmodels)Úgettext_lazy)ÚCountryField)ÚHandleRefModel)ÚASNFieldÚIPAddressFieldÚIPPrefixFieldÚMacAddressField)Úconst)ÚMultipleChoiceFieldc                       s,   e Zd Zeg d¢d�gZ‡ fdd„Z‡  ZS )ÚLG_URLField)ÚhttpÚhttpsÚtelnetÚssh©Úschemesc                    s   d|d< t ƒ j|i |¤Ž d S ©Néÿ   Ú
max_length©ÚsuperÚ__init__©ÚselfÚargsÚkwargs©Ú	__class__© úW/var/www/html/gsl.tools/lib/python3.9/site-packages/django_peeringdb/models/abstract.pyr      s    zLG_URLField.__init__©Ú__name__Ú
__module__Ú__qualname__r   Zdefault_validatorsr   Ú__classcell__r!   r!   r   r"   r      s   r   c                       s,   e Zd Zeddgd�gZ‡ fdd„Z‡  ZS )ÚURLFieldr   r   r   c                    s   d|d< t ƒ j|i |¤Ž d S r   r   r   r   r!   r"   r      s    zURLField.__init__r#   r!   r!   r   r"   r(      s   r(   c                   @   sò   e Zd ZdZejedƒddd�Zejedƒddd�Zejedƒddd�Z	ejedƒddd�Z
ejed	ƒd
dd�Zeedƒdd�Zejedƒddd�Zejedƒddd�Zejedƒddddd�Zejedƒddddd�ZG dd„ dƒZdd„ ZdS )ÚAddressModelz
    Postal Address
    z	Address 1r   T©r   Úblankz	Address 2ÚCityÚStatezZip-Codeé0   ÚCountry©r+   ÚSuiteZFloorZLatitudeé	   é   )Z
max_digitsZdecimal_placesr+   ÚnullZ	Longitudec                   @   s   e Zd ZdZdS )zAddressModel.MetaTN)r$   r%   r&   Úabstractr!   r!   r!   r"   ÚMeta3   s   r6   c                 C   s   | j S ©N)Úaddress1©r   r!   r!   r"   Ú__str__6   s    zAddressModel.__str__N)r$   r%   r&   Ú__doc__r   Ú	CharFieldÚ_r8   Zaddress2ÚcityÚstateZzipcoder   ÚcountryZsuiteÚfloorZDecimalFieldZlatitudeZ	longituder6   r:   r!   r!   r!   r"   r)      s"   ÿÿr)   c                   @   sŽ   e Zd Zejedƒddd�Zejedƒddd�Zejedƒddd�Ze	edƒdd	�Z
ejed
ƒdd	�ZG dd„ dƒZG dd„ dƒZdd„ ZdS )ÚOrganizationBaseÚNamer   T©r   ÚuniqueúAlso Known Asr*   ú	Long NameÚWebsiter0   ÚNotesc                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zOrganizationBase.MetaTz%sorganizationZOrganizationZOrganizationsN©
r$   r%   r&   r5   r   ZTABLE_PREFIXZdb_tabler=   Úverbose_nameZverbose_name_pluralr!   r!   r!   r"   r6   C   s   
r6   c                   @   s   e Zd ZdZg d¢ZdS )zOrganizationBase.HandleRefÚorg)Znet_setZfac_setZix_setN©r$   r%   r&   ÚtagZdelete_cascader!   r!   r!   r"   Ú	HandleRefI   s   rO   c                 C   s   | j S r7   ©Únamer9   r!   r!   r"   r:   M   s    zOrganizationBase.__str__N)r$   r%   r&   r   r<   r=   rQ   ÚakaÚ	name_longr(   ÚwebsiteÚ	TextFieldÚnotesr6   rO   r:   r!   r!   r!   r"   rB   :   s   rB   c                   @   s¦  e Zd Zejedƒddd�Zeedƒdd�Zejedƒddd�Z	ejed	ƒddd�Z
ejed
ƒddd�Zejedƒddd�Zejedƒddd�Zejedƒddd�Zejedƒddejd�Zejedƒddd�Zejedƒddejd�Zejedƒdddejedƒd�Zejedƒddedƒd�Zeedƒdddejedƒd�Zejed ƒdd�Zejed!ƒdejddd"�Zeed#ƒddd$�Z G d%d&„ d&ƒZ!G d'd(„ d(ƒZ"d)d*„ Z#d+S ),ÚFacilityBaserC   r   TrD   rH   r0   rF   r*   rG   z	CLLI Codeé   ZRencodezNPA-NXXé   úTechnical Emailéþ   úTechnical PhoneéÀ   ©r   r+   Ú	help_textúSales EmailúSales PhoneÚPropertyé   z¬A property owner is the individual or entity that has title to the property. A lessee is a user of a property who has a lease, an agreement, with the owner of the property.)r   r4   r+   Úchoicesr_   zDiverse Serving Substationsz�Two separate and distinct paths to individual substations which should maintain a separated path back to one or more utility generator stations.©r4   r+   r_   zAvailable Voltage ServiceszŒThe alternating current voltage available to users of the facility either directly from the landlord or delivered by the utility separately.)r4   r+   r   rd   r_   rI   úContinental Region)r   rd   r+   r4   úStatus Dashboard©r4   r+   c                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zFacilityBase.MetaTz
%sfacilityZFacilityZ
FacilitiesNrJ   r!   r!   r!   r"   r6   “   s   
r6   c                   @   s   e Zd ZdZddgZdS )zFacilityBase.HandleRefZfacÚ	ixfac_setÚ
netfac_setNrM   r!   r!   r!   r"   rO   ™   s   rO   c                 C   s   | j S r7   rP   r9   r!   r!   r"   r:   �   s    zFacilityBase.__str__N)$r$   r%   r&   r   r<   r=   rQ   r(   rT   rR   rS   ZclliZrencodeZnpanxxÚ
EmailFieldÚ
tech_emailr   ÚPHONE_HELP_TEXTÚ
tech_phoneÚsales_emailÚsales_phoneZPROPERTYÚpropertyÚBooleanFieldZdiverse_serving_substationsr   ZAVAILABLE_VOLTAGEZavailable_voltage_servicesrU   rV   ÚREGIONSÚregion_continentÚstatus_dashboardr6   rO   r:   r!   r!   r!   r"   rW   Q   st   üÿÿúÿü	ÿúûrW   c                   @   s®   e Zd Zejedƒdejd�Zejedƒdej	dd�Z
ejedƒd	d
d�Zejedƒdd
ejd�Zejedƒd	d
d�Zeedƒd
d�ZG dd„ dƒZG dd„ dƒZdd„ ZdS )ÚContactBaseZRolerc   ©r   rd   Z
Visibilityé@   ZPublic)r   rd   ÚdefaultrC   r[   Tr*   ZPhoneéd   r^   ZEmailÚURLr0   c                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zContactBase.MetaTz%snetwork_contactZContactZContactsNrJ   r!   r!   r!   r"   r6   ­   s   
r6   c                   @   s   e Zd ZdZdS )zContactBase.HandleRefZpocN©r$   r%   r&   rN   r!   r!   r!   r"   rO   ³   s   rO   c                 C   s   | j S r7   rP   r9   r!   r!   r"   r:   ¶   s    zContactBase.__str__N)r$   r%   r&   r   r<   r=   r   Z	POC_ROLESZroleÚ
VISIBILITYÚvisiblerQ   rm   Úphonerk   Úemailr(   Úurlr6   rO   r:   r!   r!   r!   r"   rv   ¡   s   ÿÿrv   c                   @   st  e Zd Zeddd�Zejedƒddd�Zejedƒddd�Z	ejed	ƒddd�Z
ejed
ƒddedƒd�Zeedƒdd�Zeedƒdd�Zeedƒdd�Zejedƒdd�Zejedƒdd�Zejedƒddejd�Zejedƒddejdd�Zejedƒddejdd�Zejedƒddejdd�Zejedƒddedƒd�Zejed ƒdded!ƒd�Zej ed"ƒd#d$�Z!ej ed%ƒd#d$�Z"ej ed&ƒd#d$�Z#ej ed'ƒd#ed(ƒd)�Z$eed*ƒdd�Z%ejed+ƒd,dej&d�Z'ejed-ƒd,dej(d�Z)ej ed.ƒd#d$�Z*ejed/ƒd0dej+d�Z,eed1ƒddd2�Z-ejed3ƒdd4dd5�Z.ej/ed6ƒddd7�Z0G d8d9„ d9ƒZ1G d:d;„ d;ƒZ2d<d=„ Z3d4S )>ÚNetworkBaseÚASNT©rK   rE   rC   r   rD   rF   r*   rG   zIRR as-set/route-setzFReference to an AS-SET or ROUTE-SET in Internet Routing Registry (IRR)r^   rH   r0   zLooking Glass URLzRoute Server URLrI   zPrivate noteszTraffic Levelsé'   )r   r+   rd   zTraffic Ratiosé-   úNot Disclosed©r   r+   rd   ry   zGeographic ScopezNetwork Typeé<   zIPv4 PrefixeszdRecommended maximum number of IPv4 routes/prefixes to be configured on peering sessions for this ASNre   zIPv6 PrefixeszdRecommended maximum number of IPv6 routes/prefixes to be configured on peering sessions for this ASNúUnicast IPv4F©ry   Ú	MulticastúUnicast IPv6zNever via route serverszKIndicates if this network will announce its routes via route servers or not)ry   r_   zPeering PolicyzGeneral PolicyéH   zMultiple LocationszRatio RequirementzContract Requirementé$   rg   rh   z
RIR statusN)r4   ry   r   zRIR status updated)r+   r4   c                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zNetworkBase.MetaTz	%snetworkZNetworkZNetworksNrJ   r!   r!   r!   r"   r6   )  s   
r6   c                   @   s   e Zd ZdZg d¢ZdS )zNetworkBase.HandleRefÚnet)Zpoc_setrj   Únetixlan_setNrM   r!   r!   r!   r"   rO   /  s   rO   c                 C   s   | j S r7   rP   r9   r!   r!   r"   r:   3  s    zNetworkBase.__str__)4r$   r%   r&   r   Úasnr   r<   r=   rQ   rR   rS   Z
irr_as_setr(   rT   r   Zlooking_glassZroute_serverrU   rV   Znotes_privater   ZTRAFFICZinfo_trafficZRATIOSZ
info_ratioZSCOPESZ
info_scopeZ	NET_TYPESZ	info_typeÚPositiveIntegerFieldZinfo_prefixes4Zinfo_prefixes6rr   Zinfo_unicastZinfo_multicastZ	info_ipv6Zinfo_never_via_route_serversZ
policy_urlZPOLICY_GENERALZpolicy_generalZPOLICY_LOCATIONSZpolicy_locationsZpolicy_ratioZPOLICY_CONTRACTSZpolicy_contractsru   Z
rir_statusÚDateTimeFieldZrir_status_updatedr6   rO   r:   r!   r!   r!   r"   r‚   º   sÂ   ÿü
ÿûûûÿü
ÿü
ÿý
ÿüüü
ÿr‚   c                   @   s  e Zd Zejedƒddd�Zejedƒddd�Zejedƒddd�Zejed	ƒd
d�Z	e
edƒƒZejedƒdd�Zejedƒdejd�Zejedƒdejd�Zejedƒdd�Zejedƒdd�Zejedƒdd�Zeedƒdd�Zeedƒdd�Zejedƒddd�Zejedƒd
dejd�Zejedƒddd�Zejedƒd
dejd�Zejed ƒddd�Z ejed!ƒd
dejd�Z!ej"ed"ƒd#d�Z#ej$ed$ƒddd%�Z%ejed&ƒd'dej&d(d)�Z'ejed*ƒd'dej(d(d)�Z)eed+ƒddd%�Z*G d,d-„ d-ƒZ+G d.d/„ d/ƒZ,d0d1„ Z-d2S )3ÚInternetExchangeBaserC   rx   TrD   rF   r   r*   rG   r,   r]   )r   r/   rI   r0   rf   rw   z
Media Typeé€   rŠ   Fr‹   rŒ   r�   zCompany WebsitezTraffic Stats WebsiterZ   r[   r\   r^   zPolicy EmailzPolicy Phoner`   ra   zIX-F Network Countr   zIX-F Last Importrh   zService Levelr‰   r‡   rˆ   ZTermsrg   c                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zInternetExchangeBase.MetaTz%sixzInternet ExchangezInternet ExchangesNrJ   r!   r!   r!   r"   r6   s  s   
r6   c                   @   s   e Zd ZdZddgZdS )zInternetExchangeBase.HandleRefZixri   Z	ixlan_setNrM   r!   r!   r!   r"   rO   y  s   rO   c                 C   s   | j S r7   rP   r9   r!   r!   r"   r:   }  s    zInternetExchangeBase.__str__N).r$   r%   r&   r   r<   r=   rQ   rR   rS   r>   r   r@   rU   rV   r   rs   rt   ZMEDIAZmediarr   Zproto_unicastZproto_multicastZ
proto_ipv6r(   rT   Z	url_statsrk   rl   rm   rn   Zpolicy_emailZpolicy_phonero   rp   ZIntegerFieldZixf_net_countr”   Zixf_last_importZSERVICE_LEVEL_TYPESZservice_levelZTERMS_TYPESZtermsru   r6   rO   r:   r!   r!   r!   r"   r•   7  sd   ÿüÿÿûûr•   c                   @   s(   e Zd ZG dd„ dƒZG dd„ dƒZdS )ÚInternetExchangeFacilityBasec                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )z!InternetExchangeFacilityBase.MetaTz%six_facilityzInternet Exchange facilityzInternet Exchange facilitiesNrJ   r!   r!   r!   r"   r6   ‚  s   
r6   c                   @   s   e Zd ZdZdS )z&InternetExchangeFacilityBase.HandleRefZixfacNr|   r!   r!   r!   r"   rO   ˆ  s   rO   N)r$   r%   r&   r6   rO   r!   r!   r!   r"   r—   �  s   r—   c                   @   sÐ   e Zd Zejedƒddd�Zejedƒdd�Zej	dddd�Z
ej	d	ddd�Zejd
dd�Zeedƒdddd�Zeedƒdddd�Zejedƒddd�Zejedƒdejdd�ZG dd„ dƒZG dd„ dƒZdS )Ú	IXLanBaserC   r   Tr*   ÚDescriptionr0   ZMTUrh   ZVLANz802.1QFr‹   zRoute Server ASNr   )rK   r4   r+   ry   zARP sponging MAC)rK   r4   rE   r+   zIX-F Member Export URL©rK   r4   r+   z!IX-F Member Export URL Visibilityrx   ZPrivate)rK   r   rd   ry   c                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zIXLanBase.MetaTz%sixlanzInternet Exchange LANzInternet Exchange LANsNrJ   r!   r!   r!   r"   r6   £  s   
r6   c                   @   s   e Zd ZdZddgZdS )zIXLanBase.HandleRefZixlanZ	ixpfx_setr‘   NrM   r!   r!   r!   r"   rO   ©  s   rO   N)r$   r%   r&   r   r<   r=   rQ   rU   Údescrr“   ZmtuZvlanrr   Zdot1q_supportr   Zrs_asnr   Z
arp_sponger(   Zixf_ixp_member_list_urlr   r}   Zixf_ixp_member_list_url_visibler6   rO   r!   r!   r!   r"   r˜   Œ  s,   ÿÿ
ÿür˜   c                   @   sn   e Zd Zejedƒddd�Zejedƒdejd�Z	e
edƒdd	�Zejd
d�ZG dd„ dƒZG dd„ dƒZdS )ÚIXLanPrefixBaserI   r   Tr*   ÚProtocolrx   rw   ZPrefixr„   Fr‹   c                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zIXLanPrefixBase.MetaTz%sixlan_prefixzInternet Exchange LAN prefixzInternet Exchange LAN prefixesNrJ   r!   r!   r!   r"   r6   ´  s   
r6   c                   @   s   e Zd ZdZdS )zIXLanPrefixBase.HandleRefZixpfxNr|   r!   r!   r!   r"   rO   º  s   rO   N)r$   r%   r&   r   r<   r=   rV   r   Z	PROTOCOLSÚprotocolr
   Úprefixrr   Zin_dfzr6   rO   r!   r!   r!   r"   rœ   ®  s   rœ   c                   @   sd   e Zd Zeedƒddd�Zejddd�Zejddd�Z	ejddd�Z
G d	d
„ d
ƒZG dd„ dƒZdS )ÚNetworkFacilityBasez	Local ASNTrš   ZSONETFr‹   ZEthernetZATMc                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zNetworkFacilityBase.MetaTz%snetwork_facilityzNetwork FacilityzNetwork FacilitiesNrJ   r!   r!   r!   r"   r6   Ä  s   
r6   c                   @   s   e Zd ZdZdS )zNetworkFacilityBase.HandleRefZnetfacNr|   r!   r!   r!   r"   rO   Ê  s   rO   N)r$   r%   r&   r   r=   Z	local_asnr   rr   Zavail_sonetZavail_ethernetZ	avail_atmr6   rO   r!   r!   r!   r"   r    ¾  s   r    c                   @   s˜   e Zd Zedd�Zeddddd�Zeddddd�Zej	e
d	ƒd
d�Zeje
dƒddd�Ze e
dƒ¡Zej	e
dƒdd�ZG dd„ dƒZG dd„ dƒZdS )ÚNetworkIXLanBaserƒ   )rK   ZIPv4é   T)rK   Úversionr+   r4   ZIPv6r3   zRS peerFr‹   rI   r   r*   zSpeed (mbit/sec)ZOperationalc                   @   s*   e Zd ZdZdej ZedƒZedƒZ	dS )zNetworkIXLanBase.MetaTz%snetwork_ixlanzPublic Peering Exchange PointzPublic Peering Exchange PointsNrJ   r!   r!   r!   r"   r6   ×  s   
r6   c                   @   s   e Zd ZdZdS )zNetworkIXLanBase.HandleRefZnetixlanNr|   r!   r!   r!   r"   rO   Ý  s   rO   N)r$   r%   r&   r   r’   r	   Zipaddr4Zipaddr6r   rr   r=   Z
is_rs_peerr<   rV   r“   ÚspeedZoperationalr6   rO   r!   r!   r!   r"   r¡   Î  s   
r¡   N)$Zdjango.confr   Zdjango.core.validatorsr   Z	django.dbr   Zdjango.utils.translationr   r=   Zdjango_countries.fieldsr   Zdjango_handleref.modelsr   Zdjango_inet.modelsr   r	   r
   r   Zdjango_peeringdbr   Zdjango_peeringdb.fieldsr   r(   r   ZModelr)   rB   rW   rv   r‚   r•   r—   r˜   rœ   r    r¡   r!   r!   r!   r"   Ú<module>   s*   P}J"