o
    bg;                     @   s,  d dl mZ d dl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j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j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j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j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jZG d-d. d.ejZG d/d0 d0ejZG d1d2 d2ejZG d3d4 d4ejZG d5d6 d6ejZ G d7d8 d8ejZ!G d9d: d:ejZ"G d;d< d<ejZ#G d=d> d>ejZ$G d?d@ d@ejZ%G dAdB dBejZ&G dCdD dDejZ'G dEdF dFejZ(G dGdH dHej)Z*G dIdJ dJejZ+G dKdL dLejZ,G dMdN dNejZ-G dOdP dPejZ.G dQdR dRejZ/G dSdT dTejZ0G dUdV dVejZ1G dWdX dXejZ2G dYdZ dZejZ3G d[d\ d\ejZ4G d]d^ d^ejZ5G d_d` d`ejZ6G dadb dbejZ7G dcdd ddejZ8G dedf dfejZ9G dgdh dhejZ:G didj djejZ;G dkdl dlejZ<G dmdn dnejZ=G dodp dpejZ>d dql?m@Z@ G drds dsejZAG dtdu duejZBdS )v    )modelsN)timezone)
Combinablec                   @   f   e Zd ZejddZe Ze Z	ej
ddZej
ddZej
ddZej
ddZG dd dZdS )AdbreakHistoryTprimary_key   
max_lengthc                   @      e Zd ZdZdZdS )zAdbreakHistory.MetaFAdbreak_historyN__name__
__module____qualname__manageddb_table r   r   9/var/www/html/DAI27/Adtlas_DAI/DAIManagementApp/models.pyMeta       r   Nr   r   r   r   	AutoFieldid_adbreak_historyIntegerField
id_channelDateTimeFielddatetime	CharFielddaytimechannel_namedurationr   r   r   r   r   r          r   c                   @   sd   e Zd ZejddZejddddZejddddZejddddZ	ej
dddZG dd dZdS )	AdminsTr   r	   r   blanknullr'   r(   c                   @   r   )zAdmins.MetaFr%   Nr   r   r   r   r   r   $   r   r   N)r   r   r   r   r   Zid_adminr   adminpasswordnamer   r   r   r   r   r   r   r%      s    r%   c                   @   s
  e Zd ZejddZejdejddddZej	ddddZ
ej	ddddZej	ddddZej	ddddZej	d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jd	ejd
dddZejdejddddZej	ddZG dd dZdddZedddZdS )AdspotsTr   	Campaignsid_campaign	db_columnr'   r(   r	   r&   r)   Channelsr   Brandsid_brandr
   c                   @   r   )zAdspots.MetaFr-   Nr   r   r   r   r   r   9   r   r   Nc                 C   s@   t jj|d}|r|j||d}|r|j|d}d| i}|S )z9
        Get impression statistics for this spot
        )datetime_timestamp__contains)r5   ad_spot)Zdatetime_timestamp__lteZtotal_requests)VastResponseGoobjectsfiltercount)selfspot
start_dateend_datequerysetstatsr   r   r   get_impressions?   s   zAdspots.get_impressionsc              	   C   s   ddg}g }|D ]M}z9t jj|d}| jj|d}g }|D ]}	|	|	||}
||	j|	j|	jr3|	jj	nd|
d q|||d W q t j
yU   td| d	 Y qw |S )
zK
        Get impression statistics for all spots in each campaign.
        zToo Good To Go 30szToo Good To Go 60sr,   )r/   Unknown)Zspot_idZ	spot_name
