B
    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               @   sf   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               @   s   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   s   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      s   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 )	AdminsT)r   r   )r   blanknull)r   r   c               @   s   e Zd ZdZdZdS )zAdmins.MetaFr   N)r
   r   r   r   r   r   r   r   r   r   $   s   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 )AdspotsT)r   	Campaignsid_campaign)	db_columnr   r   r   )r   r   r   )r   r   Channelsr   Brandsid_brand)r   c               @   s   e Zd ZdZdZdS )zAdspots.MetaFr#   N)r
   r   r   r   r   r   r   r   r   r   9   s   r   Nc             C   s@   t jj|d}|r |j||d}|r0|j|d}d| i}|S )z9
        Get impression statistics for this spot
        )datetime_timestamp__contains)r*   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 }x|D ]}yvt jj|d}| jj|d}g }x@|D ]8}	|	|	||}
||	j|	j|	jrj|	jj	nd|
d q>W |||d W q t j
k
r   td| d	 wY qX 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_namer5   )campaignspotsz	Campaign z not found.)r$   r-   getr.   r6   append	id_adpostadspot_namer)   r8   DoesNotExistprint)clsr2   r3   Z	campaignsresultsZcampaign_nameZcampaign_objr:   Zcampaign_spotsr1   r5   r   r   r   get_spots_impressions`   s*    

zAdspots.get_spots_impressions)NN)NN)r
   r   r   r   r   r=   
ForeignKey
DO_NOTHINGr%   r   r>   Zoriginal_filepathZencoded_filepathr   statusfilenameZurl_from_vastr   r   r   r)   creative_idr   r6   classmethodrC   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 )AdspotsInAvailT)r   Availsid_avail)r&   r   r   	id_adspotZpositionInAvail	trafficIdc               @   s   e Zd ZdZdZdS )zAdspotsInAvail.MetaFZAdspots_in_availN)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   Zid_adsinavailrD   rE   rL   r#   rM   r   ZpositioninavailZ	trafficidr   r   r   r   r   rJ      s   rJ   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 )rK   T)r   Windows	id_window)r&   r   r   r   )r   r   r   ZavailInWindow)r&   r   r   r   )r   r   c               @   s   e Zd ZdZdZdS )zAvails.MetaFrK   N)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   rL   rD   rE   rP   r   Zavail_startZavailinwindowr   r   r   r   r   r   r   rK      s   rK   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 )r(   T)r   r   )r   r   r   Agency	id_agency)r&   r   r   c               @   s   e Zd ZdZdZdS )zBrands.MetaFr(   N)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   r)   r   r8   rD   rE   rR   descriptioncategoryZlogorF   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dZ
ej	d	ddddZG d
d dZdS )ChannelCodecT)r   r'   r   )r&   r   r   Z
FFmpeg_cmdr   )r&   r   r   r   Z	Ateme_cmdc               @   s   e Zd ZdZdZdS )zChannelCodec.MetaFZChannel_codecN)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   Zid_ch_codecrD   rE   r   r   Z
ffmpeg_cmdZ	ateme_cmdr   r   r   r   r   rU      s
   rU   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 )r'   T)r   Usersid_user)r&   r   r   r   )r   r   r   ZnetworkName)r&   r   r   r   ZzoneName)r   r   c               @   s   e Zd ZdZdZdS )zChannels.MetaFr'   N)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   r   rD   rE   rW   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   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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 )ChannelsZoneT)r   r   )r&   r   r   r   )r   r   r       c               @   s   e Zd ZdZdZdS )zChannelsZone.MetaFZChannels_zoneN)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   id_zone_channelrD   r'   rE   r   r   regionrZ   rY   Zverifs_numberZsfr_namer   r   r   r   r   r]      s   r]   c               @   sJ   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 )DayTimeT)r   r   )r   c               @   s   e Zd ZdZdZdS )zDayTime.MetaFZDay_timeN)r
   r   r   r   r   r   r   r   r   r      s   r   N)r
   r   r   r   r   id_timer   r"   startendr   r   r   r   r   ra      s
   ra   c               @   sJ   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 )PendingT)r   r   )r   c               @   s   e Zd ZdZdZdS )zPending.MetaFre   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   Z
id_pendingr   rH   urlr   r   r   r   r   r   re      s
   re   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 )EpgT)r   r   )r&   r   r   r   )r   r   r   )r   r   c               @   s   e Zd ZdZdZdS )zEpg.MetaFrg   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   Zid_emissionrD   r'   rE   r   r   Zemission_namer   
start_timeend_timeZgenrerT   r   r   r   r   r   rg   	  s   rg   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 )
JinglesT)r   r   )r&   r   )r   c               @   s   e Zd ZdZdZdS )zJingles.MetaFrj   N)r
   r   r   r   r   r   r   r   r   r   "  s   r   N)r
   r   r   r   r   Z	id_jinglerD   r'   rE   r   r   Zjingle_nameZvideo_jingleZmd5_filer   r[   r\   r   rF   Z	is_deleter   r   r   r   r   rj     s   rj   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 )rQ   T)r   rV   rW   )r&   r   r   r   )r   r   r   )r   r   c               @   s   e Zd ZdZdZdS )zAgency.MetaFrQ   N)r
   r   r   r   r   r   r   r   r   r   9  s   r   N)r
   r   r   r   r   rR   rD   rE   rW   r   r"   rS   r   r   r   Z
is_deletedr   r   r   r   r   rQ   1  s   rQ   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 )	PlaylistsT)r   r   )r&   r   r   r_   r   )r   r   r   )r   r   c               @   s   e Zd ZdZdZdS )zPlaylists.MetaFrk   N)r
   r   r   r   r   r   r   r   r   r   K  s   r   N)r
   r   r   r   r   id_playlistrD   r'   rE   r   r]   r_   r   versionZbroadcastdater   r2   r3   filepathr   Zis_draftZdraft_versionr[   r   r   r   r   r   rk   >  s   rk   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 )SfrAnalyticsT)r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zSfrAnalytics.MetaFSFR_analyticsN)r
   r   r   r   r   r   r   r   r   r   Z  s   r   N)r
   r   r   r   r   id_impressionr   rX   r   r`   cible
