
    :ɴh0                        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  \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\R                  " \5       " S S\R                  5      5       rg)z
Django Admin Configuration for Jingles Application

This module configures the Django admin interface for jingle detection,
ad break management, and related functionality.
    )admin)format_html)reverse)	mark_safe)JingleTemplateJingleDetectionAdBreakDetectionStatisticsc                      ^  \ 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S.44rSS0r	SS/r
SS/rS rS\l        S rS\l        U 4S jrSrU =r$ )JingleTemplateAdmin   z
Admin interface for JingleTemplate model.

Provides management of jingle reference templates including
image upload, similarity threshold configuration, and status monitoring.
)namecategory	is_activesimilarity_thresholdget_detection_countimage_status
created_by
created_at)r   r   r   r   )r   slugdescriptionzTemplate Informationfields)r   r   r   r   zDetection Configuration)
image_pathr   r   Metadata)r   collapser   classesr   )r   r   
updated_atr   r   c                     UR                   R                  5       nUR                   R                  SS9R                  5       nUS:  a'  X2-  S-  nUS:  a  SO	US:  a  SOS	n[        S
UUU5      $ [        S5      $ )z5Get the total number of detections for this template.T)is_confirmedr   d   P   green2   orangeredz;<span style="color: {};">{} total<br/>({} confirmed)</span>z/<span style="color: gray;">No detections</span>)
detectionscountfilterr   )selfobjr)   confirmed_count
percentagecolors         >C:\Users\brahi\OneDrive\Desktop\Code\src\apps\jingles\admin.pyr   'JingleTemplateAdmin.get_detection_countA   s    $$&..//T/BHHJ19)1S8J)BG
RHUZEM	  LMM    
Detectionsc                 X    UR                  5       (       a  [        S5      $ [        S5      $ )z(Check if the template image file exists.u0   <span style="color: green;">✓ Available</span>u,   <span style="color: red;">✗ Missing</span>)image_existsr   )r+   r,   s     r0   r    JingleTemplateAdmin.image_statusT   s3    B  > r2   z
Image Filec                 @   > [         TU ]  U5      R                  S5      $ )z(Optimize queryset with prefetch_related.r   superget_querysetselect_relatedr+   request	__class__s     r0   r:    JingleTemplateAdmin.get_queryseta   s    w#G,;;LIIr2    )__name__
__module____qualname____firstlineno____doc__list_displaylist_filtersearch_fields	fieldsetsprepopulated_fieldsreadonly_fieldsorderingr   short_descriptionr   r:   __static_attributes____classcell__r>   s   @r0   r   r      s    LK
M 
 A"
 	 
#I%
 	 
%$
 	I "9- $\2O F#HN" -9)	 &2L"J Jr2   r   c                   :    \ rS rSrSr\rSr/ SQr/ SQr	SS jr
Srg)	JingleDetectionInlinef   z6
Inline admin for jingle detections within ad breaks.
r   )templateconfidence_scoredetection_timer!   Nc                     g)z(Disable adding detections through admin.Fr@   )r+   r=   r,   s      r0   has_add_permission(JingleDetectionInline.has_add_permissionr       r2   r@   )N)rA   rB   rC   rD   rE   r   modelextrarK   r   rX   rN   r@   r2   r0   rR   rR   f   s'     EEO PFr2   rR   c                      ^  \ 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S.44r/ SQr	S/r
S rS\l        S\l        U 4S jrSrU =r$ )JingleDetectionAdminw   z
Admin interface for JingleDetection model.