brand_namer@   )campaignspotsz	Campaign z not found.)r.   r8   getr9   rA   append	id_adpostadspot_namer4   rD   DoesNotExistprint)clsr=   r>   Z	campaignsresultsZcampaign_nameZcampaign_objrF   Zcampaign_spotsr<   r@   r   r   r   get_spots_impressions`   s0   
zAdspots.get_spots_impressions)NN)r   r   r   r   r   rI   
ForeignKey
DO_NOTHINGr/   r   rJ   Zoriginal_filepathZencoded_filepathr#   statusfilenameZurl_from_vastr   r   r   r4   creative_idr   rA   classmethodrO   r   r   r   r   r-   )   s$    
!r-   c                   @   sr   e Zd ZejddZejdejddddZeje	ejddddZ
ejddddZejddddZG d	d
 d
ZdS )AdspotsInAvailTr   Availsid_availr0   	id_adspotZpositionInAvail	trafficIdc                   @   r   )zAdspotsInAvail.MetaFZAdspots_in_availNr   r   r   r   r   r      r   r   N)r   r   r   r   r   Zid_adsinavailrP   rQ   rX   r-   rY   r   ZpositioninavailZ	trafficidr   r   r   r   r   rV      s    rV   c                   @   sl   e Zd ZejddZejdejddddZej	ddddZ
ej	ddddd	Zejddd
ZG dd dZdS )rW   Tr   Windows	id_windowr0   r	   r&   ZavailInWindowr1   r   r'   r(   r)   c                   @   r   )zAvails.MetaFrW   Nr   r   r   r   r   r      r   r   N)r   r   r   r   r   rX   rP   rQ   r\   r   Zavail_startZavailinwindowr   r   r   r   r   r   r   rW      s    rW   c                   @   s   e Zd ZejddZejddddZejdej	ddddZ
ejddddZejddddZejddddZejddddZG dd	 d	Zd
S )r3   Tr   r	   r&   Agency	id_agencyr0   c                   @   r   )zBrands.MetaFr3   Nr   r   r   r   r   r      r   r   N)r   r   r   r   r   r4   r   rD   rP   rQ   r_   descriptioncategoryZlogorR   r   r   r   r   r   r3      s    r3   c                   @   s`   e Zd ZejddZejdejddddZej	dddddZ
ej	d	ddddZG d
d dZdS )ChannelCodecTr   r2   r   r0   Z
FFmpeg_cmdr	   r]   Z	Ateme_cmdc                   @   r   )zChannelCodec.MetaFZChannel_codecNr   r   r   r   r   r      r   r   N)r   r   r   r   r   Zid_ch_codecrP   rQ   r   r   Z
ffmpeg_cmdZ	ateme_cmdr   r   r   r   r   rb      s    rb   c                   @   s   e Zd ZejddZejdejddddZej	ddddZ
ej	ddddZej	ddddZej	ddddZej	ddddZej	ddddZej	ddddd	Zej	d
dddd	ZejdddZejdddZG dd dZdS )r2   Tr   Usersid_userr0   r	   r&   ZnetworkNamer]   ZzoneNamer)   c                   @   r   )zChannels.MetaFr2   Nr   r   r   r   r   r      r   r   N)r   r   r   r   r   r   rP   rQ   rd   r   r"   Zchannel_descZchannel_langZchannel_genreZftp_channel_namesfr_channel_namenetworknamezonenamer   creation_datetimemodif_datetimer   r   r   r   r   r2      s    r2   c                   @   s   e Zd ZejddZejeejddddZ	ej
ddddZej
ddddZej
ddddZej
ddddZej
ddddZG dd	 d	Zd
S )ChannelsZoneTr   r   r0   r	   r&       c                   @   r   )zChannelsZone.MetaFZChannels_zoneNr   r   r   r   r   r      r   r   N)r   r   r   r   r   id_zone_channelrP   r2   rQ   r   r   regionrg   rf   Zverifs_numberZsfr_namer   r   r   r   r   rj      s    rj   c                   @   J   e Zd ZejddZejddZejddZejddZ	G dd dZ
dS )DayTimeTr   r	   r
   c                   @   r   )zDayTime.MetaFZDay_timeNr   r   r   r   r   r      r   r   N)r   r   r   r   r   id_timer   r,   startendr   r   r   r   r   ro          ro   c                   @   rn   )PendingTr   r	   r
   c                   @   r   )zPending.MetaFrt   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   Z
id_pendingr   rT   urlr#   r   r   r   r   r   rt      rs   rt   c                   @   s   e Zd ZejddZejeejddddZ	ej
ddddZejdddZejdddZej
ddddZej
ddddZG dd	 d	Zd
S )EpgTr   r   r0   r	   r&   r)   c                   @   r   )zEpg.MetaFrv   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   Zid_emissionrP   r2   rQ   r   r   Zemission_namer   
start_timeend_timeZgenrera   r   r   r   r   r   rv   	  s    rv   c                   @   s|   e Zd ZejddZejeejddZ	ej
ddZej
ddZej
ddZe Ze Ze Ze ZG dd dZd	S )
JinglesTr   r   r1   r	   r
   c                   @   r   )zJingles.MetaFry   Nr   r   r   r   r   r   "  r   r   N)r   r   r   r   r   Z	id_jinglerP   r2   rQ   r   r   Zjingle_nameZvideo_jingleZmd5_filer   rh   ri   r   rR   Z	is_deleter   r   r   r   r   ry     s    ry   c                   @   sr   e Zd ZejddZejdejd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 ZG d	d
 d