indicateurminutepurcentr   r   r   r   r   ro   P  s   ro   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 )
UseraccessT)r   rV   rW   )r&   r   r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zUseraccess.MetaFZ
UserAccessN)r
   r   r   r   r   r   r   r   r   r   k  s   r   N)r
   r   r   r   r   Z	id_accessrD   rE   rW   r   Zapi_keyZftp_prototypeZ
ftp_serverZftp_portZftp_userZftp_passwordZopenvpn_userZopenvpn_passwordr   r   r   r   r   rv   _  s   rv   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 )	rV   T)r   r   )r   r   r   )r   r   c               @   s   e Zd ZdZdZdS )z
Users.MetaFrV   N)r
   r   r   r   r   r   r   r   r   r   y  s   r   N)r
   r   r   r   r   rW   r   r"   typeemailZ	userloginZuserpassr   r   r   r   r   r   r   rV   p  s   rV   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 )UsersAdvertisersT)r   rW   )r&   r   r   r)   r   )r   r   r   )r   r   c               @   s   e Zd ZdZdZdS )zUsersAdvertisers.MetaFZUsers_AdvertisersN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   Zid_user_advertiserrD   rV   rE   rW   r(   r)   r   rF   r   r   r   r   r   r   r   ry   ~  s   ry   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 )
rO   T)r   rl   )r&   r   r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zWindows.MetaFrO   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   rP   rD   rk   rE   rl   r   Zwindow_startZ
window_endZwindow_durationr   r   r   r   r   rO     s   rO   c               @   s(   e Zd ZejdddZG dd dZdS )	AuthGroupT   )uniquer   c               @   s   e Zd ZdZdZdS )zAuthGroup.MetaFZ
auth_groupN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r"   r   r   r   r   r   rz     s   rz   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 )AuthGroupPermissionsT)r   AuthPermissionc               @   s   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     s   r   N)r
   r   r   r   BigAutoFieldidrD   rz   rE   r   r   r   r   r   r   r   r}     s   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               @   s   e Zd ZdZdZdZdS )zAuthPermission.MetaFZauth_permission))content_typecodenameN)r
   r   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r"   rD   rE   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   T)r   r   r{   )r|   r      c               @   s   e Zd ZdZdZdS )zAuthUser.MetaF	auth_userN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r!   r   
last_loginr   is_superuserusername
first_name	last_namerx   is_staff	is_activedate_joinedr   r   r   r   r   r     s   r   c               @   sB   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 )AuthUserGroupsT)r   c               @   s   e Zd ZdZdZdZdS )zAuthUserGroups.MetaFZauth_user_groups))userr   N)r
   r   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   rD   r   rE   r   rz   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e
