Ë
    }SÂj#i  ã                   óž  — d dl m Z  d dlmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlZd dlmZ  G d„ deej                  «      Z G d	„ d
eej                  «      Z G d„ de«      Z G d„ deej                  «      Z G d„ deej                  «      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d e«      Z G d!„ d"e«      Z  G d#„ d$e«      Z! G d%„ d&e«      Z" G d'„ d(e«      Z# G d)„ d*e«      Z$ G d+„ d,e«      Z% G d-„ d.e«      Z& G d/„ d0e«      Z'd dlZ G d1„ d2eej                  «      Z( G d3„ d4e«      Z) G d5„ d6e«      Z* G d7„ d8e«      Z+ G d9„ d:e«      Z, G d;„ d<e«      Z- G d=„ d>e«      Z. G d?„ d@e«      Z/ G dA„ dBe«      Z0 G dC„ dDe«      Z1 G dE„ dFe«      Z2y)Gé    )Údatetime)	ÚColumnÚIntegerÚStringÚBooleanÚ
ForeignKeyÚDateTimeÚEnumÚTextÚUniqueConstraint)Úrelationship)ÚfuncN)ÚBasec                   ó   — e Zd ZdZdZdZdZy)ÚUserRoleÚsuper_adminÚadmin_csÚteknisiÚagen_voucherN)Ú__name__Ú
__module__Ú__qualname__ÚSUPER_ADMINÚADMIN_CSÚTEKNISIÚAGEN_VOUCHER© ó    úapp/models/models.pyr   r      s   „ Ø€KØ€HØ€GØ!�Lr   r   c                   ó   — e Zd ZdZdZy)ÚCustomerTypeÚbulanan_pppÚhotspot_voucherN)r   r   r   ÚBULANAN_PPPÚHOTSPOT_VOUCHERr   r   r   r!   r!      s   „ Ø€KØ'�Or   r!   c                   óX  — e Zd ZdZdZ eedd¬«      Z eeddd¬«      Z	 eed¬«      Z
 eedd¬	«      Z eedd