Provides detailed management of individual jingle detections
including confidence scores, frame analysis, and confirmation status.
)get_detection_inforT   sessionrU   r!   rV   )rT   r!   rV   session__channeltemplate__namesession__channel__namezDetection Informationr   )ra   segmentrT   zDetection Results)rU   frame_timestampr!   z
Frame Data)
frame_pathrV   zAdditional Metadata)metadatar   r   )rV   r   r   z-detection_timec                     UR                   S:  a  SOUR                   S:  a  SOSnUR                  (       a  SOSnUR                  (       a  SOSn[        S	UR                   UU5      $ )
z$Get formatted detection information.g?r$   g      ?r&   r'   u   ✓ Confirmedz? Unconfirmedgrayz><strong>{:.3f}</strong><br/><span style="color: {};">{}</span>)rU   r!   r   )r+   r,   confidence_colorconfirmation_textconfirmation_colors        r0   r`   'JingleDetectionAdmin.get_detection_info   sj    &)&:&:S&@7RURfRfilRlhrw/2/?/?O_(+(8(8Wf1  
 	
r2   	DetectionrU   c                 D   > [         TU ]  U5      R                  SSS5      $ )&Optimize queryset with select_related.rT   rb   re   r8   r<   s     r0   r:   !JingleDetectionAdmin.get_queryset   s(    w#G,;;*I
 	
r2   r@   )rA   rB   rC   rD   rE   rF   rG   rH   rI   rK   rL   r`   rM   admin_order_fieldr:   rN   rO   rP   s   @r0   r^   r^   w   s    LK 	2M 
!8#
 	 
M
 	 
6
 	 
#$!
 	I"O
 ""H
 ,7(+=(
 
r2   r^   c                      ^  \ 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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$ )AdBreakAdmin   z
Admin interface for AdBreak model.

Provides comprehensive management of advertisement breaks including
timing analysis, external API integration, and status tracking.
)get_adbreak_infochannel_nameregion
start_timeduration_displaystatusis_sent_to_api)r|   ry   r}   rz   rb   rx   rd   zAd Break Informationr   )ra   rx   ry   r|   Timing)rz   end_timeduration_secondszDetection References)start_detectionend_detectionzExternal Integration)r}   api_responseNotes)notesr   r   )r   r   r   z-start_timec                     SSSSS.R                  UR                  S5      nUR                  (       a  SOSnUR                  (       a  SOSn[        S	UUR                  R	                  5       UU5      $ )
z#Get formatted ad break information.r&   r$   r'   rj   )active	completedfailed	cancelledblacku	   📤 Sentu   📥 PendingzK<span style="color: {};">{}</span><br/><small style="color: {};">{}</small>)getr|   r}   r   title)r+   r,   status_color
api_status	api_colors        r0   rw   AdBreakAdmin.get_adbreak_info   sw      	

 #cjj'
" 	 %($6$6[N
"11Gx	3JJ
 	
r2   Statusr|   c                    UR                   (       a1  UR                   S-  nUR                   S-  nUS:  a  U SU S3$ U S3$ UR                  5       (       a)  UR                  5       nU(       a  US-  nUS-  nU SU S3$ g)z/Display ad break duration in a readable format.<   r   zm szs (calc)-)r   is_completecalculate_duration)r+   r,   minutessecondsdurations        r0   r{   AdBreakAdmin.duration_display  s    **b0G**R/G{!"WIQ//!!}$__--/H"b."R-!"WIX66r2   Durationr   c                 D   > [         TU ]  U5      R                  SSS5      $ )rq   rb   start_detection__templateend_detection__templater8   r<   s     r0   r:   AdBreakAdmin.get_queryset(  s)    w#G,;; ;=V
 	
r2   r@   )rA   rB   rC   rD   rE   rF   rG   rH   rI   rK   inlinesrL   rw   rM   rs   r{   r:   rN   rO   rP   s   @r0   ru   ru      s    LK 	0M 
 E"
 	 
D
 	 
 :"
 	 
 8"
 	 
 $
 	I(O
 G H
* *2&)1&( *4&);&
 
r2   ru   c                      ^  \ 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Qr	S/r
S rS\l        S rS\l        S\l        U 4S jrS rSrU =r$ )DetectionStatisticsAdmini/  z
Admin interface for DetectionStatistics model.

Provides analysis and reporting of jingle detection performance
including accuracy metrics and trend analysis.
)get_stats_inforT   ra   total_detectionsaccuracy_rate_displayavg_confidencelast_detection)rT   rb   r   rc   rd   zStatistics Overviewr   )ra   rT   zDetection Counts)r   confirmed_detectionsfalse_positiveszConfidence Metrics)r   min_confidencemax_confidencezPerformance Metrics)detection_rater   )
r   r   r   r   r   r   r   r   r   r   z-last_detectionc                 `    UR                  5       nUS:  a  SO	US:  a  SOSn[        SUU5      $ )z%Get formatted statistics information.r#   r$   r%   r&   r'   zE<strong>{:.1f}%</strong><br/><span style="color: {};">Accuracy</span>accuracy_rater   )r+   r,   accuracyaccuracy_colors       r0   r   'DetectionStatisticsAdmin.get_stats_infob  s>    $$&$,rM8b=xV[7	
 	
r2   Performancec                 `    UR                  5       nUS:  a  SO	US:  a  SOSn[        SUU5      $ )z(Display accuracy rate with color coding.r#   r$   r%   r&   r'   z'<span style="color: {};">{:.1f}%</span>r   )r+   r,   rater/   s       r0   r   .DetectionStatisticsAdmin.accuracy_rate_displayp  s;      ""9dRi(U5
 	
r2   Accuracyr   c                 B   > [         TU ]  U5      R                  SS5      $ )rq   rT   rb   r8   r<   s     r0   r:   %DetectionStatisticsAdmin.get_queryset~  s&    w#G,;;*
 	
r2   c                     g)z&Disable manual creation of statistics.Fr@   )r+   r=   s     r0   rX   +DetectionStatisticsAdmin.has_add_permission  rZ   r2   r@   )rA   rB   rC   rD   rE   rF   rG   rH   rI   rK   rL   r   rM   r   rs   r:   rX   rN   rO   rP   s   @r0   r   r   /  s    LK 	2M 
-!
 	 
U
 	 
L 
 	 
:!
 	I O ""H

 (5N$	
 /9+.D+
 r2   r   N)rE   django.contribr   django.utils.htmlr   django.urlsr   django.utils.safestringr   apps.jingles.modelsr   r   r	   r
   register
ModelAdminr   TabularInlinerR   r^   ru   r   r@   r2   r0   <module>r      s    ! )  - 
 QJ%** QJ  QJhE// "  F
5++ F
 !F
R j
5## j
 j
Z #$Vu// V %Vr2   