ZdS )r^   Tr   rc   rd   r0   r	   r&   r)   c                   @   r   )zAgency.MetaFr^   Nr   r   r   r   r   r   9  r   r   N)r   r   r   r   r   r_   rP   rQ   rd   r   r,   r`   r   r   r   Z
is_deletedr   r   r   r   r   r^   1  s    r^   c                   @   s   e Zd ZejddZejeejddddZ	eje
ejd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jdddZejddddZe Ze ZejdddZG d	d
 d
ZdS )	PlaylistsTr   r   r0   rl   r	   r&   r)   c                   @   r   )zPlaylists.MetaFr{   Nr   r   r   r   r   r   K  r   r   N)r   r   r   r   r   id_playlistrP   r2   rQ   r   rj   rl   r   versionZbroadcastdater   r=   r>   filepathr   Zis_draftZdraft_versionrh   r   r   r   r   r   r{   >  s    r{   c                   @   s   e Zd ZejddZejddddZejddddZejddddZ	ejddddZ
ejddddZejddddZejddddZG dd dZdS )SfrAnalyticsTr   r	   r&   c                   @   r   )zSfrAnalytics.MetaFSFR_analyticsNr   r   r   r   r   r   Z  r   r   N)r   r   r   r   r   id_impressionr   re   r    rm   cible
indicateurminutepurcentr   r   r   r   r   r   P  s    r   c                   @   s   e Zd ZejddZejdejddddZej	ddddZ
ej	ddddZej	ddddZej	ddddZej	ddddZej	ddddZej	ddddZej	ddddZG dd	 d	Zd
S )
UseraccessTr   rc   rd   r0   r	   r&   c                   @   r   )zUseraccess.MetaFZ
UserAccessNr   r   r   r   r   r   k  r   r   N)r   r   r   r   r   Z	id_accessrP   rQ   rd   r   Zapi_keyZftp_prototypeZ
ftp_serverZftp_portZftp_userZftp_passwordZopenvpn_userZopenvpn_passwordr   r   r   r   r   r   _  s    r   c                   @   s   e Zd ZejddZejddddZejddddZejddddZ	ejddddZ
ejddddZejdddZG dd dZdS )	rc   Tr   r	   r&   r)   c                   @   r   )z
Users.MetaFrc   Nr   r   r   r   r   r   y  r   r   N)r   r   r   r   r   rd   r   r,   typeemailZ	userloginZuserpassr   r   r   r   r   r   r   rc   p  s    rc   c                   @   sp   e Zd ZejddZejeejddddZ	eje
ejddddZejddddZejdddZG d	d
 d
ZdS )UsersAdvertisersTr   rd   r0   r4   r	   r&   r)   c                   @   r   )zUsersAdvertisers.MetaFZUsers_AdvertisersNr   r   r   r   r   r     r   r   N)r   r   r   r   r   Zid_user_advertiserrP   rc   rQ   rd   r3   r4   r   rR   r   r   r   r   r   r   r   r   ~  s    r   c                   @   sl   e Zd ZejddZejeejddddZ	ej
ddddZej
ddddZej
ddddZG dd dZd	S )
r[   Tr   r|   r0   r	   r&   c                   @   r   )zWindows.MetaFr[   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   r\   rP   r{   rQ   r|   r   Zwindow_startZ
window_endZwindow_durationr   r   r   r   r   r[     s    r[   c                   @   s(   e Zd ZejdddZG dd dZdS )	AuthGroupT   uniquer   c                   @   r   )zAuthGroup.MetaFZ
auth_groupNr   r   r   r   r   r     r   r   N)r   r   r   r   r   r,   r   r   r   r   r   r     s    r   c                   @   sB   e Zd ZejddZeeejZ	edejZ
G dd dZdS )AuthGroupPermissionsTr   AuthPermissionc                   @      e Zd ZdZdZdZdS )zAuthGroupPermissions.MetaFZauth_group_permissions))group
permissionNr   r   r   r   r   unique_togetherr   r   r   r   r         r   N)r   r   r   r   BigAutoFieldidrP   r   rQ   r   r   r   r   r   r   r   r     
    r   c                   @   s@   e Zd ZejddZedejZejddZ	G dd dZ
dS )r   r	   r
   DjangoContentTyped   c                   @   r   )zAuthPermission.MetaFZauth_permission))content_typecodenameNr   r   r   r   r   r     r   r   N)r   r   r   r   r   r,   rP   rQ   r   r   r   r   r   r   r   r     s
    r   c                   @   s   e Zd ZejddZejdddZe Z	ejdddZ
ejddZejddZejddZe Ze Ze ZG dd	 d	Zd
S )AuthUser   r
   Tr)   r   r      c                   @   r   )zAuthUser.MetaF	auth_userNr   r   r   r   r   r     r   r   N)r   r   r   r   r   r+   r   
last_loginr   is_superuserusername
first_name	last_namer   is_staff	is_activedate_joinedr   r   r   r   r   r     s    r   c                   @   B   e Zd ZejddZeeejZ	ee
ejZG dd dZdS )AuthUserGroupsTr   c                   @   r   )zAuthUserGroups.MetaFZauth_user_groups))userr   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   rP   r   rQ   r   r   r   r   r   r   r   r   r     r   r   c                   @   r   )AuthUserUserPermissionsTr   c                   @   r   )zAuthUserUserPermissions.MetaFZauth_user_user_permissions))r   r   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   rP   r   rQ   r   r   r   r   r   r   r   r   r     r   r   c                   @   s&   e Zd ZejddZG dd dZdS )CorsheadersCorsmodelr	   r
   c                   @   r   )zCorsheadersCorsmodel.MetaFZcorsheaders_corsmodelNr   r   r   r   r   r     r   r   N)r   r   r   r   r   Zcorsr   r   r   r   r   r     s    r   c                   @   sn   e Zd Ze ZejdddZejddZ	e
 Ze ZejdejdddZeeejZG dd dZdS )	DjangoAdminLogTr)      r
   r   c                   @   r   )zDjangoAdminLog.MetaFdjango_admin_logNr   r   r   r   r   r     r   r   N)r   r   r   r   r   action_time	TextField	object_idr   object_reprPositiveSmallIntegerFieldaction_flagchange_messagerP   rQ   r   r   r   r   r   r   r   r   r     s    r   c                   @   s2   e Zd ZejddZejddZG dd dZdS )r   r   r
   c                   @   r   )zDjangoContentType.MetaFdjango_content_type))	app_labelmodelNr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r         r   c                   @   sF   e Zd ZejddZejddZejddZe	 Z
G dd dZdS )DjangoMigrationsTr   r	   r
   c                   @   r   )zDjangoMigrations.MetaFZdjango_migrationsNr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   r   appr,   r   Zappliedr   r   r   r   r   r     s    r   c                   @   s8   e Zd ZejdddZe Ze Z	G dd dZ
dS )DjangoSessionT(   )r   r   c                   @   r   )zDjangoSession.MetaFdjango_sessionNr   r   r   r   r   r     r   r   N)r   r   r   r   r   session_keyr   session_datar   expire_dater   r   r   r   r   r     s
    r   c                   @   s   e Zd ZejddZejeejddddZ	ej
dddZejdddZejdddZejddddZejddddZG dd	 d	Zd
S )r   Tr   r   r0   r)   r	   r&   c                   @   r   )zAdbreak_history.MetaFr   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   rP   r2   rQ   r   r   r   	DateFieldr    	TimeFieldr!   r   r"   r#   r   r   r   r   r   r     s    r   c                   @   s2   e Zd ZejddZejddZG dd dZdS )	Day_timesTr   r	   r
   c                   @   r   )zDay_times.MetaFZday_timeNr   r   r   r   r   r   !  r   r   N)	r   r   r   r   r   rp   r   r,   r   r   r   r   r   r     r   r   c                   @   s    e Zd ZdZdZdZdZdZdS )CampaignStatus	PrebookedBookedCanceledzIn progress
TreminatedN)r   r   r   r   r   r   ZIn_progressr   r   r   r   r   r   %  s    r   c                   @   s  e Zd ZejddZejddZeje	ej
ddddZejeej
ddddZejdddZejddZejddZejdddZejdddZejdddZe Zejeej
d	dddZejdddZejeej
d
dddZejdddZejdddZejdddZejddZ ejdddZ!ejdddZ"ejde#j$e#j%dZ&ejdddZ'ejdddZ(ejddZ)ejddddZ*ejddddZ+ejddddZ,dd Z-G dd dZ.dS )r.   Tr   r	   r
   rI   r0   r4   r)   rd   r_   )r   r(   g        )default   )r   choicesr   Fr&   c                 C   s   | j S NrB   r;   r   r   r   __str__J  s   zCampaigns.__str__c                   @   r   )zCampaigns.MetaFr.   Nr   r   r   r   r   r   M  r   r   N)/r   r   r   r   r   r/   r   r,   rP   r-   rQ   rI   r3   r4   BooleanFieldZpacingZ	start_dayZend_dayr   volumeZdelivery
FloatFieldZcpmZgeneral_rotationrc   rd   Zbookedr^   r_   productra   countryZbudgetZbroadcasts_day
media_typer   r   r   rR   Zis_vastZ	vast_dataZexclusivityZprogram_categoryZshows_preferenceZposition_preferencer   r   r   r   r   r   r.   ,  s<    r.   c                   @   sT   e Zd ZejddZejeejddZ	ej
dddZej
dd	dZG d
d dZdS )CampaignTimeIntervalsTr   ZCampaign)	on_deleteverbose_namez#Start time for ad spot availabilityz
Start Time)	help_textr   z!End time for ad spot availabilityzEnd Timec                   @   r   )zCampaignTimeIntervals.MetaFr   Nr   r   r   r   r   r   X  r   r   N)r   r   r   r   r   r   rP   r.   CASCADErE   r   rw   rx   r   r   r   r   r   r   R  s    r   c                   @   sh   e Zd ZejddZejeejddddZ	eje
ejddddZejeejddddZG dd dZd	S )
	PlacementTr   rp   r0   r/   r   c                   @   r   )zPlacement.MetaFr   Nr   r   r   r   r   r   c  r   r   N)r   r   r   r   r   Zid_placementrP   ro   rQ   rp   r.   r/   r2   r   r   r   r   r   r   r   ]  s    r   c                   @      e Zd ZejddZejddZejdddZ	ejddZ
ejddZejddZejdddZejdddZG dd dZdS )	Sfr_analyticsTr   r	   r
   r)   c                   @   r   )zSfr_analytics.MetaFr   Nr   r   r   r   r   r   r  r   r   Nr   r   r   r   r   r   r   re   r   r    rm   r   r   r   r   r   r   r   r   r   r   r   r   h      r   c                   @   sT   e Zd ZejddZejddZe Z	ej
dddZejddZG dd dZdS )	ImpressionsTr   r	   r
   r)   c                   @   r   )zImpressions.MetaFZSFR_market_shareNr   r   r   r   r   r   }  r   r   N)r   r   r   r   r   r   r   Z	tool_namer   Ztotal_usersr   Zmarket_share_purcentrm   r   r   r   r   r   r   v  s    r   c                   @   s   e Zd ZejddZejddZejddZejddZ	e
 ZejddZejddZejddZejddZe
 ZejdddddZG dd	 d	Zd
S )VerifsTr   r	   r
   ZverComplete2   r]   c                   @   r   )zVerifs.MetaFr   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   Zid_verifr   rf   rg   ZbroadcastDater   rZ   ZspotIdZairTimeZ	airLengthZairStatuscoderevisionZvercompleter   r   r   r   r   r     s    r   c                   @   r   )	Sfr_predictTr   r	   r
   r)   c                   @   r   )zSfr_predict.MetaFZSFR_predictNr   r   r   r   r   r     r   r   Nr   r   r   r   r   r     r   r   c                   @   r   )Adbreak_predictTr   r	   r
   c                   @   r   )zAdbreak_predict.MetaFr   Nr   r   r   r   r   r     r   r   Nr   r   r   r   r   r     r$   r   c                   @   sF   e Zd ZejddZejddZe Z	ejddZ
G dd dZdS )ActivityTr   r	   r
   c                   @   r   )zActivity.MetaFr   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   Zid_activityr   Zactivityr   dater`   r   r   r   r   r   r     s    r   c                   @   sT   e Zd ZejddZejdddZejddddZ	ejddddZ