¬	«      Z eedd¬	«      Z ee«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z ee ed«      d¬«      Z eed¬«      Z edeg¬«      Zy)ÚServicePackagezHAdmin-maintained commercial/service options shown in installation forms.Úservice_packagesT©Úprimary_keyÚindexF©ÚuniqueÚnullabler+   ©r.   r"   ©r.   ÚdefaultÚprivate_pppoer   Úbnbv1009©r1   é¯   éd   é–   éÈ   úservice_profiles.idÚServiceProfile©Úforeign_keysN)r   r   r   Ú__doc__Ú__tablename__r   r   Úidr   ÚcodeÚnameÚservice_typeÚservice_modeÚpriceÚmikrotik_profileÚolt_vlan_profileÚservice_vlanÚ
pppoe_vlanÚhotspot_vlanÚ	iptv_vlanr   Úservice_profile_idr   Ú	is_activer   Úservice_profiler   r   r   r'   r'      sØ   „ ÙRØ&€MÙ	� T°Ô	6€BÙ�& °¸TÔB€DÙ�& 5Ô)€DÙ˜&¨5¸-ÔH€LÙ˜&¨5¸/ÔJ€LÙ�7 U°AÔ6€EÙ˜f“~ÐÙ˜f¨jÔ9ÐÙ˜'¨3Ô/€LÙ˜¨Ô-€JÙ˜'¨3Ô/€LÙ�w¨Ô,€IÙ ©Ð4IÓ)JÐUYÔZÐÙ�w¨Ô-€IÙ"Ð#3ÐCUÐBVÔW�Or   r'   c                   ó    — e Zd ZdZdZdZdZdZy)ÚCustomerStatusÚrequestÚ
installingÚconfiguringÚactiveÚ	suspendedN)r   r   r   ÚREQUESTÚ
INSTALLINGÚCONFIGURINGÚACTIVEÚ	SUSPENDEDr   r   r   rO   rO   %   s   „ Ø€GØ€JØ€KØ€FØ�Ir   rO   c                   ó   — e Zd ZdZdZy)ÚServiceModeÚhotspotr2   N)r   r   r   ÚHOTSPOTÚPRIVATE_PPPOEr   r   r   r[   r[   ,   s   „ Ø€GØ#�Mr   r[   c                   ó˜   — e Zd ZdZ eedd¬«      Z eedd¬«      Z ee«      Z	 ee«      Z
 eeej                  ¬«      Z eed¬«      Zy)ÚUserÚusersTr)   )r-   r+   r4   N)r   r   r   r>   r   r   r?   r   ÚusernameÚ	full_nameÚhashed_passwordr   r   Úroler   rL   r   r   r   r`   r`   0   sS   „ Ø€Má	� T°Ô	6€BÙ�f T°Ô6€HÙ�v“€IÙ˜V“n€OÙ�& (×"2Ñ"2Ô3€DÙ�w¨Ô-�Ir   r`   c                   óh   — e Zd ZdZ eed¬«      Z ee«      Z ee«      Z	 ee«      Z
 eed¬«      Zy)ÚMikrotikConfigÚmikrotik_configsT)r*   é"  r4   N)r   r   r   r>   r   r   r?   r   Úhostrb   ÚpasswordÚapi_portr   r   r   rg   rg   :   s:   „ Ø&€MÙ	� TÔ	*€BÙ�&‹>€DÙ�f‹~€HÙ�f‹~€HÙ�g tÔ,�Hr   rg   c                   ó*  — e Zd ZdZ eedd¬«      Z eed¬«      Z eeddd¬«      Z	 eeddd¬«      Z
 ee«      Z ee«      Z ee«      Z eed¬«      Z eeej"                  ¬«      Z eed¬«      Z ee ed	«      d¬
«      Z ee ed«      d¬
«      Z eed¬«      Z eed¬«      Z e ed¬«      d¬
«      Z ee«      Z ee«      Z ee«      Z ee«      Z ee«      Z  ee ed«      d¬
«      Z! ee ed«      d¬
«      Z" eed¬«      Z# eed¬«      Z$ ee«      Z% ee«      Z& ee«      Z' eed¬«      Z( eed¬«      Z) eed¬«      Z* eed¬«      Z+ eed¬«      Z, ee«      Z- ee«      Z. ee«      Z/ ee«      Z0 ee«      Z1 ee«      Z2 ee«      Z3 ee«      Z4 ee«      Z5 ee«      Z6 eed¬«      Z7 e ed¬«      «      Z8 ee«      Z9 ee«      Z: ee«      Z; ee«      Z< e ed¬«      d¬
«      Z= eed¬«      Z> eee?j€                  j‚                  ¬«      ZB ee«      ZC ee«      ZD eed¬
«      ZE ee«      ZF eed¬«      ZG eed¬«      ZH eed¬«      ZI ee«      ZJ eed¬«      ZK eed¬«      ZL eed¬«      ZM eed¬«      ZN eed¬«      ZO eed¬«      ZP ee«      ZQ e ed¬«       eRj¦                  «       ¬«      ZT e ed¬«       eRj¦                  «       ¬«      ZU ee ed «      «      ZV ee ed!«      d¬
«      ZW eed¬
«      ZX eYd"eVg¬#«      ZZ eYd$eWg¬#«      Z[ eYd%e!g¬#«      Z\ eYd&e"g¬#«      Z] eYd'eg¬#«      Z^ eYd(eg¬#«      Z_ eed)¬«      Z` eed*¬«      Za eed*¬«      Zb ee«      Zc e ed¬«      d¬
«      Zdy+),ÚCustomerÚ	customersTr)   ©r+   ©r-   r+   r.   Ú1playr4   r   zservice_packages.idr/   r9   F©Útimezoneúolt_devices.idúmikrotik_devices.idÚZTEÚC320ÚmanualÚunavailableÚnot_configuredé   r2   z	["pppoe"]Únoner5   r6   r7   r8   r3   ©Úserver_default©Úonupdateúusers.idzodps.idr`   r;   ÚODPÚ	OLTDeviceÚMikrotikDevicer'   r:   Únot_startedÚpendingN)er   r   r   r>   r   r   r?   r   rA   Úcustomer_codeÚnikr   ÚaddressÚphoneÚtypeÚ	play_typerO   rU   ÚstatusÚharga_paketr   Úservice_package_idrK   r   Úis_paidÚis_archivedr	   Újatuh_tempoÚodp_infoÚont_snÚ	ont_brandÚont_rx_powerÚont_tx_powerÚolt_device_idÚmikrotik_device_idÚ
olt_vendorÚ	olt_modelÚolt_adapter_keyÚolt_fields_jsonÚolt_portÚont_sn_modeÚonu_id_modeÚolt_port_modeÚont_brand_modeÚhardware_discovery_statusÚodp_latitudeÚodp_longitudeÚcustomer_latitudeÚcustomer_longitudeÚwifi_ssid_24Úwifi_password_24_encÚwifi_ssid_5Úwifi_password_5_encÚwifi_ssid_hotspotÚwifi_password_hotspot_encÚacs_wifi_statusÚacs_last_syncÚmikrotik_userÚmikrotik_passÚpppoe_usernameÚpppoe_passwordÚpppoe_secret_revealed_atÚpppoe_secret_versionr[   r^   ÚvaluerC   Úmanagement_pppoe_usernameÚmanagement_pppoe_passwordÚmanagement_pppoe_vlanrM   Úprovisioning_modeÚservice_modes_jsonÚont_management_modeÚonu_idÚwan_vlanrG   rH   rI   rJ   rF   Úvlan_idr   ÚnowÚ
created_atÚ
updated_atÚassigned_teknisi_idÚodp_idÚodp_portr   Úassigned_teknisiÚodpÚ
olt_deviceÚmikrotik_deviceÚservice_packageÚservice_catalog_profileÚprovisioning_statusÚmikrotik_provisioning_statusÚolt_provisioning_statusÚprovisioning_messageÚprovisioned_atr   r   r   rn   rn   B   s/  „ Ø€Má	� T°Ô	6€BÙ�& Ô%€DÙ˜6¨$°dÀTÔJ€MÙ
� ¨D¸4Ô
@€CÙ�T‹l€GÙ�6‹N€Eá�&‹>€DÙ�v wÔ/€IÙ�F N×$:Ñ$:Ô;€Fñ ˜¨!Ô,€KÙ ©Ð4IÓ)JÐUYÔZÐÙ ©Ð4IÓ)JÐUYÔZÐÙ�W eÔ,€GÙ˜¨%Ô0€KÙ™¨4Ô0¸4Ô@€Ká�f‹~€HÙ�F‹^€FÙ�v“€IÙ˜&“>€LÙ˜&“>€Lá˜7¡JÐ/?Ó$@È4ÔP€MÙ ©Ð4IÓ)JÐUYÔZÐÙ˜¨Ô.€JÙ�v vÔ.€IÙ˜V“n€OÙ˜T“l€OÙ�f‹~€HÙ˜¨Ô2€KÙ˜¨Ô2€KÙ˜6¨8Ô4€MÙ˜F¨HÔ5€NÙ & v°}Ô EÐÙ˜&“>€LÙ˜6“N€MÙ˜v›ÐÙ ›ÐÙ˜&“>€LÙ! &›>ÐÙ˜“.€KÙ  ›.ÐÙ˜v›ÐÙ & v£ÐÙ˜VÐ-=Ô>€OÙ™8¨TÔ2Ó3€Má˜6“N€MÙ˜6“N€MÙ˜F“^€NÙ˜F“^€NÙ%¡h¸Ô&=ÈÔMÐÙ! '°1Ô5ÐÙ˜&¨+×*CÑ*C×*IÑ*IÔJ€LÙ & v£ÐÙ & v£ÐÙ" 7°TÔ:ÐÙ˜V“n€OÙ˜v¨Ô?ÐÙ ¨kÔ:ÐÙ  °Ô8ÐÙ�G‹_€FÙ�g sÔ+€HÙ˜'¨3Ô/€LÙ˜¨Ô-€JÙ˜'¨3Ô/€LÙ�w¨Ô,€IÙ˜f¨jÔ9ÐÙ�W‹o€Gá™¨$Ô/ÀÀÇÁÃ
ÔK€JÙ™¨$Ô/¸(¸$¿(¹(»*ÔE€Já  ©*°ZÓ*@ÓAÐÙ�G™Z¨	Ó2¸TÔB€FÙ�g¨Ô-€HÙ# FÐ:MÐ9NÔOÐÙ
�u¨F¨8Ô
4€CÙ˜k¸¸ÔH€JÙ"Ð#3ÐCUÐBVÔW€OÙ"Ð#3ÐCUÐBVÔW€OÙ*Ð+;ÐK]ÐJ^Ô_Ðñ ! °Ô?ÐÙ#)¨&¸)Ô#DÐ Ù$ V°YÔ?ÐÙ! $›<ÐÙ™H¨dÔ3¸dÔC�Nr   rn   c                   ó&  — e Zd ZdZ eedd¬«      Z eed¬«      Z ee«      Z	 eed¬«      Z
 eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eeej*                  ¬«      Z eed¬«      Zy	)
ÚVoucherAgentÚvoucher_agentsTr)   Fr/   rp   r   r4   N)r   r   r   r>   r   r   r?   r   rA   r‹   ÚareaÚcommission_rateÚnama_ispÚ
domain_ispÚprefixr@   Úcommentr   rL   r	   r   rÁ   rÂ   rÃ   r   r   r   rÓ   rÓ   ¢   s¨   „ Ø$€MÙ	� T°Ô	6€BÙ�& 5Ô)€DÙ�6‹N€EÙ�& Ô%€DÙ˜W¨aÔ0€Oñ �f tÔ,€HÙ˜¨Ô.€JÙ�F TÔ*€FÙ�& 4Ô(€DÙ�V dÔ+€GÙ�w¨Ô-€IÙ˜¨(¯,©,Ô7€JÙ˜¨4Ô0�Jr   rÓ   c                   ó"  — e Zd ZdZ eedd¬«      Z eeddd¬«      Z eedd¬«      Z	 ee
d¬«      Z eed¬	«      Z eed¬«      Z eed¬«      Z eed¬«      Z ee ed
«      d¬«      Z eed¬	«      Z eed¬	«      Z ee ed«      d¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z e ed¬«      d¬«      Z e ed¬«      d¬«      Z eedd¬«      Z eedd¬«      Z e ed¬«      d¬«      Z eed¬	«      Z eed¬«      Z ee ed«      d¬«      Z  ee ed«      d¬«      Z! ee ed«      d¬«      Z" eee#jH                  ¬	«      Z% ee ed«      d¬«      Z& eed¬«      Z' e(deg¬«      Z) e(de gd¬«      Z* e(deg¬«      Z+y)ÚVoucherÚvouchersTr)   Frq   ©r.   r+   r/   Úlegacy_samer4   úhotspot_profiles.idr   Ú	availableúvoucher_agents.idrs   ©r1   r.   r‡   úvoucher_batches.idrv   úsites.idr‚   rÓ   r;   ÚVoucherBatch©r<   Úback_populatesÚHotspotProfileN),r   r   r   r>   r   r   r?   r   r@   rb   r   Úpassword_ciphertextÚcredential_modeÚcredential_lengthÚcharacter_modeÚprofiler   Ú
profile_idrD   rŽ   Úagent_idrÚ   Úlimit_uptimeÚlimit_idle_timer	   Úsold_atÚused_atÚused_secondsÚlast_poll_uptimeÚ
expires_atÚsync_statusÚsync_updated_atÚbatch_idÚ	device_idÚsite_idr   rÁ   rÂ   Ú
created_byÚ
sold_pricer   ÚagentÚbatchÚhotspot_profiler   r   r   rÜ   rÜ   ´   s×  „ Ø€MÙ	� T°Ô	6€Bá�& ¨T¸EÔB€DÙ�f t°4Ô8€HÙ  °Ô5ÐÙ˜V¨]Ô;€OÙ˜w°Ô6ÐÙ˜F¨TÔ2€NÙ�V eÔ,€GÙ˜¡Ð,AÓ!BÈTÔR€JÙ�7 AÔ&€EÙ�F KÔ0€FÙ�g™zÐ*=Ó>ÈÔN€HÙ�V dÔ+€GÙ˜&¨4Ô0€LÙ˜V¨dÔ3€OÙ‘X tÔ,°tÔ<€GÙ‘X tÔ,°tÔ<€Gñ ˜'¨1°uÔ=€Lá˜g¨q¸5ÔAÐÙ™¨$Ô/¸$Ô?€JÙ˜¨Ô3€KÙ˜X°Ô5€OÙ�g™zÐ*>Ó?È$ÔO€HÙ�w¡
Ð+@Ó AÈDÔQ€IÙ�W™j¨Ó4¸tÔD€GÙ˜¨(¯,©,Ô7€JÙ˜¡¨JÓ!7À$ÔG€JÙ˜¨$Ô/€JÙ˜°x°jÔA€EÙ˜°x°jÐQ[Ô\€EÙ"Ð#3À:À,ÔO�Or   rÜ   c                   óz  — e Zd ZdZ eedd¬«      Z ee ed«      dd¬«      Z eed¬«      Z	 ee
d¬«      Z ee
d¬	«      Z ee
d
¬	«      Z ee
«      Z e ed¬«       ej"                  «       ¬«      Z ee ed«      d¬«      Z ee
d¬«      Z ee ed«      d¬«      Z ee ed«      d¬«      Z edeg¬«      Zy)ÚPaymentÚpaymentsTr)   úcustomers.idFrÞ   r/   Úcashr4   Úpaidrs   r~   úvouchers.idrv   rå   rn   r;   N)r   r   r   r>   r   r   r?   r   Úcustomer_idÚamountr   ÚperiodÚmethodrŽ   Ú	referencer	   r   rÁ   Úpaid_atÚ
voucher_idÚreference_typerû   rü   r   Úcustomerr   r   r   r  r  Û   sÑ   „ Ø€MÙ	� T°Ô	6€BÙ˜¡*¨^Ó"<ÀuÐTXÔY€KÙ�G eÔ,€FÙ�F UÔ+€FÙ�F FÔ+€FÙ�F FÔ+€FÙ�v“€IÙ‘X tÔ,¸X¸T¿X¹X»ZÔH€GÙ˜¡¨MÓ!:ÀTÔJ€JÙ˜F¨TÔ2€NÙ�w¡
Ð+@Ó AÈDÔQ€IÙ�W™j¨Ó4¸tÔD€GÙ˜J°k°]ÔC�Hr   r  c                   óä   — e Zd ZdZ eedd¬«      Z ee ed«      dd¬«      Z ee	dd¬«      Z
 eed¬«      Z e ed¬«      d¬«      Z ee	d	d¬
«      Z e ed¬«      d¬«      Z edeg¬«      Zy)ÚInvoiceÚinvoicesTr)   r  FrÞ   r/   rs   Úunpaid©r1   r+   rn   r;   N)r   r   r   r>   r   r   r?   r   r	  r   r  r
  r	   Údue_daterŽ   r  r   r  r   r   r   r  r  ë   sƒ   „ Ø€MÙ	� T°Ô	6€BÙ˜¡*¨^Ó"<ÀuÐTXÔY€KÙ�F U°$Ô7€FÙ�G eÔ,€FÙ‘h¨Ô-¸Ô>€HÙ�F H°DÔ9€FÙ‘X tÔ,°tÔ<€GÙ˜J°k°]ÔC�Hr   r  c                   óè   — e Zd ZdZdZ eedd¬«      Z eeddd¬«      Z	 eed¬«      Z
 eed¬«      Z eed¬«      Z eedd¬«      Z e ed¬	«       ej$                  «       ¬
«      Z eed¬«      Zy)ÚDeviceCredentialzKEncrypted login material referenced by a device; plaintext is never stored.Údevice_credentialsTr)   Fr,   r/   r0   rs   r~   N)r   r   r   r=   r>   r   r   r?   r   rA   Úprotocolrb   r   Úencrypted_secretr   rL   r	   r   rÁ   rÂ   Ú	cred_typer   r   r   r  r  ö   s€   „ ÙUØ(€MÙ	� T°Ô	6€BÙ�& °¸TÔB€DÙ�f uÔ-€HÙ�f uÔ-€HÙ˜d¨UÔ3ÐÙ�w¨¸Ô=€IÙ™¨$Ô/ÀÀÇÁÃ
ÔK€JÙ�v¨Ô-�Ir   r  c                   ó4  — e Zd ZdZ eedd¬«      Z eed¬«      Z eed¬«      Z	 eed¬«      Z
 eed¬«      Z eed	¬«      Z eed¬«      Z ee ed
«      d¬«      Z eed¬«      Z ee ed«      d¬«      Z eed¬«      Z eed¬«      Z edeg¬«      Zy)r…   Úmikrotik_devicesTr)   Fr/   ri   r4   rp   Ú
registeredúdevice_credentials.idrå   r  r;   N)r   r   r   r>   r   r   r?   r   rA   rj   rl   rÕ   rŽ   r   rL   r   Úcredential_idÚhotspot_namerü   r	   Úlast_sync_atÚoffline_moder   Ú
credentialr   r   r   r…   r…     s¸   „ Ø&€MÙ	� T°Ô	6€BÙ�& 5Ô)€DÙ�& 5Ô)€DÙ�g tÔ,€HÙ�& Ô%€DÙ�F LÔ1€FÙ�w¨Ô-€IÙ˜7¡JÐ/FÓ$GÐRVÔW€MÙ˜&¨4Ô0€LÙ�W™j¨Ó4¸tÔD€GÙ˜(¨TÔ2€LÙ˜'¨5Ô1€LÙÐ0À¸ÔO�Jr   r…   c                   ó.  — e Zd ZdZ eedd¬«      Z eed¬«      Z eed¬«      Z	 eed¬«      Z
 eed¬«      Z ee«      Z ee«      Z eed¬«      Z ee«      Z eed¬«      Z eed¬«      Z ee ed	«      d¬«      Z eed¬«      Z ed
eg¬«      Zy)r„   Úolt_devicesTr)   Fr/   Ússhr4   r   r!  r  r;   N)r   r   r   r>   r   r   r?   r   rA   rj   ÚvendorÚmodelÚlocationÚpop_nameÚmanagement_protocolrl   rŽ   r   rL   r   r"  r#  r   r&  r   r   r   r„   r„     sµ   „ Ø!€MÙ	� T°Ô	6€BÙ�& 5Ô)€DÙ�& 5Ô)€DÙ�F UÔ+€FÙ�6 EÔ*€EÙ�f‹~€HÙ�f‹~€HÙ  °Ô7ÐÙ�g‹€HÙ�F LÔ1€FÙ�w¨Ô-€IÙ˜7¡JÐ/FÓ$GÐRVÔW€MÙ˜&¨4Ô0€LÙÐ0À¸ÔO�Jr   r„   c                   óÐ   — e Zd ZdZ eedd¬«      Z eedd¬«      Z eed¬«      Z	 ee«      Z
 ee«      Z eed¬«      Z ee ed	«      d¬«      Z ed
eg¬«      Z eed¬«      Zy)rƒ   ÚodpsTr)   F©r-   r.   r/   é   r4   rv   r…   r;   N)r   r   r   r>   r   r   r?   r   r@   rA   ÚlatitudeÚ	longitudeÚ
port_countr   rš   r   rÊ   r   rL   r   r   r   rƒ   rƒ   $  s€   „ Ø€MÙ	� T°Ô	6€BÙ�& °Ô6€DÙ�& 5Ô)€DÙ�f‹~€HÙ�v“€IÙ˜¨Ô+€JÙ ©Ð4IÓ)JÐUYÔZÐÙ"Ð#3ÐCUÐBVÔW€OÙ�w¨Ô-�Ir   rƒ   c                   ó¨   — e Zd ZdZdZ eedd¬«      Z eeddd¬«      Z	 eed¬«      Z
 eed¬«      Z eed¬«      Z eed¬«      Z eedd¬«      Zy	)
r:   z;Admin-managed technical profile used by installation forms.Úservice_profilesTr)   Fr,   r/   r0   N)r   r   r   r=   r>   r   r   r?   r   r@   rA   rF   Údownload_kbpsÚupload_kbpsr   rL   r   r   r   r:   r:   0  sg   „ ÙEØ&€MÙ	� T°Ô	6€BÙ�& °¸TÔB€DÙ�& 5Ô)€DÙ˜f¨tÔ4ÐÙ˜7¨TÔ2€MÙ˜¨4Ô0€KÙ�w¨¸Ô=�Ir   r:   c                   ó”   — e Zd ZdZ eedd¬«      Z eedd¬«      Z eed¬«      Z ee	dd¬«      Z
 eedd¬«      Z ed	d
d¬«      fZy)ÚVlanMappingRuleÚvlan_mapping_rulesTr)   FrÞ   r/   Úservicer0   Úsource_vlanÚpurposeÚuq_vlan_mapping_source_purpose)rA   N)r   r   r   r>   r   r   r?   r>  Útarget_vlanr   r?  r   rL   r   Ú__table_args__r   r   r   r;  r;  ;  s]   „ Ø(€MÙ	� T°Ô	6€BÙ˜¨5¸Ô=€KÙ˜¨5Ô1€KÙ�V e°YÔ?€GÙ�w¨¸Ô=€IÙ& }°iÐFfÔgÐi�Nr   r;  c                   óâ   — e Zd ZdZ eedd¬«      Z ee ed«      d¬«      Z ee	d¬«      Z
 ee	«      Z ee«      Z ee«      Z e ed¬«       ej"                  «       ¬«      Z ed	eg¬
«      Zy)ÚAuditLogÚ
audit_logsTr)   r‚   r/   Frs   r~   r`   r;   N)r   r   r   r>   r   r   r?   r   Úuser_idr   ÚactionÚentityÚ	entity_idr   Údetailr	   r   rÁ   rÂ   r   Úuserr   r   r   rD  rD  D  sv   „ Ø €MÙ	� T°Ô	6€BÙ�W™j¨Ó4¸tÔD€GÙ�F UÔ+€FÙ�F‹^€FÙ�w“€IÙ�D‹\€FÙ™¨$Ô/ÀÀÇÁÃ
ÔK€JÙ˜¨g¨YÔ7�Dr   rD  c                   óÄ  — e Zd ZdZ eedd¬«      Z ee ed«      dd¬«      Z ee	d¬«      Z
 ee	dd¬	«      Z ee	«      Z ee	«      Z ee ed