ejZG dd dZdS )AuthUserUserPermissionsT)r   c               @   s   e Zd ZdZdZdZdS )zAuthUserUserPermissions.MetaFZauth_user_user_permissions))r   r   N)r
   r   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   rD   r   rE   r   r~   r   r   r   r   r   r   r     s   r   c               @   s&   e Zd ZejddZG dd dZdS )CorsheadersCorsmodelr   )r   c               @   s   e Zd ZdZdZdS )zCorsheadersCorsmodel.MetaFZcorsheaders_corsmodelN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   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 )	DjangoAdminLogT)r   r      )r   r   c               @   s   e Zd ZdZdZdS )zDjangoAdminLog.MetaFdjango_admin_logN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   action_time	TextField	object_idr   object_reprPositiveSmallIntegerFieldaction_flagchange_messagerD   rE   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               @   s   e Zd ZdZdZdZdS )zDjangoContentType.MetaFdjango_content_type))	app_labelmodelN)r
   r   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   r   r   r   r   r   r   r     s   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 )DjangoMigrationsT)r   r   )r   c               @   s   e Zd ZdZdZdS )zDjangoMigrations.MetaFZdjango_migrationsN)r
   r   r   r   r   r   r   r   r   r     s   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               @   s   e Zd ZdZdZdS )zDjangoSession.MetaFdjango_sessionN)r
   r   r   r   r   r   r   r   r   r     s   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	   T)r   r   )r&   r   r   )r   r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zAdbreak_history.MetaFr	   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   rD   r'   rE   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_timesT)r   r   )r   c               @   s   e Zd ZdZdZdS )zDay_times.MetaFZday_timeN)r
   r   r   r   r   r   r   r   r   r   !  s   r   N)	r
   r   r   r   r   rb   r   r"   r   r   r   r   r   r     s   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$   T)r   r   )r   r=   )r&   r   r   r)   )r   r   rW   rR   )r   r   g        )default   )r   choicesr   F)r   r   r   c             C   s   | j S )N)r"   )r0   r   r   r   __str__J  s    zCampaigns.__str__c               @   s   e Zd ZdZdZdS )zCampaigns.MetaFr$   N)r
   r   r   r   r   r   r   r   r   r   M  s   r   N)/r
   r   r   r   r   r%   r   r"   rD   r#   rE   r=   r(   r)   BooleanFieldZpacingZ	start_dayZend_dayr   volumeZdelivery
