
    ʹhS.                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
JrJrJrJr  \R                  " \
5       " S S\R                   5      5       r\R                  " \5       " S	 S
\R                   5      5       r\R                  " \5       " S S\R                   5      5       r " S S\R(                  5      r\R                  " \5       " S S\R                   5      5       r\R                  " \5       " S S\R                   5      5       rS\R0                  l        S\R0                  l        S\R0                  l        g)z
Django Admin Configuration for Streams Application

This module configures the Django admin interface for stream management,
providing comprehensive administrative controls for channels, sessions,
configurations, and segments.
    )admin)format_html)reverse)timezone)ChannelVideoConfigurationAudioConfigurationStreamSession
HLSSegmentc                      ^  \ rS rSrSr/ SQr/ SQr/ SQrSSS04S	SS
04SSS04SSS04SSSS.44rSS0r	SS/r
S/rS rS\l        S\l        S rS\l        U 4S jrSrU =r$ )ChannelAdmin   z
Admin interface for Channel model.

Provides comprehensive management of streaming channels including
configuration, status monitoring, and session management.
)nameslug	is_active
created_byget_active_session_statussegments_count
created_at)r   r   r   )r   r   descriptionhls_urlzBasic Informationfields)r   r   r   r   zStream Configuration)r   output_directoryzHLS Settings)segment_durationmax_segmentszRetry Configuration)retry_attemptsretry_intervalMetadata)r   collapser   classesr   r   r   
updated_atr   c                     UR                  5       nU(       aE  SSSS.R                  UR                  S5      n[        SUUR                  R	                  5       5      $ [        S5      $ )z6Get the status of the active session for this channel.greenorangered)active
processingfailedgrayz"<span style="color: {};">{}</span>z3<span style="color: gray;">No Active Session</span>)get_active_sessiongetstatusr   title)selfobjactive_sessioncolors       >C:\Users\brahi\OneDrive\Desktop\Code\src\apps\streams\admin.pyr   &ChannelAdmin.get_active_session_statusI   so    //1!& c.''0	  4%%++- 
 PQQ    zActive Sessionsessions__statusc                 Z    [        S UR                  R                  5        5       5      nU$ )z2Get the total number of segments for this channel.c              3   V   #    U  H  nUR                   R                  5       v   M!     g 7fN)segmentscount).0sessions     r5   	<genexpr>.ChannelAdmin.segments_count.<locals>.<genexpr>_   s)      
- ""$$-s   '))sumsessionsall)r1   r2   total_segmentss      r5   r   ChannelAdmin.segments_count]   s.     
<<++-
 
 r7   zTotal Segmentsc                 @   > [         TU ]  U5      R                  S5      $ )z(Optimize queryset with prefetch_related.r   superget_querysetselect_relatedr1   request	__class__s     r5   rJ   ChannelAdmin.get_querysetg   s    w#G,;;LIIr7    )__name__
__module____qualname____firstlineno____doc__list_displaylist_filtersearch_fields	fieldsetsprepopulated_fieldsreadonly_fieldsorderingr   short_descriptionadmin_order_fieldr   rJ   __static_attributes____classcell__rN   s   @r5   r   r      s    LK
M 
B
 	 
 5"
 	 
:
 	 
:!
 	 
%$
 	I( "9- $\2O xHR" 3C/2D/ (8N$J Jr7   r   c                   b    \ rS rSrSr/ SQr/ SQrSS/rSSS	04S
SS04SSS04SSS044rS/r	Sr
g)VideoConfigurationAdminl   zn
Admin interface for VideoConfiguration model.

Provides management of video encoding presets and parameters.
)r   
resolution
frame_ratecodecmin_bitratemax_bitratepreset)rg   rj   re   rf   r   re   Configuration Identityr   r#   zVideo Parameters)re   aspect_ratiorf   zBitrate Settings)rh   ri   zCodec Configuration)rg   rj   profilelevelrP   NrQ   rR   rS   rT   rU   rV   rW   rX   rY   r\   r_   rP   r7   r5   rc   rc   l   s    LK
 \*M 
"i$
 	 
B
 	 
4
 	 
=!
 	I  xHr7   rc   c                   V    \ rS rSrSr/ SQr/ SQrS/rSSS04S	SS
04SSS044rS/r	Sr
g)AudioConfigurationAdmin   zn
Admin interface for AudioConfiguration model.

Provides management of audio encoding presets and parameters.
)r   rg   bitratesample_ratechannels	normalize)rg   rt   ru   rv   r   rk   r   r#   zAudio Quality)rg   rs   rt   ru   zProcessing Options)rv   rP   Nro   rP   r7   r5   rq   rq      sk    LK
 HM 
"i$
 	 
E
 	 
n 
 	
I xHr7   rq   c                   2    \ rS rSrSr\rSr/ SQrSS jr	Sr
g)	HLSSegmentInline   zt
Inline admin for HLS segments within stream sessions.