G dd dZdS )	RealTimeAdbreakTr   r)   r	   r&   c                   @   r   )zRealTimeAdbreak.MetaFZReal_time_adbreakNr   r   r   r   r   r     r   r   N)r   r   r   r   r   Zid_rtar   r   r   start_atr#   r   r   r   r   r   r     s    r   c                   @   sh   e Zd ZejddZejddZejdddZ	ejddZ
ejdddZejdddZG dd dZdS )	Bouygues_analyticsTr   r	   r
   r)   c                   @   r   )zBouygues_analytics.MetaFr   Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   Z
id_bouyguer   r"   r   r    r   r   r   r   r   r   r   r   r   r   r     s    r   c                   @   sp  e Zd ZejddZejdddddZejddddZ	ejddddZ
ejd	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jddddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejeej dddZ!G dd dZ"dS )r7   Tr   AD_id   r]   Tracking_startr0   Tracking_firstQuartileTracking_midpointTracking_thirdQuartileTracking_completer)   r&   c                   @   r   )zVastResponseGo.MetaFZVAST_response_GONr   r   r   r   r   r     r   r   N)#r   r   r   r   r   id_vastr   ad_idr   tracking_starttracking_firstquartiletracking_midpointtracking_thirdquartiletracking_completer   datetime_timestampdatetime_stringrR   vast_urlimpression_double_clickimpression_sprintservetracking_start_statustracking_firstquartile_statustracking_midpoint_statustracking_thirdquartile_statusimpression_sprintserve_statusimpression_double_click_statustracking_completed_status
media_fileadspot_linkrP   r-   rQ   r6   r   r   r   r   r   r7     s2    r7   c                   @   sZ  e Zd ZejddZejdddddZejddddZ	ejddddZ
ejd	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jddddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejeejddZdd Z G dd dZ!dS )VastResponseTr   r   r   r]   r   r0   r   r   r   r   r)   r&   Zvast_responses)r   related_namec                 C   s
   t | jS r   )strr   r   r   r   r   r     s   