«      d¬«      Z ee ed«      d¬«      Z ee«      Z eed¬«      Z ee«      Z e ed¬«      d¬«      Z e ed¬«       ej.                  «       ¬«      Z e ed¬«       ej.                  «       ¬«      Z edeg¬«      Zy)ÚProvisioningJobÚprovisioning_jobsTr)   r  FrÞ   r/   Úqueuedr  ru   rv   r   r4   rs   r~   r€   rn   r;   N)r   r   r   r>   r   r   r?   r   r	  r   ÚtargetrŽ   r*  Úadapter_keyr™   rš   r   Úpayload_summaryÚattemptsÚ
last_errorr	   Úexecuted_atr   rÁ   rÂ   rÃ   r   r  r   r   r   rM  rM  O  sð   „ Ø'€MÙ	� T°Ô	6€BÙ˜¡*¨^Ó"<ÀuÐTXÔY€KÙ�F UÔ+€FÙ�F H°DÔ9€FÙ�F‹^€FÙ˜“.€KÙ˜7¡JÐ/?Ó$@È4ÔP€MÙ ©Ð4IÓ)JÐUYÔZÐÙ˜T“l€OÙ�g qÔ)€HÙ˜“€JÙ™¨4Ô0¸4Ô@€KÙ™¨$Ô/ÀÀÇÁÃ
ÔK€JÙ™¨$Ô/¸(¸$¿(¹(»*ÔE€JÙ˜J°k°]ÔC�Hr   rM  c                   óT  — e Zd ZdZdZ eedd¬«      Z ee ed«      dd¬«      Z	 ee
d¬«      Z ee
dd¬«      Z ee
«      Z ee ed	«      d¬«      Z ee ed
«      d¬«      Z ee
«      Z ee«      Z ee«      Z e ed¬«       ej,                  «       d¬«      Z ede	g¬«      Zy)ÚProvisioningEventzPImmutable, sanitized audit trail for preview, queue, and device acknowledgement.Úprovisioning_eventsTr)   r  FrÞ   r/   ru   rv   rs   )r   r.   rn   r;   N)r   r   r   r=   r>   r   r   r?   r   r	  r   rP  rŽ   r*  r™   rš   rQ  r   rR  Úmessager	   r   rÁ   rU  r   r  r   r   r   rW  rW  a  sÀ   „ ÙZØ)€MÙ	� T°Ô	6€BÙ˜¡*¨^Ó"<ÀuÐTXÔY€KÙ�F UÔ+€FÙ�F U°$Ô7€FÙ�F‹^€FÙ˜7¡JÐ/?Ó$@È4ÔP€MÙ ©Ð4IÓ)JÐUYÔZÐÙ˜“.€KÙ˜T“l€OÙ�T‹l€GÙ™¨4Ô0ÀÀÇÁÃÐV[Ô\€KÙ˜J°k°]ÔC�Hr   rW  c                   ó   — e Zd ZdZdZdZdZy)ÚEntityStatusrá   ÚsoldÚusedÚexpiredN)r   r   r   rá   r\  r]  r^  r   r   r   r[  r[  t  s   „ Ø€IØ€DØ€DØ�Gr   r[  c                   óÔ   — e Zd ZdZ eedd¬«      Z eedd¬«      Z eed¬«      Z	 ee«      Z
 ee«      Z eed¬«      Z eed¬«      Z eeej$                  ¬«      Z ed	d