Provides a tabular view of segments belonging to a session.
r   )filenamesequence_numberduration	file_sizeprocessed_atis_availableNc                     g)z&Disable adding segments through admin.FrP   )r1   rM   r2   s      r5   has_add_permission#HLSSegmentInline.has_add_permission   s    r7   rP   r;   )rQ   rR   rS   rT   rU   r   modelextrar[   r   r_   rP   r7   r5   rx   rx      s     EEO
r7   rx   c                      ^  \ rS rSrSr/ SQr/ SQr/ SQrSSS04S	SS
04SSS04SSS04SSSS.44r/ SQr	\
/rS/rS rS\l        S\l        S rS\l        S\l        U 4S jrSrU =r$ )StreamSessionAdmin   z
Admin interface for StreamSession model.

Provides comprehensive monitoring and management of stream sessions
including statistics, error tracking, and segment management.
)get_session_infochannelr/   
started_atduration_displaysegments_processederrors_count)r/   r   r   video_configaudio_config)channel__namechannel__slug
process_idzSession Informationr   )r   r/   r   Configuration)r   r   Timing)r   ended_at
Statistics)r   r   
last_errorzAdditional Data)
statisticsr   r!   )r   r$   r   r   r   r   z-started_atc                     SSSSSS.R                  UR                  S5      n[        S[        UR                  5      S	S
 UUR                  R                  5       5      $ )z"Get formatted session information.r&   r'   bluer(   r,   )r)   r*   	completedr+   	cancelledblack:<strong>{}</strong><br/><span style="color: {};">{}</span>N   )r.   r/   r   stridr0   )r1   r2   status_colors      r5   r   #StreamSessionAdmin.get_session_info	  sg     "
 #cjj'
" 	 1KOJJ
 	
r7   Sessionr/   c                     UR                  5       nU(       aO  [        UR                  5       5      nUS-  nUS-  S-  nUS-  nUS:  a  U SU SU S3$ US:  a  U SU S3$ U S3$ g)z.Display session duration in a readable format.i  <   r   zh zm s-)r|   inttotal_seconds)r1   r2   r|   r   hoursminutessecondss          r5   r   #StreamSessionAdmin.duration_display  s    <<> 6 6 89M!T)E$t+2G#b(Gqy7)2gYa881!"WIQ//!!}$r7   Durationr   c                 D   > [         TU ]  U5      R                  SSS5      $ )&Optimize queryset with select_related.r   r   r   rH   rL   s     r5   rJ   StreamSessionAdmin.get_queryset2  s'    w#G,;;~~
 	
r7   rP   )rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   rx   inlinesr\   r   r]   r^   r   rJ   r_   r`   ra   s   @r5   r   r      s    LK
M 
9!
 	 
6
 	 
0
 	 
J
 	 
%$
 	I(O   G H
$ *3&)1&" *4&)5&
 
r7   r   c                      ^  \ rS rSrSr/ SQr/ SQr/ SQrSSS04S	SS
04SSS044r/ SQr	S/r
S rS\l        S\l        S rS\l        S\l        U 4S jrSrU =r$ )HLSSegmentAdmini9  z
Admin interface for HLSSegment model.

Provides detailed management of individual HLS segments
including file information and availability status.
)get_segment_infor?   r{   r|   file_size_displayr   r~   )r   r~   session__channel)rz   session__channel__namer{   zSegment Informationr   )r?   rz   r{   zFile Details)	file_pathr|   r}   r   
Processing)r~   )r~   r   r$   z-processed_atc                     UR                   (       a  SOSnUR                   (       a  SOSn[        SUR                  UU5      $ )z"Get formatted segment information.r&   r(   	AvailableMissingr   )r   r   rz   )r1   r2   availability_coloravailability_texts       r5   r    HLSSegmentAdmin.get_segment_infog  sA    (+(8(8We+.+;+;K1LL
 	
r7   Segmentrz   c                     UR                   (       a0  UR                   nS H  nUS:  a
  US SU 3s  $ US-  nM     US S3$ g)z-Display file size in a human-readable format.)BKBMBGBg      @z.1f z TBr   )r}   )r1   r2   sizeunits       r5   r   !HLSSegmentAdmin.file_size_displayw  sS    ====D/&="3Zq// 0 3Zs##r7   z	File Sizer}   c                 @   > [         TU ]  U5      R                  S5      $ )r   r   rH   rL   s     r5   rJ   HLSSegmentAdmin.get_queryset  s    w#G,;;<NOOr7   rP   )rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   r\   r   r]   r^   r   rJ   r_   r`   ra   s   @r5   r   r   9  s    LK
M 
@!
 	 
L
 	 
'
 	
IO
   H
 *3&)3&	 +6'*5'P Pr7   r   zStream Processor AdministrationzStream ProcessorzStream Management DashboardN)rU   django.contribr   django.utils.htmlr   django.urlsr   django.utilsr   apps.streams.modelsr   r   r	   r
   r   register
ModelAdminr   rc   rq   TabularInlinerx   r   r   sitesite_header
site_titleindex_titlerP   r7   r5   <module>r      sB   ! )  !  UJ5## UJ UJp "#&e.. & $&R "##e.. # $#Lu** & e
)) e
 e
P 
MPe&& MP MPb ;

 *

 6

 r7   