zVastResponse.__str__c                   @   r   )zVastResponse.MetaFZVAST_responseNr   r   r   r   r   r     r   r   N)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   r   r   r   r  r  r  r  r  r  rP   r-   r   r6   r   r   r   r   r   r   r	    s0    r	  c                   @   sX  e Zd Ze ZejdddddZejddddZ	ejddddZ
ejd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jddddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZejdddZej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dS )VastResponse2910r   r   Tr]   r   r0   r   r   r   r   r)   r&   c                   @   r   )zVastResponse2910.MetaFZVAST_RESPONSE_29_10Nr   r   r   r   r   r   $  r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r    s0    r  c                   @   sF  e Zd ZejdddZejdddZejdddZej	dd	Z
ej	d
dddZejddddZejddddZejddddZejddddZejddddZejddddZejddddZejdddddZejdddddZejddddZejdddddZejddddZejddddZejddddZG dd dZdS )AdslotsVisionrIDTr1   r   ZAdIdr	   )r1   r   ZSubIdStartrz   ZEndr0   ZStartTsZEndTsZCutZScenarioDurationZIsPubZTitleZReplacementAdIdr]   ZReplacementPathZReplacementDurationZStatusr   Z
UpdateSentZPlaylistDateZ
Channel_IDc                   @   r   )zAdslotsVisionr.Meta)subidplaylistdateFZAdSlots_VisionRN)r   r   r   r   r   r   r   r   r   r   r   >  r   r   N)r   r   r   r   r   r   r   Zadidr  r   rq   rr   BigIntegerFieldZstarttsZendtsr   cutr   Zscenarior#   ZispubtitleZreplacementadidZreplacementpathZreplacementdurationrR   Z
updatesentr   r  
channel_idr   r   r   r   r   r  )  s*    r  c                   @   sX   e Zd ZejdddZejddddZejddddZejddddZ	G dd dZ
dS )	AlmaAdsr   Tr  r	   r&   c                   @   r   )zAlmaAds.MetaFZAlma_AdsNr   r   r   r   r   r   I  s    r   N)r   r   r   r   r   r   r   r,   Zads_pathr#   r   r   r   r   r   r  C  s    r  c                   @   sP   e Zd ZejddZe Ze Z	ej
dddZejddZG dd dZdS )	AdbreaksTr   r)   r	   r
   c                   @   r   )zAdbreaks.MetaFr  Nr   r   r   r   r   r   V  r   r   N)r   r   r   r   r   Z