¬«      Zy)ÚSiteÚsitesTr)   Fr1  r/   zAsia/Jakartar4   r…   zMikrotikDevice.site_idr;   N)r   r   r   r>   r   r   r?   r   r@   rA   rÕ   r   r,  rt   r   rL   r	   r   rÁ   rÂ   r   Údevicesr   r   r   r`  r`  z  sw   „ Ø€MÙ	� T°Ô	6€BÙ�& °Ô6€DÙ�& 5Ô)€DÙ�&‹>€DÙ�d‹|€HÙ�f nÔ5€HÙ�w¨Ô-€IÙ˜¨(¯,©,Ô7€JáÐ+Ð:RÔS�Gr   r`  c                   óN  — e Zd ZdZ eedd¬«      Z eedd¬«      Z eed¬«      Z	 ee e
d«      d¬«      Z eed¬«      Z eed¬	«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed
¬	«      Z ee e
d«      d¬«      Z ee e
d«      d¬«      Z ee e
d«      d¬«      Z ee e
d«      d¬«      Z ee«      Z eed¬	«      Z eeej@                  ¬	«      Z! e"ddd¬«      Z# e"deg¬«      Z$y)ræ   Úvoucher_batchesTr)   Fr1  r/   rà   r   r4   Ú	generatedrâ   rå   rv   r‚   r‡   rÜ   zVoucher.batch_idr   rç   ré   r;   N)%r   r   r   r>   r   r   r?   r   Ú
batch_coderî   r   rï   ÚquantityÚgenerated_countrD   Úduration_daysÚduration_secondsrñ   rò   Ú	user_modeÚcharacter_lengthrí   rŽ   rð   rü   rû   rý   r   rÚ   rø   r	   r   rÁ   rÂ   r   rÝ   r  r   r   r   ræ   ræ   ‡  s]  „ Ø%€MÙ	� T°Ô	6€BÙ˜ t°eÔ<€JÙ�V eÔ,€GÙ˜¡Ð,AÓ!BÈTÔR€JÙ�g¨Ô.€HÙ˜W¨aÔ0€OÙ�7 UÔ+€EÙ˜7¨TÔ2€Mñ ˜g°Ô5ÐÙ˜&¨4Ô0€LÙ˜V¨dÔ3€OÙ�v¨Ô-€IÙ˜g°Ô5ÐÙ˜F¨TÔ2€NÙ�F KÔ0€FÙ�g™zÐ*=Ó>ÈÔN€HÙ�W™j¨Ó4¸tÔD€GÙ�w¡
Ð+@Ó AÈDÔQ€IÙ˜¡¨JÓ!7À$ÔG€JÙ�T‹l€GÙ˜¨Ô3€KÙ˜¨(¯,©,Ô7€JÙ˜IÐ4FÐW^Ô_€HÙ"Ð#3À:À,ÔO�Or   ræ   c                   ót  — e Zd ZdZ eedd¬«      Z eed¬«      Z eed¬«      Z	 eed¬«      Z
 eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed	¬«      Z eed
¬«      Z eed¬«      Z eed¬«      Z ee ed«      d¬«      Z eed¬«      Z eeej2                  ¬«      Z eed¬«      Zy)ré   Úhotspot_profilesTr)   Fr/   Ú12hr4   r|   r   é   rå   r‡   N)r   r   r   r>   r   r   r?   r   rA   Úlocal_profileÚ	rate_downÚrate_upÚsession_timeoutÚidle_timeoutÚsharedrD   Úvoucher_expiry_daysÚvoucher_expiry_secondsr   rL   r   rü   rø   r	   r   rÁ   rÂ   rÃ   r   r   r   ré   ré   ¤  sÖ   „ Ø&€MÙ	� T°Ô	6€BÙ�& 5Ô)€DÙ˜6¨DÔ1€MÙ�w¨Ô.€IÙ�W tÔ,€GÙ˜V¨UÔ3€OÙ˜&¨4Ô0€LÙ�G QÔ'€FÙ�7 AÔ&€Eá  °"Ô5ÐÙ# G°dÔ;ÐÙ�w¨Ô-€IÙ�W™j¨Ó4¸tÔD€GÙ˜¨Ô3€KÙ˜¨(¯,©,Ô7€JÙ˜¨4Ô0�Jr   ré   c                   ó:  — e Zd ZdZ eedd¬«      Z ee«      Z ee«      Z	 ee«      Z
 ee«      Z ee«      Z ee«      Z ee«      Z ee«      Z eed¬«      Z eeej&                  ¬«      Z ee«      Z ee«      Z ee«      Z eeej&                  ¬«      Zy)ÚVoucherArchiveÚvoucher_archivesTr)   r   r4   N)r   r   r   r>   r   r   r?   r  r   r@   rb   rî   rD   rŽ   r	   ró   rô   rõ   r   rÁ   Ú
deleted_atÚreasonrú   rð   rÂ   r   r   r   rz  rz  ¸  s¦   „ Ø&€MÙ	� T°Ô	6€BÙ˜“€JÙ�&‹>€DÙ�f‹~€HÙ�V‹n€GÙ�7‹O€EÙ�F‹^€FÙ�XÓ€GÙ�XÓ€Gá˜'¨1Ô-€LÙ˜¨(¯,©,Ô7€JÙ�F‹^€FÙ�g‹€HÙ�g‹€HÙ˜¨(¯,©,Ô7�Jr   rz  c                   ó6  — e Zd ZdZ eedd¬«      Z ee ed«      d¬«      Z ee ed«      d¬«      Z	 ee ed«      d¬«      Z
 eed¬«      Z eed¬«      Z eed¬«      Z ee ed	«      d¬«      Z ee«      Z eed
¬«      Z eeej(                  ¬«      Zy)ÚAgentCommissionÚagent_commissionsTr)   râ   Fr/   r  rä   zpayments.idr‡   r4   N)r   r   r   r>   r   r   r?   r   rð   r  rú   r
  ÚrateÚvoucher_priceÚtransaction_idr   r  rŽ   r	   r   rÁ   rÂ   r   r   r   r  r  Ë  s¬   „ Ø'€MÙ	� T°Ô	6€BÙ�g™zÐ*=Ó>ÈÔO€HÙ˜¡¨MÓ!:ÀTÔJ€JÙ�g™zÐ*>Ó?È$ÔO€HÙ�G eÔ,€FÙ�' EÔ*€DÙ˜7¨UÔ3€MÙ˜G¡Z°Ó%>ÈÔN€NÙ�F‹^€FÙ�F IÔ.€FÙ˜¨(¯,©,Ô7�Jr   r  c                   óF  — e Zd ZdZ eedd¬«      Z ee ed«      d¬«      Z ee ed«      d¬«      Z	 eed¬«      Z
 eed¬	«      Z ee«      Z eed¬«      Z ee«      Z eed¬«      Z ee ed
«      d¬«      Z ee ed«      d¬«      Z eeej*                  ¬	«      Zy)ÚWalletTransactionÚwallet_transactionsTr)   r‚   r/   r  FÚwalletr4   rv   rå   N)r   r   r   r>   r   r   r?   r   rF  r  r
  r   r  Úwallet_typerŽ   r  r	   rô   rû   rü   r   rÁ   rÂ   r   r   r   r…  r…  Ù  s´   „ Ø)€MÙ	� T°Ô	6€BÙ�W™j¨Ó4¸tÔD€GÙ˜¡¨MÓ!:ÀTÔJ€JÙ�G eÔ,€FÙ�F HÔ-€FÙ˜“.€KÙ�F UÔ+€FÙ�v“€IÙ�X¨Ô-€GÙ�w¡
Ð+@Ó AÈDÔQ€IÙ�W™j¨Ó4¸tÔD€GÙ˜¨(¯,©,Ô7�Jr   r…  c                   óè   — e Zd ZdZ eedd¬«      Z eed¬«      Z eed¬«      Z	 eed¬«      Z
 eed¬«      Z eed¬«      Z eed¬«      Z ee ed«      d¬«      Z eeej&                  ¬«      Zy	)
ÚRadiusServerÚradius_serversTr)   Fr/   i  r4   rå   N)r   r   r   r>   r   r   r?   r   rA   rj   ÚportÚsecretr   Ú
is_primaryrL   r   rü   r	   r   rÁ   rÂ   r   r   r   rŠ  rŠ  è  s€   „ Ø$€MÙ	� T°Ô	6€BÙ�& 5Ô)€DÙ�& 5Ô)€DÙ�' 4Ô(€DÙ�F UÔ+€FÙ˜¨Ô/€JÙ�w¨Ô-€IÙ�W™j¨Ó4¸tÔD€GÙ˜¨(¯,©,Ô7�Jr   rŠ  c                   ó  — e Zd ZdZ eedd¬«      Z eed¬«      Z eed¬«      Z	 ee e
d«      d¬«      Z ee e
d«      d¬«      Z eed¬	«      Z eed
¬	«      Z ee«      Z ee«      Z eeej(                  ¬	«      Z eed¬«      Zy)Ú	SyncQueueÚ
sync_queueTr)   Fr/   rå   rv   r‡   r4   r   N)r   r   r   r>   r   r   r?   r   Úentity_typerI  r   Útarget_site_idÚtarget_device_idrŽ   rS  r   rT  Úpayloadr	   r   rÁ   rÂ   Ú	synced_atr   r   r   r�  r�  ô  sœ   „ Ø €MÙ	� T°Ô	6€BÙ˜¨%Ô0€KÙ�w¨Ô/€IÙ˜G¡Z°
Ó%;ÀdÔK€NÙ˜g¡zÐ2GÓ'HÐSWÔXÐÙ�F IÔ.€FÙ�g qÔ)€HÙ˜“€JÙ�T‹l€GÙ˜¨(¯,©,Ô7€JÙ�x¨$Ô/�Ir   r�  c                   óò   — e Zd ZdZ eedd¬«      Z ee ed«      d¬«      Z ee ed«      d¬«      Z	 ee
d¬«      Z eed¬«      Z ee
d¬«      Z ee«      Z ee
d¬	«      Z eeej&                  ¬	«      Zy
)Ú
OfflineLogÚoffline_logsTr)   rv   r/   rå   Fr‡   r4   N)r   r   r   r>   r   r   r?   r   rû   rü   r   r’  rI  rG  r   r•  rŽ   r	   r   rÁ   rÂ   r   r   r   r˜  r˜    s…   „ Ø"€MÙ	� T°Ô	6€BÙ�w¡
Ð+@Ó AÈDÔQ€IÙ�W™j¨Ó4¸tÔD€GÙ˜¨%Ô0€KÙ�w¨Ô/€IÙ�F UÔ+€FÙ�T‹l€GÙ�F IÔ.€FÙ˜¨(¯,©,Ô7�Jr   r˜  c                   ó<  — e Zd ZdZdZ eedd¬«      Z eeddd¬«      Z	 eed¬«      Z
 eed¬«      Z eed¬«      Z eed¬«      Z ee ed«      d¬«      Z eed¬«      Z eed	d¬
«      Z eed¬«      Z eeddd¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z eed¬«      Z e ed¬«      d¬«      Z e ed¬«      d¬«      Z e ed¬«      d¬«      Z eed¬«      Z eeej>                  d¬
«      Z  eeej>                  ej>                  ¬«      Z!y)ÚOnlineOrderuæ  
    Pesanan voucher dari katalog publik. Berbeda dari Invoice, tabel ini
    tidak terkait pelanggan existing: pembeli boleh orang luar sistem.

    Lifecycle status:
        pending  â†’ order dibuat, voucher belum direservasi (checkout masih jalan)
        reserved â†’ voucher sudah dipegang order ini, menunggu pembayaran
        paid     â†’ Midtrans mengonfirmasi pembayaran
        deliveredâ†’ voucher sudah diserahkan ke pembeli
        expired  â†’ batas bayar habis, voucher dilepas kembali ke stok
        cancelledâ†’ dibatalkan manual oleh admin

    Aturan penting: hanya `reserved` yang memegang voucher. Menjalankan
    expired harus mengembalikan voucher ke status 'available' supaya stok
    tidak berkurang permanen.
    Úonline_ordersTr)   Fr,   r/   rà   r|   rã   r‡   )r1   r.   r+   rs   )r1   r�   N)"r   r   r   r=   r>   r   r   r?   r   Ú
order_codeÚcustomer_nameÚcustomer_phoneÚcustomer_emailÚprofile_namer   rï   Úduration_labelrg  Útotal_pricerŽ   r   Úreserved_voucher_idsÚmidtrans_order_idÚ
snap_tokenÚpayment_methodr	   r  Údelivered_atr÷   Ú
admin_noter   rÁ   rÂ   rÃ   r   r   r   r›  r›    sA  „ ñð  $€MÙ	� T°Ô	6€BÙ˜ t°eÀ4ÔH€JÙ˜6¨EÔ2€MÙ˜F¨UÔ3€NÙ˜F¨TÔ2€Nñ ˜&¨4Ô0€LÙ˜¡Ð,AÓ!BÈTÔR€JÙ˜F¨TÔ2€NÙ�g q°5Ô9€HÙ˜¨5Ô1€KÙ�F I¸ÀTÔJ€Fá! $°Ô6ÐÙ˜v°Ô5ÐÙ˜¨Ô.€JÙ˜F¨TÔ2€Ná‘X tÔ,°tÔ<€GÙ™(¨DÔ1¸DÔA€LÙ™¨$Ô/¸$Ô?€JÙ˜ tÔ,€JÙ˜¨(¯,©,ÀÔG€JÙ˜¨(¯,©,ÀÇÁÔN�Jr   r›  )3r   Ú
sqlalchemyr   r   r   r   r   r	   r
   r   r   Úsqlalchemy.ormr   Úsqlalchemy.sqlr   ÚenumÚapp.core.databaser   Ústrr   r!   r'   rO   r[   r`   rg   rn   rÓ   rÜ   r  r  r  r…   r„   rƒ   r:   r;  rD  rM  rW  r[  r`  ræ   ré   rz  r  r…  rŠ  r�  r˜  r›  r   r   r   ú<module>r°     sÞ  ðÝ ß k× kÕ kÝ 'Ý Û Ý "ô"ˆs�D—I‘Iô "ô(�3˜Ÿ	™	ô (ôX�Tô Xô&�S˜$Ÿ)™)ô ô$�#�t—y‘yô $ô.ˆ4ô .ô-�Tô -ô^Dˆtô ^Dô@1�4ô 1ô$%Pˆdô %PôNDˆdô Dô 	Dˆdô 	Dô
.�tô 
.ôP�Tô Pô P�ô Pô"
.ˆ$ô 
.ô	>�Tô 	>ôj�dô jô	8ˆtô 	8ôD�dô Dô$D˜ô Dó" ô�3˜Ÿ	™	ô ôTˆ4ô TôP�4ô Pô:1�Tô 1ô(8�Tô 8ô&8�dô 8ô8˜ô 8ô
8�4ô 
8ô0�ô 0ô
8�ô 
8ô*O�$õ *Or   