FloatFieldZcpmZgeneral_rotationrV   rW   ZbookedrQ   rR   productrT   countryZbudgetZbroadcasts_day
media_typer   r   r   rF   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 )CampaignTimeIntervalsT)r   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               @   s   e Zd ZdZdZdS )zCampaignTimeIntervals.MetaFr   N)r
   r   r   r   r   r   r   r   r   r   X  s   r   N)r
   r   r   r   r   r   rD   r$   CASCADEr9   r   rh   ri   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 )
	PlacementT)r   rb   )r&   r   r   r%   r   c               @   s   e Zd ZdZdZdS )zPlacement.MetaFr   N)r
   r   r   r   r   r   r   r   r   r   c  s   r   N)r
   r   r   r   r   Zid_placementrD   ra   rE   rb   r$   r%   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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_analyticsT)r   r   )r   )r   r   c               @   s   e Zd ZdZdZdS )zSfr_analytics.MetaFrp   N)r
   r   r   r   r   r   r   r   r   r   r  s   r   N)r
   r   r   r   r   rq   r   rX   r   r   r`   rr   rs   r   rt   r   ru   r   r   r   r   r   r   h  s   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 )	ImpressionsT)r   r   )r   )r   r   c               @   s   e Zd ZdZdZdS )zImpressions.MetaFZSFR_market_shareN)r
   r   r   r   r   r   r   r   r   r   }  s   r   N)r
   r   r   r   r   r   r   Z	tool_namer   Ztotal_usersr   Zmarket_share_purcentr`   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 )VerifsT)r   r   )r   ZverComplete2   )r&   r   r   r   c               @   s   e Zd ZdZdZdS )zVerifs.MetaFr   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   Zid_verifr   rY   rZ   ZbroadcastDater   rN   ZspotIdZairTimeZ	airLengthZairStatuscoderevisionZvercompleter   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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_predictT)r   r   )r   )r   r   c               @   s   e Zd ZdZdZdS )zSfr_predict.MetaFZSFR_predictN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   rq   r   rX   r   r   r`   rr   rs   r   rt   r   ru   r   r   r   r   r   r     s   r   c               @   sf   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 )Adbreak_predictT)r   r   )r   c               @   s   e Zd ZdZdZdS )zAdbreak_predict.MetaFr   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   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 )ActivityT)r   r   )r   c               @   s   e Zd ZdZdZdS )zActivity.MetaFr   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   Zid_activityr   Zactivityr   daterS   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 )	RealTimeAdbreakT)r   )r   r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zRealTimeAdbreak.MetaFZReal_time_adbreakN)r
   r   r   r   r   r   r   r   r   r     s   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_analyticsT)r   r   )r   )r   r   c               @   s   e Zd ZdZdZdS )zBouygues_analytics.MetaFr   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   Z
id_bouyguer   r   r   r   rr   r   rt   r   ru   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 )r,   T)r   AD_id   )r&   r   r   r   Tracking_start)r&   r   r   Tracking_firstQuartileTracking_midpointTracking_thirdQuartileTracking_complete)r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zVastResponseGo.MetaFZVAST_response_GON)r
   r   r   r   r   r   r   r   r   r     s   r   N)#r
   r   r   r   r   id_vastr   ad_idr   tracking_starttracking_firstquartiletracking_midpointtracking_thirdquartiletracking_completer   datetime_timestampdatetime_stringrF   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_linkrD   r#   rE   r+   r   r   r   r   r   r,     s0   r,   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 )VastResponseT)r   r   r   )r&   r   r   r   r   )r&   r   r   r   r   r   r   )r   r   )r   r   r   Zvast_responses)r   related_namec             C   s
   t | jS )N)strr   )r0   r   r   r   r     s    zVastResponse.__str__c               @   s   e Zd ZdZdZdS )zVastResponse.MetaFZVAST_responseN)r
   r   r   r   r   r   r   r   r   r     s   r   N)"r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   r   r   r   r   r   r   rD   r#   r   r+   r   r   r   r   r   r   r     s.   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   T)r&   r   r   r   r   )r&   r   r   r   r   r   r   )r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zVastResponse2910.MetaFZVAST_RESPONSE_29_10N)r
   r   r   r   r   r   r   r   r   r   $  s   r   N)r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s.   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)r&   r   ZAdIdr   )r&   r   ZSubIdStart)r&   ZEnd)r&   r   r   ZStartTsZEndTsZCutZScenarioDurationZIsPubZTitleZReplacementAdId)r&   r   r   r   ZReplacementPathZReplacementDurationZStatusr   Z
UpdateSentZPlaylistDateZ
Channel_IDc               @   s   e Zd ZdZdZdZdS )zAdslotsVisionr.Meta)subidplaylistdateFZAdSlots_VisionRN)r
   r   r   r   r   r   r   r   r   r   r   >  s   r   N)r
   r   r   r   r   r   r   Zadidr   r   rc   rd   BigIntegerFieldZstarttsZendtsr   cutr   Zscenarior   ZispubtitleZreplacementadidZreplacementpathZreplacementdurationrF   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   T)r&   r   r   )r   r   r   c               @   s   e Zd ZdZdZdS )zAlmaAds.MetaFZAlma_AdsN)r
   r   r   r   r   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 )	AdbreaksT)r   )r   r   r   )r   c               @   s   e Zd ZdZdZdS )zAdbreaks.MetaFr   N)r
   r   r   r   r   r   r   r   r   r   V  s   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   T)r&   r   r$   )r   r   c               @   s   e Zd ZdZdZdS )zCampaignairtimelog.MetaFZCampaignAirtimeLogN)r
   r   r   r   r   r   r   r   r   r   d  s   r   N)r
   r   r   r   r   r   rD   rE   r9   r#   r1   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   T)r&   r   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               @   s   e Zd ZdZdZdS )zCampaignPriorityScores.MetaFr   N)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   rD   rE   r9   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                s2   | j s t   tjdd | _ t j|| d S )N   )days)r   r   now	timedeltasupersave)r0   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   )r  r   r    s\   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_2r  )r0   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.MetaFr  r  r  Zunique_ad_spot_exclusion)r  r"   N)r
   r   r   r   r   r   UniqueConstraintconstraintsr   r   r   r   r     s   r   N)r
   r   r   r   rD   r#   r   r  r  r  r   r   r   r   r   r    s   r  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 )
TrackinglinkT)r      )r   i  )r   r   c               @   s   e Zd ZdZdZdS )zTrackinglink.MetaFZTrackingLinkN)r
   r   r   r   r   r   r   r   r   r     s   r   N)r
   r   r   r   r   r   r   r1   rf   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#   rJ   rK   r(   rU   r'   r]   ra   re   rg   rj   rQ   rk   ro   rv   rV   ry   rO   rz   r}   r~   r   r   r   r   r   r   r   r   r	   r   TextChoicesr   r$   r   r   r   r   r   r   r   r   r   r   r,   r   r   r   r   r   r   r   r  django.core.exceptionsr  r  r  r   r   r   r   <module>	   sx   b 

&!H