id_adbreakr   r   r   r   r   r#   r   r"   r   r   r   r   r   r  O  s    r  c                   @   s   e Zd ZejdddZejdejdddZeje	ejdddZ
ejeej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dS )	Campaignairtimelogr   Tr  r.   r)   c                   @   r   )zCampaignairtimelog.MetaFZCampaignAirtimeLogNr   r   r   r   r   r   d  r   r   N)r   r   r   r   r   r   rP   rQ   rE   r-   r<   r  Zad_breakr   Zairtime_startZairtime_endr   Zinsertion_statusr   r   r   r   r   r  [  s    r  c                   @   sj   e Zd ZejdddZejdejddddZej	ddddZ
ejdd	d
ZejdddZG dd dZdS )CampaignPriorityScoresr   Tr  r.   z4The foreign key referencing the associated Campaign.)r   r   r'   r(   zAThe priority score calculated for the campaign on the given date.)r'   r(   r   z=The date and time when the priority score record was created.)auto_now_addr   zBThe date and time when the priority score record was last updated.)auto_nowr   c                   @   r   )zCampaignPriorityScores.MetaFr  Nr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   rP   rQ   rE   r   Zpriority_scorer   
created_at
updated_atr   r   r   r   r   r  i  s.    r  c                       s   e Zd ZdZejdddZejdddZejdddZ	ej
d	d
ddZej
d	dddddZej
ddddddZej
ddddddZejddddZejddddZejddddZG dd  d Z fd!d"Z  ZS )#ConductorDataz(
    Model to store conductor data.
    DatezThe date of the ad-break.)r   r   zAd Break Start TimezThe start time of the ad break.zAd Break End TimezThe end time of the ad break.r   ChannelzThe channel of the broadcast.)r   r   r   r  TzThe duration of the ad break.)r   r   r'   r(   r   r	   zShow BeforezThe show before the ad break.z
Show AfterzThe show after the ad break.zShow Duringz:Boolean indicating if the ad break is shown during a show.)r   r   r   z
Created Atz.The date and time when the record was created.)r  r   r   z
Updated Atz3The date and time when the record was last updated.)r  r   r   c                   @   s*   e Zd ZdZdZdZejdgddgZdS )zConductorData.MetaFZconductor_datazConductor Dataad_break_start_atZidx_ad_break_start_atfieldsr,   N)	r   r   r   r   r   verbose_name_pluralr   Indexindexesr   r   r   r   r     s
    r   c                    s6   | j st   tjdd | _ t j|i | d S )N   )days)r   r   now	timedeltasupersave)r;   argskwargs	__class__r   r   r.    s   zConductorData.save)r   r   r   __doc__r   r   r   r   r#  Zad_break_end_atr   channelZdureeZshow_beforeZ
show_afterr   Zif_show_duringr   r  r  r   r.  __classcell__r   r   r1  r   r     sr    r   )ValidationErrorc                   @   sF   e Zd ZejedejdZejedejdZdd Z	G dd dZ
dS )	AdSpotExclusionZexclusions_1)r
  r   Zexclusions_2c                 C   s   | j | jkr
tdd S )Nz#Ad spots cannot exclude themselves.)	ad_spot_1	ad_spot_2r6  r   r   r   r   clean  s   zAdSpotExclusion.cleanc                   @   s(   e Zd ZdZdZejddgddgZdS )zAdSpotExclusion.MetaFr7  r8  r9  Zunique_ad_spot_exclusionr$  N)r   r   r   r   r   r   UniqueConstraintconstraintsr   r   r   r   r     s
    r   N)r   r   r   r   rP   r-   r   r8  r9  r:  r   r   r   r   r   r7    s
    r7  c                   @   sZ   e Zd ZejddZejddZejddZej	dddZ
ej	dddZG dd dZd	S )
TrackinglinkTr      r
   i  r)   c                   @   r   )zTrackinglink.MetaFZTrackingLinkNr   r   r   r   r   r     r   r   N)r   r   r   r   r   r   r   r<   ru   r   status_codeZrequest_countr   r   r   r   r   r=    s    r=  )C	django.dbr   r   django.utilsr   django.db.models.expressionsr   Modelr   r%   r-   rV   rW   r3   rb   r2   rj   ro   rt   rv   ry   r^   r{   r   r   rc   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   TextChoicesr   r.   r   r   r   r   r   r   r   r   r   r   r7   r	  r  r  r  r  r  r  r   django.core.exceptionsr6  r7  r=  r   r   r   r   <module>   sz   b 

&!H